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