📄 photoandtempm.nc
字号:
includes userdata;module PhotoandtempM{ provides interface StdControl; uses { interface Timer; interface Leds; interface SplitControl as TemperatureControl; interface ADC as Temperature; interface ADC as TSR; interface Oscope as OTemperature; interface Oscope as OTSR; interface ADCError as TemperatureError; }}implementation{ enum { OSCOPE_DELAY =600 }; enum { TEMPERATURE, TSRSENSOR }; norace uint16_t temperature, tsr; norace int state; command result_t StdControl.init() { call Leds.init(); call Leds.set(0); state = TEMPERATURE; call TemperatureControl.init(); return SUCCESS; } event result_t TemperatureControl.initDone() { return SUCCESS; } command result_t StdControl.start() { call TemperatureControl.start(); call Leds.redToggle(); return SUCCESS; } event result_t TemperatureControl.startDone() { call TemperatureError.enable(); call Timer.start( TIMER_ONE_SHOT, 3000 ); return SUCCESS; } command result_t StdControl.stop() { call TemperatureControl.stop(); call Timer.stop(); return SUCCESS; } event result_t TemperatureControl.stopDone() { call TemperatureError.disable(); return SUCCESS; } event result_t Timer.fired() { call Leds.yellowOff(); // photo call Leds.greenOff(); // temp call Timer.start(TIMER_ONE_SHOT, 100); switch(state) { case TEMPERATURE: call Temperature.getData(); break; case TSRSENSOR: call TSR.getData(); break; default: call Timer.start(TIMER_ONE_SHOT, 10); } return SUCCESS; } task void putTemperature() { call OTemperature.put(temperature); call Leds.greenOn(); call Timer.start(TIMER_ONE_SHOT, OSCOPE_DELAY); } task void putTSR() { call OTSR.put(tsr); call Leds.yellowOn(); call Timer.start(TIMER_ONE_SHOT, OSCOPE_DELAY); } async event result_t Temperature.dataReady(uint16_t data) { temperature = data; post putTemperature(); state = TSRSENSOR; return SUCCESS; } event result_t TemperatureError.error(uint8_t token) { temperature = 0; post putTemperature(); state = TSRSENSOR; return SUCCESS; } async event result_t TSR.dataReady(uint16_t data) { tsr = data; post putTSR(); state = TEMPERATURE; return SUCCESS; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -