Merge branch 'develop' into remove-nm-reference
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include <cstring>
|
||||
|
||||
#include <hal/nrf_rtc.h>
|
||||
#include <nrf_log.h>
|
||||
#define min // workaround: nimble's min/max macros conflict with libstdc++
|
||||
#define max
|
||||
#include <host/ble_gap.h>
|
||||
@@ -23,14 +24,14 @@
|
||||
using namespace Pinetime::Controllers;
|
||||
|
||||
NimbleController::NimbleController(Pinetime::System::SystemTask& systemTask,
|
||||
Pinetime::Controllers::Ble& bleController,
|
||||
Ble& bleController,
|
||||
DateTime& dateTimeController,
|
||||
Pinetime::Controllers::NotificationManager& notificationManager,
|
||||
Controllers::Battery& batteryController,
|
||||
NotificationManager& notificationManager,
|
||||
Battery& batteryController,
|
||||
Pinetime::Drivers::SpiNorFlash& spiNorFlash,
|
||||
Controllers::HeartRateController& heartRateController,
|
||||
Controllers::MotionController& motionController,
|
||||
Controllers::FS& fs)
|
||||
HeartRateController& heartRateController,
|
||||
MotionController& motionController,
|
||||
FS& fs)
|
||||
: systemTask {systemTask},
|
||||
bleController {bleController},
|
||||
dateTimeController {dateTimeController},
|
||||
@@ -75,6 +76,7 @@ int GAPEventCallback(struct ble_gap_event* event, void* arg) {
|
||||
|
||||
void NimbleController::Init() {
|
||||
while (!ble_hs_synced()) {
|
||||
vTaskDelay(10);
|
||||
}
|
||||
|
||||
nptr = this;
|
||||
@@ -183,7 +185,9 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
|
||||
case BLE_GAP_EVENT_ADV_COMPLETE:
|
||||
NRF_LOG_INFO("Advertising event : BLE_GAP_EVENT_ADV_COMPLETE");
|
||||
NRF_LOG_INFO("reason=%d; status=%0X", event->adv_complete.reason, event->connect.status);
|
||||
StartAdvertising();
|
||||
if (bleController.IsRadioEnabled() && !bleController.IsConnected()) {
|
||||
StartAdvertising();
|
||||
}
|
||||
break;
|
||||
|
||||
case BLE_GAP_EVENT_CONNECT:
|
||||
@@ -219,9 +223,11 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
|
||||
currentTimeClient.Reset();
|
||||
alertNotificationClient.Reset();
|
||||
connectionHandle = BLE_HS_CONN_HANDLE_NONE;
|
||||
bleController.Disconnect();
|
||||
fastAdvCount = 0;
|
||||
StartAdvertising();
|
||||
if(bleController.IsConnected()) {
|
||||
bleController.Disconnect();
|
||||
fastAdvCount = 0;
|
||||
StartAdvertising();
|
||||
}
|
||||
break;
|
||||
|
||||
case BLE_GAP_EVENT_CONN_UPDATE:
|
||||
@@ -396,6 +402,23 @@ void NimbleController::NotifyBatteryLevel(uint8_t level) {
|
||||
}
|
||||
}
|
||||
|
||||
void NimbleController::EnableRadio() {
|
||||
bleController.EnableRadio();
|
||||
bleController.Disconnect();
|
||||
fastAdvCount = 0;
|
||||
StartAdvertising();
|
||||
}
|
||||
|
||||
void NimbleController::DisableRadio() {
|
||||
bleController.DisableRadio();
|
||||
if (bleController.IsConnected()) {
|
||||
ble_gap_terminate(connectionHandle, BLE_ERR_REM_USER_CONN_TERM);
|
||||
bleController.Disconnect();
|
||||
} else {
|
||||
ble_gap_adv_stop();
|
||||
}
|
||||
}
|
||||
|
||||
void NimbleController::PersistBond(struct ble_gap_conn_desc& desc) {
|
||||
union ble_store_key key;
|
||||
union ble_store_value our_sec, peer_sec, peer_cccd_set[MYNEWT_VAL(BLE_STORE_MAX_CCCDS)] = {0};
|
||||
|
Reference in New Issue
Block a user