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@258:150f5a76162d, 2016-10-24 (annotated)
- Committer:
- davidjhoward
- Date:
- Mon Oct 24 21:06:45 2016 +0000
- Revision:
- 258:150f5a76162d
- Child:
- 259:341f04be325e
Commit BLE module changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
davidjhoward | 258:150f5a76162d | 1 | /** |
davidjhoward | 258:150f5a76162d | 2 | ****************************************************************************** |
davidjhoward | 258:150f5a76162d | 3 | * @file ble_uart.cpp |
davidjhoward | 258:150f5a76162d | 4 | * @author Happiesstminds Firmware Team |
davidjhoward | 258:150f5a76162d | 5 | * @version v1.0 |
davidjhoward | 258:150f5a76162d | 6 | * @date 4-Oct-2016 |
davidjhoward | 258:150f5a76162d | 7 | * @brief |
davidjhoward | 258:150f5a76162d | 8 | * |
davidjhoward | 258:150f5a76162d | 9 | ****************************************************************************** |
davidjhoward | 258:150f5a76162d | 10 | * @attention |
davidjhoward | 258:150f5a76162d | 11 | * |
davidjhoward | 258:150f5a76162d | 12 | * |
davidjhoward | 258:150f5a76162d | 13 | ****************************************************************************** |
davidjhoward | 258:150f5a76162d | 14 | */ |
davidjhoward | 258:150f5a76162d | 15 | |
davidjhoward | 258:150f5a76162d | 16 | /******************************************************************************/ |
davidjhoward | 258:150f5a76162d | 17 | /* Include Files*/ |
davidjhoward | 258:150f5a76162d | 18 | /******************************************************************************/ |
davidjhoward | 258:150f5a76162d | 19 | |
davidjhoward | 258:150f5a76162d | 20 | #include "mbed.h" |
davidjhoward | 258:150f5a76162d | 21 | #include "ble_msg_handler.h" |
davidjhoward | 258:150f5a76162d | 22 | #include "ble_spi.h" |
davidjhoward | 258:150f5a76162d | 23 | |
davidjhoward | 258:150f5a76162d | 24 | /******************************************************************************/ |
davidjhoward | 258:150f5a76162d | 25 | /* Defines */ |
davidjhoward | 258:150f5a76162d | 26 | /******************************************************************************/ |
davidjhoward | 258:150f5a76162d | 27 | |
davidjhoward | 258:150f5a76162d | 28 | |
davidjhoward | 258:150f5a76162d | 29 | volatile bool isDeviceConnected; |
davidjhoward | 258:150f5a76162d | 30 | bool send_json =false; //remove:added to check mdot and APP communication. |
davidjhoward | 258:150f5a76162d | 31 | /***************************************************************************** |
davidjhoward | 258:150f5a76162d | 32 | * Function: ProcessBleRxEvents() |
davidjhoward | 258:150f5a76162d | 33 | * Description: Process BLE data |
davidjhoward | 258:150f5a76162d | 34 | * |
davidjhoward | 258:150f5a76162d | 35 | * @param spi_rcv_array |
davidjhoward | 258:150f5a76162d | 36 | * @param length |
davidjhoward | 258:150f5a76162d | 37 | * @return none |
davidjhoward | 258:150f5a76162d | 38 | *****************************************************************************/ |
davidjhoward | 258:150f5a76162d | 39 | void ProcessBleRxEvents(uint8_t *spi_rcv_array, uint8_t len) |
davidjhoward | 258:150f5a76162d | 40 | { |
davidjhoward | 258:150f5a76162d | 41 | static bool file_receiving_flag = false; |
davidjhoward | 258:150f5a76162d | 42 | static uint16_t file_size = 0; |
davidjhoward | 258:150f5a76162d | 43 | static uint8_t file_name[16]; |
davidjhoward | 258:150f5a76162d | 44 | |
davidjhoward | 258:150f5a76162d | 45 | if (spi_rcv_array[0] == BLE_SOF_CMD) { |
davidjhoward | 258:150f5a76162d | 46 | switch (spi_rcv_array[1]) |
davidjhoward | 258:150f5a76162d | 47 | { |
davidjhoward | 258:150f5a76162d | 48 | case BLE_CONNECTION_EVNT_CMD: |
davidjhoward | 258:150f5a76162d | 49 | printf("Mobile device connceted\n\r"); |
davidjhoward | 258:150f5a76162d | 50 | isDeviceConnected =true; |
davidjhoward | 258:150f5a76162d | 51 | break; |
davidjhoward | 258:150f5a76162d | 52 | |
davidjhoward | 258:150f5a76162d | 53 | case BLE_REC_DATA_CMD: |
davidjhoward | 258:150f5a76162d | 54 | printf("Data Received : "); |
davidjhoward | 258:150f5a76162d | 55 | /* |
davidjhoward | 258:150f5a76162d | 56 | TODO |
davidjhoward | 258:150f5a76162d | 57 | for testing purpose, if the mobile APP send first data as |
davidjhoward | 258:150f5a76162d | 58 | 'a', then mDot send a test JSON string as reply. |
davidjhoward | 258:150f5a76162d | 59 | */ |
davidjhoward | 258:150f5a76162d | 60 | for(int i=3;i<(spi_rcv_array[2]-1);i++) |
davidjhoward | 258:150f5a76162d | 61 | { |
davidjhoward | 258:150f5a76162d | 62 | if(spi_rcv_array[3] == 0x61) |
davidjhoward | 258:150f5a76162d | 63 | { |
davidjhoward | 258:150f5a76162d | 64 | send_json =true; |
davidjhoward | 258:150f5a76162d | 65 | } |
davidjhoward | 258:150f5a76162d | 66 | printf("%c",spi_rcv_array[i]); |
davidjhoward | 258:150f5a76162d | 67 | |
davidjhoward | 258:150f5a76162d | 68 | } |
davidjhoward | 258:150f5a76162d | 69 | printf("\n\r"); |
davidjhoward | 258:150f5a76162d | 70 | break; |
davidjhoward | 258:150f5a76162d | 71 | |
davidjhoward | 258:150f5a76162d | 72 | case BLE_DISCONNECTION_EVNT_CMD: |
davidjhoward | 258:150f5a76162d | 73 | printf("Mobile disconnected\n\r"); |
davidjhoward | 258:150f5a76162d | 74 | isDeviceConnected =false; |
davidjhoward | 258:150f5a76162d | 75 | break; |
davidjhoward | 258:150f5a76162d | 76 | |
davidjhoward | 258:150f5a76162d | 77 | case BLE_START_OF_FILE: |
davidjhoward | 258:150f5a76162d | 78 | file_receiving_flag = true; |
davidjhoward | 258:150f5a76162d | 79 | file_size = spi_rcv_array[4] << 8 | spi_rcv_array[5]; |
davidjhoward | 258:150f5a76162d | 80 | memcpy (file_name, &spi_rcv_array[6], spi_rcv_array[3]); |
davidjhoward | 258:150f5a76162d | 81 | printf("File name %s receving from mobile. File Size: %d\n\r", file_name, file_size); |
davidjhoward | 258:150f5a76162d | 82 | break; |
davidjhoward | 258:150f5a76162d | 83 | |
davidjhoward | 258:150f5a76162d | 84 | case BLE_END_OF_FILE: |
davidjhoward | 258:150f5a76162d | 85 | |
davidjhoward | 258:150f5a76162d | 86 | /* End of file received */ |
davidjhoward | 258:150f5a76162d | 87 | // file_available_cb(file_name, file_size); |
davidjhoward | 258:150f5a76162d | 88 | |
davidjhoward | 258:150f5a76162d | 89 | /* Reset the File Parameters */ |
davidjhoward | 258:150f5a76162d | 90 | file_receiving_flag = false; |
davidjhoward | 258:150f5a76162d | 91 | file_size = 0; |
davidjhoward | 258:150f5a76162d | 92 | memset(file_name, 0, sizeof(file_name)); |
davidjhoward | 258:150f5a76162d | 93 | break; |
davidjhoward | 258:150f5a76162d | 94 | |
davidjhoward | 258:150f5a76162d | 95 | default: |
davidjhoward | 258:150f5a76162d | 96 | printf("Unknown ID\n\r"); |
davidjhoward | 258:150f5a76162d | 97 | break; |
davidjhoward | 258:150f5a76162d | 98 | } |
davidjhoward | 258:150f5a76162d | 99 | } else { |
davidjhoward | 258:150f5a76162d | 100 | printf("SOF not found\n\r"); |
davidjhoward | 258:150f5a76162d | 101 | } |
davidjhoward | 258:150f5a76162d | 102 | } |
davidjhoward | 258:150f5a76162d | 103 | /***************************************************************************** |
davidjhoward | 258:150f5a76162d | 104 | * Function: msg_handler() |
davidjhoward | 258:150f5a76162d | 105 | * Description: msg_handler |
davidjhoward | 258:150f5a76162d | 106 | * |
davidjhoward | 258:150f5a76162d | 107 | * @param spi_rcv_array |
davidjhoward | 258:150f5a76162d | 108 | * @param None |
davidjhoward | 258:150f5a76162d | 109 | * @return none |
davidjhoward | 258:150f5a76162d | 110 | *****************************************************************************/ |
davidjhoward | 258:150f5a76162d | 111 | void msg_handler(void) |
davidjhoward | 258:150f5a76162d | 112 | { |
davidjhoward | 258:150f5a76162d | 113 | |
davidjhoward | 258:150f5a76162d | 114 | uint8_t spi_rcv_array[100]; |
davidjhoward | 258:150f5a76162d | 115 | uint8_t len; |
davidjhoward | 258:150f5a76162d | 116 | // printf("Reading from Master\n\r"); |
davidjhoward | 258:150f5a76162d | 117 | |
davidjhoward | 258:150f5a76162d | 118 | len = ReadSpiData(spi_rcv_array); |
davidjhoward | 258:150f5a76162d | 119 | |
davidjhoward | 258:150f5a76162d | 120 | ProcessBleRxEvents(spi_rcv_array, len); |
davidjhoward | 258:150f5a76162d | 121 | |
davidjhoward | 258:150f5a76162d | 122 | |
davidjhoward | 258:150f5a76162d | 123 | } |
davidjhoward | 258:150f5a76162d | 124 | |
davidjhoward | 258:150f5a76162d | 125 | /******************************************************************************/ |
davidjhoward | 258:150f5a76162d | 126 | /* END OF FILE */ |
davidjhoward | 258:150f5a76162d | 127 | /******************************************************************************/ |