Fan Control Demo

Dependencies:   mbed-rtos mbed

Fork of mbed_fota by KIM HyoengJun

Committer:
dudnwjs
Date:
Wed Sep 02 07:44:29 2015 +0000
Revision:
12:e3d3676753cc
Parent:
11:1ed93accb3fb
Fan Control Demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudnwjs 9:fcf91f563147 1 /**
dudnwjs 11:1ed93accb3fb 2 * @file app_task.cpp
dudnwjs 9:fcf91f563147 3 * @brief Handling for ble events and responses.
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-20
dudnwjs 9:fcf91f563147 9 */
dudnwjs 4:60be78a172c2 10 #include "app_task.h"
dudnwjs 4:60be78a172c2 11 #include "app.h"
dudnwjs 5:e11b23f9aacc 12 #include "fota_server_task.h"
dudnwjs 12:e3d3676753cc 13 #include "fan_control_task.h"
dudnwjs 12:e3d3676753cc 14 #include "mbed.h"
dudnwjs 12:e3d3676753cc 15
dudnwjs 12:e3d3676753cc 16 extern DigitalOut port18;//mid
dudnwjs 12:e3d3676753cc 17 extern DigitalOut port19;//low
dudnwjs 12:e3d3676753cc 18 extern DigitalOut port20;//high
dudnwjs 12:e3d3676753cc 19 extern uint8_t Timer_flag;
dudnwjs 12:e3d3676753cc 20 extern uint32_t Residual_Time;
dudnwjs 4:60be78a172c2 21
dudnwjs 6:8dd20294b2aa 22 #define BLE_FOTA_SERVICE 1
dudnwjs 9:fcf91f563147 23 /**
dudnwjs 9:fcf91f563147 24 ****************************************************************************************
dudnwjs 9:fcf91f563147 25 * @addtogroup dialog_fota module
dudnwjs 9:fcf91f563147 26 * @brief application handlers for ble events and responses.
dudnwjs 9:fcf91f563147 27 *
dudnwjs 9:fcf91f563147 28 * @{
dudnwjs 9:fcf91f563147 29 ****************************************************************************************
dudnwjs 9:fcf91f563147 30 */
dudnwjs 4:60be78a172c2 31 namespace sevencore_fota{
dudnwjs 9:fcf91f563147 32
dudnwjs 12:e3d3676753cc 33
dudnwjs 9:fcf91f563147 34 /**
dudnwjs 9:fcf91f563147 35 ****************************************************************************************
dudnwjs 9:fcf91f563147 36 * @brief Handles GAPM_ADV_REPORT_IND event.
dudnwjs 9:fcf91f563147 37 *
dudnwjs 9:fcf91f563147 38 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 39 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 40 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 41 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 42 *
dudnwjs 9:fcf91f563147 43 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 44 ****************************************************************************************
dudnwjs 9:fcf91f563147 45 */
dudnwjs 4:60be78a172c2 46 int gapm_adv_report_ind_handler(unsigned short msgid,
dudnwjs 4:60be78a172c2 47 struct gapm_adv_report_ind *param,
dudnwjs 4:60be78a172c2 48 unsigned short dest_id,
dudnwjs 4:60be78a172c2 49 unsigned short src_id)
dudnwjs 4:60be78a172c2 50 {
dudnwjs 4:60be78a172c2 51 //if (app_env.state != APP_SCAN)
dudnwjs 4:60be78a172c2 52 // return -1;
dudnwjs 4:60be78a172c2 53
dudnwjs 4:60be78a172c2 54 return 0;
dudnwjs 4:60be78a172c2 55 }
dudnwjs 9:fcf91f563147 56 /**
dudnwjs 9:fcf91f563147 57 ****************************************************************************************
dudnwjs 9:fcf91f563147 58 * @brief Handles the DISS_CREATE_DB_CFM message.
dudnwjs 9:fcf91f563147 59 *
dudnwjs 9:fcf91f563147 60 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 61 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 62 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 63 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 64 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 65 *
dudnwjs 9:fcf91f563147 66 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 67 ****************************************************************************************
dudnwjs 9:fcf91f563147 68 */
dudnwjs 4:60be78a172c2 69 int diss_create_db_cfm_handler(unsigned short msgid,
dudnwjs 4:60be78a172c2 70 struct diss_create_db_cfm *param,
dudnwjs 4:60be78a172c2 71 unsigned short dest_id,
dudnwjs 4:60be78a172c2 72 unsigned short src_id,
dudnwjs 4:60be78a172c2 73 BleMsgHandler* BMH)
dudnwjs 4:60be78a172c2 74 {
dudnwjs 6:8dd20294b2aa 75
dudnwjs 5:e11b23f9aacc 76 uint8_t len = strlen(APP_DIS_SW_REV);
dudnwjs 5:e11b23f9aacc 77
dudnwjs 4:60be78a172c2 78 if (param->status == CO_ERROR_NO_ERROR)
dudnwjs 4:60be78a172c2 79 {
dudnwjs 5:e11b23f9aacc 80 char str[22] = "\nDIS SET DB\n";
dudnwjs 5:e11b23f9aacc 81 BMH->HostPcPrint(str);
dudnwjs 4:60be78a172c2 82 // Set Manufacturer Name value in the DB
dudnwjs 4:60be78a172c2 83 {
dudnwjs 4:60be78a172c2 84 uint8_t *msg;
dudnwjs 4:60be78a172c2 85 struct diss_set_char_val_req req_name;
dudnwjs 5:e11b23f9aacc 86 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(diss_set_char_val_req)-(STR_MAX_LEN-APP_DIS_MANUFACTURER_NAME_STR_LEN);
dudnwjs 5:e11b23f9aacc 87
dudnwjs 4:60be78a172c2 88 // Fill in the parameter structure
dudnwjs 4:60be78a172c2 89 req_name.char_code = DIS_MANUFACTURER_NAME_CHAR;
dudnwjs 5:e11b23f9aacc 90 req_name.val_len = APP_DIS_MANUFACTURER_NAME_STR_LEN;
dudnwjs 5:e11b23f9aacc 91 memcpy(&req_name.val[0], APP_DIS_MANUFACTURER_NAME_STR, APP_DIS_MANUFACTURER_NAME_STR_LEN);
dudnwjs 5:e11b23f9aacc 92
dudnwjs 4:60be78a172c2 93 msg = new uint8_t[msg_size];
dudnwjs 4:60be78a172c2 94
dudnwjs 5:e11b23f9aacc 95 BMH->BleMsgAlloc(DISS_SET_CHAR_VAL_REQ,TASK_DISS,TASK_GTL,
dudnwjs 5:e11b23f9aacc 96 sizeof(struct diss_set_char_val_req)-(STR_MAX_LEN-APP_DIS_MANUFACTURER_NAME_STR_LEN),&req_name,msg);
dudnwjs 4:60be78a172c2 97 BMH->BleSendMsg(msg,msg_size);
dudnwjs 4:60be78a172c2 98 free(msg);
dudnwjs 5:e11b23f9aacc 99
dudnwjs 4:60be78a172c2 100 }
dudnwjs 4:60be78a172c2 101
dudnwjs 4:60be78a172c2 102 // Set Model Number String value in the DB
dudnwjs 4:60be78a172c2 103 {
dudnwjs 4:60be78a172c2 104 uint8_t *msg;
dudnwjs 4:60be78a172c2 105 struct diss_set_char_val_req req_mod;
dudnwjs 5:e11b23f9aacc 106 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(diss_set_char_val_req)-(STR_MAX_LEN-APP_DIS_MODEL_NB_STR_LEN);
dudnwjs 4:60be78a172c2 107
dudnwjs 4:60be78a172c2 108 // Fill in the parameter structure
dudnwjs 4:60be78a172c2 109 req_mod.char_code = DIS_MODEL_NB_STR_CHAR;
dudnwjs 4:60be78a172c2 110 req_mod.val_len = APP_DIS_MODEL_NB_STR_LEN;
dudnwjs 4:60be78a172c2 111 memcpy(&req_mod.val[0], APP_DIS_MODEL_NB_STR, APP_DIS_MODEL_NB_STR_LEN);
dudnwjs 4:60be78a172c2 112
dudnwjs 4:60be78a172c2 113 msg = new uint8_t[msg_size];
dudnwjs 4:60be78a172c2 114
dudnwjs 5:e11b23f9aacc 115 BMH->BleMsgAlloc(DISS_SET_CHAR_VAL_REQ,TASK_DISS, TASK_GTL,
dudnwjs 5:e11b23f9aacc 116 sizeof(struct diss_set_char_val_req)-(STR_MAX_LEN-APP_DIS_MODEL_NB_STR_LEN),&req_mod,msg);
dudnwjs 4:60be78a172c2 117 // Send the message
dudnwjs 4:60be78a172c2 118 BMH->BleSendMsg(msg,msg_size);
dudnwjs 4:60be78a172c2 119 free(msg);
dudnwjs 4:60be78a172c2 120 }
dudnwjs 6:8dd20294b2aa 121 #if (BLE_FOTA_SERVICE)
dudnwjs 5:e11b23f9aacc 122 // Set Serial Number String value in the DB
dudnwjs 5:e11b23f9aacc 123 {
dudnwjs 5:e11b23f9aacc 124 uint8_t *msg;
dudnwjs 5:e11b23f9aacc 125 struct diss_set_char_val_req req_ser;
dudnwjs 5:e11b23f9aacc 126 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(diss_set_char_val_req)-(STR_MAX_LEN-APP_DIS_SERIAL_NB_STR_LEN);
dudnwjs 4:60be78a172c2 127
dudnwjs 5:e11b23f9aacc 128 // Fill in the parameter structure
dudnwjs 5:e11b23f9aacc 129 req_ser.char_code = DIS_SERIAL_NB_STR_CHAR;
dudnwjs 5:e11b23f9aacc 130 req_ser.val_len = APP_DIS_SERIAL_NB_STR_LEN;
dudnwjs 5:e11b23f9aacc 131 memcpy(&req_ser.val[0], APP_DIS_SERIAL_NB_STR, APP_DIS_SERIAL_NB_STR_LEN);
dudnwjs 5:e11b23f9aacc 132
dudnwjs 5:e11b23f9aacc 133 msg = new uint8_t[msg_size];
dudnwjs 5:e11b23f9aacc 134
dudnwjs 5:e11b23f9aacc 135 BMH->BleMsgAlloc(DISS_SET_CHAR_VAL_REQ,TASK_DISS, TASK_GTL,
dudnwjs 5:e11b23f9aacc 136 sizeof(struct diss_set_char_val_req)-(STR_MAX_LEN-APP_DIS_SERIAL_NB_STR_LEN),&req_ser,msg);
dudnwjs 5:e11b23f9aacc 137 // Send the message
dudnwjs 5:e11b23f9aacc 138 BMH->BleSendMsg(msg,msg_size);
dudnwjs 5:e11b23f9aacc 139 free(msg);
dudnwjs 5:e11b23f9aacc 140 }
dudnwjs 6:8dd20294b2aa 141 #endif //(BLE_FOTA_SERVICE)
dudnwjs 6:8dd20294b2aa 142 #if !(BLE_FOTA_SERVICE)
dudnwjs 4:60be78a172c2 143 // Set System ID value in the DB
dudnwjs 4:60be78a172c2 144 {
dudnwjs 4:60be78a172c2 145 uint8_t *msg;
dudnwjs 4:60be78a172c2 146 struct diss_set_char_val_req req_id;
dudnwjs 4:60be78a172c2 147 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(diss_set_char_val_req);
dudnwjs 4:60be78a172c2 148
dudnwjs 4:60be78a172c2 149 // Fill in the parameter structure
dudnwjs 4:60be78a172c2 150 req_id.char_code = DIS_SYSTEM_ID_CHAR;
dudnwjs 4:60be78a172c2 151 req_id.val_len = APP_DIS_SYSTEM_ID_LEN;
dudnwjs 4:60be78a172c2 152 memcpy(&req_id.val[0], APP_DIS_SYSTEM_ID, APP_DIS_SYSTEM_ID_LEN);
dudnwjs 4:60be78a172c2 153
dudnwjs 4:60be78a172c2 154 msg = new uint8_t[msg_size];
dudnwjs 4:60be78a172c2 155
dudnwjs 4:60be78a172c2 156 BMH->BleMsgAlloc(DISS_SET_CHAR_VAL_REQ,TASK_DISS, TASK_GTL,sizeof(struct diss_set_char_val_req),&req_id,msg);
dudnwjs 4:60be78a172c2 157
dudnwjs 4:60be78a172c2 158 // Send the message
dudnwjs 4:60be78a172c2 159 BMH->BleSendMsg(msg, msg_size);
dudnwjs 4:60be78a172c2 160 free(msg);
dudnwjs 4:60be78a172c2 161 }
dudnwjs 4:60be78a172c2 162
dudnwjs 4:60be78a172c2 163
dudnwjs 4:60be78a172c2 164 // Set the software version in the DB
dudnwjs 4:60be78a172c2 165 {
dudnwjs 4:60be78a172c2 166 uint8_t *msg;
dudnwjs 4:60be78a172c2 167 struct diss_set_char_val_req req_id;
dudnwjs 4:60be78a172c2 168 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(diss_set_char_val_req);
dudnwjs 4:60be78a172c2 169
dudnwjs 4:60be78a172c2 170 // Fill in the parameter structure
dudnwjs 4:60be78a172c2 171 req_id.char_code = DIS_SW_REV_STR_CHAR;
dudnwjs 4:60be78a172c2 172 req_id.val_len = len;
dudnwjs 4:60be78a172c2 173 memcpy(&req_id.val[0], APP_DIS_SW_REV, len);
dudnwjs 4:60be78a172c2 174
dudnwjs 4:60be78a172c2 175 msg = new uint8_t[msg_size];
dudnwjs 4:60be78a172c2 176
dudnwjs 4:60be78a172c2 177 BMH->BleMsgAlloc(DISS_SET_CHAR_VAL_REQ,TASK_DISS, TASK_GTL,sizeof(struct diss_set_char_val_req),&req_id,msg);
dudnwjs 4:60be78a172c2 178 // Send the message
dudnwjs 4:60be78a172c2 179 BMH->BleSendMsg(msg,msg_size);
dudnwjs 4:60be78a172c2 180 free(msg);
dudnwjs 4:60be78a172c2 181 }
dudnwjs 4:60be78a172c2 182
dudnwjs 4:60be78a172c2 183 len = strlen(APP_DIS_FIRM_REV);
dudnwjs 4:60be78a172c2 184 // Set the firmware version in the DB. This is the common code sw version
dudnwjs 4:60be78a172c2 185 {
dudnwjs 4:60be78a172c2 186 uint8_t *msg;
dudnwjs 4:60be78a172c2 187 struct diss_set_char_val_req req_id;
dudnwjs 4:60be78a172c2 188 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(diss_set_char_val_req);
dudnwjs 4:60be78a172c2 189
dudnwjs 4:60be78a172c2 190 // Fill in the parameter structure
dudnwjs 4:60be78a172c2 191 req_id.char_code = DIS_FIRM_REV_STR_CHAR;
dudnwjs 4:60be78a172c2 192 req_id.val_len = len;
dudnwjs 4:60be78a172c2 193 memcpy(&req_id.val[0], APP_DIS_FIRM_REV, len);
dudnwjs 4:60be78a172c2 194
dudnwjs 4:60be78a172c2 195 msg = new uint8_t[msg_size];
dudnwjs 4:60be78a172c2 196
dudnwjs 4:60be78a172c2 197 BMH->BleMsgAlloc(DISS_SET_CHAR_VAL_REQ,TASK_DISS, TASK_GTL,sizeof(struct diss_set_char_val_req),&req_id,msg);
dudnwjs 4:60be78a172c2 198 // Send the message
dudnwjs 4:60be78a172c2 199 BMH->BleSendMsg(msg, msg_size);
dudnwjs 4:60be78a172c2 200 free(msg);
dudnwjs 6:8dd20294b2aa 201 }
dudnwjs 6:8dd20294b2aa 202 #endif //!(BLE_FOTA_SERVICE)
dudnwjs 4:60be78a172c2 203 }
dudnwjs 4:60be78a172c2 204
dudnwjs 5:e11b23f9aacc 205 if (app_env.state == APP_IDLE)
dudnwjs 5:e11b23f9aacc 206 {
dudnwjs 5:e11b23f9aacc 207 char str[30] = "\nfota db create req!!\n";
dudnwjs 5:e11b23f9aacc 208 BMH->HostPcPrint(str);
dudnwjs 8:9eec2c246a85 209 //app_set_mode(BMH);
dudnwjs 5:e11b23f9aacc 210 app_fota_server_db_create(BMH);
dudnwjs 5:e11b23f9aacc 211 }
dudnwjs 5:e11b23f9aacc 212
dudnwjs 5:e11b23f9aacc 213 return 0;
dudnwjs 5:e11b23f9aacc 214 }
dudnwjs 9:fcf91f563147 215 /**
dudnwjs 9:fcf91f563147 216 ****************************************************************************************
dudnwjs 9:fcf91f563147 217 * @brief Handles the FOTA_SERVER_CREATE_DB_CFM message.
dudnwjs 9:fcf91f563147 218 *
dudnwjs 9:fcf91f563147 219 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 220 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 221 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 222 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 223 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 224 *
dudnwjs 9:fcf91f563147 225 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 226 ****************************************************************************************
dudnwjs 9:fcf91f563147 227 */
dudnwjs 5:e11b23f9aacc 228 int fota_server_create_db_cfm_handler(unsigned short msgid,
dudnwjs 5:e11b23f9aacc 229 struct fota_server_create_db_cfm *param,
dudnwjs 5:e11b23f9aacc 230 unsigned short dest_id,
dudnwjs 5:e11b23f9aacc 231 unsigned short src_id,
dudnwjs 5:e11b23f9aacc 232 BleMsgHandler* BMH)
dudnwjs 5:e11b23f9aacc 233 {
dudnwjs 5:e11b23f9aacc 234 uint8_t fota_normal = 0;
dudnwjs 5:e11b23f9aacc 235 uint8_t fota_normal_len = sizeof(fota_normal);
dudnwjs 5:e11b23f9aacc 236 if (param->status == CO_ERROR_NO_ERROR)
dudnwjs 4:60be78a172c2 237 {
dudnwjs 5:e11b23f9aacc 238 // Initialization Firmware new Version Char ("00-00-00")
dudnwjs 5:e11b23f9aacc 239 {
dudnwjs 5:e11b23f9aacc 240 uint8_t *msg;
dudnwjs 5:e11b23f9aacc 241 struct fota_server_set_char_val_req req_nv;
dudnwjs 5:e11b23f9aacc 242 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fota_server_set_char_val_req)-(18-APP_FOTA_SERVER_FIRMWARE_NEW_VERSION_LEN);
dudnwjs 5:e11b23f9aacc 243 // Fill in the parameter structure
dudnwjs 5:e11b23f9aacc 244 req_nv.char_code = FOTA_SERVER_FIRMWARE_NEW_VERSION_CHAR;
dudnwjs 5:e11b23f9aacc 245 req_nv.val_len = APP_FOTA_SERVER_FIRMWARE_NEW_VERSION_LEN;
dudnwjs 5:e11b23f9aacc 246 memcpy(&req_nv.val[0], APP_FOTA_SERVER_FIRMWARE_NEW_VERSION, APP_FOTA_SERVER_FIRMWARE_NEW_VERSION_LEN);
dudnwjs 5:e11b23f9aacc 247
dudnwjs 5:e11b23f9aacc 248 msg = new uint8_t[msg_size];
dudnwjs 5:e11b23f9aacc 249
dudnwjs 5:e11b23f9aacc 250 BMH->BleMsgAlloc(FOTA_SERVER_SET_CHAR_VAL_REQ,TASK_FOTA_SERVER, TASK_GTL,sizeof(struct fota_server_set_char_val_req)-(18-APP_FOTA_SERVER_FIRMWARE_NEW_VERSION_LEN),&req_nv,msg );
dudnwjs 5:e11b23f9aacc 251 // Send the message
dudnwjs 5:e11b23f9aacc 252 BMH->BleSendMsg(msg,msg_size);
dudnwjs 5:e11b23f9aacc 253 free(msg);
dudnwjs 5:e11b23f9aacc 254 }
dudnwjs 5:e11b23f9aacc 255
dudnwjs 5:e11b23f9aacc 256 // Initialization Sequence Number Char ( = '0' )
dudnwjs 5:e11b23f9aacc 257 {
dudnwjs 5:e11b23f9aacc 258 uint8_t *msg;
dudnwjs 5:e11b23f9aacc 259 struct fota_server_set_char_val_req req_sn;
dudnwjs 5:e11b23f9aacc 260 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(fota_server_set_char_val_req)-(18-fota_normal_len);
dudnwjs 5:e11b23f9aacc 261
dudnwjs 5:e11b23f9aacc 262 // Fill in the parameter structure
dudnwjs 5:e11b23f9aacc 263 req_sn.char_code = FOTA_SERVER_SEQUENCE_NUMBER_CHAR;
dudnwjs 5:e11b23f9aacc 264 req_sn.val_len = fota_normal_len;
dudnwjs 5:e11b23f9aacc 265 memcpy(&req_sn.val[0], &fota_normal, fota_normal_len);
dudnwjs 5:e11b23f9aacc 266
dudnwjs 5:e11b23f9aacc 267 msg = new uint8_t[msg_size];
dudnwjs 5:e11b23f9aacc 268
dudnwjs 5:e11b23f9aacc 269 BMH->BleMsgAlloc(FOTA_SERVER_SET_CHAR_VAL_REQ,TASK_FOTA_SERVER, TASK_GTL,sizeof(struct fota_server_set_char_val_req)-(18-fota_normal_len),&req_sn,msg );
dudnwjs 5:e11b23f9aacc 270 // Send the message
dudnwjs 5:e11b23f9aacc 271 BMH->BleSendMsg(msg,msg_size);
dudnwjs 5:e11b23f9aacc 272 free(msg);
dudnwjs 5:e11b23f9aacc 273 }
dudnwjs 5:e11b23f9aacc 274
dudnwjs 5:e11b23f9aacc 275 // Initialization Firmware Data Check Char ( = '0' )
dudnwjs 5:e11b23f9aacc 276 {
dudnwjs 5:e11b23f9aacc 277 uint8_t *msg;
dudnwjs 5:e11b23f9aacc 278 struct fota_server_set_char_val_req req_fdc;
dudnwjs 5:e11b23f9aacc 279 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(fota_server_set_char_val_req)-(18-fota_normal_len);
dudnwjs 5:e11b23f9aacc 280
dudnwjs 5:e11b23f9aacc 281 // Fill in the parameter structure
dudnwjs 5:e11b23f9aacc 282 req_fdc.char_code = FOTA_SERVER_FIRMWARE_DATA_CHECK_CHAR;
dudnwjs 5:e11b23f9aacc 283 req_fdc.val_len = fota_normal_len;
dudnwjs 5:e11b23f9aacc 284 memcpy(&req_fdc.val[0], &fota_normal, fota_normal_len);
dudnwjs 5:e11b23f9aacc 285
dudnwjs 5:e11b23f9aacc 286 msg = new uint8_t[msg_size];
dudnwjs 5:e11b23f9aacc 287
dudnwjs 5:e11b23f9aacc 288 BMH->BleMsgAlloc(FOTA_SERVER_SET_CHAR_VAL_REQ,TASK_FOTA_SERVER, TASK_GTL,sizeof(struct fota_server_set_char_val_req)-(18-fota_normal_len),&req_fdc,msg );
dudnwjs 5:e11b23f9aacc 289 // Send the message
dudnwjs 5:e11b23f9aacc 290 BMH->BleSendMsg(msg,msg_size);
dudnwjs 5:e11b23f9aacc 291 free(msg);
dudnwjs 5:e11b23f9aacc 292 }
dudnwjs 5:e11b23f9aacc 293
dudnwjs 5:e11b23f9aacc 294 // Initialization Firmware Status Char ( = '0' )
dudnwjs 5:e11b23f9aacc 295 {
dudnwjs 5:e11b23f9aacc 296 uint8_t *msg;
dudnwjs 5:e11b23f9aacc 297 struct fota_server_set_char_val_req req_stat;
dudnwjs 5:e11b23f9aacc 298 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(fota_server_set_char_val_req)-(18-fota_normal_len);
dudnwjs 5:e11b23f9aacc 299
dudnwjs 5:e11b23f9aacc 300 // Fill in the parameter structure
dudnwjs 5:e11b23f9aacc 301 req_stat.char_code = FOTA_SERVER_FIRMWARE_STATUS_CHAR;
dudnwjs 5:e11b23f9aacc 302 req_stat.val_len = fota_normal_len;
dudnwjs 5:e11b23f9aacc 303 memcpy(&req_stat.val[0], &fota_normal, fota_normal_len);
dudnwjs 5:e11b23f9aacc 304
dudnwjs 5:e11b23f9aacc 305 msg = new uint8_t[msg_size];
dudnwjs 5:e11b23f9aacc 306
dudnwjs 5:e11b23f9aacc 307 BMH->BleMsgAlloc(FOTA_SERVER_SET_CHAR_VAL_REQ,TASK_FOTA_SERVER, TASK_GTL,sizeof(struct fota_server_set_char_val_req)-(18-fota_normal_len),&req_stat,msg );
dudnwjs 5:e11b23f9aacc 308 // Send the message
dudnwjs 5:e11b23f9aacc 309 BMH->BleSendMsg(msg,msg_size);
dudnwjs 5:e11b23f9aacc 310 free(msg);
dudnwjs 5:e11b23f9aacc 311 }
dudnwjs 5:e11b23f9aacc 312
dudnwjs 5:e11b23f9aacc 313 // Initialization Reset Char ( = '0' )
dudnwjs 5:e11b23f9aacc 314 {
dudnwjs 5:e11b23f9aacc 315 uint8_t *msg;
dudnwjs 5:e11b23f9aacc 316 struct fota_server_set_char_val_req req_reset;
dudnwjs 5:e11b23f9aacc 317 unsigned short msg_size = 1+sizeof(ble_hdr)+sizeof(fota_server_set_char_val_req)-(18-fota_normal_len);
dudnwjs 5:e11b23f9aacc 318
dudnwjs 5:e11b23f9aacc 319 // Fill in the parameter structure
dudnwjs 5:e11b23f9aacc 320 req_reset.char_code = FOTA_SERVER_RESET_CHAR;
dudnwjs 5:e11b23f9aacc 321 req_reset.val_len = fota_normal_len;
dudnwjs 5:e11b23f9aacc 322 memcpy(&req_reset.val[0], &fota_normal, fota_normal_len);
dudnwjs 5:e11b23f9aacc 323
dudnwjs 5:e11b23f9aacc 324 msg = new uint8_t[msg_size];
dudnwjs 5:e11b23f9aacc 325
dudnwjs 5:e11b23f9aacc 326 BMH->BleMsgAlloc(FOTA_SERVER_SET_CHAR_VAL_REQ,TASK_FOTA_SERVER, TASK_GTL,sizeof(struct fota_server_set_char_val_req)-(18-fota_normal_len),&req_reset,msg );
dudnwjs 5:e11b23f9aacc 327 // Send the message
dudnwjs 5:e11b23f9aacc 328 BMH->BleSendMsg(msg,msg_size);
dudnwjs 5:e11b23f9aacc 329 free(msg);
dudnwjs 5:e11b23f9aacc 330 }
dudnwjs 5:e11b23f9aacc 331
dudnwjs 5:e11b23f9aacc 332 }
dudnwjs 5:e11b23f9aacc 333
dudnwjs 5:e11b23f9aacc 334 if (app_env.state == APP_IDLE)
dudnwjs 5:e11b23f9aacc 335 {
dudnwjs 12:e3d3676753cc 336 //app_set_mode(BMH);
dudnwjs 12:e3d3676753cc 337 app_fan_control_db_create(BMH);
dudnwjs 5:e11b23f9aacc 338 }
dudnwjs 4:60be78a172c2 339
dudnwjs 4:60be78a172c2 340 return 0;
dudnwjs 4:60be78a172c2 341 }
dudnwjs 9:fcf91f563147 342 /**
dudnwjs 9:fcf91f563147 343 ****************************************************************************************
dudnwjs 9:fcf91f563147 344 * @brief Handles Firmware Data Copy event.
dudnwjs 9:fcf91f563147 345 *
dudnwjs 9:fcf91f563147 346 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 347 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 348 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 349 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 350 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 351 *
dudnwjs 9:fcf91f563147 352 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 353 ****************************************************************************************
dudnwjs 9:fcf91f563147 354 */
dudnwjs 6:8dd20294b2aa 355 void fota_server_data_flash_ind_handler(unsigned short msgid,
dudnwjs 6:8dd20294b2aa 356 struct fota_server_data_flash_ind *param,
dudnwjs 6:8dd20294b2aa 357 unsigned short dest_id,
dudnwjs 6:8dd20294b2aa 358 unsigned short src_id,
dudnwjs 6:8dd20294b2aa 359 BleMsgHandler* BMH)
dudnwjs 5:e11b23f9aacc 360 {
dudnwjs 6:8dd20294b2aa 361 char version[9];
dudnwjs 6:8dd20294b2aa 362 memcpy(version,param->version,8);
dudnwjs 6:8dd20294b2aa 363 version[8] = '\0';
dudnwjs 12:e3d3676753cc 364 port18 = 1;
dudnwjs 6:8dd20294b2aa 365 BMH->FirmwareDataReceive(param->code_size,version);
dudnwjs 5:e11b23f9aacc 366 }
dudnwjs 12:e3d3676753cc 367
dudnwjs 12:e3d3676753cc 368 /**
dudnwjs 12:e3d3676753cc 369 ****************************************************************************************
dudnwjs 12:e3d3676753cc 370 * @brief Handles the FAN_CONTROL_CREATE_DB_CFM message.
dudnwjs 12:e3d3676753cc 371 *
dudnwjs 12:e3d3676753cc 372 * @param[in] msgid Id of the message received.
dudnwjs 12:e3d3676753cc 373 * @param[in] param Pointer to the parameters of the message.
dudnwjs 12:e3d3676753cc 374 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 12:e3d3676753cc 375 * @param[in] src_id ID of the sending task instance.
dudnwjs 12:e3d3676753cc 376 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 12:e3d3676753cc 377 *
dudnwjs 12:e3d3676753cc 378 * @return If the message was consumed or not.
dudnwjs 12:e3d3676753cc 379 ****************************************************************************************
dudnwjs 12:e3d3676753cc 380 */
dudnwjs 12:e3d3676753cc 381 void fan_control_create_db_cfm_handler(unsigned short msgid,
dudnwjs 12:e3d3676753cc 382 struct fan_control_create_db_cfm *param,
dudnwjs 12:e3d3676753cc 383 unsigned short dest_id,
dudnwjs 12:e3d3676753cc 384 unsigned short src_id,
dudnwjs 12:e3d3676753cc 385 BleMsgHandler* BMH)
dudnwjs 12:e3d3676753cc 386 {
dudnwjs 12:e3d3676753cc 387 uint8_t fota_normal = 0;
dudnwjs 12:e3d3676753cc 388 uint8_t fota_normal_len = sizeof(fota_normal);
dudnwjs 12:e3d3676753cc 389 if (param->status == CO_ERROR_NO_ERROR)
dudnwjs 12:e3d3676753cc 390 {
dudnwjs 12:e3d3676753cc 391 // Initialization All Characteristic
dudnwjs 12:e3d3676753cc 392 {
dudnwjs 12:e3d3676753cc 393 uint8_t *msg;
dudnwjs 12:e3d3676753cc 394 struct fan_control_set_char_val_req power_state_val;
dudnwjs 12:e3d3676753cc 395 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE);
dudnwjs 12:e3d3676753cc 396 // Fill in the parameter structure
dudnwjs 12:e3d3676753cc 397 power_state_val.char_code = FAN_CONTROL_POWER_STATE_CHAR;
dudnwjs 12:e3d3676753cc 398 power_state_val.val_len = FAN_CONTROL_MIN_SIZE;
dudnwjs 12:e3d3676753cc 399 memcpy(&power_state_val.val[0], &fota_normal, fota_normal_len);
dudnwjs 12:e3d3676753cc 400
dudnwjs 12:e3d3676753cc 401 msg = new uint8_t[msg_size];
dudnwjs 12:e3d3676753cc 402
dudnwjs 12:e3d3676753cc 403 BMH->BleMsgAlloc(FAN_CONTROL_SET_CHAR_VAL_REQ,TASK_FAN_CONTROL, TASK_GTL,sizeof(struct fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE),&power_state_val,msg );
dudnwjs 12:e3d3676753cc 404 // Send the message
dudnwjs 12:e3d3676753cc 405 BMH->BleSendMsg(msg,msg_size);
dudnwjs 12:e3d3676753cc 406 free(msg);
dudnwjs 12:e3d3676753cc 407 }
dudnwjs 12:e3d3676753cc 408 {
dudnwjs 12:e3d3676753cc 409 uint8_t *msg;
dudnwjs 12:e3d3676753cc 410 struct fan_control_set_char_val_req wind_strength_val;
dudnwjs 12:e3d3676753cc 411 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE);
dudnwjs 12:e3d3676753cc 412 // Fill in the parameter structure
dudnwjs 12:e3d3676753cc 413 wind_strength_val.char_code = FAN_CONTROL_WIND_STRENGTH_CHAR;
dudnwjs 12:e3d3676753cc 414 wind_strength_val.val_len = FAN_CONTROL_MIN_SIZE;
dudnwjs 12:e3d3676753cc 415 memcpy(&wind_strength_val.val[0], &fota_normal, fota_normal_len);
dudnwjs 12:e3d3676753cc 416
dudnwjs 12:e3d3676753cc 417 msg = new uint8_t[msg_size];
dudnwjs 12:e3d3676753cc 418
dudnwjs 12:e3d3676753cc 419 BMH->BleMsgAlloc(FAN_CONTROL_SET_CHAR_VAL_REQ,TASK_FAN_CONTROL, TASK_GTL,sizeof(struct fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE),&wind_strength_val,msg );
dudnwjs 12:e3d3676753cc 420 // Send the message
dudnwjs 12:e3d3676753cc 421 BMH->BleSendMsg(msg,msg_size);
dudnwjs 12:e3d3676753cc 422 free(msg);
dudnwjs 12:e3d3676753cc 423 }
dudnwjs 12:e3d3676753cc 424 {
dudnwjs 12:e3d3676753cc 425 uint8_t *msg;
dudnwjs 12:e3d3676753cc 426 struct fan_control_set_char_val_req fan_spin_val;
dudnwjs 12:e3d3676753cc 427 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE);
dudnwjs 12:e3d3676753cc 428 // Fill in the parameter structure
dudnwjs 12:e3d3676753cc 429 fan_spin_val.char_code = FAN_CONTROL_FAN_SPIN_CHAR;
dudnwjs 12:e3d3676753cc 430 fan_spin_val.val_len = FAN_CONTROL_MIN_SIZE;
dudnwjs 12:e3d3676753cc 431 memcpy(&fan_spin_val.val[0], &fota_normal, fota_normal_len);
dudnwjs 12:e3d3676753cc 432
dudnwjs 12:e3d3676753cc 433 msg = new uint8_t[msg_size];
dudnwjs 12:e3d3676753cc 434
dudnwjs 12:e3d3676753cc 435 BMH->BleMsgAlloc(FAN_CONTROL_SET_CHAR_VAL_REQ,TASK_FAN_CONTROL, TASK_GTL,sizeof(struct fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE),&fan_spin_val,msg );
dudnwjs 12:e3d3676753cc 436 // Send the message
dudnwjs 12:e3d3676753cc 437 BMH->BleSendMsg(msg,msg_size);
dudnwjs 12:e3d3676753cc 438 free(msg);
dudnwjs 12:e3d3676753cc 439 }
dudnwjs 12:e3d3676753cc 440 {
dudnwjs 12:e3d3676753cc 441 uint8_t *msg;
dudnwjs 12:e3d3676753cc 442 struct fan_control_set_char_val_req fan_timer_val;
dudnwjs 12:e3d3676753cc 443 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE);
dudnwjs 12:e3d3676753cc 444 // Fill in the parameter structure
dudnwjs 12:e3d3676753cc 445 fan_timer_val.char_code = FAN_CONTROL_FAN_TIMER_CHAR;
dudnwjs 12:e3d3676753cc 446 fan_timer_val.val_len = FAN_CONTROL_MIN_SIZE;
dudnwjs 12:e3d3676753cc 447 memcpy(&fan_timer_val.val[0], &fota_normal, fota_normal_len);
dudnwjs 12:e3d3676753cc 448
dudnwjs 12:e3d3676753cc 449 msg = new uint8_t[msg_size];
dudnwjs 12:e3d3676753cc 450
dudnwjs 12:e3d3676753cc 451 BMH->BleMsgAlloc(FAN_CONTROL_SET_CHAR_VAL_REQ,TASK_FAN_CONTROL, TASK_GTL,sizeof(struct fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE),&fan_timer_val,msg );
dudnwjs 12:e3d3676753cc 452 // Send the message
dudnwjs 12:e3d3676753cc 453 BMH->BleSendMsg(msg,msg_size);
dudnwjs 12:e3d3676753cc 454 free(msg);
dudnwjs 12:e3d3676753cc 455 }
dudnwjs 12:e3d3676753cc 456 {
dudnwjs 12:e3d3676753cc 457 uint8_t *msg;
dudnwjs 12:e3d3676753cc 458 struct fan_control_set_char_val_req residual_time_val;
dudnwjs 12:e3d3676753cc 459 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fan_control_set_char_val_req)-(4-FAN_CONTROL_MAX_SIZE);
dudnwjs 12:e3d3676753cc 460 // Fill in the parameter structure
dudnwjs 12:e3d3676753cc 461 residual_time_val.char_code = FAN_CONTROL_RESIDUAL_TIME_CHAR;
dudnwjs 12:e3d3676753cc 462 residual_time_val.val_len = FAN_CONTROL_MAX_SIZE;
dudnwjs 12:e3d3676753cc 463 memcpy(&residual_time_val.val[0], &fota_normal, fota_normal_len*4);
dudnwjs 12:e3d3676753cc 464
dudnwjs 12:e3d3676753cc 465 msg = new uint8_t[msg_size];
dudnwjs 12:e3d3676753cc 466
dudnwjs 12:e3d3676753cc 467 BMH->BleMsgAlloc(FAN_CONTROL_SET_CHAR_VAL_REQ,TASK_FAN_CONTROL, TASK_GTL,sizeof(struct fan_control_set_char_val_req)-(4-FAN_CONTROL_MAX_SIZE),&residual_time_val,msg );
dudnwjs 12:e3d3676753cc 468 // Send the message
dudnwjs 12:e3d3676753cc 469 BMH->BleSendMsg(msg,msg_size);
dudnwjs 12:e3d3676753cc 470 free(msg);
dudnwjs 12:e3d3676753cc 471 }
dudnwjs 12:e3d3676753cc 472 }
dudnwjs 12:e3d3676753cc 473 if (app_env.state == APP_IDLE)
dudnwjs 12:e3d3676753cc 474 {
dudnwjs 12:e3d3676753cc 475 app_set_mode(BMH);
dudnwjs 12:e3d3676753cc 476 }
dudnwjs 12:e3d3676753cc 477 }
dudnwjs 12:e3d3676753cc 478
dudnwjs 12:e3d3676753cc 479 /**
dudnwjs 12:e3d3676753cc 480 ****************************************************************************************
dudnwjs 12:e3d3676753cc 481 * @brief Handles the FAN_CONTROL_COMMAND_IND message.
dudnwjs 12:e3d3676753cc 482 *
dudnwjs 12:e3d3676753cc 483 * @param[in] msgid Id of the message received.
dudnwjs 12:e3d3676753cc 484 * @param[in] param Pointer to the parameters of the message.
dudnwjs 12:e3d3676753cc 485 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 12:e3d3676753cc 486 * @param[in] src_id ID of the sending task instance.
dudnwjs 12:e3d3676753cc 487 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 12:e3d3676753cc 488 *
dudnwjs 12:e3d3676753cc 489 * @return If the message was consumed or not.
dudnwjs 12:e3d3676753cc 490 ****************************************************************************************
dudnwjs 12:e3d3676753cc 491 */
dudnwjs 12:e3d3676753cc 492 void fan_control_command_ind_handler(unsigned short msgid,
dudnwjs 12:e3d3676753cc 493 struct fan_control_command_ind *param,
dudnwjs 12:e3d3676753cc 494 unsigned short dest_id,
dudnwjs 12:e3d3676753cc 495 unsigned short src_id,
dudnwjs 12:e3d3676753cc 496 BleMsgHandler* BMH)
dudnwjs 12:e3d3676753cc 497 {
dudnwjs 12:e3d3676753cc 498 char str[30] = "\nFAN remote control START!!\n";
dudnwjs 12:e3d3676753cc 499 BMH->HostPcPrint(str);
dudnwjs 12:e3d3676753cc 500 if( param->char_code == FAN_CONTROL_POWER_STATE_CHAR){
dudnwjs 12:e3d3676753cc 501 if(param->command == 0){
dudnwjs 12:e3d3676753cc 502 Timer_flag = 0;
dudnwjs 12:e3d3676753cc 503 Residual_Time = 0;
dudnwjs 12:e3d3676753cc 504 port18 = 0;
dudnwjs 12:e3d3676753cc 505 port19 = 0;
dudnwjs 12:e3d3676753cc 506 port20 = 0;
dudnwjs 12:e3d3676753cc 507 }
dudnwjs 12:e3d3676753cc 508 if(param->command == 1){
dudnwjs 12:e3d3676753cc 509 if( port18 == 0 && port19 == 0 && port20 == 0 )
dudnwjs 12:e3d3676753cc 510 port19 = 1;
dudnwjs 12:e3d3676753cc 511 }
dudnwjs 12:e3d3676753cc 512 }else if( param->char_code == FAN_CONTROL_WIND_STRENGTH_CHAR){
dudnwjs 12:e3d3676753cc 513 if( param->command == 1 ){ //low
dudnwjs 12:e3d3676753cc 514 port18 = 0;
dudnwjs 12:e3d3676753cc 515 port20 = 0;
dudnwjs 12:e3d3676753cc 516 port19 = 1;
dudnwjs 12:e3d3676753cc 517 }
dudnwjs 12:e3d3676753cc 518 else if( param->command == 2 ){ //mid
dudnwjs 12:e3d3676753cc 519 port19 = 0;
dudnwjs 12:e3d3676753cc 520 port20 = 0;
dudnwjs 12:e3d3676753cc 521 port18 = 1;
dudnwjs 12:e3d3676753cc 522 }else if( param->command == 3 ){ //high
dudnwjs 12:e3d3676753cc 523 port18 = 0;
dudnwjs 12:e3d3676753cc 524 port19 = 0;
dudnwjs 12:e3d3676753cc 525 port20 = 1;
dudnwjs 12:e3d3676753cc 526 }
dudnwjs 12:e3d3676753cc 527 }else if( param->char_code == FAN_CONTROL_FAN_SPIN_CHAR){
dudnwjs 12:e3d3676753cc 528
dudnwjs 12:e3d3676753cc 529 }else if( param->char_code == FAN_CONTROL_FAN_TIMER_CHAR){
dudnwjs 12:e3d3676753cc 530 Timer_flag = param->command;
dudnwjs 12:e3d3676753cc 531 }else if( param->char_code == FAN_CONTROL_RESIDUAL_TIME_CHAR){
dudnwjs 12:e3d3676753cc 532 Residual_Time = param->residual_time;
dudnwjs 12:e3d3676753cc 533 {
dudnwjs 12:e3d3676753cc 534 uint8_t fota_normal = 0;
dudnwjs 12:e3d3676753cc 535 uint8_t *msg;
dudnwjs 12:e3d3676753cc 536 struct fan_control_set_char_val_req char_set_req;
dudnwjs 12:e3d3676753cc 537 unsigned short msg_size = 1+sizeof(ble_hdr)+ sizeof(fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE);
dudnwjs 12:e3d3676753cc 538 // Fill in the parameter structure
dudnwjs 12:e3d3676753cc 539 char_set_req.char_code = FAN_CONTROL_POWER_STATE_CHAR;
dudnwjs 12:e3d3676753cc 540 char_set_req.val_len = FAN_CONTROL_MIN_SIZE;
dudnwjs 12:e3d3676753cc 541 memcpy(&char_set_req.val[0], &fota_normal, sizeof(fota_normal));
dudnwjs 12:e3d3676753cc 542
dudnwjs 12:e3d3676753cc 543 msg = new uint8_t[msg_size];
dudnwjs 12:e3d3676753cc 544
dudnwjs 12:e3d3676753cc 545 BMH->BleMsgAlloc(FAN_CONTROL_SET_CHAR_VAL_REQ
dudnwjs 12:e3d3676753cc 546 ,TASK_FAN_CONTROL, TASK_GTL
dudnwjs 12:e3d3676753cc 547 ,sizeof(struct fan_control_set_char_val_req)-(4-FAN_CONTROL_MIN_SIZE)
dudnwjs 12:e3d3676753cc 548 ,&char_set_req,msg );
dudnwjs 12:e3d3676753cc 549 // Send the message
dudnwjs 12:e3d3676753cc 550 BMH->BleSendMsg(msg,msg_size);
dudnwjs 12:e3d3676753cc 551 free(msg);
dudnwjs 12:e3d3676753cc 552 }
dudnwjs 12:e3d3676753cc 553 }
dudnwjs 12:e3d3676753cc 554 }
dudnwjs 12:e3d3676753cc 555
dudnwjs 9:fcf91f563147 556 /**
dudnwjs 9:fcf91f563147 557 ****************************************************************************************
dudnwjs 9:fcf91f563147 558 * @brief Handles ready indication from the GAP.
dudnwjs 9:fcf91f563147 559 *
dudnwjs 9:fcf91f563147 560 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 561 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 562 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 563 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 564 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 565 *
dudnwjs 9:fcf91f563147 566 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 567 ****************************************************************************************
dudnwjs 9:fcf91f563147 568 */
dudnwjs 4:60be78a172c2 569 int gapm_device_ready_ind_handler(unsigned short msgid,
dudnwjs 5:e11b23f9aacc 570 struct gap_ready_evt *param,
dudnwjs 4:60be78a172c2 571 unsigned short dest_id,
dudnwjs 4:60be78a172c2 572 unsigned short src_id,
dudnwjs 4:60be78a172c2 573 BleMsgHandler* BMH)
dudnwjs 4:60be78a172c2 574 {
dudnwjs 4:60be78a172c2 575 // We are now in Connectable State
dudnwjs 4:60be78a172c2 576 if (dest_id == TASK_GTL)
dudnwjs 4:60be78a172c2 577 {
dudnwjs 4:60be78a172c2 578 app_rst_gap(BMH);
dudnwjs 4:60be78a172c2 579 }
dudnwjs 4:60be78a172c2 580
dudnwjs 4:60be78a172c2 581 return 0;
dudnwjs 4:60be78a172c2 582 }
dudnwjs 9:fcf91f563147 583 /**
dudnwjs 9:fcf91f563147 584 ****************************************************************************************
dudnwjs 9:fcf91f563147 585 * @brief Handle reset GAP request completion event.
dudnwjs 9:fcf91f563147 586 *
dudnwjs 9:fcf91f563147 587 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 588 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 589 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 590 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 591 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 592 *
dudnwjs 9:fcf91f563147 593 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 594 ****************************************************************************************
dudnwjs 9:fcf91f563147 595 */
dudnwjs 4:60be78a172c2 596 int gapm_reset_completion_handler(unsigned short msgid,
dudnwjs 4:60be78a172c2 597 struct gapm_cmp_evt *param,
dudnwjs 4:60be78a172c2 598 unsigned short dest_id,
dudnwjs 4:60be78a172c2 599 unsigned short src_id,
dudnwjs 4:60be78a172c2 600 BleMsgHandler* BMH)
dudnwjs 4:60be78a172c2 601 {
dudnwjs 4:60be78a172c2 602 // We are now in Connectable State
dudnwjs 4:60be78a172c2 603 if (dest_id == TASK_GTL)
dudnwjs 4:60be78a172c2 604 {
dudnwjs 5:e11b23f9aacc 605 app_env.state = APP_IDLE;
dudnwjs 4:60be78a172c2 606 app_diss_db_create(BMH);
dudnwjs 4:60be78a172c2 607 }
dudnwjs 4:60be78a172c2 608
dudnwjs 4:60be78a172c2 609 return 0;
dudnwjs 4:60be78a172c2 610 }
dudnwjs 9:fcf91f563147 611 /**
dudnwjs 9:fcf91f563147 612 ****************************************************************************************
dudnwjs 9:fcf91f563147 613 * @brief Handles GAPM_CMP_EVT event for GAPM_SET_DEV_CONFIG_CMD.
dudnwjs 9:fcf91f563147 614 *
dudnwjs 9:fcf91f563147 615 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 616 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 617 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 618 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 619 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 620 *
dudnwjs 9:fcf91f563147 621 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 622 ****************************************************************************************
dudnwjs 9:fcf91f563147 623 */
dudnwjs 4:60be78a172c2 624 int gapm_set_dev_config_completion_handler(unsigned short msgid,
dudnwjs 4:60be78a172c2 625 struct gapm_cmp_evt *param,
dudnwjs 4:60be78a172c2 626 unsigned short dest_id,
dudnwjs 4:60be78a172c2 627 unsigned short src_id,
dudnwjs 4:60be78a172c2 628 BleMsgHandler* BMH)
dudnwjs 4:60be78a172c2 629 {
dudnwjs 5:e11b23f9aacc 630 app_env.state = APP_CONNECTABLE;
dudnwjs 5:e11b23f9aacc 631 wait(1);
dudnwjs 4:60be78a172c2 632 app_adv_start(BMH); // start advertising
dudnwjs 4:60be78a172c2 633
dudnwjs 4:60be78a172c2 634 return 0;
dudnwjs 4:60be78a172c2 635 }
dudnwjs 9:fcf91f563147 636 /**
dudnwjs 9:fcf91f563147 637 ****************************************************************************************
dudnwjs 9:fcf91f563147 638 * @brief Handles Connection request indication event.
dudnwjs 9:fcf91f563147 639 *
dudnwjs 9:fcf91f563147 640 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 641 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 642 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 643 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 644 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 645 *
dudnwjs 9:fcf91f563147 646 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 647 ****************************************************************************************
dudnwjs 9:fcf91f563147 648 */
dudnwjs 5:e11b23f9aacc 649 int gapc_connection_req_ind_handler(uint16_t msgid,
dudnwjs 5:e11b23f9aacc 650 struct gapc_connection_req_ind *param,
dudnwjs 5:e11b23f9aacc 651 uint16_t dest_id,
dudnwjs 5:e11b23f9aacc 652 uint16_t src_id,
dudnwjs 5:e11b23f9aacc 653 BleMsgHandler* BMH)
dudnwjs 5:e11b23f9aacc 654 {
dudnwjs 5:e11b23f9aacc 655 app_env.state = APP_CONNECTED;
dudnwjs 5:e11b23f9aacc 656
dudnwjs 5:e11b23f9aacc 657 ble_dev device;
dudnwjs 5:e11b23f9aacc 658
dudnwjs 5:e11b23f9aacc 659 // Retrieve the connection index from the GAPC task instance for the connection
dudnwjs 5:e11b23f9aacc 660 device.conidx = KE_IDX_GET(src_id);
dudnwjs 5:e11b23f9aacc 661
dudnwjs 5:e11b23f9aacc 662 // Retrieve the connection handle from the parameters
dudnwjs 5:e11b23f9aacc 663 device.conhdl = param->conhdl;
dudnwjs 5:e11b23f9aacc 664
dudnwjs 5:e11b23f9aacc 665 memcpy(device.adv_addr.addr, param->peer_addr.addr, sizeof(struct bd_addr));
dudnwjs 5:e11b23f9aacc 666
dudnwjs 5:e11b23f9aacc 667
dudnwjs 12:e3d3676753cc 668 char str[30] = "\nPROFILE ENABLE and CONFIRM\n";
dudnwjs 5:e11b23f9aacc 669 BMH->HostPcPrint(str);
dudnwjs 5:e11b23f9aacc 670
dudnwjs 5:e11b23f9aacc 671 app_dis_enable(&device,BMH);
dudnwjs 5:e11b23f9aacc 672 app_fota_server_enable(&device,BMH);
dudnwjs 12:e3d3676753cc 673 app_fan_control_enable(&device,BMH);
dudnwjs 5:e11b23f9aacc 674 app_connect_confirm(GAP_AUTH_REQ_NO_MITM_NO_BOND,&device,BMH);
dudnwjs 6:8dd20294b2aa 675
dudnwjs 5:e11b23f9aacc 676 return 0;
dudnwjs 5:e11b23f9aacc 677 }
dudnwjs 9:fcf91f563147 678 /**
dudnwjs 9:fcf91f563147 679 ****************************************************************************************
dudnwjs 9:fcf91f563147 680 * @brief Handles Discconnection indication event.
dudnwjs 9:fcf91f563147 681 *
dudnwjs 9:fcf91f563147 682 * @param[in] msgid Id of the message received.
dudnwjs 9:fcf91f563147 683 * @param[in] param Pointer to the parameters of the message.
dudnwjs 9:fcf91f563147 684 * @param[in] dest_id ID of the receiving task instance (TASK_GAP).
dudnwjs 9:fcf91f563147 685 * @param[in] src_id ID of the sending task instance.
dudnwjs 9:fcf91f563147 686 * @param[in] BMH Ble Message Handler class reference.
dudnwjs 9:fcf91f563147 687 *
dudnwjs 9:fcf91f563147 688 * @return If the message was consumed or not.
dudnwjs 9:fcf91f563147 689 ****************************************************************************************
dudnwjs 9:fcf91f563147 690 */
dudnwjs 5:e11b23f9aacc 691 int gapc_disconnect_ind_handler(uint16_t msgid,
dudnwjs 5:e11b23f9aacc 692 struct gapc_disconnect_ind *param,
dudnwjs 5:e11b23f9aacc 693 uint16_t dest_id,
dudnwjs 5:e11b23f9aacc 694 uint16_t src_id,
dudnwjs 5:e11b23f9aacc 695 BleMsgHandler* BMH)
dudnwjs 5:e11b23f9aacc 696 {
dudnwjs 5:e11b23f9aacc 697 char str[22] = "\nDevice Disconnected\n";
dudnwjs 5:e11b23f9aacc 698 BMH->HostPcPrint(str);
dudnwjs 5:e11b23f9aacc 699
dudnwjs 5:e11b23f9aacc 700 app_send_disconnect(TASK_FOTA_SERVER, param->conhdl, param->reason, BMH);
dudnwjs 5:e11b23f9aacc 701 app_env.state = APP_IDLE;
dudnwjs 5:e11b23f9aacc 702
dudnwjs 5:e11b23f9aacc 703 wait(1);
dudnwjs 5:e11b23f9aacc 704 app_set_mode(BMH);
dudnwjs 5:e11b23f9aacc 705
dudnwjs 5:e11b23f9aacc 706 return 0;
dudnwjs 5:e11b23f9aacc 707 }
dudnwjs 5:e11b23f9aacc 708
dudnwjs 5:e11b23f9aacc 709
dudnwjs 4:60be78a172c2 710 }//namespace
dudnwjs 4:60be78a172c2 711
dudnwjs 9:fcf91f563147 712 /// @} dialog_fota module