Unfinished version 0.6 library for the Pi Swarm robot. NOTE: This library is not yet finished or fully tested - it will change.
Dependents: Pi_Swarm_Blank Aggregation-Flocking_2 Pi_Swarm_User_Command_RF_Test
Fork of Pi_Swarm_Library by
Diff: alpha433.cpp
- Revision:
- 9:7a4fc1d7e484
- Parent:
- 8:08dec9c7d3f6
- Child:
- 10:5c111c07a2ed
--- a/alpha433.cpp Mon Feb 03 12:59:51 2014 +0000 +++ b/alpha433.cpp Tue Feb 18 17:14:03 2014 +0000 @@ -4,7 +4,7 @@ * * (C) Dr James Hilder, Dept. Electronics & Computer Science, University of York * - * Version 0.5 February 2014 + * Version 0.6 February 2014 * * Designed for use with the Pi Swarm Board (enhanced MBED sensor board) v1.2 * @@ -29,6 +29,28 @@ char cDataAvailable = 0; +volatile int gi_RF_messages_sent =0; +volatile int gi_RF_messages_received =0; +volatile int gi_RF_bytes_sent=0; +volatile int gi_RF_bytes_received=0; +volatile int gi_RF_reset_cycles=0; +volatile int gi_RF_received_length_error=0; +volatile int gi_RF_received_checksum_failure=0; +volatile int gi_RF_received_invalid_sender=0; +volatile int gi_RF_received_invalid_target=0; +volatile int gi_RF_received_invalid_format=0; +volatile int gi_RF_received_not_for_me=0; +volatile int gi_RF_received_broadcast=0; +volatile int gi_RF_received_targeted_to_me=0; +volatile int gi_RF_received_unexpected_response=0; +volatile int gi_RF_received_invalid_response=0; +volatile int gi_RF_commands_actioned=0; +volatile int gi_RF_commands_invalid=0; +volatile int gi_RF_commands_blocked=0; +volatile int gi_RF_requests_actioned=0; +volatile int gi_RF_commands_sent=0; +volatile int gi_RF_responses_sent=0; + Alpha433::Alpha433(PinName mosi, PinName miso, PinName sck, PinName fss, PinName nirq) : Stream("Alpha433"), _spi(mosi,miso,sck), _fss(fss), _nirq_test(nirq), _nirq(nirq) { @@ -91,6 +113,10 @@ } _write(0xB800); // send dummy byte, maybe redundant + + gi_RF_messages_sent++; + gi_RF_bytes_sent+=cCount; + disableTransmitter(); enableReceiver(); ssReceivePointer = 0; @@ -101,6 +127,8 @@ // Handle new RF Data void Alpha433::dataAvailable(char cCount, char* cBuffer) { + gi_RF_messages_received++; + char rstring [cCount+1]; char checksum = 0; int i; @@ -109,7 +137,9 @@ checksum ^= rstring[i]; } rstring[cCount]=0; + gi_RF_bytes_received += cCount; if (cBuffer[cCount] != checksum) { + gi_RF_received_checksum_failure++; if(RF_VERBOSE == 1)pc.printf("RF Received [%d] \"%s\" (checksum failed: expected %02X, received %02X)%02X %02X\n",cCount,rstring,checksum,cBuffer[cCount],cBuffer[cCount-1],cBuffer[cCount+1]); } else { if(RF_VERBOSE == 1)pc.printf("RF Received [%d] \"%s\" (checksum passed)\n",cCount,rstring); @@ -167,6 +197,8 @@ // Reset RF void Alpha433::rf_reset(void) { + gi_RF_reset_cycles++; + // Chip must be deselected _fss = 1; @@ -230,6 +262,7 @@ if((ssReceiveCount == 0) || (ssReceiveCount > 62)) { // error amount of data read_failure=1; + gi_RF_received_length_error++; pc.printf("Error amount of RX data: %d\n",ssReceiveCount); reset_timeout.detach(); reset_timeout.attach(this,&Alpha433::timeout,TIMEOUT);