Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
56 changes: 55 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,59 @@
{
"files.associations": {
"chrono": "cpp"
"chrono": "cpp",
"list": "cpp",
"array": "cpp",
"atomic": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"charconv": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"condition_variable": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"netfwd": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"string": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"ostream": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"thread": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp"
}
}
109 changes: 17 additions & 92 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -374,95 +374,6 @@ list(APPEND IMAGE_FILES
displayapp/icons/bluetooth/os_bt_connected.c
displayapp/icons/bluetooth/os_bt_disconnected.c

displayapp/icons/navigation/arrive-left.c
displayapp/icons/navigation/arrive-right.c
displayapp/icons/navigation/arrive-straight.c
displayapp/icons/navigation/arrive.c
displayapp/icons/navigation/close.c
displayapp/icons/navigation/continue-left.c
displayapp/icons/navigation/continue-right.c
displayapp/icons/navigation/continue-slight-left.c
displayapp/icons/navigation/continue-slight-right.c
displayapp/icons/navigation/continue-straight.c
displayapp/icons/navigation/continue-uturn.c
displayapp/icons/navigation/continue.c
displayapp/icons/navigation/depart-left.c
displayapp/icons/navigation/depart-right.c
displayapp/icons/navigation/depart-straight.c
displayapp/icons/navigation/end-of-road-left.c
displayapp/icons/navigation/end-of-road-right.c
displayapp/icons/navigation/ferry.c
displayapp/icons/navigation/flag.c
displayapp/icons/navigation/fork-left.c
displayapp/icons/navigation/fork-right.c
displayapp/icons/navigation/fork-slight-left.c
displayapp/icons/navigation/fork-slight-right.c
displayapp/icons/navigation/fork-straight.c
displayapp/icons/navigation/invalid.c
displayapp/icons/navigation/invalid-left.c
displayapp/icons/navigation/invalid-right.c
displayapp/icons/navigation/invalid-slight-left.c
displayapp/icons/navigation/invalid-slight-right.c
displayapp/icons/navigation/invalid-straight.c
displayapp/icons/navigation/invalid-uturn.c
displayapp/icons/navigation/merge-left.c
displayapp/icons/navigation/merge-right.c
displayapp/icons/navigation/merge-slight-left.c
displayapp/icons/navigation/merge-slight-right.c
displayapp/icons/navigation/merge-straight.c
displayapp/icons/navigation/new-name-left.c
displayapp/icons/navigation/new-name-right.c
displayapp/icons/navigation/new-name-sharp-left.c
displayapp/icons/navigation/new-name-sharp-right.c
displayapp/icons/navigation/new-name-slight-left.c
displayapp/icons/navigation/new-name-slight-right.c
displayapp/icons/navigation/new-name-straight.c
displayapp/icons/navigation/notification-left.c
displayapp/icons/navigation/notification-right.c
displayapp/icons/navigation/notification-sharp-left.c
displayapp/icons/navigation/notification-sharp-right.c
displayapp/icons/navigation/notification-slight-left.c
displayapp/icons/navigation/notification-slight-right.c
displayapp/icons/navigation/notification-straight.c
displayapp/icons/navigation/off-ramp-left.c
displayapp/icons/navigation/off-ramp-right.c
displayapp/icons/navigation/off-ramp-sharp-left.c
displayapp/icons/navigation/off-ramp-sharp-right.c
displayapp/icons/navigation/off-ramp-slight-left.c
displayapp/icons/navigation/off-ramp-slight-right.c
displayapp/icons/navigation/off-ramp-straight.c
displayapp/icons/navigation/on-ramp-left.c
displayapp/icons/navigation/on-ramp-right.c
displayapp/icons/navigation/on-ramp-sharp-left.c
displayapp/icons/navigation/on-ramp-sharp-right.c
displayapp/icons/navigation/on-ramp-slight-left.c
displayapp/icons/navigation/on-ramp-slight-right.c
displayapp/icons/navigation/on-ramp-straight.c
displayapp/icons/navigation/rotary.c
displayapp/icons/navigation/rotary-left.c
displayapp/icons/navigation/rotary-right.c
displayapp/icons/navigation/rotary-sharp-left.c
displayapp/icons/navigation/rotary-sharp-right.c
displayapp/icons/navigation/rotary-slight-left.c
displayapp/icons/navigation/rotary-slight-right.c
displayapp/icons/navigation/rotary-straight.c
displayapp/icons/navigation/roundabout.c
displayapp/icons/navigation/roundabout-left.c
displayapp/icons/navigation/roundabout-right.c
displayapp/icons/navigation/roundabout-sharp-left.c
displayapp/icons/navigation/roundabout-sharp-right.c
displayapp/icons/navigation/roundabout-slight-left.c
displayapp/icons/navigation/roundabout-slight-right.c
displayapp/icons/navigation/roundabout-straight.c
displayapp/icons/navigation/turn-left.c
displayapp/icons/navigation/turn-right.c
displayapp/icons/navigation/turn-sharp-left.c
displayapp/icons/navigation/turn-sharp-right.c
displayapp/icons/navigation/turn-slight-left.c
displayapp/icons/navigation/turn-slight-right.c
displayapp/icons/navigation/turn-stright.c
displayapp/icons/navigation/updown.c
displayapp/icons/navigation/uturn.c
)

