void async_client::prepare_event() { if (!evbase_) { clear_evbase_ = true; evbase_ = event_base_new(); if (!evbase_) throw std::bad_alloc(); prepare_event(evbase_); } }
static void mesh_app_packet_handle(mesh_adv_data_t* p_mesh_adv_data, uint64_t timestamp) { // LOGi("_1"); int16_t delta = vh_get_version_delta(p_mesh_adv_data->handle, p_mesh_adv_data->version); vh_data_status_t data_status = vh_rx_register(p_mesh_adv_data, timestamp); /* prepare app event */ rbc_mesh_event_t evt; evt.version_delta = delta; switch (data_status) { case VH_DATA_STATUS_NEW: /* notify application */ prepare_event(&evt, p_mesh_adv_data); evt.event_type = RBC_MESH_EVENT_TYPE_NEW_VAL; if (rbc_mesh_event_push(&evt) == NRF_SUCCESS) { mesh_gatt_value_set(p_mesh_adv_data->handle, p_mesh_adv_data->data, p_mesh_adv_data->adv_data_length - MESH_PACKET_ADV_OVERHEAD); } #ifdef RBC_MESH_SERIAL mesh_aci_rbc_event_handler(&evt); #endif break; case VH_DATA_STATUS_UPDATED: /* notify application */ prepare_event(&evt, p_mesh_adv_data); evt.event_type = RBC_MESH_EVENT_TYPE_UPDATE_VAL; if (rbc_mesh_event_push(&evt) == NRF_SUCCESS) { mesh_gatt_value_set(p_mesh_adv_data->handle, p_mesh_adv_data->data, p_mesh_adv_data->adv_data_length - MESH_PACKET_ADV_OVERHEAD); } #ifdef RBC_MESH_SERIAL mesh_aci_rbc_event_handler(&evt); #endif break; case VH_DATA_STATUS_OLD: /* do nothing */ break; case VH_DATA_STATUS_SAME: /* do nothing */ break; case VH_DATA_STATUS_CONFLICTING: prepare_event(&evt, p_mesh_adv_data); evt.event_type = RBC_MESH_EVENT_TYPE_CONFLICTING_VAL; rbc_mesh_event_push(&evt); /* ignore error - will be a normal packet drop */ #ifdef RBC_MESH_SERIAL mesh_aci_rbc_event_handler(&evt); #endif break; case VH_DATA_STATUS_UNKNOWN: break; } }