/** **************************************************************************************** * @brief Application task message handler **************************************************************************************** */ void app_task_msg_hdl(ke_msg_id_t const msgid, void const *param) { switch(msgid) { case GAP_SET_MODE_REQ_CMP_EVT: if(APP_IDLE == ke_state_get(TASK_APP)) { usr_led1_set(LED_ON_DUR_ADV_FAST, LED_OFF_DUR_ADV_FAST); ke_timer_set(APP_ADV_INTV_UPDATE_TIMER, TASK_APP, 30 * 100); #if (defined(QN_ADV_WDT)) usr_env.adv_wdt_enable = true; #endif } else if(APP_ADV == ke_state_get(TASK_APP)) { usr_led1_set(LED_ON_DUR_ADV_SLOW, LED_OFF_DUR_ADV_SLOW); #if (defined(QN_ADV_WDT)) usr_env.adv_wdt_enable = true; #endif } #if (FB_OLED) ke_timer_set(APP_OLED_DISPLAY_TIMER,TASK_APP,20); #endif break; case GAP_ADV_REQ_CMP_EVT: usr_led1_set(LED_ON_DUR_IDLE, LED_OFF_DUR_IDLE); ke_timer_clear(APP_ADV_INTV_UPDATE_TIMER, TASK_APP); break; case GAP_DISCON_CMP_EVT: usr_led1_set(LED_ON_DUR_IDLE, LED_OFF_DUR_IDLE); // start adv app_gap_adv_start_req(GAP_GEN_DISCOVERABLE|GAP_UND_CONNECTABLE, app_env.adv_data, app_set_adv_data(GAP_GEN_DISCOVERABLE), app_env.scanrsp_data, app_set_scan_rsp_data(app_get_local_service_flag()), GAP_ADV_FAST_INTV1, GAP_ADV_FAST_INTV2); break; case GAP_LE_CREATE_CONN_REQ_CMP_EVT: if(((struct gap_le_create_conn_req_cmp_evt *)param)->conn_info.status == CO_ERROR_NO_ERROR) { if(GAP_PERIPHERAL_SLV == app_get_role()) { ke_timer_clear(APP_ADV_INTV_UPDATE_TIMER, TASK_APP); usr_led1_set(LED_ON_DUR_CON, LED_OFF_DUR_CON); #if (defined(QN_ADV_WDT)) usr_env.adv_wdt_enable = false; #endif // Update cnx parameters if (((struct gap_le_create_conn_req_cmp_evt *)param)->conn_info.con_interval < GAP_PPCP_CONN_INTV_MIN) { // Update connection parameters here struct gap_conn_param_update conn_par; /// Connection interval minimum conn_par.intv_min = GAP_PPCP_CONN_INTV_MIN; /// Connection interval maximum conn_par.intv_max = GAP_PPCP_CONN_INTV_MAX; /// Latency conn_par.latency = GAP_PPCP_SLAVE_LATENCY; /// Supervision timeout, Time = N * 10 msec conn_par.time_out = GAP_PPCP_STO_MULT; app_gap_param_update_req(((struct gap_le_create_conn_req_cmp_evt *)param)->conn_info.conhdl, &conn_par); } } } break; case PROXR_ALERT_IND: { usr_proxr_alert((struct proxr_alert_ind*)param); } break; #if (BLE_OTA_SERVER) case OTAS_TRANSIMIT_STATUS_IND: QPRINTF(" APP get OTA transmit status = %d , describe = %d \r\n" , ((struct otas_transimit_status_ind*)param)->status, ((struct otas_transimit_status_ind*)param)->status_des); //only need response once when ota status is in ota status start request if(((struct otas_transimit_status_ind*)param)->status == OTA_STATUS_START_REQ) { app_ota_ctrl_resp(START_OTA); } break; //end #endif case QPPS_DAVA_VAL_IND: { } break; default: break; } #if (FB_OLED) ke_timer_set(APP_OLED_STATE_DISPlAY_TIMER,TASK_APP,20); #endif }
/** **************************************************************************************** * @brief Application task message handler **************************************************************************************** */ void app_task_msg_hdl(ke_msg_id_t const msgid, void const *param) { switch(msgid) { case GAP_SET_MODE_REQ_CMP_EVT: if(APP_IDLE == ke_state_get(TASK_APP)) { usr_led1_set(LED_ON_DUR_ADV_FAST, LED_OFF_DUR_ADV_FAST); ke_timer_set(APP_ADV_INTV_UPDATE_TIMER, TASK_APP, 30 * 100); } else if(APP_ADV == ke_state_get(TASK_APP)) { usr_led1_set(LED_ON_DUR_ADV_SLOW, LED_OFF_DUR_ADV_SLOW); } break; case GAP_ADV_REQ_CMP_EVT: usr_led1_set(LED_ON_DUR_IDLE, LED_OFF_DUR_IDLE); ke_timer_clear(APP_ADV_INTV_UPDATE_TIMER, TASK_APP); break; case GAP_DISCON_CMP_EVT: usr_led1_set(LED_ON_DUR_IDLE, LED_OFF_DUR_IDLE); // start adv app_gap_adv_start_req(GAP_GEN_DISCOVERABLE|GAP_UND_CONNECTABLE, app_env.adv_data, app_set_adv_data(GAP_GEN_DISCOVERABLE), app_env.scanrsp_data, app_set_scan_rsp_data(app_get_local_service_flag()), GAP_ADV_FAST_INTV1, GAP_ADV_FAST_INTV2); break; case GAP_LE_CREATE_CONN_REQ_CMP_EVT: if(((struct gap_le_create_conn_req_cmp_evt *)param)->conn_info.status == CO_ERROR_NO_ERROR) { if(GAP_PERIPHERAL_SLV == app_get_role()) { ke_timer_clear(APP_ADV_INTV_UPDATE_TIMER, TASK_APP); usr_led1_set(LED_ON_DUR_CON, LED_OFF_DUR_CON); // Update cnx parameters if (((struct gap_le_create_conn_req_cmp_evt *)param)->conn_info.con_interval < GAP_PPCP_CONN_INTV_MIN) { // Update connection parameters here struct gap_conn_param_update conn_par; /// Connection interval minimum conn_par.intv_min = IOS_MIN_PARAM_INTV_MIN; /// Connection interval maximum conn_par.intv_max = IOS_MIN_PARAM_IMTV_MAX; /// Latency conn_par.latency = IOS_MIN_PARAM_LATENCY; /// Supervision timeout, Time = N * 10 msec conn_par.time_out = IOS_MIN_PARAM_TIME_OUT; app_gap_param_update_req(((struct gap_le_create_conn_req_cmp_evt *)param)->conn_info.conhdl, &conn_par); } } } break; case PROXR_ALERT_IND: usr_proxr_alert((struct proxr_alert_ind*)param); break; case OTAS_TRANSIMIT_STATUS_IND: #ifdef ENAB_OTAS_APP_CTRL //only need response once when ota status is in ota status start request if(((struct otas_transimit_status_ind*)param)->status == OTA_STATUS_START_REQ) { app_ota_ctrl_resp(START_OTA); } #endif break; default: break; } }