mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-22 11:17:49 +10:00
feat(telemetry): add configurable DS18B20 sensor
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
#include "TestUtil.h"
|
||||
#include "modules/Telemetry/Sensor/DS18B20Protocol.h"
|
||||
#include <cstdlib>
|
||||
#include <unity.h>
|
||||
|
||||
void setUp(void) {}
|
||||
void tearDown(void) {}
|
||||
|
||||
void test_decodes_positive_12_bit_temperature()
|
||||
{
|
||||
const uint8_t scratchpad[9] = {0x91, 0x01}; // 25.0625 C
|
||||
TEST_ASSERT_FLOAT_WITHIN(0.0001f, 25.0625f, ds18b20::decodeTemperature(scratchpad));
|
||||
}
|
||||
|
||||
void test_decodes_negative_12_bit_temperature()
|
||||
{
|
||||
const uint8_t scratchpad[9] = {0x5E, 0xFF}; // -10.125 C
|
||||
TEST_ASSERT_FLOAT_WITHIN(0.0001f, -10.125f, ds18b20::decodeTemperature(scratchpad));
|
||||
}
|
||||
|
||||
void test_accepts_ds18b20_operating_range()
|
||||
{
|
||||
TEST_ASSERT_TRUE(ds18b20::isSaneTemperature(-55.0f));
|
||||
TEST_ASSERT_TRUE(ds18b20::isSaneTemperature(125.0f));
|
||||
TEST_ASSERT_FALSE(ds18b20::isSaneTemperature(-55.1f));
|
||||
TEST_ASSERT_FALSE(ds18b20::isSaneTemperature(125.1f));
|
||||
}
|
||||
|
||||
void test_recognizes_resolution_configuration()
|
||||
{
|
||||
uint8_t scratchpad[ds18b20::SCRATCHPAD_SIZE]{};
|
||||
for (uint8_t resolution = 9; resolution <= 12; ++resolution) {
|
||||
scratchpad[ds18b20::SCRATCHPAD_CONFIG_INDEX] = ds18b20::configForResolution(resolution);
|
||||
TEST_ASSERT_TRUE(ds18b20::hasResolution(scratchpad, resolution));
|
||||
}
|
||||
|
||||
scratchpad[ds18b20::SCRATCHPAD_CONFIG_INDEX] = ds18b20::configForResolution(9);
|
||||
TEST_ASSERT_FALSE(ds18b20::hasResolution(scratchpad, 12));
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
initializeTestEnvironment();
|
||||
UNITY_BEGIN();
|
||||
RUN_TEST(test_decodes_positive_12_bit_temperature);
|
||||
RUN_TEST(test_decodes_negative_12_bit_temperature);
|
||||
RUN_TEST(test_accepts_ds18b20_operating_range);
|
||||
RUN_TEST(test_recognizes_resolution_configuration);
|
||||
exit(UNITY_END());
|
||||
}
|
||||
|
||||
void loop() {}
|
||||
Reference in New Issue
Block a user