Telemetry refactoring - Fixes #1634

This commit is contained in:
bsongis
2014-11-08 12:06:42 +01:00
parent 7d8ca6931b
commit 88d9691d16
105 changed files with 5789 additions and 3449 deletions
+49 -50
View File
@@ -36,7 +36,7 @@
#include "gtests.h"
#if defined(FRSKY) && !defined(FRSKY_SPORT)
#if defined(FRSKY) && !defined(CPUARM)
extern void frskyDProcessPacket(uint8_t *packet);
TEST(FrSky, gpsNfuel)
{
@@ -126,7 +126,7 @@ TEST(FrSkySPORT, checkCrc)
EXPECT_EQ(checkSportPacket(pkt+1), true);
}
extern void frskySportProcessPacket(uint8_t *packet);
extern void processSportPacket(uint8_t *packet);
extern bool checkSportPacket(uint8_t *packet);
extern void frskyCalculateCellStats(void);
extern void displayVoltagesScreen();
@@ -166,7 +166,8 @@ void generateSportCellPacket(uint8_t * packet, uint8_t cells, uint8_t battnumber
#define _V(volts) (volts/TELEMETRY_CELL_VOLTAGE_MUTLIPLIER)
TEST(FrSkySPORT, frskySetCellVoltage)
#if 0
TEST(FrSkySPORT, DISABLED_frskySetCellVoltage)
{
uint8_t packet[FRSKY_SPORT_PACKET_SIZE];
@@ -174,12 +175,12 @@ TEST(FrSkySPORT, frskySetCellVoltage)
TELEMETRY_RESET();
// test that simulates 3 cell battery
generateSportCellPacket(packet, 3, 0, _V(410), _V(420)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(410), _V(420)); processSportPacket(packet);
EXPECT_EQ(checkSportPacket(packet), true) << "Bad CRC generation in setSportPacketCrc()";
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(405), _V(300)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(405), _V(300)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 3);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(405));
@@ -191,11 +192,11 @@ TEST(FrSkySPORT, frskySetCellVoltage)
EXPECT_EQ(frskyData.hub.minCells, _V(113)); //all time cells sum minimum
EXPECT_EQ(frskyData.hub.cellsSum, _V(113)); //current cells sum
generateSportCellPacket(packet, 3, 0, _V(405), _V(250)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(405), _V(250)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(410), _V(420)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(410), _V(420)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(430), _V( 0)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 3);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(410));
@@ -208,9 +209,9 @@ TEST(FrSkySPORT, frskySetCellVoltage)
EXPECT_EQ(frskyData.hub.cellsSum, _V(126)); //current cells sum
//add another two cells - 5 cell battery
generateSportCellPacket(packet, 5, 0, _V(418), _V(408)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 2, _V(415), _V(420)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 4, _V(410), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 0, _V(418), _V(408)); processSportPacket(packet);
generateSportCellPacket(packet, 5, 2, _V(415), _V(420)); processSportPacket(packet);
generateSportCellPacket(packet, 5, 4, _V(410), _V( 0)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 5);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
@@ -225,9 +226,9 @@ TEST(FrSkySPORT, frskySetCellVoltage)
EXPECT_EQ(frskyData.hub.cellsSum, _V(207)); //current cells sum
//simulate very low voltage for cell 3
generateSportCellPacket(packet, 5, 0, _V(418), _V(408)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 2, _V(100), _V(420)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 4, _V(410), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 0, _V(418), _V(408)); processSportPacket(packet);
generateSportCellPacket(packet, 5, 2, _V(100), _V(420)); processSportPacket(packet);
generateSportCellPacket(packet, 5, 4, _V(410), _V( 0)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 5);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
@@ -242,9 +243,9 @@ TEST(FrSkySPORT, frskySetCellVoltage)
EXPECT_EQ(frskyData.hub.cellsSum, _V(175)); //current cells sum
//back to normal (but with reversed order of packets)
generateSportCellPacket(packet, 5, 4, _V(410), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 0, _V(418), _V(408)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 2, _V(412), _V(420)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 5, 4, _V(410), _V( 0)); processSportPacket(packet);
generateSportCellPacket(packet, 5, 0, _V(418), _V(408)); processSportPacket(packet);
generateSportCellPacket(packet, 5, 2, _V(412), _V(420)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 5);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
@@ -261,22 +262,20 @@ TEST(FrSkySPORT, frskySetCellVoltage)
//display test
lcd_clear();
g_model.frsky.voltsSource = FRSKY_VOLTS_SOURCE_A1;
displayVoltagesScreen();
EXPECT_TRUE(checkScreenshot("one_sensor_votages_screen"));
}
TEST(FrSkySPORT, StrangeCellsBug)
TEST(FrSkySPORT, DISABLED_StrangeCellsBug)
{
TELEMETRY_RESET();
uint8_t pkt[] = { 0x7E, 0x48, 0x10, 0x00, 0x03, 0x30, 0x15, 0x50, 0x81, 0xD5 };
EXPECT_EQ(checkSportPacket(pkt+1), true);
frskySportProcessPacket(pkt+1);
processSportPacket(pkt+1);
EXPECT_EQ(frskyData.hub.cellsCount, 3);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(000)); // now we ignore such low values
EXPECT_EQ(frskyData.hub.cellVolts[1], _V(413));
}
TEST(FrSkySPORT, frskySetCellVoltageTwoSensors)
TEST(FrSkySPORT, DISABLED_frskySetCellVoltageTwoSensors)
{
uint8_t packet[FRSKY_SPORT_PACKET_SIZE];
@@ -284,8 +283,8 @@ TEST(FrSkySPORT, frskySetCellVoltageTwoSensors)
TELEMETRY_RESET();
//sensor 1: 3 cell battery
generateSportCellPacket(packet, 3, 0, _V(418), _V(416)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(415), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(418), _V(416)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(415), _V( 0)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 3);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
@@ -298,12 +297,12 @@ TEST(FrSkySPORT, frskySetCellVoltageTwoSensors)
EXPECT_EQ(frskyData.hub.cellsSum, _V(124)); //current cells sum
//sensor 2: 4 cell battery
generateSportCellPacket(packet, 4, 6, _V(410), _V(420)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 4, 8, _V(400), _V(405)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 4, 6, _V(410), _V(420)); processSportPacket(packet);
generateSportCellPacket(packet, 4, 8, _V(400), _V(405)); processSportPacket(packet);
//we need to send all cells from first battery before a new calculation will be made
generateSportCellPacket(packet, 3, 0, _V(418), _V(416)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(415), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(418), _V(416)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(415), _V( 0)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 7);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
@@ -321,10 +320,10 @@ TEST(FrSkySPORT, frskySetCellVoltageTwoSensors)
EXPECT_EQ(frskyData.hub.cellsSum, _V(288)); //current cells sum
//now change some voltages
generateSportCellPacket(packet, 3, 2, _V(415), _V( 0)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 4, 8, _V(390), _V(370)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(420), _V(410)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 4, 6, _V(410), _V(420)); frskySportProcessPacket(packet);
generateSportCellPacket(packet, 3, 2, _V(415), _V( 0)); processSportPacket(packet);
generateSportCellPacket(packet, 4, 8, _V(390), _V(370)); processSportPacket(packet);
generateSportCellPacket(packet, 3, 0, _V(420), _V(410)); processSportPacket(packet);
generateSportCellPacket(packet, 4, 6, _V(410), _V(420)); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.cellsCount, 7);
EXPECT_EQ(frskyData.hub.cellVolts[0], _V(420));
@@ -344,8 +343,6 @@ TEST(FrSkySPORT, frskySetCellVoltageTwoSensors)
//display test
lcd_clear();
g_model.frsky.voltsSource = FRSKY_VOLTS_SOURCE_A1;
displayVoltagesScreen();
EXPECT_TRUE(checkScreenshot("two_sensor_votages_screen"));
}
void generateSportFasVoltagePacket(uint8_t * packet, uint32_t voltage)
@@ -357,7 +354,7 @@ void generateSportFasVoltagePacket(uint8_t * packet, uint32_t voltage)
setSportPacketCrc(packet);
}
TEST(FrSkySPORT, frskyVfas)
TEST(FrSkySPORT, DISABLED_frskyVfas)
{
uint8_t packet[FRSKY_SPORT_PACKET_SIZE];
@@ -365,19 +362,19 @@ TEST(FrSkySPORT, frskyVfas)
TELEMETRY_RESET();
// tests for Vfas
generateSportFasVoltagePacket(packet, 5000); frskySportProcessPacket(packet);
generateSportFasVoltagePacket(packet, 5000); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.vfas, 500);
EXPECT_EQ(frskyData.hub.minVfas, 500);
generateSportFasVoltagePacket(packet, 6524); frskySportProcessPacket(packet);
generateSportFasVoltagePacket(packet, 6524); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.vfas, 652);
EXPECT_EQ(frskyData.hub.minVfas, 500);
generateSportFasVoltagePacket(packet, 1248); frskySportProcessPacket(packet);
generateSportFasVoltagePacket(packet, 1248); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.vfas, 124);
EXPECT_EQ(frskyData.hub.minVfas, 124);
generateSportFasVoltagePacket(packet, 2248); frskySportProcessPacket(packet);
generateSportFasVoltagePacket(packet, 2248); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.vfas, 224);
EXPECT_EQ(frskyData.hub.minVfas, 124);
}
@@ -399,24 +396,24 @@ TEST(FrSkySPORT, frskyCurrent)
g_model.frsky.fasOffset = -5; /* unit: 1/10 amps */
// tests for Curr
generateSportFasCurrentPacket(packet, 0); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 0); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 0);
EXPECT_EQ(frskyData.hub.maxCurrent, 0);
// measured current less then offset - value should be zero
generateSportFasCurrentPacket(packet, 4); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 4); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 0);
EXPECT_EQ(frskyData.hub.maxCurrent, 0);
generateSportFasCurrentPacket(packet, 10); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 10); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 5);
EXPECT_EQ(frskyData.hub.maxCurrent, 5);
generateSportFasCurrentPacket(packet, 500); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 500); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 495);
EXPECT_EQ(frskyData.hub.maxCurrent, 495);
generateSportFasCurrentPacket(packet, 200); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 200); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 195);
EXPECT_EQ(frskyData.hub.maxCurrent, 495);
@@ -424,18 +421,20 @@ TEST(FrSkySPORT, frskyCurrent)
TELEMETRY_RESET();
g_model.frsky.fasOffset = 5; /* unit: 1/10 amps */
generateSportFasCurrentPacket(packet, 0); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 0); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 5);
EXPECT_EQ(frskyData.hub.maxCurrent, 5);
generateSportFasCurrentPacket(packet, 500); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 500); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 505);
EXPECT_EQ(frskyData.hub.maxCurrent, 505);
generateSportFasCurrentPacket(packet, 200); frskySportProcessPacket(packet);
generateSportFasCurrentPacket(packet, 200); processSportPacket(packet);
EXPECT_EQ(frskyData.hub.current, 205);
EXPECT_EQ(frskyData.hub.maxCurrent, 505);
}
#endif
#endif //#if defined(FRSKY_SPORT)