Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
9760249
Create c-cpp.yml
lupyuen Jul 21, 2020
fa98ea2
Update c-cpp.yml
lupyuen Jul 21, 2020
372a3c7
Update c-cpp.yml
lupyuen Jul 21, 2020
596bf8e
Update c-cpp.yml
lupyuen Jul 21, 2020
1e1472b
Update c-cpp.yml
lupyuen Jul 21, 2020
613a031
Update c-cpp.yml
lupyuen Jul 21, 2020
e603303
Update c-cpp.yml
lupyuen Jul 21, 2020
bd98281
Update c-cpp.yml
lupyuen Jul 21, 2020
de7bd92
Update c-cpp.yml
lupyuen Jul 21, 2020
3dc724c
Update c-cpp.yml
lupyuen Jul 21, 2020
2bde1d8
Update c-cpp.yml
lupyuen Jul 21, 2020
a29336c
Update c-cpp.yml
lupyuen Jul 22, 2020
bc77e36
Update c-cpp.yml
lupyuen Jul 22, 2020
774325e
Update c-cpp.yml
lupyuen Jul 22, 2020
e5930d5
Update c-cpp.yml
lupyuen Jul 22, 2020
03bfc7e
Update c-cpp.yml
lupyuen Jul 22, 2020
9d4e4f0
Fixing include error
lupyuen Jul 22, 2020
b4c2b4f
Added sample command
lupyuen Jul 22, 2020
9f1ce39
Fixed include paths for nRF5 SDK
lupyuen Jul 22, 2020
ea45300
Fixing include
lupyuen Jul 22, 2020
60eb0ac
Build OK yay! Removed trace
lupyuen Jul 22, 2020
3e89f9f
Parallel make
lupyuen Jul 22, 2020
44b0893
Find output
lupyuen Jul 22, 2020
dc59bde
Upload firmware
lupyuen Jul 22, 2020
33270ca
Rename artifact
lupyuen Jul 22, 2020
dc64676
Update c-cpp.yml
lupyuen Jul 26, 2020
3d2ddcb
Copied from c-cpp.yml
lupyuen Jul 26, 2020
7ed2ee5
Update Clock.cpp
lupyuen Jul 26, 2020
1e0ec47
Disable parallel build
lupyuen Jul 26, 2020
4c4cb06
Update main.yml
lupyuen Jul 27, 2020
1731bd1
Make the overview header an actual header
DRG-developer Jul 27, 2020
3ac2321
Copied from main.yml
lupyuen Jul 27, 2020
724758a
Merge pull request #1 from DRG-developer/patch-3
lupyuen Jul 27, 2020
606bdfe
Build mcuboot first
lupyuen Jul 27, 2020
c794dbd
Add empty rule to prevent errors
lupyuen Jul 28, 2020
b75c9a8
Clean up
lupyuen Jul 28, 2020
72a5ecd
Empty workflow
lupyuen Jul 28, 2020
8d353aa
Empty workflow
lupyuen Jul 28, 2020
4f2e3e1
Clean up
lupyuen Jul 28, 2020
6bd6175
Download MCUBoot
lupyuen Jul 28, 2020
ea393fa
Create firmware image
lupyuen Jul 28, 2020
d91ae6c
Update main2.yml
lupyuen Jul 28, 2020
57507a6
Update main2.yml
lupyuen Jul 28, 2020
4fd950f
Update main2.yml
lupyuen Jul 28, 2020
3dcaf6c
Update c-cpp.yml
lupyuen Jul 28, 2020
4233997
Update main2.yml
lupyuen Jul 28, 2020
6469566
Create DFU package
lupyuen Jul 28, 2020
cb5b69b
Added setuptools
lupyuen Jul 28, 2020
2ddf1ed
Update main2.yml
lupyuen Jul 28, 2020
57fb9e4
Update main2.yml
lupyuen Jul 28, 2020
5d17292
Added wheel
lupyuen Jul 28, 2020
9b0292a
Update main2.yml
lupyuen Jul 28, 2020
fdb493b
Update main2.yml
lupyuen Jul 28, 2020
885a68d
Update main2.yml
lupyuen Jul 28, 2020
98c6c5e
Update main2.yml
lupyuen Jul 28, 2020
dfd413b
Update main2.yml
lupyuen Jul 28, 2020
01bf5c3
Update main2.yml
lupyuen Jul 28, 2020
ce0446c
Update main2.yml
lupyuen Jul 28, 2020
27af236
Update main2.yml
lupyuen Jul 28, 2020
c29b912
Update main2.yml
lupyuen Jul 28, 2020
de2f01b
Update main2.yml
lupyuen Jul 28, 2020
c10538f
Update main2.yml
lupyuen Jul 28, 2020
cca1eaf
Update main2.yml
lupyuen Jul 28, 2020
29bbb44
Update main2.yml
lupyuen Jul 28, 2020
37419e1
Update main2.yml
lupyuen Jul 28, 2020
c7b39ff
Update main2.yml
lupyuen Jul 28, 2020
2574b8d
Unzip DFU package
lupyuen Jul 29, 2020
774100f
Update main2.yml
lupyuen Jul 29, 2020
7ff323d
Update main2.yml
lupyuen Jul 29, 2020
a17261f
Create DFU package
lupyuen Jul 30, 2020
afcaa40
Create simulate.yml
lupyuen Aug 17, 2020
cc1ec50
Added lvgl-wasm
lupyuen Aug 17, 2020
a72751b
Copy files to simulator
lupyuen Aug 17, 2020
0226c5b
Update simulate.yml
lupyuen Aug 17, 2020
c4162b0
Update simulate.yml
lupyuen Aug 17, 2020
c0acab8
Remove Rust support
lupyuen Aug 17, 2020
e8ec8ff
Commit docs to GitHub Pages
lupyuen Aug 17, 2020
2b379b6
Commit from GitHub Actions
lupyuen Aug 17, 2020
77d5e2e
Delete lvgl.js
lupyuen Aug 17, 2020
3edab78
Delete lvgl.old.html
lupyuen Aug 17, 2020
fe56e32
Delete lvgl.txt
lupyuen Aug 17, 2020
e0e33ff
Delete lvgl.wasm
lupyuen Aug 17, 2020
797b808
Add index and lvgl to docs
lupyuen Aug 17, 2020
54c9992
Commit from GitHub Actions
lupyuen Aug 17, 2020
4de4bf4
Commit from GitHub Actions
lupyuen Aug 17, 2020
0fe5ce0
Commit from GitHub Actions
lupyuen Aug 17, 2020
b009bb5
Commit from GitHub Actions
lupyuen Aug 17, 2020
d93591c
Delete index.md
lupyuen Aug 17, 2020
9578eac
Commit from GitHub Actions
lupyuen Aug 17, 2020
7b16c5e
Delete index.md
lupyuen Aug 17, 2020
787a82d
Commit from GitHub Actions
lupyuen Aug 17, 2020
423717c
Added doc
lupyuen Aug 18, 2020
2a48c5d
Commit from GitHub Actions
lupyuen Aug 20, 2020
b6a910e
Merge branch 'develop' of JF/PineTime into master
JF002 Sep 26, 2020
df52d01
Merge branch 'master' into master
lupyuen Sep 27, 2020
641b1e4
Commit from GitHub Actions
lupyuen Sep 27, 2020
4c7b633
Upgrade Arm Toolchain to 9-2020-q2. Handle version number in outputs..
lupyuen Sep 27, 2020
944194a
Delete unused workflow
lupyuen Sep 27, 2020
bbe6bf8
Delete unused workflow
lupyuen Sep 27, 2020
2097005
Undo commit
lupyuen Sep 27, 2020
e1bfed9
Commit from GitHub Actions
lupyuen Sep 27, 2020
94f5fbe
Undo commit
lupyuen Sep 27, 2020
7dada6d
Undo commit
lupyuen Sep 27, 2020
4bfd983
Undo commit
lupyuen Sep 27, 2020
5fe1f7c
Undo commit
lupyuen Sep 27, 2020
f955be9
Commit from GitHub Actions
lupyuen Sep 27, 2020
499e336
Undo commit
lupyuen Sep 27, 2020
d5088ef
Commit from GitHub Actions
lupyuen Sep 27, 2020
255b33e
Commit from GitHub Actions
lupyuen Sep 27, 2020
6385c28
Commit from GitHub Actions
lupyuen Sep 27, 2020
56266fd
Undo commit
lupyuen Sep 27, 2020
7ab48a8
Undo commit
lupyuen Sep 27, 2020
be1add7
Undo commit
lupyuen Sep 27, 2020
7edb30a
Undo commit
lupyuen Sep 27, 2020
56f5fa8
Undo commit
lupyuen Sep 27, 2020
c094f89
Undo commit
lupyuen Sep 27, 2020
92d9c58
Fix merge from develop to master.
JF002 Sep 27, 2020
65ecb65
Fix changes that were lost in the last revert.
JF002 Sep 28, 2020
04abc91
Merge branch 'develop' into master
JF002 Nov 10, 2020
1d940af
Merge branch 'develop' of JF/PineTime into master
JF002 Jan 4, 2021
76ab14f
Merge branch 'develop' of JF/PineTime into master
JF002 Jan 23, 2021
3f7360c
Merge branch 'develop' of JF/PineTime into master
JF002 Feb 4, 2021
09bd6fd
Merge branch 'develop' of JF/PineTime into master
JF002 Feb 4, 2021
f534fb0
Merge branch 'develop' of JF/PineTime into master
JF002 Feb 7, 2021
9d7955b
Merge branch 'develop' of JF/PineTime into master
JF002 Feb 14, 2021
b89c92b
Merge branch 'develop' of JF/PineTime into master
JF002 Feb 24, 2021
5cd4b36
Merge branch 'develop' of JF/PineTime into master
JF002 Mar 7, 2021
24d3eea
Merge branch 'develop' of JF/PineTime into master
JF002 Mar 21, 2021
a80e782
Merge branch 'develop' of JF/PineTime into master
JF002 Apr 21, 2021
de69905
Merge branch 'develop' of JF/PineTime into master
JF002 May 21, 2021
fb133a0
Merge branch 'develop' of JF/PineTime into master
JF002 May 21, 2021
d96395c
Merge branch 'develop' of JF/PineTime into master
JF002 Jun 20, 2021
db6a701
Merge branch 'develop' of JF/PineTime into master
JF002 Jul 23, 2021
6c3d6fb
Merge branch 'develop' of JF/PineTime into master
JF002 Sep 2, 2021
6652ec6
Merge branch 'develop' of JF/PineTime into master
JF002 Sep 26, 2021
f41aaad
Merge branch 'develop' of JF/PineTime into master
JF002 Sep 28, 2021
f6d0ec4
Merge branch 'develop'
JF002 Nov 11, 2021
cfef013
Merge branch 'develop' of JF/PineTime into master
JF002 Nov 15, 2021
adc7909
Merge branch 'develop' of JF/PineTime into master
JF002 Jan 7, 2022
187ea0f
Merge branch 'develop' of JF/PineTime into master
JF002 Apr 2, 2022
df644f5
Merge branch 'develop' of JF/PineTime into master
JF002 Jun 29, 2022
286690e
Merge branch 'develop'
JF002 Jun 29, 2022
e823c8e
Merge branch 'develop' of JF/PineTime into master
JF002 Oct 16, 2022
6cf0267
Add linear approximation and use it for improving battery percentage
Oct 28, 2022
b85502e
Tidied up
Oct 28, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions src/components/battery/BatteryController.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "components/battery/BatteryController.h"
#include "components/utility/LinearApproximation.h"
#include "drivers/PinMap.h"
#include <hal/nrf_gpio.h>
#include <nrfx_saadc.h>
Expand Down Expand Up @@ -60,8 +61,13 @@ void Battery::SaadcInit() {
}

