int main(void) { uint8_t src_packet[128] = {0x05, 0x30, 0x00, 0x00, 0x0A}; uint8_t rcvd_msg[128] = {0}; uint8_t rcvd_payload[128] = {0}; uint8_t rcvd_length; uint8_t rcvd_payloadLength; uint8_t rcvd_rssi; uint8_t Type; uint16_t Addr; uint8_t radio_channel; uint16_t radio_panID; Type = Type_Light; Addr = 0x0001; radio_channel = 18; radio_panID = 0x00AA; Initial(Addr, Type, radio_channel, radio_panID); setTimer(1,RETRANSMIT_PERIOD,UNIT_MS); while(1){ // Periodically send the msg if(checkTimer(1)){ RF_Tx(0xFFFF,src_packet,5); } // When received some packet if(RF_Rx(rcvd_msg, &rcvd_length, &rcvd_rssi)){ getPayloadLength(&rcvd_payloadLength, rcvd_msg); getPayload(rcvd_payload, rcvd_msg, rcvd_payloadLength); // Check 1)header, 2)sequence number, 3)isACK field if(rcvd_payload[0]==0x05 && rcvd_payload[1]==0x30 && rcvd_payload[2]==src_packet[2] && rcvd_payload[3]==1){ src_packet[2]++; // Change the payload here } } if(src_packet[2]==0x14) break; } while(1){ if(checkTimer(1)){ setGPIO(1,1); } } }
void broadcastSend(void) { uint8_t i; pTxData[FRAME_BYTE_HEADER] = 0xFF; pTxData[FRAME_BYTE_TYPE] = BROADCASTHEADER; pTxData[FRAME_BYTE_SRC_ID] = ID; pTxData[FRAME_BYTE_NUMOFSENSOR] = NUMOFSENSOR; pTxData[FRAME_BYTE_STYPE1] = TYPE_HEADING; // type1: eCompass pTxData[FRAME_BYTE_SVALUE11] = flat_headingH; pTxData[FRAME_BYTE_SVALUE12] = flat_headingL; pTxData[FRAME_BYTE_STYPE2] = TYPE_SPEED; // type2: velocity pTxData[FRAME_BYTE_SVALUE21] = RealspeedH; pTxData[FRAME_BYTE_SVALUE22] = RealspeedL; pTxData[FRAME_BYTE_STYPE3] = 0x03; // type3: GPS degree pTxData[FRAME_BYTE_SVALUE31] = Lat_deg; pTxData[FRAME_BYTE_SVALUE32] = Long_deg; pTxData[FRAME_BYTE_STYPE4] = 0x04; // type4: GPS minute pTxData[FRAME_BYTE_SVALUE41] = Lat_min; pTxData[FRAME_BYTE_SVALUE42] = Long_min; pTxData[FRAME_BYTE_STYPE5] = 0x05; // type5: GPS second pTxData[FRAME_BYTE_SVALUE51] = Lat_sec; pTxData[FRAME_BYTE_SVALUE52] = Long_sec; pTxData[FRAME_BYTE_STYPE6] = 0x06; // type6: GPS direction pTxData[FRAME_BYTE_SVALUE61] = Lat_dir; pTxData[FRAME_BYTE_SVALUE62] = Long_dir; pTxData[FRAME_BYTE_STYPE7] = 0x07; // type6: GPS direction pTxData[FRAME_BYTE_SVALUE71] = Lat_dir; pTxData[FRAME_BYTE_SVALUE72] = Long_dir; for(i=framelength;i<128;i++){ pTxData[i]=0x00; } // pTxData[framelength] = CheckSum(pTxData, framelength); RF_Tx(0xFFFF, pTxData, framelength); }