From fdcc60b1b9f57f4b389a1604797decc8f03a775f Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Mon, 25 Jul 2016 16:45:52 +0200 Subject: [PATCH 1/2] Fix AR9X build and add it to regular commit tests. Note that simu still crashes on startup in the readRtc function --- radio/src/simu.cpp | 2 +- radio/src/targets/simu/opentxsimulator.cpp | 4 ++-- radio/src/targets/simu/simpgmspace.cpp | 2 +- radio/util/commit-tests.sh | 7 +++++++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 314385df6..05fbb4f2a 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -339,7 +339,7 @@ void Open9xSim::updateKeysAndSwitches(bool start) long Open9xSim::onTimeout(FXObject*, FXSelector, void*) { if (hasFocus()) { -#if defined(PCBSKY9X) && !defined(REVX) +#if defined(COPROCESSOR) Coproc_temp = 23; Coproc_maxtemp = 28; #endif diff --git a/radio/src/targets/simu/opentxsimulator.cpp b/radio/src/targets/simu/opentxsimulator.cpp index 97344383f..952c4b5e3 100644 --- a/radio/src/targets/simu/opentxsimulator.cpp +++ b/radio/src/targets/simu/opentxsimulator.cpp @@ -95,7 +95,7 @@ void OpenTxSimulator::start(QByteArray & ee, bool tests) void OpenTxSimulator::start(const char * filename, bool tests) { -#if defined(PCBSKY9X) && !defined(REVX) +#if defined(PCBSKY9X) && !defined(REVX) && !defined(AR9X) g_rotenc[0] = 0; #elif defined(PCBGRUVIN9X) g_rotenc[0] = 0; @@ -164,7 +164,7 @@ void OpenTxSimulator::wheelEvent(int steps) rotencValue -= 2; else rotencValue += 2; -#elif defined(PCBSKY9X) && !defined(REVX) +#elif defined(PCBSKY9X) && !defined(REVX) && !defined(AR9X) g_rotenc[0] += steps*4; #elif defined(PCBGRUVIN9X) g_rotenc[0] += steps; diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 5941808d3..7643080a0 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -194,7 +194,7 @@ void simuSetKey(uint8_t key, bool state) KEY_CASE(KEY_UP, KEYS_GPIO_REG_UP, KEYS_GPIO_PIN_UP) KEY_CASE(KEY_DOWN, KEYS_GPIO_REG_DOWN, KEYS_GPIO_PIN_DOWN) #endif -#if defined(PCBSKY9X) && !defined(REVX) +#if defined(PCBSKY9X) && !defined(REVX) && !defined(AR9X) KEY_CASE(BTN_REa, PIOB->PIO_PDSR, 0x40) #elif defined(PCBGRUVIN9X) || defined(PCBMEGA2560) KEY_CASE(BTN_REa, pind, 0x20) diff --git a/radio/util/commit-tests.sh b/radio/util/commit-tests.sh index 2ddd8738d..8db70d9b3 100755 --- a/radio/util/commit-tests.sh +++ b/radio/util/commit-tests.sh @@ -58,6 +58,13 @@ make -j2 firmware make -j2 simu make -j2 gtests ; ./gtests +# OpenTX on AR9X +rm -rf * +cmake ${COMMON_OPTIONS} -DPCB=AR9X -DHELI=YES ${SRCDIR} +make -j2 firmware +make -j2 simu +make -j2 gtests ; ./gtests + # OpenTX on Taranis rm -rf * cmake ${COMMON_OPTIONS} -DPCB=TARANIS -DHELI=YES -DLUA=YES -DWARNINGS_AS_ERRORS=YES ${SRCDIR} From 893ae215afddf404eb0ed0d15d1fc5c3b181a1c4 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Tue, 26 Jul 2016 00:11:33 +0200 Subject: [PATCH 2/2] Fix reading from initialized memory, fix not using fake program space for i2c --- radio/src/targets/sky9x/i2c_driver.cpp | 1 + radio/src/targets/sky9x/rtc_ds3231_driver.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/radio/src/targets/sky9x/i2c_driver.cpp b/radio/src/targets/sky9x/i2c_driver.cpp index fee1fe3d2..ae961a91f 100644 --- a/radio/src/targets/sky9x/i2c_driver.cpp +++ b/radio/src/targets/sky9x/i2c_driver.cpp @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include "opentx.h" #include "i2c_driver.h" #include "twi.h" #include "board.h" diff --git a/radio/src/targets/sky9x/rtc_ds3231_driver.cpp b/radio/src/targets/sky9x/rtc_ds3231_driver.cpp index b2ed96289..360c6acc3 100644 --- a/radio/src/targets/sky9x/rtc_ds3231_driver.cpp +++ b/radio/src/targets/sky9x/rtc_ds3231_driver.cpp @@ -18,6 +18,7 @@ * GNU General Public License for more details. */ +#include "opentx.h" #include "rtc.h" #include "i2c_driver.h" @@ -26,8 +27,9 @@ void readRtc() { uint8_t buffer[7]; + uint8_t readBuffer[7]; gtm utm; - int res = i2cReadBuffer(DS3231_I2C_ADDR, 0, 2, buffer, 7); + int res = i2cReadBuffer(DS3231_I2C_ADDR, readBuffer, 2, buffer, 7); if (res != 0) return; @@ -46,6 +48,7 @@ void writeRtc(gtm* ptr) g_rtcTime = gmktime(ptr); g_ms100 = 0; // start of next second begins now uint8_t buffer[7]; + uint8_t read_buffer[7]; buffer[0] = toBCD(ptr->tm_sec); buffer[1] = toBCD(ptr->tm_min); @@ -55,7 +58,7 @@ void writeRtc(gtm* ptr) buffer[5] = toBCD(ptr->tm_mon + 1); uint8_t offset = ptr->tm_year >= 100 ? 100 : 0; buffer[6] = toBCD(ptr->tm_year - offset); - i2cWriteBuffer(DS3231_I2C_ADDR, 0, 1, buffer, 7); + i2cWriteBuffer(DS3231_I2C_ADDR, read_buffer, 1, buffer, 7); } void rtcSetTime(struct gtm * t)