Merge branch 'airplane-mode' of https://github.com/evergreen22/InfiniTime into evergreen22-airplane-mode
Apply a few changes that were requested in the PR during the review. # Conflicts: # src/CMakeLists.txt # src/displayapp/Apps.h # src/displayapp/DisplayApp.cpp # src/displayapp/Messages.h # src/displayapp/screens/settings/Settings.cpp
This commit is contained in:
@@ -2,12 +2,28 @@
|
||||
|
||||
using namespace Pinetime::Controllers;
|
||||
|
||||
void Ble::SetConnectState(Ble::ConnectStates newState) {
|
||||
connectionState = newState;
|
||||
bool Ble::IsConnected() const {
|
||||
return isConnected;
|
||||
}
|
||||
|
||||
Ble::ConnectStates Ble::GetConnectState() const {
|
||||
return connectionState;
|
||||
void Ble::Connect() {
|
||||
isConnected = true;
|
||||
}
|
||||
|
||||
void Ble::Disconnect() {
|
||||
isConnected = false;
|
||||
}
|
||||
|
||||
bool Ble::IsRadioEnabled() const {
|
||||
return isRadioEnabled;
|
||||
}
|
||||
|
||||
void Ble::EnableRadio() {
|
||||
isRadioEnabled = true;
|
||||
}
|
||||
|
||||
void Ble::DisableRadio() {
|
||||
isRadioEnabled = false;
|
||||
}
|
||||
|
||||
void Ble::StartFirmwareUpdate() {
|
||||
|
@@ -10,14 +10,15 @@ namespace Pinetime {
|
||||
using BleAddress = std::array<uint8_t, 6>;
|
||||
enum class FirmwareUpdateStates { Idle, Running, Validated, Error };
|
||||
enum class AddressTypes { Public, Random, RPA_Public, RPA_Random };
|
||||
enum class ConnectStates { Disconnected, Connected, Airplane };
|
||||
|
||||
Ble() = default;
|
||||
bool IsConnected() const {
|
||||
return (connectionState == ConnectStates::Connected);
|
||||
}
|
||||
void SetConnectState(ConnectStates newState);
|
||||
ConnectStates GetConnectState() const;
|
||||
bool IsConnected() const;
|
||||
void Connect();
|
||||
void Disconnect();
|
||||
|
||||
bool IsRadioEnabled() const;
|
||||
void EnableRadio();
|
||||
void DisableRadio();
|
||||
|
||||
void StartFirmwareUpdate();
|
||||
void StopFirmwareUpdate();
|
||||
@@ -57,7 +58,8 @@ namespace Pinetime {
|
||||
}
|
||||
|
||||
private:
|
||||
ConnectStates connectionState = ConnectStates::Disconnected;
|
||||
bool isConnected = false;
|
||||
bool isRadioEnabled = true;
|
||||
bool isFirmwareUpdating = false;
|
||||
uint32_t firmwareUpdateTotalBytes = 0;
|
||||
uint32_t firmwareUpdateCurrentBytes = 0;
|
||||
|
@@ -184,7 +184,7 @@ 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);
|
||||
if (bleController.GetConnectState() == Ble::ConnectStates::Disconnected) {
|
||||
if (bleController.IsRadioEnabled() && !bleController.IsConnected()) {
|
||||
StartAdvertising();
|
||||
}
|
||||
break;
|
||||
@@ -199,12 +199,12 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
|
||||
currentTimeClient.Reset();
|
||||
alertNotificationClient.Reset();
|
||||
connectionHandle = BLE_HS_CONN_HANDLE_NONE;
|
||||
bleController.SetConnectState(Ble::ConnectStates::Disconnected);
|
||||
bleController.Disconnect();
|
||||
fastAdvCount = 0;
|
||||
StartAdvertising();
|
||||
} else {
|
||||
connectionHandle = event->connect.conn_handle;
|
||||
bleController.SetConnectState(Ble::ConnectStates::Connected);
|
||||
bleController.Connect();
|
||||
systemTask.PushMessage(Pinetime::System::Messages::BleConnected);
|
||||
// Service discovery is deferred via systemtask
|
||||
}
|
||||
@@ -222,8 +222,8 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
|
||||
currentTimeClient.Reset();
|
||||
alertNotificationClient.Reset();
|
||||
connectionHandle = BLE_HS_CONN_HANDLE_NONE;
|
||||
if (bleController.GetConnectState() == Ble::ConnectStates::Connected) {
|
||||
bleController.SetConnectState(Ble::ConnectStates::Disconnected);
|
||||
if(bleController.IsConnected()) {
|
||||
bleController.Disconnect();
|
||||
fastAdvCount = 0;
|
||||
StartAdvertising();
|
||||
}
|
||||
@@ -401,19 +401,20 @@ void NimbleController::NotifyBatteryLevel(uint8_t level) {
|
||||
}
|
||||
}
|
||||
|
||||
void NimbleController::SwitchAirplaneMode(bool enabled) {
|
||||
if (enabled) {
|
||||
if (bleController.IsConnected()) {
|
||||
bleController.SetConnectState(Ble::ConnectStates::Airplane);
|
||||
ble_gap_terminate(connectionHandle, BLE_ERR_REM_USER_CONN_TERM);
|
||||
} else {
|
||||
bleController.SetConnectState(Ble::ConnectStates::Airplane);
|
||||
ble_gap_adv_stop();
|
||||
}
|
||||
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 {
|
||||
bleController.SetConnectState(Ble::ConnectStates::Disconnected);
|
||||
fastAdvCount = 0;
|
||||
StartAdvertising();
|
||||
ble_gap_adv_stop();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -53,18 +53,6 @@ namespace Pinetime {
|
||||
void Init();
|
||||
void StartAdvertising();
|
||||
int OnGAPEvent(ble_gap_event* event);
|
||||
|
||||
/* these are not implemented yet
|
||||
int OnDiscoveryEvent(uint16_t i, const ble_gatt_error* pError, const ble_gatt_svc* pSvc);
|
||||
int OnCTSCharacteristicDiscoveryEvent(uint16_t connectionHandle, const ble_gatt_error* error, const ble_gatt_chr* characteristic);
|
||||
int OnANSCharacteristicDiscoveryEvent(uint16_t connectionHandle, const ble_gatt_error* error, const ble_gatt_chr* characteristic);
|
||||
int OnCurrentTimeReadResult(uint16_t connectionHandle, const ble_gatt_error* error, ble_gatt_attr* attribute);
|
||||
int OnANSDescriptorDiscoveryEventCallback(uint16_t connectionHandle,
|
||||
const ble_gatt_error* error,
|
||||
uint16_t characteristicValueHandle,
|
||||
const ble_gatt_dsc* descriptor);
|
||||
*/
|
||||
|
||||
void StartDiscovery();
|
||||
|
||||
Pinetime::Controllers::MusicService& music() {
|
||||
@@ -87,7 +75,8 @@ namespace Pinetime {
|
||||
fastAdvCount = 0;
|
||||
};
|
||||
|
||||
void SwitchAirplaneMode(bool enabled);
|
||||
void EnableRadio();
|
||||
void DisableRadio();
|
||||
|
||||
private:
|
||||
void PersistBond(struct ble_gap_conn_desc& desc);
|
||||
|
@@ -202,12 +202,12 @@ namespace Pinetime {
|
||||
return settings.stepsGoal;
|
||||
};
|
||||
|
||||
void SetAirplaneMode(bool mode) {
|
||||
airplaneMode = mode;
|
||||
void SetBleRadioEnabled(bool enabled) {
|
||||
bleRadioEnabled = enabled;
|
||||
};
|
||||
|
||||
bool GetAirplaneMode() const {
|
||||
return airplaneMode;
|
||||
bool GetBleRadioEnabled() const {
|
||||
return bleRadioEnabled;
|
||||
};
|
||||
|
||||
private:
|
||||
@@ -240,7 +240,7 @@ namespace Pinetime {
|
||||
/* airplaneMode is intentionally not saved with the other watch settings and initialized
|
||||
* to off (false) on every boot because we always want ble to be enabled on startup
|
||||
*/
|
||||
bool airplaneMode = false;
|
||||
bool bleRadioEnabled = true;
|
||||
|
||||
void LoadSettingsFromFile();
|
||||
void SaveSettingsToFile();
|
||||
|
Reference in New Issue
Block a user