uint32_t ble_common_opt_pa_lna_t_enc(void const * const p_void_opt, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_index); SER_ASSERT_NOT_NULL(p_void_opt); ble_common_opt_pa_lna_t * p_opt = (ble_common_opt_pa_lna_t *)p_void_opt; uint32_t err_code = NRF_SUCCESS; err_code = ble_pa_lna_cfg_t_enc(&p_opt->pa_cfg, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = ble_pa_lna_cfg_t_enc(&p_opt->lna_cfg, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_opt->ppi_ch_id_set, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_opt->ppi_ch_id_clr, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_opt->gpiote_ch_id, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ble_gattc_write_params_t_enc(void const * const p_void_write, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { SER_ASSERT_NOT_NULL(p_void_write); SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_index); uint32_t err_code = NRF_SUCCESS; ble_gattc_write_params_t * p_write = (ble_gattc_write_params_t *)p_void_write; err_code = uint8_t_enc(&(p_write->write_op), p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&(p_write->flags), p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&(p_write->handle), p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&(p_write->offset), p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = len16data_enc(p_write->p_value, p_write->len, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ant_crypto_key_set_req_enc(uint8_t key_num, uint8_t const * const p_key, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint8_t svc_number = SVC_ANT_CRYPTO_KEY_SET; uint32_t err_code = NRF_SUCCESS; uint32_t buf_len = *p_buf_len; uint32_t index = 0; err_code = uint8_t_enc(&svc_number, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&key_num, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_vector_enc(p_key, SIZE_OF_ENCRYPTED_KEY, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); SER_ASSERT_LENGTH_LEQ(index, *p_buf_len); *p_buf_len = index; return err_code; }
uint32_t ser_ble_gatts_char_pf_enc(void const * const p_void_char_pf, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { ble_gatts_char_pf_t * p_char_pf = (ble_gatts_char_pf_t *)p_void_char_pf; uint32_t err_code = NRF_SUCCESS; err_code = uint8_t_enc(&p_char_pf->format, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_char_pf->exponent, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&p_char_pf->unit, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_char_pf->name_space, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&p_char_pf->desc, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ble_gap_rssi_start_req_enc(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint8_t op_code = SD_BLE_GAP_RSSI_START; uint32_t err_code = NRF_SUCCESS; uint32_t buf_len = *p_buf_len; uint32_t index = 0; err_code = uint8_t_enc(&op_code, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&conn_handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&threshold_dbm, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&skip_count, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_gatts_include_add_req_enc(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t * const p_include_handle, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); SER_ASSERT_LENGTH_LEQ(6, *p_buf_len); uint32_t index = 0; uint32_t buf_len = *p_buf_len; uint32_t err_code; uint8_t opCode = SD_BLE_GATTS_INCLUDE_ADD; uint8_t presenceFlag; err_code = uint8_t_enc(&opCode, p_buf, *p_buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&service_handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&inc_srvc_handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); presenceFlag = (p_include_handle != NULL) ? SER_FIELD_PRESENT : SER_FIELD_NOT_PRESENT; err_code = uint8_t_enc(&presenceFlag, p_buf, *p_buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ANT_ENABLE_enc(void const * const p_void_enable_params, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_index); SER_ASSERT_NOT_NULL(p_void_enable_params); ANT_ENABLE * p_enable_params = (ANT_ENABLE *)p_void_enable_params; uint32_t err_code = NRF_SUCCESS; err_code = uint8_t_enc(&p_enable_params->ucTotalNumberOfChannels, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_enable_params->ucNumberOfEncryptedChannels, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&p_enable_params->usNumberOfEvents, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint32_t_enc(&p_enable_params->pucMemoryBlockStartLocation, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&p_enable_params->usMemoryBlockByteSize, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ble_gatts_evt_write_t_enc(void const * const p_void_write, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { ble_gatts_evt_write_t * p_write = (ble_gatts_evt_write_t *) p_void_write; uint32_t error_code = NRF_SUCCESS; error_code = uint16_t_enc(&(p_write->handle), p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); error_code = ble_uuid_t_enc(&(p_write->uuid), p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); error_code = uint8_t_enc(&(p_write->op), p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); error_code = uint8_t_enc(&(p_write->auth_required), p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); error_code = uint16_t_enc(&(p_write->offset), p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); uint16_t data_len = p_write->len; error_code = uint16_t_enc(&data_len, p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); SER_ASSERT_LENGTH_LEQ(data_len, buf_len - *p_index); memcpy(&p_buf[*p_index], p_write->data, data_len); *p_index += data_len; return error_code; }
uint32_t ble_gap_sec_params_reply_req_enc(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const * const p_sec_params, ble_gap_sec_keyset_t const * const p_sec_keyset, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint8_t op_code = SD_BLE_GAP_SEC_PARAMS_REPLY; uint32_t err_code = NRF_SUCCESS; uint32_t buf_len = *p_buf_len; uint32_t index = 0; err_code = uint8_t_enc(&op_code, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&conn_handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&sec_status, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_sec_params, p_buf, buf_len, &index, ble_gap_sec_params_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_sec_keyset, p_buf, buf_len, &index, ble_gap_sec_keyset_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_gatts_char_md_enc(void const * const p_void_char_md, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { uint32_t err_code = NRF_SUCCESS; ble_gatts_char_md_t * p_char_md = (ble_gatts_char_md_t *)p_void_char_md; uint8_t temp8; temp8 = p_char_md->char_props.broadcast | (p_char_md->char_props.read << 1) | (p_char_md->char_props.write_wo_resp << 2) | (p_char_md->char_props.write << 3) | (p_char_md->char_props.notify << 4) | (p_char_md->char_props.indicate << 5) | (p_char_md->char_props.auth_signed_wr << 6); err_code = uint8_t_enc(&temp8, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); temp8 = p_char_md->char_ext_props.reliable_wr | (p_char_md->char_ext_props.wr_aux << 1); err_code = uint8_t_enc(&temp8, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&p_char_md->char_user_desc_max_size, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); SER_ERROR_CHECK(p_char_md->char_user_desc_size <= BLE_GATTS_VAR_ATTR_LEN_MAX, NRF_ERROR_INVALID_PARAM); err_code = len16data_enc(p_char_md->p_char_user_desc, p_char_md->char_user_desc_size, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_char_md->p_char_pf, p_buf, buf_len, p_index, ser_ble_gatts_char_pf_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_char_md->p_user_desc_md, p_buf, buf_len, p_index, ble_gatts_attr_md_enc); SER_ERROR_CHECK(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_char_md->p_cccd_md, p_buf, buf_len, p_index, ble_gatts_attr_md_enc); SER_ERROR_CHECK(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_char_md->p_sccd_md, p_buf, buf_len, p_index, ble_gatts_attr_md_enc); SER_ERROR_CHECK(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ant_coex_config_set_req_enc(uint8_t channel, ANT_BUFFER_PTR const * const p_coex_config, ANT_BUFFER_PTR const * const p_adv_coex_config, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint8_t svc_number = SVC_ANT_COEX_CONFIG_SET; uint32_t err_code = NRF_SUCCESS; uint32_t buf_len = *p_buf_len; uint32_t index = 0; err_code = uint8_t_enc(&svc_number, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&channel, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); // Encode coex config buffer size uint8_t coex_config_buffer_size = p_coex_config -> ucBufferSize; err_code = uint8_t_enc(&coex_config_buffer_size, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); // Encode coex config buffer err_code = uint8_vector_enc(p_coex_config -> pucBuffer, coex_config_buffer_size, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); // Encode advanced coex config buffer size uint8_t adv_coex_config_buffer_size = p_adv_coex_config -> ucBufferSize; err_code = uint8_t_enc(&adv_coex_config_buffer_size, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); // Encode advanced coex config buffer err_code = uint8_vector_enc(p_adv_coex_config -> pucBuffer, adv_coex_config_buffer_size, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); SER_ASSERT_LENGTH_LEQ(index, *p_buf_len); *p_buf_len = index; return err_code; }
uint32_t ant_crypto_info_get_rsp_enc(uint32_t return_code, uint8_t * const p_buf, uint32_t * const p_buf_len, uint8_t type, uint8_t const * const p_info) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t total_len = *p_buf_len; uint32_t err_code = ser_ble_cmd_rsp_status_code_enc(SVC_ANT_CRYPTO_INFO_GET, return_code, p_buf, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); if (return_code != NRF_SUCCESS) { return NRF_SUCCESS; } err_code = uint8_t_enc(&type, p_buf, total_len, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); uint8_t crypto_info_size = (MESG_CONFIG_ENCRYPT_REQ_CONFIG_USER_DATA_SIZE - MESG_CHANNEL_NUM_SIZE); err_code = uint8_vector_enc(p_info, crypto_info_size, p_buf, total_len, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return NRF_SUCCESS; }
uint32_t ble_gap_rssi_get_rsp_enc(uint32_t return_code, uint8_t * const p_buf, uint32_t * const p_buf_len, int8_t rssi) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t total_len = *p_buf_len; uint32_t err_code = ser_ble_cmd_rsp_status_code_enc(SD_BLE_GAP_RSSI_GET, return_code, p_buf, p_buf_len); if (err_code != NRF_SUCCESS) { return err_code; } if (return_code != NRF_SUCCESS) { return NRF_SUCCESS; } uint32_t index = *p_buf_len; err_code = uint8_t_enc((uint8_t *) &rssi, p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_gattc_hv_confirm_req_enc(uint16_t conn_handle, uint16_t handle, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint8_t op_code = SD_BLE_GATTC_HV_CONFIRM; uint32_t err_code = NRF_SUCCESS; uint32_t buf_len = *p_buf_len; uint32_t index = 0; err_code = uint8_t_enc(&op_code, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&conn_handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return NRF_SUCCESS; }
uint32_t ble_gap_lesc_dhkey_reply_req_enc(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint8_t op_code = SD_BLE_GAP_LESC_DHKEY_REPLY; uint32_t err_code = NRF_SUCCESS; uint32_t buf_len = *p_buf_len; uint32_t index = 0; err_code = uint8_t_enc(&op_code, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&conn_handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_dhkey, p_buf, buf_len, &index, ble_gap_lesc_dhkey_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_uuid_vs_add_req_enc(ble_uuid128_t const * const p_vs_uuid, uint8_t * const p_uuid_type, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t err_code; uint32_t index = 0; uint32_t buf_len = *p_buf_len; uint8_t opcode = SD_BLE_UUID_VS_ADD; err_code = uint8_t_enc(&opcode, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc((void *)p_vs_uuid, p_buf, buf_len, &index, ble_uuid128_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc((void *)p_uuid_type, p_buf, buf_len, &index, NULL); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_uuid_decode_req_enc(uint8_t uuid_le_len, uint8_t const * const p_uuid_le, ble_uuid_t * const p_uuid, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t err_code; uint32_t index = 0; uint32_t buf_len = *p_buf_len; uint8_t opcode = SD_BLE_UUID_DECODE; err_code = uint8_t_enc((void *)&opcode, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = len8data_enc(p_uuid_le, uuid_le_len, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc((void *)p_uuid, p_buf, buf_len, &index, NULL); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_gap_evt_scan_req_report_enc(ble_evt_t const * const p_event, uint32_t event_len, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_event); SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t index = 0; uint32_t total_len = *p_buf_len; uint32_t err_code = NRF_SUCCESS; const uint16_t evt_header = BLE_GAP_EVT_SCAN_REQ_REPORT; err_code = uint16_t_enc((void *)&evt_header, p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc((void *)&p_event->evt.gap_evt.conn_handle, p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = ble_gap_addr_enc((void *)&(p_event->evt.gap_evt.params.scan_req_report.peer_addr), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc((void *)&(p_event->evt.gap_evt.params.scan_req_report.rssi), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_gatts_rw_authorize_reply_params_t_enc(void const * const p_void_struct, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { ble_gatts_rw_authorize_reply_params_t const * const p_params = (ble_gatts_rw_authorize_reply_params_t * ) p_void_struct; uint32_t error_code = NRF_SUCCESS; error_code = uint8_t_enc(&(p_params->type), p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); if (p_params->type == BLE_GATTS_AUTHORIZE_TYPE_READ) { error_code = ble_gatts_read_authorize_params_t_enc(&p_params->params.read, p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); } else if (p_params->type == BLE_GATTS_AUTHORIZE_TYPE_WRITE) { error_code = ble_gatts_write_authorize_params_t_enc(&p_params->params.write, p_buf, buf_len, p_index); SER_ASSERT(error_code == NRF_SUCCESS, error_code); } else { return NRF_ERROR_INVALID_PARAM; } return error_code; }
uint32_t ble_gatts_rw_authorize_reply_req_enc( uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const * const p_reply_params, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t index = 0; uint32_t buf_len = *p_buf_len; uint8_t opcode = SD_BLE_GATTS_RW_AUTHORIZE_REPLY; uint32_t err_code = NRF_SUCCESS; err_code = uint8_t_enc(&opcode, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&conn_handle, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_reply_params, p_buf, buf_len, &index, ble_gatts_rw_authorize_reply_params_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_gap_adv_start_req_enc(ble_gap_adv_params_t const * const p_adv_params, uint8_t * const p_buf, uint32_t * const p_buf_len) { uint32_t index = 0; uint32_t err_code = NRF_SUCCESS; SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t total_len = *p_buf_len; SER_ASSERT_LENGTH_LEQ(index + 2, total_len); p_buf[index++] = SD_BLE_GAP_ADV_START; p_buf[index++] = (p_adv_params == NULL) ? SER_FIELD_NOT_PRESENT : SER_FIELD_PRESENT; if (p_adv_params != NULL) { err_code = uint8_t_enc(&(p_adv_params->type), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_adv_params->p_peer_addr, p_buf, total_len, &index, ble_gap_addr_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&(p_adv_params->fp), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_adv_params->p_whitelist, p_buf, total_len, &index, ble_gap_whitelist_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&(p_adv_params->interval), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc(&(p_adv_params->timeout), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = ble_gap_adv_ch_mask_t_enc(&(p_adv_params->channel_mask), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); } *p_buf_len = index; return err_code; }
uint32_t ant_coex_config_get_rsp_enc(uint32_t return_code, uint8_t * const p_buf, uint32_t * const p_buf_len, ANT_BUFFER_PTR * const p_coex_config, ANT_BUFFER_PTR * const p_adv_coex_config) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t total_len = *p_buf_len; uint32_t err_code = ser_ble_cmd_rsp_status_code_enc(SVC_ANT_COEX_CONFIG_GET, return_code, p_buf, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); if (return_code != NRF_SUCCESS) { return NRF_SUCCESS; } err_code = uint8_t_enc(&(p_coex_config->ucBufferSize), p_buf, total_len, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_vector_enc(p_coex_config->pucBuffer, p_coex_config->ucBufferSize, p_buf, total_len, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&(p_adv_coex_config->ucBufferSize), p_buf, total_len, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_vector_enc(p_adv_coex_config->pucBuffer, p_adv_coex_config->ucBufferSize, p_buf, total_len, p_buf_len); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return NRF_SUCCESS; }
uint32_t ble_conn_bw_t_enc(void const * const p_void_conn_bw, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_index); SER_ASSERT_NOT_NULL(p_void_conn_bw); ble_conn_bw_t * p_conn_bw = (ble_conn_bw_t *)p_void_conn_bw; uint32_t err_code = NRF_SUCCESS; err_code = uint8_t_enc(&p_conn_bw->conn_bw_rx, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_conn_bw->conn_bw_tx, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ble_gap_evt_adv_report_enc(ble_evt_t const * const p_event, uint32_t event_len, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_event); SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint32_t index = 0; uint32_t total_len = *p_buf_len; uint32_t err_code = NRF_SUCCESS; uint8_t byte; const uint16_t evt_header = BLE_GAP_EVT_ADV_REPORT; err_code = uint16_t_enc((void *)&evt_header, p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc((void *)&p_event->evt.gap_evt.conn_handle, p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = ble_gap_addr_enc((void *)&(p_event->evt.gap_evt.params.adv_report.peer_addr), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc((void *)&(p_event->evt.gap_evt.params.adv_report.rssi), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); byte = (p_event->evt.gap_evt.params.adv_report.scan_rsp) | ((p_event->evt.gap_evt.params.adv_report.type) << 0x01) | ((p_event->evt.gap_evt.params.adv_report.dlen) << 0x03); err_code = uint8_t_enc((void *)&(byte), p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_vector_enc(p_event->evt.gap_evt.params.adv_report.data, (uint16_t)p_event->evt.gap_evt.params.adv_report.dlen, p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ble_gap_tx_power_set_req_enc(int8_t tx_power, uint8_t * const p_buf, uint32_t * const p_buf_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); uint8_t op_code = SD_BLE_GAP_TX_POWER_SET; uint32_t err_code = NRF_SUCCESS; uint32_t buf_len = *p_buf_len; uint32_t index = 0; err_code = uint8_t_enc(&op_code, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&tx_power, p_buf, buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); *p_buf_len = index; return err_code; }
uint32_t ant_evt_t_enc(void const * const p_void_ant_evt, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_index); SER_ASSERT_NOT_NULL(p_void_ant_evt); ant_evt_t * p_ant_evt = (ant_evt_t *)p_void_ant_evt; uint32_t err_code = NRF_SUCCESS; memcpy(&p_buf[*p_index], p_ant_evt->msg.evt_buffer, ANT_STACK_EVT_MSG_BUF_SIZE); // Size + sizeof(size) & sizeof(msg id) *p_index += ANT_STACK_EVT_MSG_BUF_SIZE; err_code = uint8_t_enc(&p_ant_evt->event, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_ant_evt->channel, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return(err_code); }
uint32_t ble_conn_bw_count_t_enc(void const * const p_void_conn_bw_count, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_index); SER_ASSERT_NOT_NULL(p_void_conn_bw_count); ble_conn_bw_count_t * p_conn_bw_count = (ble_conn_bw_count_t *)p_void_conn_bw_count; uint32_t err_code = NRF_SUCCESS; err_code = uint8_t_enc(&p_conn_bw_count->high_count, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_conn_bw_count->mid_count, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_conn_bw_count->low_count, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ble_uuid_t_enc(void const * const p_void_uuid, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { ble_uuid_t * p_uuid = (ble_uuid_t *)p_void_uuid; uint32_t err_code = NRF_SUCCESS; err_code = uint16_t_enc(&p_uuid->uuid, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint8_t_enc(&p_uuid->type, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t len8data_enc(uint8_t const * const p_data, uint8_t const dlen, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { uint32_t err_code = NRF_SUCCESS; err_code = uint8_t_enc(&dlen, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = buf_enc(p_data, dlen, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
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) { ble_gatts_enable_params_t * p_enable_params = (ble_gatts_enable_params_t *)p_void_struct; uint32_t err_code = NRF_SUCCESS; uint8_t temp8 = 0; temp8 = (p_enable_params->service_changed & 0x01); err_code = uint8_t_enc((void *) &temp8, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint32_t_enc(&(p_enable_params->attr_tab_size), p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }