Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Files at this revision

API Documentation at this revision

Comitter:
jinu
Date:
Fri Oct 28 18:44:12 2016 +0000
Parent:
283:a09013615589
Commit message:
modified for live data testing

Changed in this revision

BLE/src/ble_main.cpp Show annotated file Show diff for this revision Revisions of this file
BLE/src/ble_msg_handler.cpp Show annotated file Show diff for this revision Revisions of this file
src/BLEDataHandler/BLEDataHandler.cpp Show annotated file Show diff for this revision Revisions of this file
src/BLEDataHandler/BLEDataHandler.h Show annotated file Show diff for this revision Revisions of this file
src/CloudDataHandler/CloudDataHandler.cpp Show annotated file Show diff for this revision Revisions of this file
src/CloudDataHandler/LogHandler.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/BLE/src/ble_main.cpp	Fri Oct 28 16:28:44 2016 +0000
+++ b/BLE/src/ble_main.cpp	Fri Oct 28 18:44:12 2016 +0000
@@ -29,7 +29,8 @@
 /******************************************************************************/
 BLE_INIT BLE_INIT;
 extern volatile bool isDeviceConnected;
-
+uint8_t temp_buf[30];
+uint8_t dummy_bytes;
 /*******************************************************************************
  * Function:            ConfigureBLEDevice()
  * Description:         Initialise and configure BLE
@@ -107,7 +108,7 @@
     packet[3] =0x45;
     packet[4] =0x4f;
     packet[5] =0x46;    
-    memset(&packet[6], 0x45, 17);
+    memset(&packet[6], 0x40, 17);
     packet[23]=BLE_EOT_CMD;               
     WriteSpiData(packet,24);
 }
@@ -126,20 +127,23 @@
     uint8_t num_writes,rem_bytes,start_index =0;   
     //  GetFileName();  //TODO
     /*added for testing purpose.Need to be removed*/
+    num_writes = ((len)/MAX_PAYLOAD_BYTES);
+    rem_bytes =((len)%MAX_PAYLOAD_BYTES);
+    
     uint8_t file_name[20];
     file_name[0] =0x53;
     file_name[1] =0x4f;
     file_name[2] =0x46;
-    memset(&file_name[3],0x5a,17);
+    file_name[3] = rem_bytes;
+    memset(&file_name[4],0x40,17);
     
     /*TODO
     SOF consist of information about packets.Now sending a string for testing 
     with mobile app
     */ 
     SendSOF(file_name,16);        
-                         
-    num_writes = ((len)/MAX_PAYLOAD_BYTES);
-    rem_bytes =((len)%MAX_PAYLOAD_BYTES);
+    SendSOF(file_name,16);                     
+
 
     for(int i=0;i<(num_writes);i++)
     {
@@ -148,13 +152,17 @@
     }
     if(rem_bytes)
     {
-        BLE_INIT.SendBleData(&json_file[start_index], rem_bytes);       
+        dummy_bytes = 20-rem_bytes;
+    //    BLE_INIT.SendBleData(&json_file[start_index], rem_bytes);
+        memcpy(temp_buf,&json_file[start_index],rem_bytes);
+        memset(&temp_buf[rem_bytes],0x40,dummy_bytes);
+        BLE_INIT.SendBleData(temp_buf, MAX_PAYLOAD_BYTES);       
     }
     
     /*TODO
     EOF indication that packets transfer compleated.
     This information can be passed in SOF.    */        
- //   SendEOF();    
+    SendEOF();    
 
 }
 
--- a/BLE/src/ble_msg_handler.cpp	Fri Oct 28 16:28:44 2016 +0000
+++ b/BLE/src/ble_msg_handler.cpp	Fri Oct 28 18:44:12 2016 +0000
@@ -29,7 +29,7 @@
 volatile bool isDeviceConnected;
 static ble_data_ready_callback_t data_ready_cb;
 uint8_t json_array[MAX_FILE_SIZE];
-uint8_t count,file_index,file_size;
+uint16_t count,file_index,file_size;
   /*****************************************************************************
  * Function:            BLE data receive callback
  * Description:         Function used to register ble data receive callback 
@@ -69,21 +69,27 @@
                     json Array.when it equals 3,ie 60 bytes(assuming that each time 
                     we are sening 20 bytes), passing this to callback to main
                     function.          
-                */                 
-                
-                count++; 
+                */     
+                       
+              //  if(file_receiving_flag ==true)
+               // {
+             //   count++; 
                 /*reassembling packets */
                 memcpy(&json_array[file_index],&spi_rcv_array[3], (spi_rcv_array[2]-4));
 
-                file_index+= (spi_rcv_array[2]-4);    //((spi_rcv_array[2]-4) contains packet length excluding headers                
+            //    file_index+= (spi_rcv_array[2]-4);    //((spi_rcv_array[2]-4) contains packet length excluding headers                
                 
