Skip to content

Commit

Permalink
✨ (drivers): Add getPercentage
Browse files Browse the repository at this point in the history
  • Loading branch information
Kabroc committed Jul 5, 2021
1 parent 39b9c03 commit 0d2d320
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 7 deletions.
5 changes: 3 additions & 2 deletions drivers/CoreBattery/include/CoreBattery.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,12 @@ namespace battery {
class CoreBattery
{
public:
const float min_capacity = 13.20;
const float max_capacity = 7.64;
const float max_capacity = 12.50;
const float min_capacity = 7.60;

explicit CoreBattery(PinName pin) : _pin {mbed::AnalogIn(pin)} {};

auto getPercentage() -> float;
auto getVoltage() -> float;
auto getADCVoltage() -> float;

Expand Down
13 changes: 13 additions & 0 deletions drivers/CoreBattery/source/CoreBattery.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,19 @@

namespace leka {

auto CoreBattery::getPercentage() -> float
{
auto percentage = (getVoltage() - min_capacity) / (max_capacity - min_capacity);

if (percentage > 1) {
percentage = 1;
} else if (percentage < 0) {
percentage = 0;
}

return percentage;
}

auto CoreBattery::getVoltage() -> float
{
auto digitalVoltage = getADCVoltage();
Expand Down
41 changes: 36 additions & 5 deletions drivers/CoreBattery/tests/CoreBattery_test.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Leka - LekaOS
// Copyright 2021 APF France handicap
// SPDX-License-Identifier: Apache-2.0
// Copyright 2021 AP rance handicap
// SPDX-License-Identiier: Apache-2.0

#include "CoreBattery.h"

Expand All @@ -18,18 +18,49 @@ TEST(CoreBatteryTest, initialization)

TEST(CoreBatteryTest, readLowDigitalVoltage)
{
auto expected = 0.0f;
auto expected = 0.0;
spy_AnalogIn_setValue(expected);

ASSERT_EQ(expected, corebattery.getADCVoltage());
}

TEST(CoreBatteryTest, readHighVoltage)
{
auto expected_digital_voltage = 1.0f;
auto expected_voltage = 15.275229;
auto expected_digital_voltage = 1.0;
auto expected_voltage = 15.275;

spy_AnalogIn_setValue(expected_digital_voltage);

ASSERT_EQ(static_cast<int>(1000 * expected_voltage), static_cast<int>(1000 * corebattery.getVoltage()));
}

TEST(CoreBatteryTest, getVoltagePercentage)
{
auto expected_digital_voltage = 0.8;
auto expected_percentage_voltage = 0.942;

spy_AnalogIn_setValue(expected_digital_voltage);

ASSERT_EQ(static_cast<int>(1000 * expected_percentage_voltage),
static_cast<int>(1000 * corebattery.getPercentage()));
}

TEST(CoreBatteryTest, getVoltagePercentageHigherThan1)
{
auto expected_digital_voltage = 0.9;
auto expected_percentage_voltage = 1.;

spy_AnalogIn_setValue(expected_digital_voltage);

ASSERT_EQ(expected_percentage_voltage, corebattery.getPercentage());
}

TEST(CoreBatteryTest, getVoltagePercentageLowerThan0)
{
auto expected_digital_voltage = 0.2;
auto expected_percentage_voltage = 0.;

spy_AnalogIn_setValue(expected_digital_voltage);

ASSERT_EQ(expected_percentage_voltage, corebattery.getPercentage());
}

0 comments on commit 0d2d320

Please sign in to comment.