Bluetooth Low Energy based Firmware Over The Air with Mbed. Mbed part is a external processor of the IoT devices and communicate with a Bluetooth module. The Bluetooth module have to support BLE and implement BLE FOTA profile designed by ours. BLE FOTA profile specification is available from our GIT hub wiki(https://github.com/sevencore/BLEFOTA).

Dependencies:   mbed

Fork of mbed_fota by KIM HyoengJun

Bluetooth Low Energy based Firmware Over The Air with Mbed. Mbed part is a external processor of the IoT devices and communicate with a Bluetooth module. The Bluetooth module have to support BLE and implement BLE FOTA profile designed by ours. BLE FOTA profile specification is available from our GIT hub wiki.

Committer:
dudnwjs
Date:
Tue Jun 23 06:32:40 2015 +0000
Revision:
3:1e70387e1337
Child:
4:60be78a172c2
Add feature : Msg Sender, Msg Receiver (using Serial);

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudnwjs 3:1e70387e1337 1 #ifndef GAPM_TASK_H
dudnwjs 3:1e70387e1337 2 #define GAPM_TASK_H
dudnwjs 3:1e70387e1337 3
dudnwjs 3:1e70387e1337 4 namespace sevencore_fota{
dudnwjs 3:1e70387e1337 5
dudnwjs 3:1e70387e1337 6 /// Reset link layer and the host command
dudnwjs 3:1e70387e1337 7 struct gapm_reset_cmd
dudnwjs 3:1e70387e1337 8 {
dudnwjs 3:1e70387e1337 9 /// GAPM requested operation:
dudnwjs 3:1e70387e1337 10 /// - GAPM_RESET: Reset BLE subsystem: LL and HL.
dudnwjs 3:1e70387e1337 11 uint8_t operation;
dudnwjs 3:1e70387e1337 12 };
dudnwjs 3:1e70387e1337 13
dudnwjs 3:1e70387e1337 14
dudnwjs 3:1e70387e1337 15 /// GAP Manager Message Interface
dudnwjs 3:1e70387e1337 16 enum gapm_msg_id
dudnwjs 3:1e70387e1337 17 {
dudnwjs 3:1e70387e1337 18 /* Default event */
dudnwjs 3:1e70387e1337 19 /// Command Complete event
dudnwjs 3:1e70387e1337 20 GAPM_CMP_EVT = 13312,
dudnwjs 3:1e70387e1337 21 /// Event triggered to inform that lower layers are ready
dudnwjs 3:1e70387e1337 22 GAPM_DEVICE_READY_IND,
dudnwjs 3:1e70387e1337 23
dudnwjs 3:1e70387e1337 24 /* Default commands */
dudnwjs 3:1e70387e1337 25 /// Reset link layer and the host command
dudnwjs 3:1e70387e1337 26 GAPM_RESET_CMD,
dudnwjs 3:1e70387e1337 27 /// Cancel ongoing operation
dudnwjs 3:1e70387e1337 28 GAPM_CANCEL_CMD,
dudnwjs 3:1e70387e1337 29
dudnwjs 3:1e70387e1337 30 /* Device Configuration */
dudnwjs 3:1e70387e1337 31 /// Set device configuration command
dudnwjs 3:1e70387e1337 32 GAPM_SET_DEV_CONFIG_CMD,
dudnwjs 3:1e70387e1337 33 /// Set device name command
dudnwjs 3:1e70387e1337 34 GAPM_SET_DEV_NAME_CMD,
dudnwjs 3:1e70387e1337 35 /// Set device channel map
dudnwjs 3:1e70387e1337 36 GAPM_SET_CHANNEL_MAP_CMD,
dudnwjs 3:1e70387e1337 37
dudnwjs 3:1e70387e1337 38 /* Local device information */
dudnwjs 3:1e70387e1337 39 /// Get local device info command
dudnwjs 3:1e70387e1337 40 GAPM_GET_DEV_INFO_CMD,
dudnwjs 3:1e70387e1337 41 /// Local device name indication event
dudnwjs 3:1e70387e1337 42 GAPM_DEV_NAME_IND,
dudnwjs 3:1e70387e1337 43 /// Local device appearance indication event
dudnwjs 3:1e70387e1337 44 GAPM_APPEARANCE_IND,
dudnwjs 3:1e70387e1337 45 /// Local device version indication event
dudnwjs 3:1e70387e1337 46 GAPM_DEV_VERSION_IND,
dudnwjs 3:1e70387e1337 47 /// Local device BD Address indication event
dudnwjs 3:1e70387e1337 48 GAPM_DEV_BDADDR_IND,
dudnwjs 3:1e70387e1337 49
dudnwjs 3:1e70387e1337 50 /* White List */
dudnwjs 3:1e70387e1337 51 /// White List Management Command
dudnwjs 3:1e70387e1337 52 GAPM_WHITE_LIST_MGT_CMD,
dudnwjs 3:1e70387e1337 53 /// White List Size indication event
dudnwjs 3:1e70387e1337 54 GAPM_WHITE_LIST_SIZE_IND,
dudnwjs 3:1e70387e1337 55
dudnwjs 3:1e70387e1337 56 /* Air Operations */
dudnwjs 3:1e70387e1337 57 /// Set advertising mode Command
dudnwjs 3:1e70387e1337 58 GAPM_START_ADVERTISE_CMD,
dudnwjs 3:1e70387e1337 59
dudnwjs 3:1e70387e1337 60 /// Set Scan mode Command
dudnwjs 3:1e70387e1337 61 GAPM_START_SCAN_CMD,
dudnwjs 3:1e70387e1337 62 /// Advertising or scanning report information event
dudnwjs 3:1e70387e1337 63 GAPM_ADV_REPORT_IND,
dudnwjs 3:1e70387e1337 64
dudnwjs 3:1e70387e1337 65 /// Set connection initialization Command
dudnwjs 3:1e70387e1337 66 GAPM_START_CONNECTION_CMD,
dudnwjs 3:1e70387e1337 67 /// Name of peer device indication
dudnwjs 3:1e70387e1337 68 GAPM_PEER_NAME_IND,
dudnwjs 3:1e70387e1337 69 /// Confirm connection to a specific device (Connection Operation in Selective mode)
dudnwjs 3:1e70387e1337 70 GAPM_CONNECTION_CFM,
dudnwjs 3:1e70387e1337 71
dudnwjs 3:1e70387e1337 72 /* Privacy update events */
dudnwjs 3:1e70387e1337 73 /// Privacy flag value has been updated
dudnwjs 3:1e70387e1337 74 GAPM_UPDATED_PRIVACY_IND,
dudnwjs 3:1e70387e1337 75 /// Reconnection address has been updated
dudnwjs 3:1e70387e1337 76 GAPM_UPDATED_RECON_ADDR_IND,
dudnwjs 3:1e70387e1337 77
dudnwjs 3:1e70387e1337 78 /* Security / Encryption Toolbox */
dudnwjs 3:1e70387e1337 79 /// Resolve address command
dudnwjs 3:1e70387e1337 80 GAPM_RESOLV_ADDR_CMD,
dudnwjs 3:1e70387e1337 81 /// Indicate that resolvable random address has been solved
dudnwjs 3:1e70387e1337 82 GAPM_ADDR_SOLVED_IND,
dudnwjs 3:1e70387e1337 83 /// Generate a random address.
dudnwjs 3:1e70387e1337 84 GAPM_GEN_RAND_ADDR_CMD,
dudnwjs 3:1e70387e1337 85 /// Use the AES-128 block in the controller
dudnwjs 3:1e70387e1337 86 GAPM_USE_ENC_BLOCK_CMD,
dudnwjs 3:1e70387e1337 87 /// AES-128 block result indication
dudnwjs 3:1e70387e1337 88 GAPM_USE_ENC_BLOCK_IND,
dudnwjs 3:1e70387e1337 89 /// Generate a 8-byte random number
dudnwjs 3:1e70387e1337 90 GAPM_GEN_RAND_NB_CMD,
dudnwjs 3:1e70387e1337 91 /// Random Number Indication
dudnwjs 3:1e70387e1337 92 GAPM_GEN_RAND_NB_IND,
dudnwjs 3:1e70387e1337 93
dudnwjs 3:1e70387e1337 94 /* Debug */
dudnwjs 3:1e70387e1337 95 /// Indication containing information about memory usage.
dudnwjs 3:1e70387e1337 96 GAPM_DBG_MEM_INFO_IND,
dudnwjs 3:1e70387e1337 97
dudnwjs 3:1e70387e1337 98 /* Local device information -cont */
dudnwjs 3:1e70387e1337 99 /// Advertising channel Tx power level
dudnwjs 3:1e70387e1337 100 GAPM_DEV_ADV_TX_POWER_IND,
dudnwjs 3:1e70387e1337 101
dudnwjs 3:1e70387e1337 102 /* Internal messages for timer events, not part of API*/
dudnwjs 3:1e70387e1337 103 /// Limited discoverable timeout indication
dudnwjs 3:1e70387e1337 104 GAPM_LIM_DISC_TO_IND,
dudnwjs 3:1e70387e1337 105 /// Scan timeout indication
dudnwjs 3:1e70387e1337 106 GAPM_SCAN_TO_IND,
dudnwjs 3:1e70387e1337 107 /// Address renewal timeout indication
dudnwjs 3:1e70387e1337 108 GAPM_ADDR_RENEW_TO_IND,
dudnwjs 3:1e70387e1337 109 };
dudnwjs 3:1e70387e1337 110
dudnwjs 3:1e70387e1337 111 /// GAP Manager operation type - application interface
dudnwjs 3:1e70387e1337 112 enum gapm_operation
dudnwjs 3:1e70387e1337 113 {
dudnwjs 3:1e70387e1337 114 /* No Operation (if nothing has been requested) */
dudnwjs 3:1e70387e1337 115 /* ************************************************ */
dudnwjs 3:1e70387e1337 116 /// No operation.
dudnwjs 3:1e70387e1337 117 GAPM_NO_OP = 0x00,
dudnwjs 3:1e70387e1337 118
dudnwjs 3:1e70387e1337 119 /* Default operations */
dudnwjs 3:1e70387e1337 120 /* ************************************************ */
dudnwjs 3:1e70387e1337 121 /// Reset BLE subsystem: LL and HL.
dudnwjs 3:1e70387e1337 122 GAPM_RESET,
dudnwjs 3:1e70387e1337 123 /// Cancel currently executed operation.
dudnwjs 3:1e70387e1337 124 GAPM_CANCEL,
dudnwjs 3:1e70387e1337 125
dudnwjs 3:1e70387e1337 126 /* Configuration operations */
dudnwjs 3:1e70387e1337 127 /* ************************************************ */
dudnwjs 3:1e70387e1337 128 /// Set device configuration
dudnwjs 3:1e70387e1337 129 GAPM_SET_DEV_CONFIG,
dudnwjs 3:1e70387e1337 130 /// Set device name
dudnwjs 3:1e70387e1337 131 GAPM_SET_DEV_NAME,
dudnwjs 3:1e70387e1337 132 /// Set device channel map
dudnwjs 3:1e70387e1337 133 GAPM_SET_CHANNEL_MAP,
dudnwjs 3:1e70387e1337 134
dudnwjs 3:1e70387e1337 135 /* Retrieve device information */
dudnwjs 3:1e70387e1337 136 /* ************************************************ */
dudnwjs 3:1e70387e1337 137 /// Get Local device name
dudnwjs 3:1e70387e1337 138 GAPM_GET_DEV_NAME,
dudnwjs 3:1e70387e1337 139 /// Get Local device version
dudnwjs 3:1e70387e1337 140 GAPM_GET_DEV_VERSION,
dudnwjs 3:1e70387e1337 141 /// Get Local device BD Address
dudnwjs 3:1e70387e1337 142 GAPM_GET_DEV_BDADDR,
dudnwjs 3:1e70387e1337 143
dudnwjs 3:1e70387e1337 144 /* Operation on White list */
dudnwjs 3:1e70387e1337 145 /* ************************************************ */
dudnwjs 3:1e70387e1337 146 /// Get White List Size.
dudnwjs 3:1e70387e1337 147 GAPM_GET_WLIST_SIZE,
dudnwjs 3:1e70387e1337 148 /// Add devices in white list.
dudnwjs 3:1e70387e1337 149 GAPM_ADD_DEV_IN_WLIST,
dudnwjs 3:1e70387e1337 150 /// Remove devices form white list.
dudnwjs 3:1e70387e1337 151 GAPM_RMV_DEV_FRM_WLIST,
dudnwjs 3:1e70387e1337 152 /// Clear all devices from white list.
dudnwjs 3:1e70387e1337 153 GAPM_CLEAR_WLIST,
dudnwjs 3:1e70387e1337 154
dudnwjs 3:1e70387e1337 155 /* Advertise mode operations */
dudnwjs 3:1e70387e1337 156 /* ************************************************ */
dudnwjs 3:1e70387e1337 157 /// Start non connectable advertising
dudnwjs 3:1e70387e1337 158 GAPM_ADV_NON_CONN,
dudnwjs 3:1e70387e1337 159 /// Start undirected connectable advertising
dudnwjs 3:1e70387e1337 160 GAPM_ADV_UNDIRECT,
dudnwjs 3:1e70387e1337 161 /// Start directed connectable advertising
dudnwjs 3:1e70387e1337 162 GAPM_ADV_DIRECT,
dudnwjs 3:1e70387e1337 163
dudnwjs 3:1e70387e1337 164 /* Scan mode operations */
dudnwjs 3:1e70387e1337 165 /* ************************************************ */
dudnwjs 3:1e70387e1337 166 /// Start active scan operation
dudnwjs 3:1e70387e1337 167 GAPM_SCAN_ACTIVE,
dudnwjs 3:1e70387e1337 168 /// Start passive scan operation
dudnwjs 3:1e70387e1337 169 GAPM_SCAN_PASSIVE,
dudnwjs 3:1e70387e1337 170
dudnwjs 3:1e70387e1337 171 /* Connection mode operations */
dudnwjs 3:1e70387e1337 172 /* ************************************************ */
dudnwjs 3:1e70387e1337 173 /// Direct connection operation
dudnwjs 3:1e70387e1337 174 GAPM_CONNECTION_DIRECT,
dudnwjs 3:1e70387e1337 175 /// Automatic connection operation
dudnwjs 3:1e70387e1337 176 GAPM_CONNECTION_AUTO,
dudnwjs 3:1e70387e1337 177 /// Selective connection operation
dudnwjs 3:1e70387e1337 178 GAPM_CONNECTION_SELECTIVE,
dudnwjs 3:1e70387e1337 179 /// Name Request operation (requires to start a direct connection)
dudnwjs 3:1e70387e1337 180 GAPM_CONNECTION_NAME_REQUEST,
dudnwjs 3:1e70387e1337 181
dudnwjs 3:1e70387e1337 182 /* Security / Encryption Toolbox */
dudnwjs 3:1e70387e1337 183 /* ************************************************ */
dudnwjs 3:1e70387e1337 184 /// Resolve device address
dudnwjs 3:1e70387e1337 185 GAPM_RESOLV_ADDR,
dudnwjs 3:1e70387e1337 186 /// Generate a random address
dudnwjs 3:1e70387e1337 187 GAPM_GEN_RAND_ADDR,
dudnwjs 3:1e70387e1337 188 /// Use the controller's AES-128 block
dudnwjs 3:1e70387e1337 189 GAPM_USE_ENC_BLOCK,
dudnwjs 3:1e70387e1337 190 /// Generate a 8-byte random number
dudnwjs 3:1e70387e1337 191 GAPM_GEN_RAND_NB,
dudnwjs 3:1e70387e1337 192
dudnwjs 3:1e70387e1337 193 /* DEBUG */
dudnwjs 3:1e70387e1337 194 /* ************************************************ */
dudnwjs 3:1e70387e1337 195 /// Get memory usage
dudnwjs 3:1e70387e1337 196 GAPM_DBG_GET_MEM_INFO,
dudnwjs 3:1e70387e1337 197 /// Perform a platform reset
dudnwjs 3:1e70387e1337 198 GAPM_PLF_RESET,
dudnwjs 3:1e70387e1337 199
dudnwjs 3:1e70387e1337 200 /* Retrieve device information - cont */
dudnwjs 3:1e70387e1337 201 /* ************************************************ */
dudnwjs 3:1e70387e1337 202 /// Get device advertising power level
dudnwjs 3:1e70387e1337 203 GAPM_GET_DEV_ADV_TX_POWER,
dudnwjs 3:1e70387e1337 204
dudnwjs 3:1e70387e1337 205 /// Last GAPM operation flag
dudnwjs 3:1e70387e1337 206 GAPM_LAST
dudnwjs 3:1e70387e1337 207 };
dudnwjs 3:1e70387e1337 208
dudnwjs 3:1e70387e1337 209 }//namespace
dudnwjs 3:1e70387e1337 210
dudnwjs 3:1e70387e1337 211 #endif//GAPM_TASK_H