diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 50fbcee48..8972184a9 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -320,6 +320,10 @@ if(TRACE_SIMPGMSPACE) add_definitions(-DTRACE_SIMPGMSPACE) endif() +if(EEPROM_VARIANT_NEEDED) + add_definitions(-DEEPROM_VARIANT=${EEPROM_VARIANT}) +endif() + set(SRC ${SRC} opentx.cpp @@ -413,6 +417,8 @@ set(CMAKE_CXX_LINK_EXECUTABLE " > allsrc.cpp\; cat "$$f" >> ${ALLSRC}\; done' + WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY} + DEPENDS ${SRC} + ) + elseif(WIN32) + string(REPLACE "/" "\\" SRC_WIN "${SRC}") + string(REPLACE "/" "\\" ALLSRC_WIN "${ALLSRC}") + set(ALLSRC_BAT + "setlocal EnableDelayedExpansion" + "del \"${ALLSRC_WIN}\"" + "for %%f in (${SRC_WIN}) do (" + "set p=\"%%f\"" + "set p=!p:^\\=/! \necho \# 1 !p! >> \"${ALLSRC_WIN}\"" + "type %%f >> \"${ALLSRC_WIN}\"" + ")\n" + ) + string(REPLACE ";" "\n" ALLSRC_BAT "${ALLSRC_BAT}") + file(WRITE "${ALLSRC}.bat" "${ALLSRC_BAT}") + add_custom_command( + OUTPUT ${ALLSRC} + COMMAND "${ALLSRC}.bat" + WORKING_DIRECTORY ${RADIO_SRC_DIRECTORY} + DEPENDS ${SRC} + ) + else() + set(ALLSRC ${SRC}) + endif() add_executable(firmware ${ALLSRC}) + add_dependencies(firmware ${FIRMWARE_DEPENDENCIES}) add_custom_command( @@ -534,6 +563,12 @@ if(NOT MSVC) DEPENDS firmware WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) + else() + add_custom_target(flash + COMMAND avrdude -c usbasp -p ${AVRDUDE_MCU} -U flash:w:firmware.hex:i + DEPENDS firmware + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) endif() PrintTargetReport("firmware") diff --git a/radio/src/gui/128x64/model_logical_switches.cpp b/radio/src/gui/128x64/model_logical_switches.cpp index 96a5c1edb..e638450aa 100644 --- a/radio/src/gui/128x64/model_logical_switches.cpp +++ b/radio/src/gui/128x64/model_logical_switches.cpp @@ -410,12 +410,12 @@ void menuModelLogicalSwitches(event_t event) } else { lcdDrawNumber(CSW_3RD_COLUMN, y, cs->v2, LEFT|attr2); -#if defined(GVARS) +#if defined(CPUARM) && defined(GVARS) if (v1_val >= MIXSRC_GVAR1) { v2_min = -1024; v2_max = +1024; } else -#endif // GVARS +#endif { v2_min = -LIMIT_EXT_PERCENT; v2_max = +LIMIT_EXT_PERCENT; } diff --git a/radio/src/gui/128x64/model_outputs_avr.cpp b/radio/src/gui/128x64/model_outputs_avr.cpp index 3d24b0883..f934f77cc 100644 --- a/radio/src/gui/128x64/model_outputs_avr.cpp +++ b/radio/src/gui/128x64/model_outputs_avr.cpp @@ -76,15 +76,15 @@ enum MenuModelOutputsItems { #endif #define LIMITS_CURVE_POS 17*FW+1 -#define LIMITS_MIN_MAX_OFFSET 1000 -#define CONVERT_US_MIN_MAX(x) ((int16_t(x)*128)/25) -#define MIN_MAX_ATTR attr +#define LIMITS_MIN_MAX_OFFSET 100 +#define CONVERT_US_MIN_MAX(x) ((int16_t(x)*128)/25) +#define MIN_MAX_ATTR attr #if defined(PPM_UNIT_US) - #define SET_MIN_MAX(x, val) x = ((val)*250)/128 - #define MIN_MAX_DISPLAY(x) CONVERT_US_MIN_MAX(x) + #define SET_MIN_MAX(x, val) x = ((val)*250)/128 + #define MIN_MAX_DISPLAY(x) CONVERT_US_MIN_MAX(x) #else - #define MIN_MAX_DISPLAY(x) ((int8_t)(x)) + #define MIN_MAX_DISPLAY(x) ((int8_t)(x)) #endif void menuModelLimits(event_t event) diff --git a/radio/src/gui/128x64/radio_trainer.cpp b/radio/src/gui/128x64/radio_trainer.cpp index 6a3ccb200..a4644f682 100644 --- a/radio/src/gui/128x64/radio_trainer.cpp +++ b/radio/src/gui/128x64/radio_trainer.cpp @@ -25,7 +25,7 @@ void menuRadioTrainer(event_t event) uint8_t y; bool slave = SLAVE_MODE(); - MENU(STR_MENUTRAINER, menuTabGeneral, MENU_RADIO_TRAINER, (slave ? HEADER_LINE : HEADER_LINE+6), {HEADER_LINE_COLUMNS 2, 2, 2, 2, 0/*, 0*/}); + MENU(STR_MENUTRAINER, menuTabGeneral, MENU_RADIO_TRAINER, (slave ? HEADER_LINE : HEADER_LINE+6), { HEADER_LINE_COLUMNS 2, 2, 2, 2, 0/*, 0*/ }); if (slave) { lcdDrawText(7*FW, 4*FH, STR_SLAVE); @@ -38,8 +38,8 @@ void menuRadioTrainer(event_t event) y = MENU_HEADER_HEIGHT + 1 + FH; - for (uint8_t i=0; i= 0 ? x-49 : x-56); - uint8_t len = zlen(g_model.timers[index].name, LEN_TIMER_NAME); + uint8_t xLabel = (negative ? x-56 : x-49); + uint8_t len = zlen(timer.name, LEN_TIMER_NAME); if (len > 0) { - lcdDrawSizedText(xLabel, y+FH, g_model.timers[index].name, len, RIGHT | ZCHAR); + lcdDrawSizedText(xLabel, y+FH, timer.name, len, RIGHT | ZCHAR); } else { - drawTimerMode(xLabel, y+FH, g_model.timers[index].mode, RIGHT); + drawTimerMode(xLabel, y+FH, timer.mode, RIGHT); } #else - uint8_t xLabel = (timerState.val >= 0 ? x-69 : x-76); - drawTimerMode(xLabel, y+FH, g_model.timers[index].mode); + uint8_t xLabel = (negative ? x-76 : x-69); + drawTimerMode(xLabel, y+FH, timer.mode); #endif } } @@ -495,7 +496,7 @@ void menuMainView(event_t event) x0 = i<4 ? LCD_W/4+2 : LCD_W*3/4-2; y0 = 38+(i%4)*5; - const uint16_t lim = (g_model.extendedLimits ? 512 * uint8_t(LIMIT_EXT_PERCENT / 100) : 512) * 2; + const uint16_t lim = (g_model.extendedLimits ? (512 * (long)LIMIT_EXT_PERCENT / 100) : 512) * 2; int8_t len = (abs(val) * WBAR2 + lim/2) / lim; if (len>WBAR2) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 43064837f..e85b64e04 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -259,18 +259,6 @@ #define pgm_read_adr(x) *(x) #define cli() #define sei() -#else - #include - #include - #include "pgmtypes.h" - - #include - #include - #include - #define F_CPU 16000000UL // 16 MHz - #include - #define pgm_read_adr(address_short) pgm_read_word(address_short) - #include #endif #include "debug.h" diff --git a/radio/src/targets/9x/CMakeLists.txt b/radio/src/targets/9x/CMakeLists.txt index f677521f1..1e0a99b70 100644 --- a/radio/src/targets/9x/CMakeLists.txt +++ b/radio/src/targets/9x/CMakeLists.txt @@ -2,6 +2,7 @@ option(SP22 "SmartieParts 2.2 Backlight support" OFF) option(PWM_BACKLIGHT "PWM Backlight" OFF) set(ARCH AVR) set(MCU atmega64) +set(AVRDUDE_MCU m64) string(TOLOWER ${PCB} FLAVOUR) set(EEPROM_VARIANT_NEEDED ON) set(EEPROM EEPROM_RLC) diff --git a/radio/src/targets/9x/board.cpp b/radio/src/targets/9x/board.cpp index b1598470b..385a60024 100644 --- a/radio/src/targets/9x/board.cpp +++ b/radio/src/targets/9x/board.cpp @@ -23,53 +23,51 @@ #if defined(ROTARY_ENCODER_NAVIGATION) #if defined(TELEMETREZ) -uint8_t TrotCount ; // TeZ version -uint8_t LastTrotCount ; // TeZ version -uint8_t RotEncoder ; -#define ROTENC_DOWN() (RotEncoder != 0) +uint8_t TrotCount; // TeZ version +uint8_t LastTrotCount; // TeZ version +uint8_t RotEncoder; #else -uint8_t RotPosition ; -int8_t LastRotaryValue ; -int8_t Rotary_diff ; -int8_t RotaryControl ; -uint8_t RotEncoder ; -#define ROTENC_DOWN() (RotEncoder & 0x20) +uint8_t RotPosition; +int8_t LastRotaryValue; +int8_t Rotary_diff; +int8_t RotaryControl; +uint8_t RotEncoder; #endif void rotencPoll() { #if defined(TELEMETREZ) if (TrotCount != LastTrotCount) { - rotencValue[0] = LastTrotCount = TrotCount ; + rotencValue[0] = LastTrotCount = TrotCount; } #else // Rotary Encoder polling - PORTA = 0 ; // No pullups - DDRA = 0x1F ; // Top 3 bits input + PORTA = 0; // No pullups + DDRA = 0x1F; // Top 3 bits input - asm(" rjmp 1f") ; - asm("1:") ; + asm(" rjmp 1f"); + asm("1:"); - uint8_t rotary ; - rotary = PINA ; - DDRA = 0xFF ; // Back to all outputs - rotary &= 0xE0 ; + uint8_t rotary; + rotary = PINA; + DDRA = 0xFF; // Back to all outputs + rotary &= 0xE0; - RotEncoder = rotary ; // just read the lcd pin + RotEncoder = rotary; // just read the lcd pin - rotary &= 0xDF ; + rotary &= 0xDF; if ( rotary != RotPosition ) { - uint8_t x ; - x = RotPosition & 0x40 ; - x <<= 1 ; - x ^= rotary & 0x80 ; + uint8_t x; + x = RotPosition & 0x40; + x <<= 1; + x ^= rotary & 0x80; if ( x ) { - rotencValue[0] -= 1 ; + rotencValue[0] -= 1; } else { - rotencValue[0] += 1 ; + rotencValue[0] += 1; } - RotPosition = rotary ; + RotPosition = rotary; } #endif // TELEMETREZ } @@ -140,14 +138,6 @@ void boardInit() #endif // !defined(SIMU) } -#ifndef SIMU -FORCEINLINE -#endif -uint8_t keyDown() -{ - return ((~PINB) & 0x7E) | ROTENC_DOWN(); -} - #if !defined(SIMU) && (defined(TELEMETRY_MOD_14051) || defined(TELEMETRY_MOD_14051_SWAPPED)) uint8_t pf7_digital[MUX_PF7_DIGITAL_MAX - MUX_PF7_DIGITAL_MIN + 1]; /** @@ -306,7 +296,7 @@ void readKeysAndTrims() #if defined(NAVIGATION_STICKS) if (~PINB & 0x7E) { - StickScrollTimer = STICK_SCROLL_TIMEOUT ; + StickScrollTimer = STICK_SCROLL_TIMEOUT; } #endif } diff --git a/radio/src/targets/9x/board.h b/radio/src/targets/9x/board.h index f99e0b9f6..b2c5683b2 100644 --- a/radio/src/targets/9x/board.h +++ b/radio/src/targets/9x/board.h @@ -183,7 +183,24 @@ bool checkSlaveMode(); #define INP_G_RF_POW 1 #define INP_G_RuddDR 0 +// Rotary Encoder driver +#if defined(ROTARY_ENCODER_NAVIGATION) + extern uint8_t RotEncoder; + #if defined(TELEMETREZ) + #define ROTENC_DOWN() (RotEncoder != 0) + #else + #define ROTENC_DOWN() (RotEncoder & 0x20) + #endif +#else + #define ROTENC_DOWN() (0) +#endif + // Keys driver +inline uint8_t keyDown() +{ + return ((~PINB) & 0x7E) | ROTENC_DOWN(); +} + #if defined(TELEMETRY_MOD_14051) || defined(TELEMETRY_MOD_14051_SWAPPED) enum MuxInput { MUX_BATT, diff --git a/radio/src/targets/common/avr/CMakeLists.txt b/radio/src/targets/common/avr/CMakeLists.txt index b6eff2d7f..70a8e0c25 100644 --- a/radio/src/targets/common/avr/CMakeLists.txt +++ b/radio/src/targets/common/avr/CMakeLists.txt @@ -5,7 +5,7 @@ option(BOLD "Bold font" ON) option(BATTGRAPH "Battery graph" OFF) option(HAPTIC "Haptic support" OFF) -set(TELEMETRY_TYPES NONE/MAVLINK/ARDUPILOT/FRSKY/FRSKY_SPORT/TELEMETREZ/NMEA) +set(TELEMETRY_TYPES NONE MAVLINK ARDUPILOT FRSKY FRSKY_SPORT TELEMETREZ NMEA) set(TELEMETRY "NONE" CACHE STRING "Telemetry Type (${TELEMETRY_TYPES})") set_property(CACHE TELEMETRY PROPERTY STRINGS ${TELEMETRY_TYPES}) @@ -129,7 +129,3 @@ if(TELEMETRY STREQUAL FRSKY OR TELEMETRY STREQUAL FRSKY_SPORT OR TELEMETRY STREQ math(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${FRSKY_VARIANT}) endif() add_definitions(-DTIMERS=2) -if(EEPROM_VARIANT_NEEDED) - add_definitions(-DEEPROM_VARIANT=${EEPROM_VARIANT}) -endif() - diff --git a/radio/src/targets/common/avr/board_avr.h b/radio/src/targets/common/avr/board_avr.h index 5d8b01672..e0c290b35 100644 --- a/radio/src/targets/common/avr/board_avr.h +++ b/radio/src/targets/common/avr/board_avr.h @@ -18,6 +18,31 @@ * GNU General Public License for more details. */ +#if defined(SIMU) +extern volatile unsigned char pina, pinb, pinc, pind, pine, pinf, ping, pinh, pinj, pinl; +#define PINA ~pina +#define PINB ~pinb +#define PINC ~pinc +#define PIND ~pind +#define PINE ~pine +#define PINF ~pinf +#define PING ~ping +#define PINH ~pinh +#define PINJ ~pinj +#define PINL ~pinl +#else +#include +#include +#include "pgmtypes.h" +#include +#include +#include +#define F_CPU 16000000UL // 16 MHz +#include +#define pgm_read_adr(address_short) pgm_read_word(address_short) +#include +#endif + // ADC driver #define NUM_POTS 3 #define NUM_SLIDERS 0 @@ -220,6 +245,5 @@ uint8_t eepromIsTransferComplete(); #define TLM_USART 0 #endif void telemetryPortInit(); -void telemetryPortInit(uint32_t baudrate); -void telemetryPortInitFromIndex(uint8_t index); +void telemetryPortInit(uint8_t baudrate); void telemetryTransmitBuffer(); diff --git a/radio/src/targets/common/avr/telemetry_driver.cpp b/radio/src/targets/common/avr/telemetry_driver.cpp index 5b3e6d8b8..5d5569fcb 100644 --- a/radio/src/targets/common/avr/telemetry_driver.cpp +++ b/radio/src/targets/common/avr/telemetry_driver.cpp @@ -23,7 +23,9 @@ #if defined(TELEMETRY_FRSKY) || defined(TELEMETRY_MAVLINK) -enum SERIAL_BAUDS {// KEEP IN SYNC WITH GUI +// KEEP IN SYNC WITH GUI +enum SERIAL_BAUDS +{ BAUD_4800 = 0, BAUD_9600, BAUD_14400, @@ -101,7 +103,8 @@ ISR(USART_RX_vect_N(TLM_USART)) UCSRB_N(TLM_USART) |= (1 << RXCIE_N(TLM_USART)); // enable Interrupt } -static void uart_4800(void) { +static void uart_4800(void) +{ #undef BAUD #define BAUD 4800 #include @@ -114,7 +117,8 @@ static void uart_4800(void) { #endif } -static void uart_9600(void) { +FORCEINLINE void uart_9600(void) +{ #undef BAUD #define BAUD 9600 #include @@ -127,7 +131,8 @@ static void uart_9600(void) { #endif } -static void uart_14400(void) { +static void uart_14400(void) +{ #undef BAUD #define BAUD 14400 #include @@ -140,7 +145,8 @@ static void uart_14400(void) { #endif } -static void uart_19200(void) { +static void uart_19200(void) +{ #undef BAUD #define BAUD 19200 #include @@ -153,7 +159,8 @@ static void uart_19200(void) { #endif } -static void uart_38400(void) { +static void uart_38400(void) +{ #undef BAUD #define BAUD 38400 #include @@ -166,7 +173,8 @@ static void uart_38400(void) { #endif } -static void uart_57600(void) { +static void uart_57600(void) +{ #undef BAUD #define BAUD 57600 #include @@ -179,13 +187,15 @@ static void uart_57600(void) { #endif } -static void uart_58798(void) { +static void uart_58798(void) +{ UBRRH_N(TLM_USART) = 0; UBRRL_N(TLM_USART) = 0x010; UCSRA_N(TLM_USART) &= ~(1 << U2X_N(TLM_USART)); // disable double speed operation. } -static void uart_76800(void) { +static void uart_76800(void) +{ #undef BAUD #define BAUD 76800 #include @@ -198,79 +208,42 @@ static void uart_76800(void) { #endif } -void telemetryPortInitFromIndex(uint8_t index) { - switch (index) { - case BAUD_4800: - telemetryPortInit(4800); - break; - case BAUD_9600: - telemetryPortInit(9600); - break; - case BAUD_14400: - telemetryPortInit(14400); - break; - case BAUD_19200: - telemetryPortInit(19200); - break; - case BAUD_38400: - telemetryPortInit(38400); - break; - case BAUD_57600: - telemetryPortInit(57600); - break; - case BAUD_58798: - telemetryPortInit(58798); - break; - case BAUD_76800: - telemetryPortInit(76800); - break; - } -} - -void telemetryPortInit() { - telemetryPortInit(9600); -} - -void telemetryPortInit(uint32_t baudrate) -{ #if !defined(SIMU) +FORCEINLINE void telemetryPortInit(uint8_t baudrate) +{ RXD_DDR_N(TLM_USART) &= ~(1 << RXD_DDR_PIN_N(TLM_USART)); // set RXD pin as input RXD_PORT_N(TLM_USART) &= ~(1 << RXD_PORT_PIN_N(TLM_USART)); // disable pullup on RXD pin switch (baudrate) { - case 4800: - uart_4800(); - break; - case 9600: - uart_9600(); - break; - case 14400: - uart_14400(); - break; - case 19200: - uart_19200(); - break; - case 38400: - uart_38400(); - break; - case 57600: - uart_57600(); - break; - case 58798: - uart_58798(); - break; - case 76800: - uart_76800(); - break; - default: - uart_57600(); - break; + case BAUD_4800: + uart_4800(); + break; + case BAUD_9600: + uart_9600(); + break; + case BAUD_14400: + uart_14400(); + break; + case BAUD_19200: + uart_19200(); + break; + case BAUD_38400: + uart_38400(); + break; + case BAUD_58798: + uart_58798(); + break; + case BAUD_76800: + uart_76800(); + break; + default: + uart_57600(); + break; } // set 8N1 UCSRB_N(TLM_USART) = 0 | (0 << RXCIE_N(TLM_USART)) | (0 << TXCIE_N(TLM_USART)) | (0 << UDRIE_N(TLM_USART)) | (0 << RXEN_N(TLM_USART)) | (0 << TXEN_N(TLM_USART)) | (0 << UCSZ2_N(TLM_USART)); UCSRC_N(TLM_USART) = 0 | (1 << UCSZ1_N(TLM_USART)) | (1 << UCSZ0_N(TLM_USART)); - while (UCSRA_N(TLM_USART) & (1 << RXC_N(TLM_USART))) UDR_N(TLM_USART); // flush receive buffer // These should be running right from power up on a FrSky enabled '9X. @@ -278,12 +251,17 @@ void telemetryPortInit(uint32_t baudrate) telemetryEnableTx(); // enable FrSky-Telemetry emission #endif telemetryEnableRx(); // enable FrSky-Telemetry reception -#endif } +#endif void telemetryTransmitBuffer() { - UCSRB_N(TLM_USART) |= (1 << UDRIE_N(TLM_USART)); // enable UDRE1 interrupt + UCSRB_N(TLM_USART) |= (1 << UDRIE_N(TLM_USART)); // enable UDRE1 interrupt +} + +void telemetryPortInit() +{ + telemetryPortInit(BAUD_9600); } #endif diff --git a/radio/src/targets/gruvin9x/CMakeLists.txt b/radio/src/targets/gruvin9x/CMakeLists.txt index 7d7050476..311b7685d 100644 --- a/radio/src/targets/gruvin9x/CMakeLists.txt +++ b/radio/src/targets/gruvin9x/CMakeLists.txt @@ -1,5 +1,6 @@ set(ARCH AVR) set(MCU atmega2560) +set(AVRDUDE_MCU m2560) string(TOLOWER ${PCB} FLAVOUR) set(EEPROM EEPROM_RLC) add_definitions(-DEEPROM_VARIANT=0) diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 1217ef487..045dfa6d7 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -558,6 +558,10 @@ void lcdRefresh() simuLcdRefresh = true; } +void telemetryPortInit(uint8_t baudrate) +{ +} + void telemetryPortInit() { } diff --git a/radio/src/targets/simu/simpgmspace.h b/radio/src/targets/simu/simpgmspace.h index 317505c93..a5cdd1e90 100644 --- a/radio/src/targets/simu/simpgmspace.h +++ b/radio/src/targets/simu/simpgmspace.h @@ -250,16 +250,6 @@ extern void rxPdcUsart( void (*pChProcess)(uint8_t x) ); #define DDRE dummyport #define DDRF dummyport #define DDRG dummyport -#define PINA ~pina -#define PINB ~pinb -#define PINC ~pinc -#define PIND ~pind -#define PINE ~pine -#define PINF ~pinf -#define PING ~ping -#define PINH ~pinh -#define PINJ ~pinj -#define PINL ~pinl #define EEMEM #define UCSR0B dummyport @@ -354,7 +344,6 @@ extern uint32_t Master_frequency; #define __enable_irq() #endif -extern volatile unsigned char pina, pinb, pinc, pind, pine, pinf, ping, pinh, pinj, pinl; extern uint8_t portb, portc, porth, dummyport; extern uint16_t dummyport16; extern uint8_t main_thread_running; diff --git a/radio/src/telemetry/frsky_d.cpp b/radio/src/telemetry/frsky_d.cpp index 80a32fe69..cbbc83c90 100644 --- a/radio/src/telemetry/frsky_d.cpp +++ b/radio/src/telemetry/frsky_d.cpp @@ -315,7 +315,7 @@ void frskySendPacket(uint8_t type, uint8_t value, uint8_t p1, uint8_t p2) #endif } -inline void frskyDSendNextAlarm(void) +void frskyDSendNextAlarm(void) { if (frskyTxBufferCount) return; // we only have one buffer. If it's in use, then we can't send yet. diff --git a/radio/src/telemetry/mavlink.cpp b/radio/src/telemetry/mavlink.cpp index 33563c21a..3e6402949 100644 --- a/radio/src/telemetry/mavlink.cpp +++ b/radio/src/telemetry/mavlink.cpp @@ -25,10 +25,6 @@ #include "telemetry/mavlink.h" -#if defined(SIMU) -void telemetryPortInitFromIndex(uint8_t index) {} -#endif - // this might need to move to the flight software //static mavlink_system_t mavlink_system = { 7, MAV_COMP_ID_MISSIONPLANNER, 0, 0, 0, 0 }; @@ -78,10 +74,11 @@ void MAVLINK_reset(uint8_t warm_reset) { } //! \brief initalize mavlink extension -void MAVLINK_Init(void) { - mav_statustext[0] = 0; - MAVLINK_reset(0); - telemetryPortInitFromIndex(g_eeGeneral.mavbaud); +void MAVLINK_Init(void) +{ + mav_statustext[0] = 0; + MAVLINK_reset(0); + telemetryPortInit(g_eeGeneral.mavbaud); } /*! \brief Status log message @@ -580,10 +577,10 @@ void telemetryWakeup() { if (tmr10ms - last_time > 15) { if (mav_heartbeat > -30) { mav_heartbeat--; - + if (mav_heartbeat == -30) { MAVLINK_reset(1); - telemetryPortInitFromIndex(g_eeGeneral.mavbaud); + telemetryPortInit(g_eeGeneral.mavbaud); } } last_time = tmr10ms; diff --git a/radio/src/telemetry/mavlink.h b/radio/src/telemetry/mavlink.h index b99082b04..e07b239eb 100644 --- a/radio/src/telemetry/mavlink.h +++ b/radio/src/telemetry/mavlink.h @@ -320,5 +320,7 @@ inline uint8_t getPrecisMavlinParamsValue(uint8_t idx) { void lcd_outdezFloat(uint8_t x, uint8_t y, float val, uint8_t precis, uint8_t mode); #endif +void telemetryPortInit(uint8_t baudrate); + #endif // _MAVLINK_H_ diff --git a/radio/util/Dockerfile b/radio/util/Dockerfile index a0cd18bbc..5eea270aa 100644 --- a/radio/util/Dockerfile +++ b/radio/util/Dockerfile @@ -4,7 +4,6 @@ FROM debian:jessie RUN apt-get update && \ apt-get install -y \ - avr-libc \ build-essential \ cmake \ gcc \