list(APPEND SOURCE_FILES
Expand Down Expand Up @@ -490,11 +401,21 @@ list(APPEND SOURCE_FILES
displayapp/screens/Notifications.cpp
displayapp/screens/Twos.cpp
displayapp/screens/HeartRate.cpp
displayapp/screens/FlashLight.cpp
displayapp/screens/List.cpp
displayapp/screens/BatteryInfo.cpp

## Settings
displayapp/screens/settings/QuickSettings.cpp
displayapp/screens/settings/Settings.cpp
displayapp/screens/settings/SettingWatchFace.cpp
displayapp/screens/settings/SettingTimeFormat.cpp
displayapp/screens/settings/SettingWakeUp.cpp
displayapp/screens/settings/SettingDisplay.cpp

## Watch faces
displayapp/icons/bg_clock.c
displayapp/screens/WatchFaceAnalog.cpp

displayapp/screens/WatchFaceDigital.cpp

##
Expand Down Expand Up @@ -522,6 +443,7 @@ list(APPEND SOURCE_FILES
components/ble/AlertNotificationService.cpp
components/ble/MusicService.cpp
components/ble/NavigationService.cpp
displayapp/fonts/lv_font_navi_80.c
components/ble/BatteryInformationService.cpp
components/ble/ImmediateAlertService.cpp
components/ble/ServiceDiscovery.cpp
Expand All @@ -537,6 +459,8 @@ list(APPEND SOURCE_FILES
displayapp/LittleVgl.cpp
displayapp/fonts/jetbrains_mono_extrabold_compressed.c
displayapp/fonts/jetbrains_mono_bold_20.c
displayapp/fonts/jetbrains_mono_76.c
displayapp/fonts/lv_font_sys_48.c
displayapp/lv_pinetime_theme.c

systemtask/SystemTask.cpp
Expand Down Expand Up @@ -624,6 +548,7 @@ list(APPEND RECOVERYLOADER_SOURCE_FILES


set(INCLUDE_FILES

BootloaderVersion.h
logging/Logger.h
logging/NrfLogger.h
Expand Down Expand Up @@ -970,7 +895,7 @@ add_custom_command(TARGET ${EXECUTABLE_RECOVERY_MCUBOOT_NAME}
COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE_RECOVERY_MCUBOOT_FILE_NAME}.out "${EXECUTABLE_RECOVERY_MCUBOOT_FILE_NAME}.bin"
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_RECOVERY_MCUBOOT_FILE_NAME}.out "${EXECUTABLE_RECOVERYY_MCUBOOT_FILE_NAME}.hex"
COMMAND ${CMAKE_SOURCE_DIR}/tools/mcuboot/imgtool.py create --align 4 --version 1.0.0 --header-size 32 --slot-size 475136 --pad-header ${EXECUTABLE_RECOVERY_MCUBOOT_FILE_NAME}.bin ${IMAGE_RECOVERY_MCUBOOT_FILE_NAME}
COMMAND python ${CMAKE_SOURCE_DIR}/tools/bin2c.py ${IMAGE_RECOVERY_MCUBOOT_FILE_NAME} recoveryImage > recoveryImage.h
COMMAND python3 ${CMAKE_SOURCE_DIR}/tools/bin2c.py ${IMAGE_RECOVERY_MCUBOOT_FILE_NAME} recoveryImage > recoveryImage.h
COMMENT "post build steps for ${EXECUTABLE_RECOVERY_MCUBOOT_FILE_NAME}"
)

Expand Down Expand Up @@ -1044,7 +969,7 @@ add_custom_command(TARGET ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_NAME}
COMMAND ${CMAKE_OBJCOPY} -O binary ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME}.out "${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME}.bin"
COMMAND ${CMAKE_OBJCOPY} -O ihex ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME}.out "${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME}.hex"
COMMAND ${CMAKE_SOURCE_DIR}/tools/mcuboot/imgtool.py create --align 4 --version 1.0.0 --header-size 32 --slot-size 475136 --pad-header ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME}.bin ${IMAGE_MCUBOOT_RECOVERYLOADER_FILE_NAME}
COMMAND python ${CMAKE_SOURCE_DIR}/tools/bin2c.py ${IMAGE_MCUBOOT_RECOVERYLOADER_FILE_NAME} recoveryLoaderImage > recoveryLoaderImage.h
COMMAND python3 ${CMAKE_SOURCE_DIR}/tools/bin2c.py ${IMAGE_MCUBOOT_RECOVERYLOADER_FILE_NAME} recoveryLoaderImage > recoveryLoaderImage.h
COMMENT "post build steps for ${EXECUTABLE_MCUBOOT_RECOVERYLOADER_FILE_NAME}"
)

