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 James Hilder

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);