Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed
Fork of ICE by
BLE/src/ble_msg_handler.cpp@284:cc72206ea8e0, 2016-10-28 (annotated)
- Committer:
- jinu
- Date:
- Fri Oct 28 18:44:12 2016 +0000
- Revision:
- 284:cc72206ea8e0
- Parent:
- 280:7c1c9274cce6
modified for live data testing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
davidjhoward | 265:0fb72c26ae68 | 1 | /** |
davidjhoward | 265:0fb72c26ae68 | 2 | ****************************************************************************** |
davidjhoward | 265:0fb72c26ae68 | 3 | * @file ble_uart.cpp |
davidjhoward | 265:0fb72c26ae68 | 4 | * @author Happiesstminds Firmware Team |
davidjhoward | 265:0fb72c26ae68 | 5 | * @version v1.0 |
davidjhoward | 265:0fb72c26ae68 | 6 | * @date 4-Oct-2016 |
davidjhoward | 265:0fb72c26ae68 | 7 | * @brief |
davidjhoward | 265:0fb72c26ae68 | 8 | * |
davidjhoward | 265:0fb72c26ae68 | 9 | ****************************************************************************** |
davidjhoward | 265:0fb72c26ae68 | 10 | * @attention |
davidjhoward | 265:0fb72c26ae68 | 11 | * |
davidjhoward | 265:0fb72c26ae68 | 12 | * |
davidjhoward | 265:0fb72c26ae68 | 13 | ****************************************************************************** |
davidjhoward | 265:0fb72c26ae68 | 14 | */ |
davidjhoward | 265:0fb72c26ae68 | 15 | |
davidjhoward | 265:0fb72c26ae68 | 16 | /******************************************************************************/ |
davidjhoward | 265:0fb72c26ae68 | 17 | /* Include Files*/ |
davidjhoward | 265:0fb72c26ae68 | 18 | /******************************************************************************/ |
davidjhoward | 265:0fb72c26ae68 | 19 | |
davidjhoward | 265:0fb72c26ae68 | 20 | #include "mbed.h" |
davidjhoward | 265:0fb72c26ae68 | 21 | #include "ble_msg_handler.h" |
davidjhoward | 265:0fb72c26ae68 | 22 | #include "ble_spi.h" |
davidjhoward | 265:0fb72c26ae68 | 23 | #include "ble_main.h" |
davidjhoward | 265:0fb72c26ae68 | 24 | /******************************************************************************/ |
davidjhoward | 265:0fb72c26ae68 | 25 | /* Defines */ |
davidjhoward | 265:0fb72c26ae68 | 26 | /******************************************************************************/ |
davidjhoward | 279:b60379a9eb1a | 27 | #define MAX_FILE_SIZE 1000 |
davidjhoward | 265:0fb72c26ae68 | 28 | |
davidjhoward | 265:0fb72c26ae68 | 29 | volatile bool isDeviceConnected; |
davidjhoward | 265:0fb72c26ae68 | 30 | static ble_data_ready_callback_t data_ready_cb; |
davidjhoward | 279:b60379a9eb1a | 31 | uint8_t json_array[MAX_FILE_SIZE]; |
jinu | 284:cc72206ea8e0 | 32 | uint16_t count,file_index,file_size; |
davidjhoward | 265:0fb72c26ae68 | 33 | /***************************************************************************** |
davidjhoward | 265:0fb72c26ae68 | 34 | * Function: BLE data receive callback |
davidjhoward | 265:0fb72c26ae68 | 35 | * Description: Function used to register ble data receive callback |
davidjhoward | 265:0fb72c26ae68 | 36 | * |
davidjhoward | 265:0fb72c26ae68 | 37 | * @param ble_data_ready_callback_t |
davidjhoward | 265:0fb72c26ae68 | 38 | * @return none |
davidjhoward | 265:0fb72c26ae68 | 39 | *****************************************************************************/ |
davidjhoward | 265:0fb72c26ae68 | 40 | void BleDataRxCbRegister(ble_data_ready_callback_t data_rx_callback) |
davidjhoward | 265:0fb72c26ae68 | 41 | { |
davidjhoward | 265:0fb72c26ae68 | 42 | data_ready_cb = data_rx_callback; |
davidjhoward | 265:0fb72c26ae68 | 43 | } |
davidjhoward | 265:0fb72c26ae68 | 44 | |
davidjhoward | 265:0fb72c26ae68 | 45 | /***************************************************************************** |
davidjhoward | 265:0fb72c26ae68 | 46 | * Function: ProcessBleRxEvents() |
davidjhoward | 265:0fb72c26ae68 | 47 | * Description: Process BLE data |
davidjhoward | 265:0fb72c26ae68 | 48 | * |
davidjhoward | 265:0fb72c26ae68 | 49 | * @param spi_rcv_array |
davidjhoward | 265:0fb72c26ae68 | 50 | * @param length |
davidjhoward | 265:0fb72c26ae68 | 51 | * @return none |
davidjhoward | 265:0fb72c26ae68 | 52 | *****************************************************************************/ |
davidjhoward | 265:0fb72c26ae68 | 53 | void ProcessBleRxEvents(uint8_t *spi_rcv_array, uint8_t len) |
davidjhoward | 265:0fb72c26ae68 | 54 | { |
davidjhoward | 265:0fb72c26ae68 | 55 | static bool file_receiving_flag = false; |
davidjhoward | 265:0fb72c26ae68 | 56 | |
davidjhoward | 265:0fb72c26ae68 | 57 | if (spi_rcv_array[0] == BLE_SOF_CMD) { |
davidjhoward | 265:0fb72c26ae68 | 58 | switch (spi_rcv_array[1]) |
davidjhoward | 265:0fb72c26ae68 | 59 | { |
davidjhoward | 265:0fb72c26ae68 | 60 | case BLE_CONNECTION_EVNT_CMD: |
jmarkel44 | 275:76285569fb64 | 61 | printf("Mobile device connected...\n\r"); |
davidjhoward | 265:0fb72c26ae68 | 62 | isDeviceConnected =true; |
davidjhoward | 265:0fb72c26ae68 | 63 | break; |
davidjhoward | 265:0fb72c26ae68 | 64 | |
davidjhoward | 265:0fb72c26ae68 | 65 | case BLE_REC_DATA_CMD: |
davidjhoward | 265:0fb72c26ae68 | 66 | /* |
davidjhoward | 279:b60379a9eb1a | 67 | when nRF UART send a packet to mDot board, we are incrementing |
davidjhoward | 279:b60379a9eb1a | 68 | a counter and till count equals 3, we are appending data to |
davidjhoward | 279:b60379a9eb1a | 69 | json Array.when it equals 3,ie 60 bytes(assuming that each time |
davidjhoward | 279:b60379a9eb1a | 70 | we are sening 20 bytes), passing this to callback to main |
davidjhoward | 279:b60379a9eb1a | 71 | function. |
jinu | 284:cc72206ea8e0 | 72 | */ |
jinu | 284:cc72206ea8e0 | 73 | |
jinu | 284:cc72206ea8e0 | 74 | // if(file_receiving_flag ==true) |
jinu | 284:cc72206ea8e0 | 75 | // { |
jinu | 284:cc72206ea8e0 | 76 | // count++; |
davidjhoward | 279:b60379a9eb1a | 77 | /*reassembling packets */ |
davidjhoward | 279:b60379a9eb1a | 78 | memcpy(&json_array[file_index],&spi_rcv_array[3], (spi_rcv_array[2]-4)); |
davidjhoward | 279:b60379a9eb1a | 79 | |
jinu | 284:cc72206ea8e0 | 80 | // file_index+= (spi_rcv_array[2]-4); //((spi_rcv_array[2]-4) contains packet length excluding headers |
davidjhoward | 279:b60379a9eb1a | 81 | |
jinu | 284:cc72206ea8e0 | 82 | // if(count ==3) //added for testing. Need to change this to if(file_index == file_size) |
jinu | 284:cc72206ea8e0 | 83 | // { |
davidjhoward | 279:b60379a9eb1a | 84 | /*Passing the entire file to callback function*/ |
jinu | 284:cc72206ea8e0 | 85 | // data_ready_cb(json_array, file_index); |
jinu | 284:cc72206ea8e0 | 86 | data_ready_cb(json_array, (spi_rcv_array[2]-4)); |
davidjhoward | 279:b60379a9eb1a | 87 | count= 0; |
davidjhoward | 279:b60379a9eb1a | 88 | file_index =0; |
jinu | 284:cc72206ea8e0 | 89 | /* Reset the File Parameters */ |
jinu | 284:cc72206ea8e0 | 90 | file_receiving_flag = false; |
jinu | 284:cc72206ea8e0 | 91 | // } |
jinu | 284:cc72206ea8e0 | 92 | // } |
davidjhoward | 265:0fb72c26ae68 | 93 | break; |
davidjhoward | 265:0fb72c26ae68 | 94 | |
davidjhoward | 265:0fb72c26ae68 | 95 | case BLE_DISCONNECTION_EVNT_CMD: |
jmarkel44 | 275:76285569fb64 | 96 | printf("Mobile device disconnected...\n\r"); |
davidjhoward | 265:0fb72c26ae68 | 97 | isDeviceConnected =false; |
davidjhoward | 265:0fb72c26ae68 | 98 | break; |
davidjhoward | 265:0fb72c26ae68 | 99 | |
davidjhoward | 265:0fb72c26ae68 | 100 | case BLE_START_OF_FILE: |
davidjhoward | 279:b60379a9eb1a | 101 | |
davidjhoward | 265:0fb72c26ae68 | 102 | file_receiving_flag = true; |
davidjhoward | 279:b60379a9eb1a | 103 | |
davidjhoward | 279:b60379a9eb1a | 104 | /*extract the json string length from SOF. */ |
davidjhoward | 279:b60379a9eb1a | 105 | |
jinu | 284:cc72206ea8e0 | 106 | file_size = ((spi_rcv_array[3]<<8)|spi_rcv_array[4]); |
davidjhoward | 279:b60379a9eb1a | 107 | |
davidjhoward | 265:0fb72c26ae68 | 108 | break; |
davidjhoward | 265:0fb72c26ae68 | 109 | |
davidjhoward | 265:0fb72c26ae68 | 110 | case BLE_END_OF_FILE: |
davidjhoward | 265:0fb72c26ae68 | 111 | /* Reset the File Parameters */ |
davidjhoward | 265:0fb72c26ae68 | 112 | file_receiving_flag = false; |
davidjhoward | 265:0fb72c26ae68 | 113 | break; |
davidjhoward | 265:0fb72c26ae68 | 114 | |
davidjhoward | 265:0fb72c26ae68 | 115 | default: |
davidjhoward | 265:0fb72c26ae68 | 116 | printf("Unknown ID\n\r"); |
davidjhoward | 265:0fb72c26ae68 | 117 | break; |
davidjhoward | 265:0fb72c26ae68 | 118 | } |
davidjhoward | 265:0fb72c26ae68 | 119 | } else { |
davidjhoward | 265:0fb72c26ae68 | 120 | printf("SOF not found\n\r"); |
davidjhoward | 265:0fb72c26ae68 | 121 | } |
davidjhoward | 265:0fb72c26ae68 | 122 | } |
davidjhoward | 265:0fb72c26ae68 | 123 | |
davidjhoward | 265:0fb72c26ae68 | 124 | /******************************************************************************/ |
davidjhoward | 265:0fb72c26ae68 | 125 | /* END OF FILE */ |
jinu | 284:cc72206ea8e0 | 126 | /******************************************************************************/ |