@@ -8,10 +8,15 @@ using namespace Pinetime::Applications::Screens;
88// move operation.
99// It should accept many type of "sub screen" (it only supports Label for now).
1010// The number of sub screen it supports must be dynamic.
11- ScreenList::ScreenList (Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::DateTime &dateTimeController,
12- Pinetime::Controllers::Battery& batteryController, Pinetime::Controllers::BrightnessController& brightnessController, Pinetime::Drivers::WatchdogView& watchdog) :
11+ ScreenList::ScreenList (Pinetime::Applications::DisplayApp *app,
12+ Pinetime::Controllers::DateTime &dateTimeController,
13+ Pinetime::Controllers::Battery& batteryController,
14+ Pinetime::Controllers::BrightnessController& brightnessController,
15+ Pinetime::Controllers::Ble& bleController,
16+ Pinetime::Drivers::WatchdogView& watchdog) :
1317 Screen(app),
14- dateTimeController{dateTimeController}, batteryController{batteryController}, brightnessController{brightnessController}, watchdog{watchdog} {
18+ dateTimeController{dateTimeController}, batteryController{batteryController},
19+ brightnessController{brightnessController}, bleController{bleController}, watchdog{watchdog} {
1520 screens.reserve (3 );
1621
1722 // TODO all of this is far too heavy (string processing). This should be improved.
@@ -43,27 +48,45 @@ ScreenList::ScreenList(Pinetime::Applications::DisplayApp *app, Pinetime::Contro
4348 }
4449 }();
4550
51+ // uptime
52+ static constexpr uint32_t secondsInADay = 60 *60 *24 ;
53+ static constexpr uint32_t secondsInAnHour = 60 *60 ;
54+ static constexpr uint32_t secondsInAMinute = 60 ;
55+ uint32_t uptimeSeconds = dateTimeController.Uptime ().count ();
56+ uint32_t uptimeDays = (uptimeSeconds / secondsInADay);
57+ uptimeSeconds = uptimeSeconds % secondsInADay;
58+ uint32_t uptimeHours = uptimeSeconds / secondsInAnHour;
59+ uptimeSeconds = uptimeSeconds % secondsInAnHour;
60+ uint32_t uptimeMinutes = uptimeSeconds / secondsInAMinute;
61+ uptimeSeconds = uptimeSeconds % secondsInAMinute;
62+ // TODO handle more than 100 days of uptime
4663
4764 sprintf (t1, " Pinetime\n "
4865 " Version:%d.%d.%d\n "
49- " Build: xx/xx/xxxx\n "
66+ " Build: %s\n "
67+ " %s\n "
68+ " Date: %02d/%02d/%04d\n "
5069 " Time: %02d:%02d:%02d\n "
51- " date: %02d/%02d/%04d\n "
52- " Uptime: xd xxhxx:xx\n "
70+ " Uptime: %02lud %02lu:%02lu:%02lu\n "
5371 " Battery: %d%%\n "
5472 " Backlight: %d/3\n "
55- " Last reset: %s\n "
56- " BLE MAC: \n AA:BB:CC:DD:EE:FF " , Version::Major (), Version::Minor (), Version::Patch (),
57- dateTimeController. Hours (), dateTimeController. Minutes (), dateTimeController. Seconds () ,
73+ " Last reset: %s\n " ,
74+ Version::Major (), Version::Minor (), Version::Patch (),
75+ __DATE__, __TIME__ ,
5876 dateTimeController.Day (), dateTimeController.Month (), dateTimeController.Year (),
77+ dateTimeController.Hours (), dateTimeController.Minutes (), dateTimeController.Seconds (),
78+ uptimeDays, uptimeHours, uptimeMinutes, uptimeSeconds,
5979 batteryPercent, brightness, resetReason);
6080
6181 screens.emplace_back (t1);
6282
63- strncpy (t2, " Hello from\n the developper!" , 27 );
83+ auto & bleAddr = bleController.Address ();
84+ sprintf (t2, " BLE MAC: \n %2x:%2x:%2x:%2x:%2x:%2x" ,
85+ bleAddr[5 ], bleAddr[4 ], bleAddr[3 ], bleAddr[2 ], bleAddr[1 ], bleAddr[0 ]);
6486 screens.emplace_back (t2);
6587
66- strncpy (t3, " Place holder\n in case we need\n more room!" , 40 );
88+ strncpy (t3, " Hello from\n the developper!" , 27 );
89+
6790 screens.emplace_back (t3);
6891
6992 auto &screen = screens[screenIndex];
0 commit comments