Library set up as dummy module on mbed to mimic Nordic.

Dependencies:   mbed-rtos mbed

Revision:
2:9ab591cf81b8
Parent:
1:d6b18299a715
--- a/main.cpp	Mon Dec 12 23:19:30 2016 +0000
+++ b/main.cpp	Tue Dec 13 00:20:29 2016 +0000
@@ -8,7 +8,14 @@
 #include "uart1.h"
 #include "BTpacket.h"
 
-#define FX 0x02
+extern const unsigned char DEVADDRESS = 0xF0;
+#define NORDIC_ADDRESS     DEVADDRESS
+#define BTMODULE_A_ADDRESS 0x20                     //  #CC not sure if this has been defined by CEPD
+#define BTMODULE_B_ADDRESS 0x22                     //  #CC not sure if this has been defined by CEPD
+
+enum Commands   {   FX1 = 0x10 , FX1_ACK = 0x90 ,   //  #CC list the commands needed for the NORDIC Module
+                    FX2 = 0x12 , FX2_ACK = 0x92
+                };
 
 /*===========================================    
 *   These functions need to be completed
@@ -16,9 +23,11 @@
 */
 int Bluetooth_ReceivePacket( Packet * );
 int Bluetooth_SendChar( unsigned char );
+int Bluetooth_SerialHandler( void );
 /*==========================================*/
 
-void Fx( unsigned char * );
+void Fx1( unsigned char * );
+void Fx2( unsigned char * );
 
 
 /*===========================================    
@@ -39,11 +48,13 @@
 }
 
 void Test( void );
+void PrintPacket( Packet *_packet );
 /*==========================================*/
 
 int main() {  
     
-    RegisterCommand( FX , &Fx );  
+    RegisterCommand( FX1 , &Fx1 );   
+    RegisterCommand( FX2 , &Fx2 );            
     
     initComms();
     pc.printf( "\n\rStarted...\n\r" );
@@ -60,10 +71,29 @@
 
 }
 
+//================ Custom Functions =============================================
+/*  These functions local functions to the Nordic chip that are exposed to the 
+*    system. They must follow this prototype (same return values and parameter)
+*     and must be registered with a command using RegisterCommand() from RS485
+*     library.
+*/
+void Fx1( unsigned char *_receivedData ){
+    
+    pc.printf( "In FX1!\n\r" );
+    
+    Packet packet;
+    packet.sourceID = 0xF0;
+    packet.deviceID = 0xFE;
+    packet.command = 0x90;
+    packet.packetData[0] = 0x22;
+    packet.packetLength = 0x01;
+    
+    SetResponsePacket( &packet );
+}
 
-void Fx( unsigned char *_receivedData ){
+void Fx2( unsigned char *_receivedData ){
     
-    pc.printf( "In FX!\n\r" );
+    pc.printf( "In FX2!\n\r" );
     
     Packet packet;
     packet.sourceID = 0xF0;
@@ -72,44 +102,82 @@
     packet.packetData[0] = 0x22;
     packet.packetLength = 0x01;
     
-    SetResponse( &packet );
+    SetResponsePacket( &packet );
 }
+//================ End Custom Functions =========================================
 
-int Bluetooth_SerialGetChar( unsigned char *_c ){
-    if( bus.readable() ){
-        char c = bus.getc();
-        pc.printf( "%x" , c );
-        _c = (unsigned char*)c;
-        return 1;
-    }   
+//#CC This needs to handle the uart port and pass received bytes on
+/******************************************************************************
+ * Bluetooth_SerialHandler
+ *
+ * The UART port needs to be handled and when a byte is received it is passed on
+ *  to SerialHandler() form the rs485 library.
+ *
+ * PreCondition:    None
+ *
+ * Input:           '_packet' - packet received from the bus.
+ *
+ *
+ * Output:          None
+ *
+ * Side Effects:    None
+ *
+ *****************************************************************************/
+int Bluetooth_SerialHandler( void ){
+//    if( ByteAvailableOnSerial ){
+//        SerialHandler( GetByte() );    
+//    }
     return 0;
 }
 
+//#CC This needs to be modified as commented below
+/******************************************************************************
+ * Bluetooth_ReceivePacket
+ *
+ * This gets automatically called by the bus library when a complete packet is
+ *  received. It checks the address the packet is going to and redirects the
+ *  message appropriately (ie: if message is for the Nordic chip it calls a
+ *  function or it sends it off to a BT device).
+ *
+ * PreCondition:    None
+ *
+ * Input:           '_packet' - packet received from the bus.
+ *
+ *
+ * Output:          None
+ *
+ * Side Effects:    None
+ *
+ *****************************************************************************/
 int Bluetooth_ReceivePacket( Packet *_packet ){
 
     #ifdef DEBUG
         PrintPacket( _packet );
     #endif // DEBUG   
     
-    switch ( _packet->command ){
+    switch ( _packet->command ){                //  makes decision based off where packet is addressed to go
         
-        case 0x01:        
-            CheckFunction( _packet );
+        case NORDIC_ADDRESS:                    //  if the message is for the Nordic chip...              
+            if( !CheckFunction( _packet ) ){    //  this will call the appropriate function if one is registered
+                //#CC                           //  code goes here if the function is not registered
+            }
             break;
             
-        case 0x02:
-        
+        case BTMODULE_A_ADDRESS:                //  if message is for Bluetooth Module A
+            //#CC
+            /*
+                Need to bring in packet and modify to send out over BT            
+            */                   
             break;
             
-        case 0x03:
+        case BTMODULE_B_ADDRESS:
         
             break;
             
         default:
             break;   
         
-    } 
-    
+    }   
     
     return 0;
 }