/** die wichtigsten (zeitkritischen) Cmds, die in jedem State gelten */ static boolean handleMsg(int val) { int data; if (val == BBSys.CMD_STATUS) { Msg.write(state); return true; } if (val == BBSys.CMD_STOP) { state = BBSys.MS_RDY; Triac.stop(); Msg.write(0); return true; } if (val == BBSys.CMD_UP) { if (state == BBSys.MS_RDY) { state = BBSys.MS_UP; Triac.rauf(); Msg.write(0); } else { Msg.err(1); } return true; } if (val == BBSys.CMD_DOWN) { if (state == BBSys.MS_RDY) { state = BBSys.MS_DOWN; Triac.runter(); Msg.write(0); } else { Msg.err(1); } return true; } if (val == BBSys.CMD_PAUSE) { if (state == BBSys.MS_UP || state == BBSys.MS_DOWN) { Triac.pause(); Msg.write(0); } else { Msg.err(1); } return true; } if (val == BBSys.CMD_INP) { Msg.write((JopSys.rd(BBSys.IO_SENSOR) << 4) + JopSys.rd(BBSys.IO_TAST)); return true; } if (val == BBSys.CMD_OPTO) { Msg.write(Triac.getOpto()); return true; } if (val == BBSys.CMD_CNT) { Msg.write(Triac.getCnt()); return true; } return false; }
/** allg. cmd's, nicht so zeitkritisch */ static boolean handleRest(int val) { int data; if (val == BBSys.CMD_SET_STATE) { if (state != BBSys.MS_UP && state != BBSys.MS_DOWN) { // nicht in UP/DOWN moeglich!!! data = Msg.readData(); // Vorsicht: Nur rdy, dbg und service sinnvoll if (data == BBSys.MS_RDY || data == BBSys.MS_DBG || data == BBSys.MS_SERVICE) { state = data; Msg.write(0); } else { Msg.err(2); } return true; } else { Msg.err(1); return true; } } if (val == BBSys.CMD_SETCNT) { Triac.setCnt(Msg.readData()); Msg.write(0); return true; } if (val == BBSys.CMD_TIME) { Msg.write(maxTime >>> 8); // div. by 256 => 34.7 us per tick return true; } if (val == BBSys.CMD_RESTIM) { maxTime = 0; Msg.write(0); return true; } if (val == BBSys.CMD_VERSION) { Msg.write((VER_MAJ << 6) + VER_MIN); return true; } if (val == BBSys.CMD_SERVICECNT) { Msg.write(Triac.serviceCnt); return true; } if (val == BBSys.CMD_SET_DOWNCNT) { Triac.setDownCnt(Msg.readData()); Msg.write(0); return true; } if (val == BBSys.CMD_SET_UPCNT) { Triac.setUpCnt(Msg.readData()); Msg.write(0); return true; } if (val == BBSys.CMD_SET_MAXCNT) { Triac.setMaxCnt(Msg.readData()); Msg.write(0); return true; } if (val == BBSys.CMD_ERRNR) { Msg.write(lastErr); lastErr = 0; state = BBSys.MS_RDY; return true; } if (val == BBSys.CMD_TEMP) { doTemp(); return true; } if (val == BBSys.CMD_DBG_DATA) { xxxDbgData(); return true; } if (state == BBSys.MS_DBG) { return handleDbg(val); } return false; }