From 684b02d0930d11aef77166191dfae743e7faee73 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 7 May 2019 23:35:12 +0200 Subject: [PATCH] First conversion non regression test (X9D+) --- radio/src/dataconstants.h | 2 +- radio/src/storage/eeprom_rlc.cpp | 10 +++--- radio/src/tests/conversions.cpp | 55 +++++++++++++++++++++++++++++ radio/src/tests/eeprom_22_x9d+.bin | Bin 0 -> 32768 bytes radio/src/tests/gtests.h | 3 ++ radio/src/tests/lua.cpp | 2 -- 6 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 radio/src/tests/conversions.cpp create mode 100644 radio/src/tests/eeprom_22_x9d+.bin diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index db963f9ef..da2f88cd8 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -363,7 +363,7 @@ enum PotsWarnMode { #define RESERVE_RANGE_FOR_GVARS 10 // even we do not spend space in EEPROM for 10 GVARS, we reserve the space inside the range of values, like offset, weight, etc. - #define MAX_GVARS 9 +#define MAX_GVARS 9 enum SwitchSources { SWSRC_NONE = 0, diff --git a/radio/src/storage/eeprom_rlc.cpp b/radio/src/storage/eeprom_rlc.cpp index 4eda3f925..cf54c1b3d 100644 --- a/radio/src/storage/eeprom_rlc.cpp +++ b/radio/src/storage/eeprom_rlc.cpp @@ -283,15 +283,17 @@ uint16_t RlcFile::readRlc(uint8_t *buf, uint16_t i_len) memclear(&buf[i], ln); i += ln; m_zeroes -= ln; - if (m_zeroes) break; + if (m_zeroes) + break; ln = min(m_bRlc, i_len-i); uint8_t lr = read(&buf[i], ln); i += lr ; m_bRlc -= lr; - if(m_bRlc) break; + if (m_bRlc) break; - if (read(&m_bRlc, 1) !=1) break; // read how many bytes to read + if (read(&m_bRlc, 1) != 1) + break; // read how many bytes to read assert(m_bRlc & 0x7f); @@ -299,7 +301,7 @@ uint16_t RlcFile::readRlc(uint8_t *buf, uint16_t i_len) m_zeroes =(m_bRlc>>4) & 0x7; m_bRlc = m_bRlc & 0x0f; } - else if(m_bRlc&0x40) { + else if (m_bRlc&0x40) { m_zeroes = m_bRlc & 0x3f; m_bRlc = 0; } diff --git a/radio/src/tests/conversions.cpp b/radio/src/tests/conversions.cpp new file mode 100644 index 000000000..c3479e6f3 --- /dev/null +++ b/radio/src/tests/conversions.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "gtests.h" +#include "storage/conversions/conversions.h" +#include "location.h" + +void loadEEPROMFile(const char * filename) +{ + FILE * f = fopen(filename, "rb"); + assert(fread(eeprom, 1, EEPROM_SIZE, f) == EEPROM_SIZE); +} + +#if defined(PCBX9DP) +TEST(Eeprom, ConversionX9DPFrom22) +{ + loadEEPROMFile(TESTS_PATH "/tests/eeprom_22_x9d+.bin"); + + eepromOpen(); + convertModelData(0, 218); + eeLoadModel(0); + + EXPECT_ZSTREQ("Test", g_model.header.name); + EXPECT_EQ(TMRMODE_COUNT - 1 + SWSRC_SA0, g_model.timers[0].mode); + EXPECT_EQ(80, g_model.mixData[0].weight); + EXPECT_EQ(-100, g_model.limitData[0].max); + EXPECT_EQ(80, g_model.expoData[0].weight); + EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); + EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); + EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); + EXPECT_EQ(MODULE_TYPE_R9M, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, g_model.moduleData[EXTERNAL_MODULE].subType); + EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); + EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); + EXPECT_EQ(10, g_model.telemetrySensors[0].id); + EXPECT_EQ(10, g_model.telemetrySensors[0].frskyInstance.physID); +} +#endif diff --git a/radio/src/tests/eeprom_22_x9d+.bin b/radio/src/tests/eeprom_22_x9d+.bin new file mode 100644 index 0000000000000000000000000000000000000000..66b09a0dfc8741665726334a71983a8ee782253b GIT binary patch literal 32768 zcmd_xbx@Rf9LMqJ*#$)`MC|VF?p7>p>;}6rP*kux7VHMQ#csv!?(S|e@s2~e?>L9v z&G3EydCSc6c`viCUH10}!@yu~n6ZqqhG8*^Iyo3V>5Tu;%`}QT8HRby+Y%n`pRAnC z>gq7mW0=Pf4?mA!#~@3BK);}SSNvC4E_ilJ>*V|M=4Q!jzdqc@%O&ik?|=Do5&G1> z>XQ4vdpqOD^ENZBwwfVXtD2_GYIC!hf%zk|hRq^b-DdrfKfjLeWgqGP`N=5vJWWe; z)3Lp?X&3dw-8qI4^>e13`)?ol`^Uxn#Yab*cJZS4ABW=G(X`kcd_!VHT!QaLyqlg@ zm(Q;P%uk^K_Mu?`&d zODmyV`U6XP#yH@nga%ORoMoJuDwmxOY2 zE1j@B63Wf1bi(pUC^x^-2`eC>+=5CctdN9q3oD(lA`;3is&vANNhr6t(g`aeq1=*6 zC#;l&a!V_nurd1;bt&~of_VaK%Jot@VZ9}k+ehhy z^_5U=Kcy4qEuq~0N+)c9gmQh9PS`*RnFor-s6#8M%4~KpP z^dq4k1^sB~$3Q<8`f<>YhkgR|6QQ33{bcBE(ECFl0R0r`r$Rps`svWmfPNQj)FM)n3^vj@M4*d$~S3!1&Y zem(RXpx+4nCg?XqzXkfO&~Jl&JM=rC-wFLL=yyZE2l~Cxhd{p%`u)%!fc_x#hoC7e}euq^k1O=3Vj&#-=O~k`ahu$hu$#R6PVCjptnMA2faP?F`$nLy#w^I zpm&5mHuQ0zj|+V~=;K501bqVNouN+%y$ke-pic~a66ljcpA7os(5HYtCG@GFPYrz< z=+i=<4*K-aXMjE<^qHW~41E^pvqGN@`s~o>fIcVmxuDMteIDrZLZ1)%{LmMGz9964 zpf3!45$KCTUkv)<(3gO|B=n`AFAaSe=*vQ14*K%YSAf1E^p&8m41E>oU7@cEeKqK- zLtg{>n$WvJUkm!$(AR;!F7)-FuMd3#=-r`j2z?{y8$;g&`liq~gT6WREue1+eJki& zL*EAaw$OV(?+JZ7=-Wfz0s4;6cY?k%^j)Cu3Vk=|yF=dt`kv7Dg5C@I-q81fzAyCs zp!bHpKlB5j_kn&O^n;)u481S(e$Wqrekk6}p$~z6AN2d7KLGtf=np}E82Tg7ABFxH^v9t;0sTqnPeFeg z`ZLg