BLE fota Robot Demo
Dependencies: mbed-rtos mbed mbed_fota_fan_control
Fork of mbed_fota_lamp_control by
dialog_fota/app.cpp@5:e11b23f9aacc, 2015-07-13 (annotated)
- Committer:
- dudnwjs
- Date:
- Mon Jul 13 06:32:05 2015 +0000
- Revision:
- 5:e11b23f9aacc
- Parent:
- 4:60be78a172c2
- Child:
- 6:8dd20294b2aa
Fota Service Add complete
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dudnwjs | 3:1e70387e1337 | 1 | #include "app.h" |
dudnwjs | 3:1e70387e1337 | 2 | #include "gapm_task.h" |
dudnwjs | 3:1e70387e1337 | 3 | #include "dialog_fota_config.h" |
dudnwjs | 4:60be78a172c2 | 4 | #include "diss_task.h" |
dudnwjs | 5:e11b23f9aacc | 5 | #include "fota_server_task.h" |
dudnwjs | 3:1e70387e1337 | 6 | |
dudnwjs | 3:1e70387e1337 | 7 | namespace sevencore_fota{ |
dudnwjs | 5:e11b23f9aacc | 8 | |
dudnwjs | 5:e11b23f9aacc | 9 | struct app_env_tag app_env; |
dudnwjs | 3:1e70387e1337 | 10 | |
dudnwjs | 3:1e70387e1337 | 11 | void app_rst_gap(BleMsgHandler *BMH) |
dudnwjs | 3:1e70387e1337 | 12 | { |
dudnwjs | 3:1e70387e1337 | 13 | struct gapm_reset_cmd gm_cmd; |
dudnwjs | 3:1e70387e1337 | 14 | gm_cmd.operation = GAPM_RESET; |
dudnwjs | 5:e11b23f9aacc | 15 | |
dudnwjs | 5:e11b23f9aacc | 16 | app_env.state = APP_IDLE; |
dudnwjs | 5:e11b23f9aacc | 17 | app_env.num_of_devices = 0; |
dudnwjs | 5:e11b23f9aacc | 18 | for (int i=0; i < MAX_SCAN_DEVICES; i++) |
dudnwjs | 5:e11b23f9aacc | 19 | { |
dudnwjs | 5:e11b23f9aacc | 20 | app_env.devices[i].free = true; |
dudnwjs | 5:e11b23f9aacc | 21 | app_env.devices[i].adv_addr.addr[0] = '\0'; |
dudnwjs | 5:e11b23f9aacc | 22 | app_env.devices[i].data[0] = '\0'; |
dudnwjs | 5:e11b23f9aacc | 23 | app_env.devices[i].data_len = 0; |
dudnwjs | 5:e11b23f9aacc | 24 | app_env.devices[i].rssi = 0; |
dudnwjs | 5:e11b23f9aacc | 25 | } |
dudnwjs | 5:e11b23f9aacc | 26 | |
dudnwjs | 3:1e70387e1337 | 27 | uint8_t *msg; |
dudnwjs | 3:1e70387e1337 | 28 | unsigned short msg_size = 1+sizeof(ble_hdr) + sizeof(gapm_reset_cmd); |
dudnwjs | 3:1e70387e1337 | 29 | msg = new uint8_t[msg_size]; |
dudnwjs | 3:1e70387e1337 | 30 | BMH->BleMsgAlloc(GAPM_RESET_CMD, TASK_GAPM, TASK_GTL, |
dudnwjs | 3:1e70387e1337 | 31 | sizeof(struct gapm_reset_cmd),&gm_cmd,msg); |
dudnwjs | 3:1e70387e1337 | 32 | |
dudnwjs | 3:1e70387e1337 | 33 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 3:1e70387e1337 | 34 | |
dudnwjs | 3:1e70387e1337 | 35 | return; |
dudnwjs | 3:1e70387e1337 | 36 | } |
dudnwjs | 3:1e70387e1337 | 37 | |
dudnwjs | 4:60be78a172c2 | 38 | void app_diss_db_create(BleMsgHandler* BMH) |
dudnwjs | 4:60be78a172c2 | 39 | { |
dudnwjs | 4:60be78a172c2 | 40 | uint8_t *msg; |
dudnwjs | 4:60be78a172c2 | 41 | // Add DIS in the database |
dudnwjs | 4:60be78a172c2 | 42 | struct diss_create_db_req req; |
dudnwjs | 4:60be78a172c2 | 43 | unsigned short msg_size = 1 + sizeof(ble_hdr) + sizeof(struct diss_create_db_req); |
dudnwjs | 5:e11b23f9aacc | 44 | req.features = 0x01FF; |
dudnwjs | 4:60be78a172c2 | 45 | |
dudnwjs | 4:60be78a172c2 | 46 | msg = new uint8_t[msg_size]; |
dudnwjs | 4:60be78a172c2 | 47 | |
dudnwjs | 4:60be78a172c2 | 48 | BMH->BleMsgAlloc(DISS_CREATE_DB_REQ,TASK_DISS, TASK_GTL,sizeof(struct diss_create_db_req),&req,msg); |
dudnwjs | 4:60be78a172c2 | 49 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 4:60be78a172c2 | 50 | } |
dudnwjs | 4:60be78a172c2 | 51 | |
dudnwjs | 5:e11b23f9aacc | 52 | void app_fota_server_db_create(BleMsgHandler* BMH) |
dudnwjs | 5:e11b23f9aacc | 53 | { |
dudnwjs | 5:e11b23f9aacc | 54 | uint8_t *msg; |
dudnwjs | 5:e11b23f9aacc | 55 | // Add DIS in the database |
dudnwjs | 5:e11b23f9aacc | 56 | struct fota_server_create_db_req req; |
dudnwjs | 5:e11b23f9aacc | 57 | unsigned short msg_size = 1 + sizeof(ble_hdr) + sizeof(struct fota_server_create_db_req); |
dudnwjs | 5:e11b23f9aacc | 58 | req.features = 0x01FF; |
dudnwjs | 5:e11b23f9aacc | 59 | |
dudnwjs | 5:e11b23f9aacc | 60 | msg = new uint8_t[msg_size]; |
dudnwjs | 5:e11b23f9aacc | 61 | |
dudnwjs | 5:e11b23f9aacc | 62 | BMH->BleMsgAlloc(FOTA_SERVER_CREATE_DB_REQ,TASK_FOTA_SERVER, TASK_GTL,sizeof(struct fota_server_create_db_req),&req,msg); |
dudnwjs | 5:e11b23f9aacc | 63 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 5:e11b23f9aacc | 64 | } |
dudnwjs | 5:e11b23f9aacc | 65 | |
dudnwjs | 4:60be78a172c2 | 66 | void app_adv_start(BleMsgHandler* BMH) |
dudnwjs | 4:60be78a172c2 | 67 | { |
dudnwjs | 4:60be78a172c2 | 68 | uint8_t device_name_length; |
dudnwjs | 4:60be78a172c2 | 69 | uint8_t device_name_avail_space; |
dudnwjs | 4:60be78a172c2 | 70 | uint8_t device_name_temp_buf[64]; |
dudnwjs | 4:60be78a172c2 | 71 | uint8_t *msg; |
dudnwjs | 4:60be78a172c2 | 72 | unsigned short msg_size; |
dudnwjs | 4:60be78a172c2 | 73 | msg_size = 1 + sizeof(ble_hdr) + sizeof(struct gapm_start_advertise_cmd); |
dudnwjs | 4:60be78a172c2 | 74 | msg = new uint8_t[msg_size]; |
dudnwjs | 4:60be78a172c2 | 75 | |
dudnwjs | 4:60be78a172c2 | 76 | // Allocate a message for GAP |
dudnwjs | 4:60be78a172c2 | 77 | struct gapm_start_advertise_cmd cmd; |
dudnwjs | 4:60be78a172c2 | 78 | cmd.op.code = GAPM_ADV_UNDIRECT; |
dudnwjs | 4:60be78a172c2 | 79 | cmd.op.addr_src = GAPM_PUBLIC_ADDR; |
dudnwjs | 4:60be78a172c2 | 80 | cmd.intv_min = APP_ADV_INT_MIN; |
dudnwjs | 4:60be78a172c2 | 81 | cmd.intv_max = APP_ADV_INT_MAX; |
dudnwjs | 4:60be78a172c2 | 82 | cmd.channel_map = APP_ADV_CHMAP; |
dudnwjs | 4:60be78a172c2 | 83 | cmd.info.host.mode = GAP_GEN_DISCOVERABLE; |
dudnwjs | 4:60be78a172c2 | 84 | cmd.info.host.adv_data_len = APP_ADV_DATA_MAX_SIZE; |
dudnwjs | 4:60be78a172c2 | 85 | cmd.info.host.scan_rsp_data_len = APP_SCAN_RESP_DATA_MAX_SIZE; |
dudnwjs | 4:60be78a172c2 | 86 | |
dudnwjs | 4:60be78a172c2 | 87 | /*----------------------------------------------------------------------------------- |
dudnwjs | 4:60be78a172c2 | 88 | * Set the Advertising Data and the Scan Response Data |
dudnwjs | 4:60be78a172c2 | 89 | *---------------------------------------------------------------------------------*/ |
dudnwjs | 4:60be78a172c2 | 90 | |
dudnwjs | 4:60be78a172c2 | 91 | |
dudnwjs | 4:60be78a172c2 | 92 | // Advertising Data |
dudnwjs | 4:60be78a172c2 | 93 | #if (NVDS_SUPPORT) |
dudnwjs | 4:60be78a172c2 | 94 | if(nvds_get(NVDS_TAG_APP_BLE_ADV_DATA, &cmd.info.host.adv_data_len, |
dudnwjs | 4:60be78a172c2 | 95 | &cmd.info.host.adv_data[0]) != NVDS_OK) |
dudnwjs | 4:60be78a172c2 | 96 | #endif //(NVDS_SUPPORT) |
dudnwjs | 4:60be78a172c2 | 97 | { |
dudnwjs | 4:60be78a172c2 | 98 | cmd.info.host.adv_data_len = APP_DFLT_ADV_DATA_LEN; |
dudnwjs | 4:60be78a172c2 | 99 | memcpy(&cmd.info.host.adv_data[0], APP_DFLT_ADV_DATA, cmd.info.host.adv_data_len); |
dudnwjs | 4:60be78a172c2 | 100 | |
dudnwjs | 4:60be78a172c2 | 101 | //Add list of UUID |
dudnwjs | 4:60be78a172c2 | 102 | #if (BLE_APP_HT) |
dudnwjs | 4:60be78a172c2 | 103 | cmd.info.host.adv_data_len += APP_HT_ADV_DATA_UUID_LEN; |
dudnwjs | 4:60be78a172c2 | 104 | memcpy(&cmd.info.host.adv_data[APP_DFLT_ADV_DATA_LEN], APP_HT_ADV_DATA_UUID, APP_HT_ADV_DATA_UUID_LEN); |
dudnwjs | 4:60be78a172c2 | 105 | #else |
dudnwjs | 4:60be78a172c2 | 106 | #if (BLE_APP_NEB) |
dudnwjs | 4:60be78a172c2 | 107 | cmd.info.host.adv_data_len += APP_NEB_ADV_DATA_UUID_LEN; |
dudnwjs | 4:60be78a172c2 | 108 | memcpy(&cmd.info.host.adv_data[APP_DFLT_ADV_DATA_LEN], APP_NEB_ADV_DATA_UUID, APP_NEB_ADV_DATA_UUID_LEN); |
dudnwjs | 4:60be78a172c2 | 109 | #endif //(BLE_APP_NEB) |
dudnwjs | 4:60be78a172c2 | 110 | #endif //(BLE_APP_HT) |
dudnwjs | 4:60be78a172c2 | 111 | } |
dudnwjs | 4:60be78a172c2 | 112 | |
dudnwjs | 4:60be78a172c2 | 113 | // Scan Response Data |
dudnwjs | 4:60be78a172c2 | 114 | #if (NVDS_SUPPORT) |
dudnwjs | 4:60be78a172c2 | 115 | if(nvds_get(NVDS_TAG_APP_BLE_SCAN_RESP_DATA, &cmd.info.host.scan_rsp_data_len, |
dudnwjs | 4:60be78a172c2 | 116 | &cmd.info.host.scan_rsp_data[0]) != NVDS_OK) |
dudnwjs | 4:60be78a172c2 | 117 | #endif //(NVDS_SUPPORT) |
dudnwjs | 4:60be78a172c2 | 118 | { |
dudnwjs | 4:60be78a172c2 | 119 | cmd.info.host.scan_rsp_data_len = APP_SCNRSP_DATA_LENGTH; |
dudnwjs | 4:60be78a172c2 | 120 | memcpy(&cmd.info.host.scan_rsp_data[0], APP_SCNRSP_DATA, cmd.info.host.scan_rsp_data_len); |
dudnwjs | 4:60be78a172c2 | 121 | } |
dudnwjs | 4:60be78a172c2 | 122 | |
dudnwjs | 4:60be78a172c2 | 123 | // Get remaining space in the Advertising Data - 2 bytes are used for name length/flag |
dudnwjs | 4:60be78a172c2 | 124 | device_name_avail_space = APP_ADV_DATA_MAX_SIZE - cmd.info.host.adv_data_len - 2; |
dudnwjs | 4:60be78a172c2 | 125 | |
dudnwjs | 4:60be78a172c2 | 126 | // Check if data can be added to the Advertising data |
dudnwjs | 4:60be78a172c2 | 127 | if (device_name_avail_space > 0) |
dudnwjs | 4:60be78a172c2 | 128 | { |
dudnwjs | 4:60be78a172c2 | 129 | // Get the Device Name to add in the Advertising Data (Default one or NVDS one) |
dudnwjs | 4:60be78a172c2 | 130 | #if (NVDS_SUPPORT) |
dudnwjs | 4:60be78a172c2 | 131 | device_name_length = NVDS_LEN_DEVICE_NAME; |
dudnwjs | 4:60be78a172c2 | 132 | if (nvds_get(NVDS_TAG_DEVICE_NAME, &device_name_length, &device_name_temp_buf[0]) != NVDS_OK) |
dudnwjs | 4:60be78a172c2 | 133 | #endif //(NVDS_SUPPORT) |
dudnwjs | 4:60be78a172c2 | 134 | { |
dudnwjs | 4:60be78a172c2 | 135 | // Get default Device Name (No name if not enough space) |
dudnwjs | 4:60be78a172c2 | 136 | device_name_length = strlen(APP_DFLT_DEVICE_NAME); |
dudnwjs | 4:60be78a172c2 | 137 | memcpy(&device_name_temp_buf[0], APP_DFLT_DEVICE_NAME, device_name_length); |
dudnwjs | 4:60be78a172c2 | 138 | } |
dudnwjs | 4:60be78a172c2 | 139 | |
dudnwjs | 4:60be78a172c2 | 140 | if(device_name_length > 0) |
dudnwjs | 4:60be78a172c2 | 141 | { |
dudnwjs | 4:60be78a172c2 | 142 | // Check available space |
dudnwjs | 4:60be78a172c2 | 143 | if( device_name_length > device_name_avail_space) |
dudnwjs | 4:60be78a172c2 | 144 | device_name_length = device_name_avail_space; |
dudnwjs | 4:60be78a172c2 | 145 | |
dudnwjs | 4:60be78a172c2 | 146 | // Fill Length |
dudnwjs | 4:60be78a172c2 | 147 | cmd.info.host.adv_data[cmd.info.host.adv_data_len] = device_name_length + 1; |
dudnwjs | 4:60be78a172c2 | 148 | // Fill Device Name Flag |
dudnwjs | 4:60be78a172c2 | 149 | cmd.info.host.adv_data[cmd.info.host.adv_data_len + 1] = '\x09'; |
dudnwjs | 4:60be78a172c2 | 150 | // Copy device name |
dudnwjs | 4:60be78a172c2 | 151 | memcpy(&cmd.info.host.adv_data[cmd.info.host.adv_data_len + 2], device_name_temp_buf, device_name_length); |
dudnwjs | 4:60be78a172c2 | 152 | |
dudnwjs | 4:60be78a172c2 | 153 | // Update Advertising Data Length |
dudnwjs | 4:60be78a172c2 | 154 | cmd.info.host.adv_data_len += (device_name_length + 2); |
dudnwjs | 4:60be78a172c2 | 155 | } |
dudnwjs | 4:60be78a172c2 | 156 | } |
dudnwjs | 4:60be78a172c2 | 157 | |
dudnwjs | 4:60be78a172c2 | 158 | // Send the message |
dudnwjs | 4:60be78a172c2 | 159 | BMH->BleMsgAlloc(GAPM_START_ADVERTISE_CMD,TASK_GAPM, TASK_GTL,sizeof (struct gapm_start_advertise_cmd),&cmd,msg); |
dudnwjs | 4:60be78a172c2 | 160 | BMH->BleSendMsg(msg, msg_size); |
dudnwjs | 4:60be78a172c2 | 161 | |
dudnwjs | 4:60be78a172c2 | 162 | return; |
dudnwjs | 4:60be78a172c2 | 163 | } |
dudnwjs | 4:60be78a172c2 | 164 | |
dudnwjs | 4:60be78a172c2 | 165 | void app_set_mode(BleMsgHandler* BMH) |
dudnwjs | 4:60be78a172c2 | 166 | { |
dudnwjs | 4:60be78a172c2 | 167 | uint8_t *msg; |
dudnwjs | 4:60be78a172c2 | 168 | struct gapm_set_dev_config_cmd cmd; |
dudnwjs | 4:60be78a172c2 | 169 | unsigned short msg_size = 1 + sizeof(ble_hdr) + sizeof(struct gapm_set_dev_config_cmd); |
dudnwjs | 4:60be78a172c2 | 170 | msg = new uint8_t[msg_size]; |
dudnwjs | 4:60be78a172c2 | 171 | |
dudnwjs | 4:60be78a172c2 | 172 | cmd.operation = GAPM_SET_DEV_CONFIG; |
dudnwjs | 4:60be78a172c2 | 173 | // Device Role |
dudnwjs | 4:60be78a172c2 | 174 | cmd.role = GAP_PERIPHERAL_SLV; |
dudnwjs | 4:60be78a172c2 | 175 | // Device Appearance |
dudnwjs | 4:60be78a172c2 | 176 | cmd.appearance = 0x0000; |
dudnwjs | 4:60be78a172c2 | 177 | // Device Appearance write permission requirements for peer device |
dudnwjs | 4:60be78a172c2 | 178 | cmd.appearance_write_perm = GAPM_WRITE_DISABLE; |
dudnwjs | 4:60be78a172c2 | 179 | // Device Name write permission requirements for peer device |
dudnwjs | 4:60be78a172c2 | 180 | cmd.name_write_perm = GAPM_WRITE_DISABLE; |
dudnwjs | 4:60be78a172c2 | 181 | // Peripheral only: ***************************************************************** |
dudnwjs | 5:e11b23f9aacc | 182 | // Maximum trasnimt unit size |
dudnwjs | 5:e11b23f9aacc | 183 | //cmd.max_mtu = 16; |
dudnwjs | 4:60be78a172c2 | 184 | // Slave preferred Minimum of connection interval |
dudnwjs | 4:60be78a172c2 | 185 | cmd.con_intv_min = 8; // 10ms (8*1.25ms) |
dudnwjs | 4:60be78a172c2 | 186 | // Slave preferred Maximum of connection interval |
dudnwjs | 4:60be78a172c2 | 187 | cmd.con_intv_max = 16; // 20ms (16*1.25ms) |
dudnwjs | 4:60be78a172c2 | 188 | // Slave preferred Connection latency |
dudnwjs | 4:60be78a172c2 | 189 | cmd.con_latency = 0; |
dudnwjs | 4:60be78a172c2 | 190 | // Slave preferred Link supervision timeout |
dudnwjs | 4:60be78a172c2 | 191 | cmd.superv_to = 100; |
dudnwjs | 4:60be78a172c2 | 192 | // Privacy settings bit field |
dudnwjs | 4:60be78a172c2 | 193 | cmd.flags = 0; |
dudnwjs | 4:60be78a172c2 | 194 | |
dudnwjs | 4:60be78a172c2 | 195 | BMH->BleMsgAlloc(GAPM_SET_DEV_CONFIG_CMD, TASK_GAPM, TASK_GTL,sizeof(struct gapm_set_dev_config_cmd ),&cmd, msg); |
dudnwjs | 4:60be78a172c2 | 196 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 4:60be78a172c2 | 197 | |
dudnwjs | 4:60be78a172c2 | 198 | return; |
dudnwjs | 4:60be78a172c2 | 199 | } |
dudnwjs | 4:60be78a172c2 | 200 | |
dudnwjs | 4:60be78a172c2 | 201 | |
dudnwjs | 5:e11b23f9aacc | 202 | void app_fota_server_enable(ble_dev *device,BleMsgHandler* BMH) |
dudnwjs | 5:e11b23f9aacc | 203 | { |
dudnwjs | 5:e11b23f9aacc | 204 | uint8_t *msg; |
dudnwjs | 5:e11b23f9aacc | 205 | struct fota_server_enable_req req; |
dudnwjs | 5:e11b23f9aacc | 206 | unsigned short msg_size = 1 + sizeof(ble_hdr) + sizeof(struct fota_server_enable_req); |
dudnwjs | 5:e11b23f9aacc | 207 | req.conhdl = device->conhdl; |
dudnwjs | 5:e11b23f9aacc | 208 | req.sec_lvl = 1; |
dudnwjs | 5:e11b23f9aacc | 209 | |
dudnwjs | 5:e11b23f9aacc | 210 | msg = new uint8_t[msg_size]; |
dudnwjs | 5:e11b23f9aacc | 211 | |
dudnwjs | 5:e11b23f9aacc | 212 | // Send the message |
dudnwjs | 5:e11b23f9aacc | 213 | BMH->BleMsgAlloc(FOTA_SERVER_ENABLE_REQ, TASK_FOTA_SERVER, TASK_GTL,sizeof(struct fota_server_enable_req),&req,msg); |
dudnwjs | 5:e11b23f9aacc | 214 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 5:e11b23f9aacc | 215 | } |
dudnwjs | 5:e11b23f9aacc | 216 | |
dudnwjs | 5:e11b23f9aacc | 217 | void app_dis_enable(ble_dev *device,BleMsgHandler* BMH) |
dudnwjs | 5:e11b23f9aacc | 218 | { |
dudnwjs | 5:e11b23f9aacc | 219 | uint8_t *msg; |
dudnwjs | 5:e11b23f9aacc | 220 | // Allocate the message |
dudnwjs | 5:e11b23f9aacc | 221 | struct diss_enable_req req; |
dudnwjs | 5:e11b23f9aacc | 222 | unsigned short msg_size = 1 + sizeof(ble_hdr) + sizeof(diss_enable_req); |
dudnwjs | 5:e11b23f9aacc | 223 | // Fill in the parameter structure |
dudnwjs | 5:e11b23f9aacc | 224 | req.conhdl = device->conhdl; |
dudnwjs | 5:e11b23f9aacc | 225 | req.sec_lvl = 1; |
dudnwjs | 5:e11b23f9aacc | 226 | req.con_type = PRF_CON_DISCOVERY; |
dudnwjs | 5:e11b23f9aacc | 227 | |
dudnwjs | 5:e11b23f9aacc | 228 | msg = new uint8_t[msg_size]; |
dudnwjs | 5:e11b23f9aacc | 229 | |
dudnwjs | 5:e11b23f9aacc | 230 | // Send the message |
dudnwjs | 5:e11b23f9aacc | 231 | BMH->BleMsgAlloc(DISS_ENABLE_REQ,TASK_DISS, TASK_GTL, sizeof(struct diss_enable_req),&req,msg); |
dudnwjs | 5:e11b23f9aacc | 232 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 5:e11b23f9aacc | 233 | } |
dudnwjs | 5:e11b23f9aacc | 234 | |
dudnwjs | 5:e11b23f9aacc | 235 | void app_connect_confirm(uint8_t auth,ble_dev *device,BleMsgHandler* BMH) |
dudnwjs | 5:e11b23f9aacc | 236 | { |
dudnwjs | 5:e11b23f9aacc | 237 | uint8_t *msg; |
dudnwjs | 5:e11b23f9aacc | 238 | // confirm connection |
dudnwjs | 5:e11b23f9aacc | 239 | struct gapc_connection_cfm cfm; |
dudnwjs | 5:e11b23f9aacc | 240 | unsigned short msg_size = 1 + sizeof(ble_hdr) + sizeof(gapc_connection_cfm); |
dudnwjs | 5:e11b23f9aacc | 241 | cfm.auth = auth; |
dudnwjs | 5:e11b23f9aacc | 242 | cfm.authorize = GAP_AUTHZ_NOT_SET; |
dudnwjs | 5:e11b23f9aacc | 243 | |
dudnwjs | 5:e11b23f9aacc | 244 | msg = new uint8_t[msg_size]; |
dudnwjs | 5:e11b23f9aacc | 245 | |
dudnwjs | 5:e11b23f9aacc | 246 | // Send the message |
dudnwjs | 5:e11b23f9aacc | 247 | BMH->BleMsgAlloc(GAPC_CONNECTION_CFM, KE_BUILD_ID(TASK_GAPC,device->conidx), TASK_GTL,sizeof (struct gapc_connection_cfm),&cfm,msg); |
dudnwjs | 5:e11b23f9aacc | 248 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 5:e11b23f9aacc | 249 | } |
dudnwjs | 5:e11b23f9aacc | 250 | |
dudnwjs | 5:e11b23f9aacc | 251 | void app_send_disconnect(uint16_t dst, uint16_t conhdl, uint8_t reason,BleMsgHandler* BMH) |
dudnwjs | 5:e11b23f9aacc | 252 | { |
dudnwjs | 5:e11b23f9aacc | 253 | uint8_t *msg; |
dudnwjs | 5:e11b23f9aacc | 254 | struct gapc_disconnect_ind disconnect_ind; |
dudnwjs | 5:e11b23f9aacc | 255 | unsigned short msg_size = 1 + sizeof(ble_hdr) + sizeof(gapc_disconnect_ind); |
dudnwjs | 5:e11b23f9aacc | 256 | // fill parameters |
dudnwjs | 5:e11b23f9aacc | 257 | disconnect_ind.conhdl = conhdl; |
dudnwjs | 5:e11b23f9aacc | 258 | disconnect_ind.reason = reason; |
dudnwjs | 5:e11b23f9aacc | 259 | |
dudnwjs | 5:e11b23f9aacc | 260 | msg = new uint8_t[msg_size]; |
dudnwjs | 5:e11b23f9aacc | 261 | |
dudnwjs | 5:e11b23f9aacc | 262 | // send indication |
dudnwjs | 5:e11b23f9aacc | 263 | BMH->BleMsgAlloc(GAPC_DISCONNECT_IND,dst, TASK_GTL,sizeof(struct gapc_disconnect_ind),&disconnect_ind,msg); |
dudnwjs | 5:e11b23f9aacc | 264 | BMH->BleSendMsg(msg,msg_size); |
dudnwjs | 5:e11b23f9aacc | 265 | } |
dudnwjs | 5:e11b23f9aacc | 266 | |
dudnwjs | 5:e11b23f9aacc | 267 | |
dudnwjs | 3:1e70387e1337 | 268 | }//namespace |