static uint32_t conn_int_encode(const ble_advdata_conn_int_t * p_conn_int, uint8_t * p_encoded_data, uint8_t * p_len) { uint32_t err_code; // Check for buffer overflow if ((*p_len) + 2 + 2 * sizeof(uint16_le_t) > BLE_GAP_ADV_MAX_SIZE) { return NRF_ERROR_DATA_SIZE; } // Check parameters err_code = conn_int_check(p_conn_int); if (err_code != NRF_SUCCESS) { return err_code; } // Encode Length and AD Type p_encoded_data[(*p_len)++] = 1 + 2 * sizeof(uint16_le_t); p_encoded_data[(*p_len)++] = BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE; // Encode Minimum and Maximum Connection Intervals (*p_len) += uint16_encode(p_conn_int->min_conn_interval, &p_encoded_data[*p_len]); (*p_len) += uint16_encode(p_conn_int->max_conn_interval, &p_encoded_data[*p_len]); return NRF_SUCCESS; }
static uint32_t conn_int_encode(const ble_advdata_conn_int_t * p_conn_int, uint8_t * p_encoded_data, uint16_t * p_offset, uint16_t max_size) { uint32_t err_code; // Check for buffer overflow. if (((*p_offset) + AD_TYPE_CONN_INT_SIZE) > max_size) { return NRF_ERROR_DATA_SIZE; } // Check parameters. err_code = conn_int_check(p_conn_int); if (err_code != NRF_SUCCESS) { return err_code; } // Encode Length and AD Type. p_encoded_data[*p_offset] = (uint8_t)(ADV_AD_TYPE_FIELD_SIZE + AD_TYPE_CONN_INT_DATA_SIZE); *p_offset += ADV_LENGTH_FIELD_SIZE; p_encoded_data[*p_offset] = BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE; *p_offset += ADV_AD_TYPE_FIELD_SIZE; // Encode Minimum and Maximum Connection Intervals. *p_offset += uint16_encode(p_conn_int->min_conn_interval, &p_encoded_data[*p_offset]); *p_offset += uint16_encode(p_conn_int->max_conn_interval, &p_encoded_data[*p_offset]); return NRF_SUCCESS; }