-                if(count ==3)   //added for testing. Need to change this to if(file_index == file_size)
-                {
+             //   if(count ==3)   //added for testing. Need to change this to if(file_index == file_size)
+           //     {
                     /*Passing the entire file to callback function*/
-                    data_ready_cb(json_array, file_index);
+                   // data_ready_cb(json_array, file_index);
+                    data_ready_cb(json_array, (spi_rcv_array[2]-4));
                     count= 0;
                     file_index =0;
-                }                   
+                    /* Reset the File Parameters */
+                    file_receiving_flag = false;
+             //   }   
+            // }                
                 break;
                 
             case BLE_DISCONNECTION_EVNT_CMD:
@@ -97,7 +103,7 @@
 
             /*extract the json string length from SOF. */               
 
-                file_size = spi_rcv_array[3];
+                file_size = ((spi_rcv_array[3]<<8)|spi_rcv_array[4]);
                    
                 break;
                 
@@ -117,4 +123,4 @@
 
 /******************************************************************************/
 /* END OF FILE                                                                */
-/******************************************************************************/
+/******************************************************************************/
\ No newline at end of file
--- a/src/BLEDataHandler/BLEDataHandler.cpp	Fri Oct 28 16:28:44 2016 +0000
+++ b/src/BLEDataHandler/BLEDataHandler.cpp	Fri Oct 28 18:44:12 2016 +0000
@@ -6,8 +6,6 @@
  *****************************************************************************/
 #include "global.h"
 #include <stdio.h>
-#include <sstream>
-#include <iostream>
 #include "BLEDataHandler.h"
 #include "CloudDataHandler.h"
 #include "LoggerApi.h"
@@ -35,18 +33,6 @@
 bool BLE_StringReceived = false;
 char BLE_ReceiveString[BLE_RECEIVE_BUFFER_SIZE];
 
-void BLE_ReplyToHandler( std::string &id, int status, float value )
-{
-    std::ostringstream mb_reply;
-    
-    BLEHandlerReq_t *mail = BLEHandlerMailBox.alloc();
-    mb_reply << "{  \"mtype\":1001, \"mbreply\":{ \"id\":\"" << id.c_str() << "\"," "\"status\":\"" << status << "\"," "\"value\":\"" << value << "\"} }";
-    std::string string_reply = mb_reply.str();
-    strncpy( mail->reply, string_reply.c_str(), (sizeof(mail->reply)-1));
-    printf("%s:%d: Reply is: %s\r\n",__func__,__LINE__, mail->reply);
-    BLEHandlerMailBox.put(mail);
-}
-
 /*****************************************************************************
 * Function:            BLE data receive callback
 * Description:         Process BLE data
@@ -56,12 +42,11 @@
 * @param               length
 * @return              none
 *****************************************************************************/
-char * fake_string = "{  \"mtype\":1200, \"getreadings\":[ { \"tag\":\"i_tra01\" }, { \"tag\":\"i_bdcond01\" }, { \"tag\":\"i_cond_temp01\" } ] }"; // use this to fake a message out requesting i_tra01 readings
+char * fake_string = "{  \"mtype\":1200, \"getreadings\":[ { \"tag\":\"i_tra01\" } ] }"; // use this to fake a message out requesting i_tra01 readings
 //char * fake_string = "{  \"mtype\":1000, \"mbcommand\":{ \"id\":\"READ_TRASAR\"," "\"node\":\"1\"," "\"func\":\"4\"," "\"sreg\":\"9\"," "\"nreg\":\"2\"," "\"dtype\":\"0\"," "\"order\":\"2\"," "\"value\":\"0\" } }"; // use this to fake a message out requesting i_tra01 readings
