Exemple #1
0
void async_client::prepare_event()
{
  if (!evbase_) {
    clear_evbase_ = true;
    evbase_ = event_base_new();
    if (!evbase_)
      throw std::bad_alloc();

    prepare_event(evbase_);
  }
}
Exemple #2
0
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;
    }
}