Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Wed Oct 26 19:36:49 2016 +0000
Revision:
277:86dbc2483b67
Parent:
267:fdb40bcd9c12
Child:
279:b60379a9eb1a
minor changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:65cfa4873284 1 /******************************************************************************
davidjhoward 249:68ed571e0002 2 *
jmarkel44 0:65cfa4873284 3 * File: BLEDataHandler.cpp
jmarkel44 0:65cfa4873284 4 * Desciption: source for the ICE Bluetooth Low Energy Data Handler
jmarkel44 0:65cfa4873284 5 *
jmarkel44 0:65cfa4873284 6 *****************************************************************************/
jmarkel44 0:65cfa4873284 7 #include "global.h"
jmarkel44 0:65cfa4873284 8 #include <stdio.h>
jmarkel44 0:65cfa4873284 9 #include "BLEDataHandler.h"
davidjhoward 267:fdb40bcd9c12 10 #include "CloudDataHandler.h"
davidjhoward 249:68ed571e0002 11 #include "LoggerApi.h"
davidjhoward 249:68ed571e0002 12 #include "ble_main.h"
davidjhoward 249:68ed571e0002 13 #include "ble_init.h"
davidjhoward 249:68ed571e0002 14 #include "ble_msg_handler.h"
davidjhoward 257:e22102d2e079 15 #include "ble_spi.h"
davidjhoward 267:fdb40bcd9c12 16 #include "cJSON.h"
jmarkel44 0:65cfa4873284 17
jmarkel44 0:65cfa4873284 18 /*****************************************************************************
jmarkel44 0:65cfa4873284 19 * Function: BLEDataHandler
davidjhoward 249:68ed571e0002 20 * Description: entry point for the Analytics Logger
jmarkel44 0:65cfa4873284 21 *
jmarkel44 0:65cfa4873284 22 * @param (IN) args (user-defined arguments)
jmarkel44 0:65cfa4873284 23 * @return none
jmarkel44 0:65cfa4873284 24 *****************************************************************************/
davidjhoward 249:68ed571e0002 25
davidjhoward 249:68ed571e0002 26 BLE_FILE BLE;
davidjhoward 249:68ed571e0002 27 BLE_INIT ble_init;
davidjhoward 249:68ed571e0002 28
davidjhoward 266:09ba8e22963d 29 #define BLE_DEVICE_NAME "Ecolab"
davidjhoward 266:09ba8e22963d 30
davidjhoward 266:09ba8e22963d 31 bool send_json = false;
davidjhoward 266:09ba8e22963d 32
davidjhoward 267:fdb40bcd9c12 33 /*****************************************************************************
davidjhoward 267:fdb40bcd9c12 34 * Function: BLE data receive callback
davidjhoward 267:fdb40bcd9c12 35 * Description: Process BLE data
davidjhoward 267:fdb40bcd9c12 36 *
davidjhoward 267:fdb40bcd9c12 37 * @param spi_rcv_array
davidjhoward 267:fdb40bcd9c12 38 * @param *rx_data
davidjhoward 267:fdb40bcd9c12 39 * @param length
davidjhoward 267:fdb40bcd9c12 40 * @return none
davidjhoward 267:fdb40bcd9c12 41 *****************************************************************************/
davidjhoward 266:09ba8e22963d 42 static void BleRxDataCallback(uint8_t *rx_data, uint8_t len)
davidjhoward 266:09ba8e22963d 43 {
davidjhoward 266:09ba8e22963d 44 printf("Data Received: ");
davidjhoward 267:fdb40bcd9c12 45 for(int i=0; i<len; i++) {
davidjhoward 266:09ba8e22963d 46 printf("%c",rx_data[i]);
davidjhoward 267:fdb40bcd9c12 47
davidjhoward 267:fdb40bcd9c12 48 if(rx_data[0] == 0x61) {
davidjhoward 266:09ba8e22963d 49 send_json =true;
davidjhoward 267:fdb40bcd9c12 50 }
davidjhoward 266:09ba8e22963d 51 }
davidjhoward 266:09ba8e22963d 52 printf("\n\r");
davidjhoward 266:09ba8e22963d 53
davidjhoward 266:09ba8e22963d 54 }
davidjhoward 266:09ba8e22963d 55
jmarkel44 0:65cfa4873284 56 void BLEDataHandler(void const *args)
jmarkel44 0:65cfa4873284 57 {
davidjhoward 266:09ba8e22963d 58 uint8_t tx_array[500];
davidjhoward 257:e22102d2e079 59 uint8_t event_status;
davidjhoward 267:fdb40bcd9c12 60 char * recv_str = "{ \"mtype\":1200, \"getreadings\":[ { \"tag\":\"i_tra01\" } ] }"; // use this to fake a message out requesting i_tra01 readings
davidjhoward 257:e22102d2e079 61
davidjhoward 249:68ed571e0002 62 /*TODO
davidjhoward 257:e22102d2e079 63 Getting the init status from Nano BLE register and
davidjhoward 257:e22102d2e079 64 Proceed based on the status.
davidjhoward 257:e22102d2e079 65 */
davidjhoward 266:09ba8e22963d 66 event_status = BLE.ConfigureBLEDevice(BLE_DEVICE_NAME);
davidjhoward 266:09ba8e22963d 67 BleDataRxCbRegister(BleRxDataCallback);
davidjhoward 257:e22102d2e079 68 while(1) {
davidjhoward 257:e22102d2e079 69
davidjhoward 266:09ba8e22963d 70 event_status = PollBLEEvents();
davidjhoward 266:09ba8e22963d 71 if(event_status == true && send_json == true) {
davidjhoward 267:fdb40bcd9c12 72
davidjhoward 277:86dbc2483b67 73 cJSON * root = cJSON_Parse( recv_str ); // recv_str is used to generate a fake message, Jinu can remove for testing.
davidjhoward 267:fdb40bcd9c12 74 int mType = cJSON_GetObjectItem(root,"mtype")->valueint;
davidjhoward 267:fdb40bcd9c12 75
davidjhoward 267:fdb40bcd9c12 76 printf("mType=%d, str=%s\r\n",mType, recv_str);
davidjhoward 267:fdb40bcd9c12 77 switch( mType ) {
davidjhoward 267:fdb40bcd9c12 78 case BT_GETLIVE_COMMAND_MTYPE: {
davidjhoward 267:fdb40bcd9c12 79
davidjhoward 267:fdb40bcd9c12 80 std::vector<std::string> RequestedTags;
davidjhoward 267:fdb40bcd9c12 81 cJSON *getreadings = cJSON_GetObjectItem(root, "getreadings");
davidjhoward 267:fdb40bcd9c12 82 for ( int i = 0; i < cJSON_GetArraySize(getreadings); ++i ) {
davidjhoward 267:fdb40bcd9c12 83 cJSON *item = cJSON_GetArrayItem(getreadings, i);
davidjhoward 267:fdb40bcd9c12 84 std::string tag = cJSON_GetObjectItem(item, "tag")->valuestring;
davidjhoward 267:fdb40bcd9c12 85 RequestedTags.push_back(tag);
davidjhoward 267:fdb40bcd9c12 86 }
davidjhoward 267:fdb40bcd9c12 87
davidjhoward 267:fdb40bcd9c12 88 GetTagReadings( RequestedTags, (char *)tx_array, sizeof(tx_array) );
davidjhoward 267:fdb40bcd9c12 89
davidjhoward 267:fdb40bcd9c12 90 printf("Sending Reply to APP: %s\r\n",tx_array);
davidjhoward 267:fdb40bcd9c12 91 BLE.SendFile(tx_array,strlen((char *)tx_array));
davidjhoward 267:fdb40bcd9c12 92 send_json = false;
davidjhoward 267:fdb40bcd9c12 93 break;
davidjhoward 267:fdb40bcd9c12 94 }
davidjhoward 267:fdb40bcd9c12 95 default:
davidjhoward 267:fdb40bcd9c12 96 printf("unknown mtype received\r\n");
davidjhoward 267:fdb40bcd9c12 97 break;
davidjhoward 267:fdb40bcd9c12 98 }
davidjhoward 277:86dbc2483b67 99 cJSON_Delete(root);
davidjhoward 249:68ed571e0002 100 }
davidjhoward 257:e22102d2e079 101 Thread::wait(100);
davidjhoward 257:e22102d2e079 102 }
jmarkel44 0:65cfa4873284 103 }