uint32_t ble_l2cap_tx_req_enc(uint16_t conn_handle, ble_l2cap_header_t const * const p_l2cap_header, uint8_t const * const p_data, 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); SER_ASSERT_LENGTH_LEQ(1, *p_buf_len); p_buf[index++] = SD_BLE_L2CAP_TX; err_code = uint16_t_enc(&conn_handle, p_buf, *p_buf_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = cond_field_enc(p_l2cap_header, p_buf, *p_buf_len, &index, ble_l2cap_header_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); if (p_l2cap_header != NULL) { err_code = buf_enc(p_data, p_l2cap_header->len, p_buf, *p_buf_len, &index); } else { err_code = buf_enc(NULL, 0, p_buf, *p_buf_len, &index); } *p_buf_len = index; return err_code; }
uint32_t nrf_ecb_hal_data_t_in_enc(void const * const p_data, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { nrf_ecb_hal_data_t * p_ecb_data = (nrf_ecb_hal_data_t *)p_data; uint32_t err_code; err_code = buf_enc(p_ecb_data->key,SOC_ECB_KEY_LENGTH, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = buf_enc(p_ecb_data->cleartext,SOC_ECB_CLEARTEXT_LENGTH, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return NRF_SUCCESS; }
uint32_t len16data_enc(uint8_t const * const p_data, uint16_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 = uint16_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_value_t_enc(void const * const p_void_struct, uint8_t * const p_buf, uint32_t buf_len, uint32_t * const p_index) { ble_gatts_value_t * p_value = (ble_gatts_value_t *)p_void_struct; uint32_t err_code = NRF_SUCCESS; err_code = uint16_t_enc((void *) &(p_value->len), p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = uint16_t_enc((void *) &(p_value->offset), p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); err_code = buf_enc(p_value->p_value, p_value->len, p_buf, buf_len, p_index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); return err_code; }
uint32_t ble_gatts_value_get_rsp_enc(uint32_t return_code, uint8_t * const p_buf, uint32_t * const p_buf_len, uint8_t * const p_value, uint16_t * const p_value_len) { SER_ASSERT_NOT_NULL(p_buf); SER_ASSERT_NOT_NULL(p_buf_len); SER_ASSERT_LENGTH_LEQ(SER_CMD_RSP_HEADER_SIZE, *p_buf_len); uint32_t total_len = *p_buf_len; uint32_t err_code = ser_ble_cmd_rsp_status_code_enc(SD_BLE_GATTS_VALUE_GET, return_code, p_buf, p_buf_len); if (err_code != NRF_SUCCESS) { return err_code; } uint32_t index = *p_buf_len; if (return_code == NRF_SUCCESS) /* Add value and it's length. */ { err_code = cond_field_enc(p_value_len, p_buf, total_len, &index, uint16_t_enc); SER_ASSERT(err_code == NRF_SUCCESS, err_code); uint16_t value_len = (p_value_len) ? *p_value_len : 0; err_code = buf_enc(p_value, value_len, p_buf, total_len, &index); SER_ASSERT(err_code == NRF_SUCCESS, err_code); } *p_buf_len = index; return NRF_SUCCESS; }