-//char * fake_string = "{  \"mtype\":1000, \"mbcommand\":{ \"id\":\"WRITE_MULTIPLE\"," "\"node\":\"21\"," "\"func\":\"16\"," "\"sreg\":\"0\"," "\"nreg\":\"3\"," "\"dtype\":\"5\"," "\"order\":\"2\"," "\"value\":\"0\", \"data\":[ { \"v\":\"20\" }, { \"v\":\"16\" }, { \"v\":\"0\" } ] } }"; // use this to fake a message out requesting i_tra01 readings
-
 static void BleRxDataCallback(uint8_t *rx_data, uint8_t len)
 {
+#if 0  //commented for Demo testing
     memset( BLE_ReceiveString, 0, BLE_RECEIVE_BUFFER_SIZE );
     if( len >= BLE_RECEIVE_BUFFER_SIZE ) {
         printf("Received file larger than buffer (len=%d)\r\n", len );
@@ -73,10 +58,46 @@
     memcpy( BLE_ReceiveString, fake_string, strlen(fake_string) );
     BLE_StringReceived = true;
 //    printf("Data Received:  %s\r\n", BLE_ReceiveString);
+#endif 
+
+    printf("Data Received:  ");
+    for(int i=0;i<len;i++)
+    {
+        printf("%c",rx_data[i]);
+        
+        if(rx_data[0] == 0x61)
+        {
+            BLE_StringReceived =true;
+        }        
+    }
+    printf("\n\r");
 }
 
 void BLEDataHandler(void const *args)
 {
+    uint8_t tx_array[500];
+    uint8_t event_status;
+
+    /*TODO
+        Getting the init status from Nano BLE register and
+        Proceed based on the status.
+    */
+    event_status = BLE.ConfigureBLEDevice(BLE_DEVICE_NAME);
+    BleDataRxCbRegister(BleRxDataCallback);
+    while(1) {
+
+        event_status = PollBLEEvents();
+        if(event_status == true && BLE_StringReceived == true) {
+            GetCurrentReadings( (char *)tx_array, sizeof(tx_array));
+            BLE.SendFile(tx_array,strlen((char *)tx_array));
+            BLE_StringReceived = false;
+        }
+        Thread::wait(100);
+    }
+}
+#if 0
+void BLEDataHandler(void const *args)
+{
     uint8_t tx_array[BLE_TRANSMIT_BUFFER_SIZE];
     uint8_t event_status;
 
@@ -117,7 +138,7 @@
                     std::string payload_string = cJSON_PrintUnformatted(mbcommand);
 
                     printf("%s:%d: Sending Command Request to ModbusMaster: %s\r\n",__func__,__LINE__,payload_string.c_str());
-
+                    
                     ModbusMasterReq_t *mail = ModbusMasterMailBox.alloc();
                     mail->action = ACTION_EXEC_CMD;
                     mail->replyThread = BLE_HANDLER;
@@ -142,4 +163,6 @@
             BLEHandlerMailBox.free(mail);
         }
     }
-}
\ No newline at end of file
+}
+
+#endif
\ No newline at end of file
--- a/src/BLEDataHandler/BLEDataHandler.h	Fri Oct 28 16:28:44 2016 +0000
+++ b/src/BLEDataHandler/BLEDataHandler.h	Fri Oct 28 18:44:12 2016 +0000
@@ -8,6 +8,6 @@
 #define BLEDATAHANDLER_H
 
 void BLEDataHandler(void const *args);
-void BLE_ReplyToHandler( std::string &id, int status, float value );
+//void BLE_ReplyToHandler( std::string &id, int status, float value );
 
 #endif
\ No newline at end of file
--- a/src/CloudDataHandler/CloudDataHandler.cpp	Fri Oct 28 16:28:44 2016 +0000
+++ b/src/CloudDataHandler/CloudDataHandler.cpp	Fri Oct 28 18:44:12 2016 +0000
@@ -17,33 +17,7 @@
     printf("\r%s has started...\n", __func__);
 
     while ( true ) {
-
-        std::string tmp_buffer;
-
-        if (!GLOBAL_mdot->getNetworkJoinStatus()) {
-            logInfo("network not joined, joining network");
-            if ((ret = GLOBAL_mdot->joinNetwork()) != mDot::MDOT_OK) {
-                logError("failed to join network %d:%s", ret, mDot::getReturnCodeString(ret).c_str());
-                joined = false;
-            }
-        } else {
-            joined = true;
-        }
-
-        sent = LogHandler( joined );
-        if( sent == true ) {
-            // sent a packet, try to receive back.
-            logInfo("Sent to gateway: %s", tmp_buffer.c_str());
-            std::vector<uint8_t> rcvData(256);
-            rcvData.clear();
-            if ((ret = GLOBAL_mdot->recv(rcvData)) == mDot::MDOT_OK) {
-                if (!rcvData.empty()) {
-                    std::string rcv_string(rcvData.begin(), rcvData.end());
-                    logInfo("Received Data: %s", rcv_string.c_str());
-                    CloudFileReceiver( &rcv_string, GLOBAL_mdot );
-                }
-            }
-        }
+        sent = LogHandler( false );
         Thread::wait(1000);
     }
-}
\ No newline at end of file
+}
--- a/src/CloudDataHandler/LogHandler.cpp	Fri Oct 28 16:28:44 2016 +0000
+++ b/src/CloudDataHandler/LogHandler.cpp	Fri Oct 28 18:44:12 2016 +0000
@@ -115,7 +115,7 @@
 void ReplyToHandler( ThreadName_t replyTo, std::string &id, int ret, float value )
 {
     if( replyTo == BLE_HANDLER ) {
-        BLE_ReplyToHandler( id, ret, value );
+   //     BLE_ReplyToHandler( id, ret, value );
     } else if( replyTo == CLOUD_DATA_HANDLER ) {
         CDH_ReplyToHandler( id, ret, value );
     } else {