Expand Down
66 changes: 47 additions & 19 deletions src/components/battery/BatteryController.cpp
Original file line number Diff line number Diff line change
@@ -1,49 +1,77 @@
#include "BatteryController.h"
#include <hal/nrf_gpio.h>
#include <nrfx_saadc.h>
#include <libraries/log/nrf_log.h>
#include <algorithm>
#include <math.h>

using namespace Pinetime::Controllers;

Battery *Battery::instance = nullptr;

Battery::Battery() {
instance = this;
}

void Battery::Init() {
nrf_gpio_cfg_input(chargingPin, (nrf_gpio_pin_pull_t)GPIO_PIN_CNF_PULL_Pullup);
nrf_gpio_cfg_input(powerPresentPin, (nrf_gpio_pin_pull_t)GPIO_PIN_CNF_PULL_Pullup);
}

void Battery::Update() {

isCharging = !nrf_gpio_pin_read(chargingPin);
isPowerPresent = !nrf_gpio_pin_read(powerPresentPin);

// Non blocking read
SaadcInit();
nrfx_saadc_sample();

}

void Battery::SaadcInit() {
nrfx_saadc_config_t adcConfig = NRFX_SAADC_DEFAULT_CONFIG;
nrfx_saadc_init(&adcConfig, SaadcEventHandler);
APP_ERROR_CHECK(nrfx_saadc_init(&adcConfig, adcCallbackStatic));

nrf_saadc_channel_config_t adcChannelConfig = {
.resistor_p = NRF_SAADC_RESISTOR_DISABLED,
.resistor_n = NRF_SAADC_RESISTOR_DISABLED,
.gain = NRF_SAADC_GAIN1_5,
.reference = NRF_SAADC_REFERENCE_INTERNAL,
.acq_time = NRF_SAADC_ACQTIME_3US,
.mode = NRF_SAADC_MODE_SINGLE_ENDED,
.burst = NRF_SAADC_BURST_DISABLED,
.burst = NRF_SAADC_BURST_ENABLED,
.pin_p = batteryVoltageAdcInput,
.pin_n = NRF_SAADC_INPUT_DISABLED
};
nrfx_saadc_channel_init(0, &adcChannelConfig);
APP_ERROR_CHECK(nrfx_saadc_channel_init(0, &adcChannelConfig));
APP_ERROR_CHECK(nrfx_saadc_buffer_convert(&saadc_value, 1));

}

void Battery::Update() {
isCharging = !nrf_gpio_pin_read(chargingPin);
isPowerPresent = !nrf_gpio_pin_read(powerPresentPin);
void Battery::SaadcEventHandler(nrfx_saadc_evt_t const * p_event) {

nrf_saadc_value_t value = 0;
nrfx_saadc_sample_convert(0, &value);
const float battery_max = 4.18; // maximum voltage of battery ( max charging voltage is 4.21 )
const float battery_min = 3.20; // minimum voltage of battery before shutdown ( depends on the battery )

// see https://forum.pine64.org/showthread.php?tid=8147
voltage = (value * 2.0f) / (1024/3.0f);
int percentRemaining = ((voltage - 3.55f)*100.0f)*3.9f;
percentRemaining = std::max(percentRemaining, 0);
percentRemaining = std::min(percentRemaining, 100);
if (p_event->type == NRFX_SAADC_EVT_DONE) {

APP_ERROR_CHECK(nrfx_saadc_buffer_convert(&saadc_value, 1));

percentRemainingBuffer.insert(percentRemaining);
voltage = (static_cast<float>(p_event->data.done.p_buffer[0]) * 2.04f) / (1024 / 3.0f);
voltage = roundf(voltage * 100) / 100;

// NRF_LOG_INFO("BATTERY " NRF_LOG_FLOAT_MARKER " %% - " NRF_LOG_FLOAT_MARKER " v", NRF_LOG_FLOAT(percentRemaining), NRF_LOG_FLOAT(voltage));
// NRF_LOG_INFO("POWER Charging : %d - Power : %d", isCharging, isPowerPresent);
}
percentRemaining = static_cast<int>(((voltage - battery_min) / (battery_max - battery_min)) * 100);

percentRemaining = std::max(percentRemaining, 0);
percentRemaining = std::min(percentRemaining, 100);

void Battery::SaadcEventHandler(nrfx_saadc_evt_t const * event) {
percentRemainingBuffer.insert(percentRemaining);

}
nrfx_saadc_uninit();
}
}

void Battery::adcCallbackStatic(nrfx_saadc_evt_t const *event) {
instance->SaadcEventHandler(event);
}
Loading