void Battery::SaadcEventHandler(nrfx_saadc_evt_t const* p_event) {
const uint16_t battery_max = 4180; // maximum voltage of battery ( max charging voltage is 4.21 )
const uint16_t battery_min = 3200; // minimum voltage of battery before shutdown ( depends on the battery )
static const Utility::LinearApproximation<uint16_t, uint8_t, 5> aprox {{{
{3200, 0}, // minimum voltage of battery before shutdown ( depends on the battery )
{3600, 10}, // keen point corresponded to 10% of battery
{3700, 25},
{3800, 50},
{4180, 100} // maximum voltage of battery ( max charging voltage is 4.21 )
}}};

if (p_event->type == NRFX_SAADC_EVT_DONE) {

Expand All @@ -77,10 +83,8 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const* p_event) {
uint8_t newPercent;
if (isFull) {
newPercent = 100;
} else if (voltage < battery_min) {
newPercent = 0;
} else {
newPercent = std::min((voltage - battery_min) * 100 / (battery_max - battery_min), isCharging ? 99 : 100);
newPercent = std::min(aprox.GetValue(voltage), (isCharging ? uint8_t{99} : uint8_t{100}));
}

if ((isPowerPresent && newPercent > percentRemaining) || (!isPowerPresent && newPercent < percentRemaining) || firstMeasurement) {
Expand Down
38 changes: 38 additions & 0 deletions src/components/utility/LinearApproximation.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#pragma once

#include <array>

namespace Pinetime {
namespace Utility {

// based on: https://github.com/SHristov92/LinearApproximation/blob/main/Linear.h
template <typename Key, typename Value, std::size_t Size>
class LinearApproximation {
using Point = struct {
Key key;
Value value;
};

public:
LinearApproximation(const std::array<Point, Size> &&points)
: points{points} {}

Value GetValue(Key key) const {
if (key <= points[0].key) {
return points[0].value;
}

for (size_t i = 1; i < Size; i++) {
if (key < points[i].key) {
return points[i-1].value + (key - points[i-1].key) * (points[i].value - points[i-1].value) / (points[i].key - points[i-1].key);
}
}

return points[Size - 1].value;
}

private:
std::array<Point, Size> points;
};
}
}