uint32_t ble_gatts_cfg_attr_tab_size_t_enc(void const * const p_void_struct,
                                     uint8_t * const    p_buf,
                                     uint32_t           buf_len,
                                     uint32_t * const   p_index)
{
    SER_STRUCT_ENC_BEGIN(ble_gatts_cfg_attr_tab_size_t);
    SER_PUSH_uint32(&p_struct->attr_tab_size);
    SER_STRUCT_ENC_END;
}
uint32_t ble_gatts_enable_params_t_enc(void const * const p_void_struct,
                                       uint8_t * const    p_buf,
                                       uint32_t           buf_len,
                                       uint32_t * const   p_index)
{
    SER_STRUCT_ENC_BEGIN(ble_gatts_enable_params_t);

    uint8_t ser_data = p_struct->service_changed & 0x01;
    SER_PUSH_uint8(&ser_data);
    SER_PUSH_uint32(&p_struct->attr_tab_size);

    SER_STRUCT_ENC_END;
}
예제 #3
0
파일: ble_conn.c 프로젝트: lyncxy119/Sentry
uint32_t ble_opt_get_rsp_enc(uint32_t                return_code,
                             uint8_t * const         p_buf,
                             uint32_t * const        p_buf_len,
                             uint32_t                opt_id,
                             ble_opt_t const * const p_opt)
{
    SER_RSP_ENC_BEGIN(SD_BLE_OPT_GET);

    SER_ASSERT_NOT_NULL(p_opt);
    SER_ASSERT(((opt_id == BLE_COMMON_OPT_CONN_BW)           ||
                (opt_id == BLE_COMMON_OPT_PA_LNA)            ||
                (opt_id == BLE_COMMON_OPT_CONN_EVT_EXT)      ||
                (opt_id == BLE_GAP_OPT_CH_MAP)               ||
                (opt_id == BLE_GAP_OPT_LOCAL_CONN_LATENCY)   ||
                (opt_id == BLE_GAP_OPT_PASSKEY)              ||
                (opt_id == BLE_GAP_OPT_SCAN_REQ_REPORT)      ||
                (opt_id == BLE_GAP_OPT_COMPAT_MODE)          ||
                (opt_id == BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT) ||
                (opt_id == BLE_GAP_OPT_EXT_LEN)), NRF_ERROR_INVALID_PARAM);

    SER_PUSH_uint32(&opt_id);

    field_encoder_handler_t fp_encoder = NULL;
    void const *            p_struct = NULL;

    switch (opt_id)
    {
        case BLE_COMMON_OPT_CONN_BW:
            fp_encoder = ble_common_opt_conn_bw_t_enc;
            p_struct   = &p_opt->common_opt.conn_bw;
        break;
        case BLE_COMMON_OPT_PA_LNA:
            fp_encoder = ble_common_opt_pa_lna_t_enc;
            p_struct   = &p_opt->common_opt.pa_lna;
        break;
        case BLE_COMMON_OPT_CONN_EVT_EXT:
            fp_encoder = ble_common_opt_conn_evt_ext_t_enc;
            p_struct   = &p_opt->common_opt.conn_evt_ext;
        break;
        case BLE_GAP_OPT_CH_MAP:
            fp_encoder = ble_gap_opt_ch_map_t_enc;
            p_struct   = &p_opt->gap_opt.ch_map;
        break;
        case BLE_GAP_OPT_LOCAL_CONN_LATENCY:
            fp_encoder = ble_gap_opt_local_conn_latency_t_enc;
            p_struct   = &p_opt->gap_opt.local_conn_latency;
        break;
        case BLE_GAP_OPT_PASSKEY:
            fp_encoder = ble_gap_opt_passkey_t_enc;
            p_struct   = &p_opt->gap_opt.passkey;
        break;
        case BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT:
            fp_encoder = ble_gap_opt_auth_payload_timeout_t_enc;
            p_struct   = &p_opt->gap_opt.auth_payload_timeout;
        break;
        case BLE_GAP_OPT_EXT_LEN:
            fp_encoder = ble_gap_opt_ext_len_t_enc;
            p_struct   = &p_opt->gap_opt.ext_len;
        break;
        case BLE_GAP_OPT_SCAN_REQ_REPORT:
            fp_encoder = ble_gap_opt_scan_req_report_t_enc;
            p_struct   = &p_opt->gap_opt.scan_req_report;
        break;
        case BLE_GAP_OPT_COMPAT_MODE:
            fp_encoder = ble_gap_opt_compat_mode_t_enc;
            p_struct   = &p_opt->gap_opt.compat_mode;
        break;
        default:
            SER_ASSERT(NRF_ERROR_INVALID_PARAM, NRF_ERROR_INVALID_PARAM);
        break;
    }

    SER_PUSH_FIELD(p_struct, fp_encoder);

    SER_RSP_ENC_END;
}