| 87 | static BLEMultiAdvertising advert(2); |
| 88 | |
| 89 | bool BLE_TX::init(void) |
| 90 | { |
| 91 | if (initialised) { |
| 92 | return true; |
| 93 | } |
| 94 | initialised = true; |
| 95 | BLEDevice::init(""); |
| 96 | |
| 97 | // setup power levels |
| 98 | legacy_adv_params.tx_power = dBm_to_tx_power(g.bt4_power); |
| 99 | ext_adv_params_coded.tx_power = dBm_to_tx_power(g.bt5_power); |
| 100 | |
| 101 | // set min/max interval based on output rate |
| 102 | legacy_adv_params.interval_max = (1000/(g.bt4_rate*7))/0.625; |
| 103 | legacy_adv_params.interval_min = 0.75*legacy_adv_params.interval_max; |
| 104 | ext_adv_params_coded.interval_max = (1000/(g.bt5_rate))/0.625; |
| 105 | ext_adv_params_coded.interval_min = 0.75*ext_adv_params_coded.interval_max; |
| 106 | |
| 107 | // generate random mac address |
| 108 | uint8_t mac_addr[6]; |
| 109 | generate_random_mac(mac_addr); |
| 110 | |
| 111 | // set as a bluetooth random static address |
| 112 | mac_addr[0] |= 0xc0; |
| 113 | |
| 114 | advert.setAdvertisingParams(0, &legacy_adv_params); |
| 115 | advert.setInstanceAddress(0, mac_addr); |
| 116 | advert.setDuration(0); |
| 117 | |
| 118 | advert.setAdvertisingParams(1, &ext_adv_params_coded); |
| 119 | advert.setDuration(1); |
| 120 | advert.setInstanceAddress(1, mac_addr); |
| 121 | |
| 122 | // prefer S8 coding |
| 123 | if (esp_ble_gap_set_prefered_default_phy(ESP_BLE_GAP_PHY_OPTIONS_PREF_S8_CODING, ESP_BLE_GAP_PHY_OPTIONS_PREF_S8_CODING) != ESP_OK) { |
| 124 | Serial.printf("Failed to setup S8 coding\n"); |
| 125 | } |
| 126 | |
| 127 | memset(&msg_counters,0, sizeof(msg_counters)); |
| 128 | return true; |
| 129 | } |
| 130 | |
| 131 | #define IMIN(a,b) ((a)<(b)?(a):(b)) |
| 132 |
nothing calls this directly
no outgoing calls
no test coverage detected