char TOS_COMMAND(YELLOW_LED_OFF)(){ printf("Y_off"); SET_YELLOW_LED_PIN(); VAR(leds_on) &= 0x3; return 1; }
char TOS_COMMAND(LEDS_INIT)(){ VAR(leds_on) = 0; SET_RED_LED_PIN(); SET_YELLOW_LED_PIN(); SET_GREEN_LED_PIN(); return 1; }
char TOS_COMMAND(SEND_DV_FP_INIT) () { CLR_RED_LED_PIN(); CLR_GREEN_LED_PIN(); CLR_YELLOW_LED_PIN(); TOS_CALL_COMMAND(SEND_DV_FP_SUB_INIT) (); printf("SEND_DV_FP initialized\n"); SET_RED_LED_PIN(); SET_GREEN_LED_PIN(); SET_YELLOW_LED_PIN(); return 1; }
char TOS_EVENT(AGRO_SUB_DATA_READY)(short data){ if(data > VAR(my_strength)) VAR(my_strength) = data; VAR(count) ++; if(VAR(count) == 8){ VAR(count) = 0; if(VAR(id_gen) == 0) VAR(id_gen) = data; if(VAR(my_strength) > VAR(max_strength) && VAR(my_strength) > MAG_THRESHOLD){ uint8_t i; TOS_CALL_COMMAND(AGRO_LED1_ON)(); agroDataPacket* pack = (agroDataPacket*)VAR(rel_ptr)->data; pack->pack_ID = VAR(id_gen); pack->from = TOS_LOCAL_ADDRESS; pack->readings[0].nodeID = TOS_LOCAL_ADDRESS; pack->readings[0].value = VAR(my_strength); for(i = 1; i < 4; i ++){ pack->readings[i].value = VAR(dataBlock)[i-1].value; pack->readings[i].nodeID = VAR(dataBlock)[i-1].nodeID; VAR(dataBlock)[i-1].value = 0; VAR(dataBlock)[i-1].nodeID = 0xff; } bar_foo(); }else{ TOS_CALL_COMMAND(AGRO_LED1_OFF)(); } VAR(my_strength) = 0; VAR(max_strength) = 0; }else { if(data > MAG_THRESHOLD && VAR(msg_send_pending) == 0){ CLR_YELLOW_LED_PIN(); agroDataPacket* pack = (agroDataPacket*)VAR(msg)->data; pack->readings[0].nodeID = TOS_LOCAL_ADDRESS; pack->readings[0].value = data; //TIME to send out an data messgae. VAR(msg)->length = 6; VAR(msg_send_pending) = TOS_CALL_COMMAND(AGRO_SUB_SEND_MSG)(TOS_BCAST_ADDR, AM_MSG(AGRO_DATA_MSG), VAR(msg)); }else{ SET_YELLOW_LED_PIN(); TOS_CALL_COMMAND(AGRO_LED1_OFF)(); } } return 1; }