Hardware Reference
In-Depth Information
if (LogFile) {
LogFile.write (SDoutBuffer,34);
Serial.write (SDoutBuffer,34);
if (ADKisConnected && LogFileSyncADK){
ADK.write (SDoutBuffer,34);
}
} // end if (LogFile)
LogFile.close();
SDoutBuffer[3] = 0xFF; // reset SD buffer
SDoutBuffer[5] = 0xFF;
SDoutBuffer[11] = 0xFF;
SDoutBuffer[13] = 0xFF;
SDoutBuffer[19] = 0xFF;
SDoutBuffer[21] = 0xFF;
break;
} // end switch
}// end void PrepareDataForSD()
Part 7 is the function that creates and sends an OK reply and is called when a good packet is received from the
XBee network. The packet is created dynamically to be able to send the reply packet to the originating sensor node.
The packet is formed in the same fashion as every XBee API transmit request that has been generated thus far.
The packet is formed in a buffer with the proper formatting before being sent. The packet's data is constant; the
only change is that of the address.
Listing 8-3. Data Logger and ADK Handler, Part 7 of 8
void SendOK(){
delay (50);
byte length = 2;
byte Outdata[2] = {'O', 'K'};
OutPacketBuffer[17 + length] = 0; // clear checksum byte
OutPacketBuffer[0] = 0x7E; // start byte
OutPacketBuffer[1] = 0; // 1st length byte will be zero with current limitations
OutPacketBuffer[3] = 0x10; // transmit request frame type
OutPacketBuffer[4] = 0; // frame ID
for (int i = 5; i <= 14; i++){ // add addresses
OutPacketBuffer[i] = sourceADR[i-5];
}
OutPacketBuffer[15] = 0 ; // set both options
OutPacketBuffer[16] = 0 ;
for (int i = 0; i < length; i++){
OutPacketBuffer[i + 17] = Outdata [i]; // add data to packet
}
OutPacketBuffer[2] = 14 + length; // set the lower length byte
for (int i = 0; i < OutPacketBuffer[2]; i++){ // start calculating errorsum
OutPacketBuffer[17+ length] = OutPacketBuffer[17+ length] + OutPacketBuffer[i+3];
}
// finish packet by adding checksum
OutPacketBuffer[17+ length]= 0xFF - OutPacketBuffer[17+ length];
Serial3.write(OutPacketBuffer, (18 + length));
lastReply = true;
}// end void SendOK()
 
Search WWH ::




Custom Search