Skip to content

Instantly share code, notes, and snippets.

@electronut
Last active June 13, 2017 11:42
Show Gist options
  • Save electronut/4a2343858c7cf7159bc7a6330ece0f41 to your computer and use it in GitHub Desktop.
Save electronut/4a2343858c7cf7159bc7a6330ece0f41 to your computer and use it in GitHub Desktop.
Bluey Beacon set_adv_data()
// set adv data
void set_adv_data(bool init)
{
uint32_t err_code;
ble_advdata_t advdata;
uint8_t flags = BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED;
ble_advdata_manuf_data_t manuf_data; // Variable to hold manufacturer specific data
// Initialize with easily identifiable data
uint8_t data[] = {
0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9,
0xb1, 0xb2, 0xb3, 0xb4
};
// get sensor data
if (!init) {
// get T/H
uint16_t temp_val, humid_val;
HDC1010_get_temp_raw(&temp_val);
data[0] = temp_val >> 8;
data[1] = temp_val;
HDC1010_get_humid_raw(&humid_val);
data[2] = humid_val >> 8;
data[3] = humid_val;
// get ambient light value
uint16_t adc_ch0, adc_ch1;
APDS9301_read_adc_data(&adc_ch0, &adc_ch1);
data[4] = adc_ch0 >> 8;
data[5] = adc_ch0;
data[6] = adc_ch1 >> 8;
data[7] = adc_ch1;
}
manuf_data.company_identifier = 0xFFFF;
manuf_data.data.p_data = data;
manuf_data.data.size = sizeof(data);
// Build advertising data struct to pass into @ref ble_advertising_init.
memset(&advdata, 0, sizeof(advdata));
advdata.name_type = BLE_ADVDATA_SHORT_NAME;
advdata.short_name_len = 5;
advdata.flags = flags; //BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
advdata.p_manuf_specific_data = &manuf_data;
// if you don't set tx power, you get 3 extra bytes for manuf data
//int8_t tx_power = -4;
//advdata.p_tx_power_level = &tx_power;
advdata.include_appearance = true;
err_code = ble_advdata_set(&advdata, 0);
APP_ERROR_CHECK(err_code);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment