Connect and bond with a passkey
This commit adds the following: Passkey pairing - passkey is displayed on watch Swipe down to clear passkey screen Connection encryption Connection bonding Automatic reconnects to a bonded peripheral Trusted device on Android Note that persisting the bond between reboots is NOT included in this commit. Therefore, rebooting the watch will cause reconnect failures. You must delete the bond from the phone to reconnect/pair.
This commit is contained in:
@@ -25,6 +25,7 @@ namespace Pinetime {
|
||||
Metronome,
|
||||
Motion,
|
||||
Steps,
|
||||
PassKey,
|
||||
QuickSettings,
|
||||
Settings,
|
||||
SettingWatchFace,
|
||||
|
@@ -29,6 +29,7 @@
|
||||
#include "displayapp/screens/FlashLight.h"
|
||||
#include "displayapp/screens/BatteryInfo.h"
|
||||
#include "displayapp/screens/Steps.h"
|
||||
#include "displayapp/screens/PassKey.h"
|
||||
#include "displayapp/screens/Error.h"
|
||||
|
||||
#include "drivers/Cst816s.h"
|
||||
@@ -288,6 +289,9 @@ void DisplayApp::Refresh() {
|
||||
// Added to remove warning
|
||||
// What should happen here?
|
||||
break;
|
||||
case Messages::ShowPairingKey:
|
||||
LoadApp(Apps::PassKey, DisplayApp::FullRefreshDirections::Up);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,6 +355,11 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
|
||||
ReturnApp(Apps::Clock, FullRefreshDirections::Down, TouchEvents::None);
|
||||
break;
|
||||
|
||||
case Apps::PassKey:
|
||||
currentScreen = std::make_unique<Screens::PassKey>(this, bleController.GetPairingKey());
|
||||
ReturnApp(Apps::Clock, FullRefreshDirections::Down, TouchEvents::SwipeDown);
|
||||
break;
|
||||
|
||||
case Apps::Notifications:
|
||||
currentScreen = std::make_unique<Screens::Notifications>(
|
||||
this, notificationManager, systemTask->nimble().alertService(), motorController, Screens::Notifications::Modes::Normal);
|
||||
|
@@ -19,6 +19,7 @@ namespace Pinetime {
|
||||
UpdateTimeOut,
|
||||
DimScreen,
|
||||
RestoreBrightness,
|
||||
ShowPairingKey,
|
||||
AlarmTriggered
|
||||
};
|
||||
}
|
||||
|
17
src/displayapp/screens/PassKey.cpp
Normal file
17
src/displayapp/screens/PassKey.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "PassKey.h"
|
||||
#include "displayapp/DisplayApp.h"
|
||||
|
||||
using namespace Pinetime::Applications::Screens;
|
||||
|
||||
PassKey::PassKey(Pinetime::Applications::DisplayApp* app, uint32_t key) : Screen(app) {
|
||||
lpasskey = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_style_local_text_color(lpasskey, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFFFF00));
|
||||
lv_obj_set_style_local_text_font(lpasskey, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &jetbrains_mono_42);
|
||||
lv_label_set_text_fmt(lpasskey, "%06u", key);
|
||||
lv_obj_align(lpasskey, nullptr, LV_ALIGN_CENTER, 0, -20);
|
||||
}
|
||||
|
||||
PassKey::~PassKey() {
|
||||
lv_obj_clean(lv_scr_act());
|
||||
}
|
||||
|
20
src/displayapp/screens/PassKey.h
Normal file
20
src/displayapp/screens/PassKey.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#include "Screen.h"
|
||||
#include <lvgl/lvgl.h>
|
||||
|
||||
namespace Pinetime {
|
||||
namespace Applications {
|
||||
namespace Screens {
|
||||
|
||||
class PassKey : public Screen {
|
||||
public:
|
||||
PassKey(DisplayApp* app, uint32_t key);
|
||||
~PassKey() override;
|
||||
|
||||
private:
|
||||
lv_obj_t* lpasskey;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user