⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 log.java

📁 Java Op Processor java vhdl processor
💻 JAVA
字号:
package kfl;/***	Logbook*/public class Log {	public static final int UP_STARTED = 1;	public static final int DOWN_STARTED = 2;	public static final int IS_UP = 3;	public static final int IS_DOWN = 4;	public static final int ERROR = 5;	public static final int STOP = 6;				// currently not used	public static final int NOTSTOP = 7;	private static boolean auto;	private static int[] buf;	public static void init() {		buf = new int[128];		auto = false;	}	public static void write(int action, int errnr) { write(action, errnr, 0); }	public static void write(int action) { write(action, 0, 0); }/***	write log entry.*/	public static void write(int action, int errnr, int msnr) {		int addr = findLastLog();		int i, nr;		if (addr<0) {						// first entry			addr = 0;			nr = 1;		} else {			nr = read32(Flash.LOG_START+addr)+1;	// increment log counter			addr += Flash.LOG_SIZE;				// increment address			addr &= Flash.LOG_LEN-1;				// ring buffer		}		addr += Flash.LOG_START-Flash.FLASH_START;		// addr now a relativ flash address		Flash.setPage(addr>>7);		for (i=0; i<128; ++i) {			buf[i] = Flash.read();		}		Timer.wd();				logSetValues(addr & 0x7f, nr, action, errnr, msnr);	// local address in buffer		Timer.wd();		Flash.setPage(addr>>7);		for (i=0; i<128; ++i) {			Flash.setData(buf[i]);		}		Flash.program();	}/****/	public static void setAuto(boolean f) {		auto = f;	}/***	set log entrys in buffer.*/	private static void logSetValues(int i, int nr, int action, int errnr, int msnr) {		buf[i] = nr>>>24;		// entry number		buf[i+1] = nr>>>16;		buf[i+2] = nr>>>8;		buf[i+3] = nr;		buf[i+4] = Clock.getYear()>>>8;		buf[i+5] = Clock.getYear();		buf[i+6] = Clock.getMonth();		buf[i+7] = Clock.getDay();		buf[i+8] = Clock.getSec()>>>8;		buf[i+9] = Clock.getSec();		if (auto) action |= 0x80;		buf[i+10] = action;									// TODO: diese Zeile fuehrt zum Absturz!!!									// if (auto) buf[i+10] |= 0x80;		buf[i+11] = errnr;		buf[i+12] = msnr;			// MS for errnr/*	Bauteile fehlen!!!buf[i+13] = 0;*/		buf[i+13] = Temp.calc(46000-JopSys.rd(BBSys.IO_ADC));Timer.wd();		buf[i+14] = 0;		buf[i+15] = 0;		for (int j=0; j<16 && j<Flash.LOG_SIZE-16; ++j) {			buf[i+16+j] = Station.temp[j];			// reserved for MS temp.		}	}/***	get log values.*/	public static int getSec(int addr) {		return read16(Flash.LOG_START+addr+8);	}	public static int getAction(int addr) {		return JopSys.rdMem(Flash.LOG_START+addr+10)&0x7f;	// mask out automatic flag	}	public static int getErrnr(int addr) {		return JopSys.rdMem(Flash.LOG_START+addr+11);	}	public static int getMsnr(int addr) {		return JopSys.rdMem(Flash.LOG_START+addr+12);	}/***	return relativ address of log with highest nr.*/	private static int findLastLog() {		int i, j;		int max = 0;		int addr = 0;		for (i=0; i<Flash.LOG_LEN; i+=Flash.LOG_SIZE) {			j = read32(Flash.LOG_START+i);			if (j>max) {				max = j;				addr = i;			}			Timer.wd();		}		if (max==0) return -1;		// 'empty'		return addr;	}/***	return log nr for last log entry.*	-1 if no log entry exists*/	public static int findLastNr() {		int addr = findLastLog();		int nr;		if (addr<0) {						// first entry			return -1;		} else {			return read32(Flash.LOG_START+addr);		}	}/***	return relativ address for log number*	-1 if nr does not exist*/	public static int getAddr(int nr) {		int i, j;		int max = 0;		int addr = 0;		for (i=0; i<Flash.LOG_LEN; i+=Flash.LOG_SIZE) {			j = read32(Flash.LOG_START+i);			if (j==nr) return i;			Timer.wd();		}		return -1;	}	private static int read16(int addr) {		return (JopSys.rdMem(addr)<<8) | JopSys.rdMem(addr+1);	}	private static int read32(int addr) {		return (JopSys.rdMem(addr)<<24) |			(JopSys.rdMem(addr+1)<<16) |			(JopSys.rdMem(addr+2)<<8) |			JopSys.rdMem(addr+3);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -