Ejemplo n.º 1
0
TEST(FrSkySPORT, 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);
  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));
}
Ejemplo n.º 2
0
TEST(FrSkySPORT, StrangeCellsBug)
{
  MODEL_RESET();
  TELEMETRY_RESET();

  uint8_t pkt[] = { 0x7E, 0x48, 0x10, 0x00, 0x03, 0x30, 0x15, 0x50, 0x81, 0xD5 };
  EXPECT_EQ(checkSportPacket(pkt+1), true);
  processSportPacket(pkt+1);
  EXPECT_EQ(telemetryItems[0].cells.count, 3);
  EXPECT_EQ(telemetryItems[0].cells.values[0].value, 0); // now we ignore such low values
  EXPECT_EQ(telemetryItems[0].cells.values[1].value, 413);
}
Ejemplo n.º 3
0
TEST(FrSkySPORT, FrSkyDCells)
{
  MODEL_RESET();
  TELEMETRY_RESET();
  uint8_t pkt1[] = { 0x7E, 0x98, 0x10, 0x06, 0x00, 0x07, 0xD0, 0x00, 0x00, 0x12 };
  EXPECT_EQ(checkSportPacket(pkt1+1), true);
  processSportPacket(pkt1+1);
  uint8_t pkt2[] = { 0x7E, 0x98, 0x10, 0x06, 0x00, 0x17, 0xD0, 0x00, 0x00, 0x02 };
  EXPECT_EQ(checkSportPacket(pkt2+1), true);
  processSportPacket(pkt2+1);
  uint8_t pkt3[] = { 0x7E, 0x98, 0x10, 0x06, 0x00, 0x27, 0xD0, 0x00, 0x00, 0xF1 };
  EXPECT_EQ(checkSportPacket(pkt3+1), true);
  processSportPacket(pkt3+1);
  processSportPacket(pkt1+1);
  processSportPacket(pkt2+1);
  processSportPacket(pkt3+1);
  EXPECT_EQ(telemetryItems[0].cells.count, 3);
  EXPECT_EQ(telemetryItems[0].value, 1200);
  for (int i=0; i<3; i++) {
    EXPECT_EQ(telemetryItems[0].cells.values[i].state, 1);
    EXPECT_EQ(telemetryItems[0].cells.values[i].value, 400);
  }
}
Ejemplo n.º 4
0
TEST(FrSkySPORT, frskySetCellVoltage)
{
  uint8_t packet[FRSKY_SPORT_PACKET_SIZE];

  MODEL_RESET();
  TELEMETRY_RESET();

  // test that simulates 3 cell battery
  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)); processSportPacket(packet);

  generateSportCellPacket(packet, 3, 0, _V(405), _V(300)); processSportPacket(packet);
  generateSportCellPacket(packet, 3, 2, _V(430), _V(  0)); processSportPacket(packet);
  
  EXPECT_EQ(telemetryItems[0].cells.count, 3);
  EXPECT_EQ(telemetryItems[0].cells.values[0].value, 405);
  EXPECT_EQ(telemetryItems[0].cells.values[1].value, 300);
  EXPECT_EQ(telemetryItems[0].cells.values[2].value, 430);
  EXPECT_EQ(telemetryItems[0].cells.values[4].value, 0);
  EXPECT_EQ(telemetryItems[0].value, 1135);
  EXPECT_EQ(telemetryItems[0].valueMin, 1135);
  EXPECT_EQ(telemetryItems[0].valueMax, 1260);

  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)); processSportPacket(packet);
  generateSportCellPacket(packet, 3, 2, _V(430), _V(  0)); processSportPacket(packet);
  
  EXPECT_EQ(telemetryItems[0].cells.count, 3);
  EXPECT_EQ(telemetryItems[0].cells.values[0].value, 410);
  EXPECT_EQ(telemetryItems[0].cells.values[1].value, 420);
  EXPECT_EQ(telemetryItems[0].cells.values[2].value, 430);
  EXPECT_EQ(telemetryItems[0].cells.values[4].value, 0);
  EXPECT_EQ(telemetryItems[0].value, 1260);
  EXPECT_EQ(telemetryItems[0].valueMin, 1085);
  EXPECT_EQ(telemetryItems[0].valueMax, 1260);

  //add another two cells - 5 cell battery
  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(telemetryItems[0].cells.count, 5);
  EXPECT_EQ(telemetryItems[0].cells.values[0].value, 418);
  EXPECT_EQ(telemetryItems[0].cells.values[1].value, 408);
  EXPECT_EQ(telemetryItems[0].cells.values[2].value, 415);
  EXPECT_EQ(telemetryItems[0].cells.values[3].value, 420);
  EXPECT_EQ(telemetryItems[0].cells.values[4].value, 410);
  EXPECT_EQ(telemetryItems[0].cells.values[5].value, 0);
  EXPECT_EQ(telemetryItems[0].value, 2071);
  EXPECT_EQ(telemetryItems[0].valueMin, 2071);
  EXPECT_EQ(telemetryItems[0].valueMax, 2071);

  //simulate very low voltage for cell 3
  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(telemetryItems[0].cells.count, 5);
  EXPECT_EQ(telemetryItems[0].cells.values[0].value, 418);
  EXPECT_EQ(telemetryItems[0].cells.values[1].value, 408);
  EXPECT_EQ(telemetryItems[0].cells.values[2].value, 100);
  EXPECT_EQ(telemetryItems[0].cells.values[3].value, 420);
  EXPECT_EQ(telemetryItems[0].cells.values[4].value, 410);
  EXPECT_EQ(telemetryItems[0].cells.values[5].value, 0);
  EXPECT_EQ(telemetryItems[0].value, 1756);
  EXPECT_EQ(telemetryItems[0].valueMin, 1756);
  EXPECT_EQ(telemetryItems[0].valueMax, 2071);

  //back to normal (but with reversed order of packets)
  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);
  generateSportCellPacket(packet, 5, 4, _V(410), _V(  0)); processSportPacket(packet);

  EXPECT_EQ(telemetryItems[0].cells.count, 5);
  EXPECT_EQ(telemetryItems[0].cells.values[0].value, 418);
  EXPECT_EQ(telemetryItems[0].cells.values[1].value, 408);
  EXPECT_EQ(telemetryItems[0].cells.values[2].value, 412);
  EXPECT_EQ(telemetryItems[0].cells.values[3].value, 420);
  EXPECT_EQ(telemetryItems[0].cells.values[4].value, 410);
  EXPECT_EQ(telemetryItems[0].cells.values[5].value, 0);
  EXPECT_EQ(telemetryItems[0].value, 2068);
  EXPECT_EQ(telemetryItems[0].valueMin, 1756);
  EXPECT_EQ(telemetryItems[0].valueMax, 2071);

  //display test
  lcd_clear();
  g_model.frsky.voltsSource = FRSKY_VOLTS_SOURCE_A1;
}
Ejemplo n.º 5
0
TEST(FrSkySPORT, checkCrc)
{
  // uint8_t pkt[] = { 0x7E, 0x98, 0x10, 0x10, 0x00, 0x7D, 0x5E, 0x02, 0x00, 0x00, 0x5F };
  uint8_t pkt[] = { 0x7E, 0x98, 0x10, 0x10, 0x00, 0x7E, 0x02, 0x00, 0x00, 0x5F };
  EXPECT_EQ(checkSportPacket(pkt+1), true);
}
Ejemplo n.º 6
0
TEST(FrSkySPORT, frskySetCellVoltage)
{
  uint8_t packet[FRSKY_SPORT_PACKET_SIZE];

  TELEMETRY_RESET();

  // test that simulates 3 cell battery
  generateSportCellPacket(packet, 3, 0, _V(410), _V(420)); frskySportProcessPacket(packet);
  EXPECT_EQ(checkSportPacket(packet), true) << "Bad CRC generation in setSportPacketCrc()";
  generateSportCellPacket(packet, 3, 2, _V(430), _V(  0)); frskySportProcessPacket(packet);

  generateSportCellPacket(packet, 3, 0, _V(405), _V(300)); frskySportProcessPacket(packet);
  generateSportCellPacket(packet, 3, 2, _V(430), _V(  0)); frskySportProcessPacket(packet);
  
  EXPECT_EQ(frskyData.hub.cellsCount,         3);
  EXPECT_EQ(frskyData.hub.cellVolts[0], _V(405));
  EXPECT_EQ(frskyData.hub.cellVolts[1], _V(300));
  EXPECT_EQ(frskyData.hub.cellVolts[2], _V(430));
  EXPECT_EQ(frskyData.hub.cellVolts[4], _V(  0));
  EXPECT_EQ(frskyData.hub.minCellVolts, _V(300));   //current minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCell,      _V(300));   //all time minimum cell voltage
  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(410), _V(420)); frskySportProcessPacket(packet);
  generateSportCellPacket(packet, 3, 2, _V(430), _V(  0)); frskySportProcessPacket(packet);
  
  EXPECT_EQ(frskyData.hub.cellsCount,         3);
  EXPECT_EQ(frskyData.hub.cellVolts[0], _V(410));
  EXPECT_EQ(frskyData.hub.cellVolts[1], _V(420));
  EXPECT_EQ(frskyData.hub.cellVolts[2], _V(430));
  EXPECT_EQ(frskyData.hub.cellVolts[4], _V(  0));
  EXPECT_EQ(frskyData.hub.minCellVolts, _V(410));   //current minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCell,      _V(250));   //all time minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCells,     _V(108));   //all time cells sum minimum
  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);

  EXPECT_EQ(frskyData.hub.cellsCount,         5);
  EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
  EXPECT_EQ(frskyData.hub.cellVolts[1], _V(408));
  EXPECT_EQ(frskyData.hub.cellVolts[2], _V(415));
  EXPECT_EQ(frskyData.hub.cellVolts[3], _V(420));
  EXPECT_EQ(frskyData.hub.cellVolts[4], _V(410));
  EXPECT_EQ(frskyData.hub.cellVolts[5], _V(  0));
  EXPECT_EQ(frskyData.hub.minCellVolts, _V(408));   //current minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCell,      _V(408));   //all time minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCells,     _V(207));   //all time cells sum minimum
  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);

  EXPECT_EQ(frskyData.hub.cellsCount,         5);
  EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
  EXPECT_EQ(frskyData.hub.cellVolts[1], _V(408));
  EXPECT_EQ(frskyData.hub.cellVolts[2], _V(100));
  EXPECT_EQ(frskyData.hub.cellVolts[3], _V(420));
  EXPECT_EQ(frskyData.hub.cellVolts[4], _V(410));
  EXPECT_EQ(frskyData.hub.cellVolts[5], _V(  0));
  EXPECT_EQ(frskyData.hub.minCellVolts, _V(100));   //current minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCell,      _V(100));   //all time minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCells,     _V(175));   //all time cells sum minimum
  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);

  EXPECT_EQ(frskyData.hub.cellsCount,         5);
  EXPECT_EQ(frskyData.hub.cellVolts[0], _V(418));
  EXPECT_EQ(frskyData.hub.cellVolts[1], _V(408));
  EXPECT_EQ(frskyData.hub.cellVolts[2], _V(412));
  EXPECT_EQ(frskyData.hub.cellVolts[3], _V(420));
  EXPECT_EQ(frskyData.hub.cellVolts[4], _V(410));
  EXPECT_EQ(frskyData.hub.cellVolts[5], _V(  0));
  EXPECT_EQ(frskyData.hub.minCellVolts, _V(408));   //current minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCell,      _V(100));   //all time minimum cell voltage
  EXPECT_EQ(frskyData.hub.minCells,     _V(175));   //all time cells sum minimum
  EXPECT_EQ(frskyData.hub.cellsSum,     _V(206));   //current cells sum

  //display test
  lcd_clear();
  g_model.frsky.voltsSource = FRSKY_VOLTS_SOURCE_A1;
  displayVoltagesScreen();
  EXPECT_TRUE(checkScreenshot("one_sensor_votages_screen"));
}