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: 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 | 
