@@ -1345,12 +1345,11 @@ void registerOpenTxFirmwares()
|
||||
registerOpenTxFirmware(firmware);
|
||||
addOpenTxRfOptions(firmware, FLEX);
|
||||
|
||||
// TX16S is unavailable until finalized
|
||||
/* Radiomaster TX16S board
|
||||
/* Radiomaster TX16S board */
|
||||
firmware = new OpenTxFirmware("opentx-tx16s", Firmware::tr("Radiomaster TX16s / TX16s Hall / TX16s Masterfire"), BOARD_RADIOMASTER_TX16S);
|
||||
addOpenTxFrskyOptions(firmware);
|
||||
firmware->addOption("bluetooth", Firmware::tr("Support for bluetooth module"));
|
||||
registerOpenTxFirmware(firmware);*/
|
||||
registerOpenTxFirmware(firmware);
|
||||
|
||||
/* 9XR-Pro */
|
||||
firmware = new OpenTxFirmware("opentx-9xrpro", Firmware::tr("Turnigy 9XR-PRO"), BOARD_9XRPRO);
|
||||
|
||||
@@ -359,6 +359,13 @@ endif()
|
||||
|
||||
add_definitions(-DPOPUP_LEVEL=${POPUP_LEVEL})
|
||||
|
||||
if(INTERNAL_MODULE_MULTI)
|
||||
set(DEFAULT_TEMPLATE_SETUP 21 CACHE STRING "")
|
||||
else()
|
||||
set(DEFAULT_TEMPLATE_SETUP 0 CACHE STRING "")
|
||||
endif()
|
||||
add_definitions(-DDEFAULT_TEMPLATE_SETUP=${DEFAULT_TEMPLATE_SETUP})
|
||||
|
||||
set(SRC
|
||||
${SRC}
|
||||
opentx.cpp
|
||||
@@ -418,7 +425,6 @@ endif()
|
||||
|
||||
set(SRC ${SRC} ${FIRMWARE_SRC})
|
||||
|
||||
|
||||
##### firmware target #####
|
||||
|
||||
option(FIRMWARE_TARGET "Configure Firmware target (can be turned of for compiling Companion only)" ON)
|
||||
|
||||
@@ -422,7 +422,11 @@ void lcdDrawPoint(coord_t x, coord_t y, LcdFlags att)
|
||||
{
|
||||
display_t * p = PIXEL_PTR(x, y);
|
||||
display_t color = lcdColorTable[COLOR_IDX(att)];
|
||||
#if defined(PCBX10)
|
||||
if (p >= displayBuf && x < LCD_W) { // x10 screen is reversed, so overflow are happening the other way around
|
||||
#else
|
||||
if (p < DISPLAY_END) {
|
||||
#endif
|
||||
*p = color;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
*/
|
||||
|
||||
#include "opentx.h"
|
||||
#if defined(RADIO_TX16S)
|
||||
#include "tp_gt911.h"
|
||||
#include <math.h>
|
||||
#endif
|
||||
|
||||
constexpr coord_t LEFT_NAME_COLUMN = MENUS_MARGIN_LEFT;
|
||||
constexpr coord_t RIGHT_NAME_COLUMN = LCD_W / 2;
|
||||
@@ -28,6 +32,16 @@ bool menuRadioDiagAnalogs(event_t event)
|
||||
{
|
||||
SIMPLE_SUBMENU(STR_MENU_RADIO_ANALOGS, ICON_MODEL_SETUP, 0);
|
||||
|
||||
#if defined(HARDWARE_TOUCH)
|
||||
if (event == EVT_ENTRY || event == EVT_ENTRY_UP) {
|
||||
touchPanelInit();
|
||||
}
|
||||
else if (menuEvent) {
|
||||
touchPanelDeInit();
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
for (uint8_t i = 0; i < NUM_ANALOGS; i++) {
|
||||
coord_t y = MENU_HEADER_HEIGHT + 1 + (i / 2) * FH;
|
||||
uint8_t x = i & 1 ? LCD_W / 2 + 10 : LEFT_NAME_COLUMN;
|
||||
@@ -48,9 +62,24 @@ bool menuRadioDiagAnalogs(event_t event)
|
||||
#endif
|
||||
}
|
||||
|
||||
#if (NUM_PWMSTICKS > 0) && !defined(SIMU)
|
||||
#if defined(SIMU) || NUM_PWMSTICKS > 0
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 8 * FH, STICKS_PWM_ENABLED() ? "Sticks: PWM" : "Sticks: ANA");
|
||||
#endif
|
||||
|
||||
#if defined(HARDWARE_TOUCH)
|
||||
if (HAS_TOUCH_PANEL()) {
|
||||
lcdDrawText(MENUS_MARGIN_LEFT, MENU_CONTENT_TOP + 7 * FH, STR_TOUCH_PANEL);
|
||||
}
|
||||
|
||||
if (touchPanelEvent) {
|
||||
touchPanelRead();
|
||||
lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.x);
|
||||
lcdDrawText(lcdNextPos, MENU_CONTENT_TOP + 7 * FH, ", ");
|
||||
lcdDrawNumber(lcdNextPos + 1, MENU_CONTENT_TOP + 7 * FH, touchState.y);
|
||||
lcdDrawLine(touchState.x - 10, touchState.y - 8, touchState.x + 10, touchState.y + 8, SOLID);
|
||||
lcdDrawLine(touchState.x - 10, touchState.y + 8, touchState.x + 10, touchState.y - 8, SOLID);
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ class DarkblueTheme: public Theme
|
||||
lcdColorTable[TRIM_BGCOLOR_INDEX] = RGB(32, 34, 42);
|
||||
lcdColorTable[TRIM_SHADOW_COLOR_INDEX] = RGB(100, 100, 100);
|
||||
lcdColorTable[MAINVIEW_PANES_COLOR_INDEX] = GREY;
|
||||
lcdColorTable[MAINVIEW_GRAPHICS_COLOR_INDEX] = WHITE;
|
||||
lcdColorTable[MAINVIEW_GRAPHICS_COLOR_INDEX] = BLUE;
|
||||
lcdColorTable[HEADER_BGCOLOR_INDEX] = BLACK;
|
||||
lcdColorTable[HEADER_ICON_BGCOLOR_INDEX] = BLACK;
|
||||
lcdColorTable[HEADER_CURRENT_BGCOLOR_INDEX] = RGB(10, 78, 121);
|
||||
@@ -266,4 +266,7 @@ class DarkblueTheme: public Theme
|
||||
BitmapBuffer * DarkblueTheme::menuIconNormal[MENUS_ICONS_COUNT] = { NULL };
|
||||
BitmapBuffer * DarkblueTheme::menuIconSelected[MENUS_ICONS_COUNT] = { NULL };
|
||||
|
||||
const DarkblueTheme darkblueTheme;
|
||||
DarkblueTheme darkblueTheme;
|
||||
#if defined(DEFAULT_THEME_DARKBLUE)
|
||||
Theme * theme = &darkblueTheme;
|
||||
#endif
|
||||
@@ -353,4 +353,6 @@ BitmapBuffer * DefaultTheme::menuIconSelected[MENUS_ICONS_COUNT] = { NULL };
|
||||
BitmapBuffer * DefaultTheme::currentMenuBackground = NULL;
|
||||
|
||||
DefaultTheme defaultTheme;
|
||||
Theme * theme = &defaultTheme;
|
||||
#if defined(DEFAULT_THEME_DEFAULT)
|
||||
Theme * theme = &defaultTheme;
|
||||
#endif
|
||||
|
||||
@@ -91,15 +91,18 @@ void drawTopBar()
|
||||
/* Tx battery */
|
||||
uint8_t bars = GET_TXBATT_BARS(5);
|
||||
#if defined(USB_CHARGER)
|
||||
if(usbChargerLed())
|
||||
if (usbChargerLed() && BLINK_ON_PHASE) {
|
||||
lcdDrawBitmapPattern(LCD_W-130, 24, LBM_TOPMENU_TXBATT_CHARGING, MENU_TITLE_COLOR);
|
||||
else
|
||||
#endif
|
||||
lcdDrawBitmapPattern(LCD_W-130, 24, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR);
|
||||
for (unsigned int i = 0; i < 5; i++) {
|
||||
lcdDrawSolidFilledRect(LCD_W-122+4*i, 30, 2, 8, i >= bars ? MENU_TITLE_DISABLE_COLOR : MENU_TITLE_COLOR);
|
||||
}
|
||||
|
||||
else {
|
||||
#endif
|
||||
lcdDrawBitmapPattern(LCD_W - 130, 24, LBM_TOPMENU_TXBATT, MENU_TITLE_COLOR);
|
||||
for (unsigned int i = 0; i < 5; i++) {
|
||||
lcdDrawSolidFilledRect(LCD_W - 122 + 4 * i, 30, 2, 8, i >= bars ? MENU_TITLE_DISABLE_COLOR : MENU_TITLE_COLOR);
|
||||
}
|
||||
#if defined(USB_CHARGER)
|
||||
}
|
||||
#endif
|
||||
topbar->refresh();
|
||||
|
||||
#if 0
|
||||
|
||||
@@ -739,12 +739,12 @@ bool isTrainerModeAvailable(int mode)
|
||||
return g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER;
|
||||
#endif
|
||||
|
||||
#if defined(PCBX9E)
|
||||
if (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH)
|
||||
return false;
|
||||
#elif defined(BLUETOOTH)
|
||||
#if defined(BLUETOOTH) && !defined(PCBX9E)
|
||||
if (g_eeGeneral.bluetoothMode != BLUETOOTH_TRAINER && (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH))
|
||||
return false;
|
||||
#elif !defined(PCBSKY9X)
|
||||
if (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH)
|
||||
return false;
|
||||
#endif
|
||||
|
||||
#if defined(PCBXLITE) && !defined(PCBXLITES)
|
||||
|
||||
@@ -316,9 +316,9 @@ bool check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
||||
if (menuTab && !menuCalibrationState) {
|
||||
int cc = curr;
|
||||
switch (event) {
|
||||
#if defined(PCBX12S)
|
||||
#if defined(KEYS_GPIO_REG_PGUP)
|
||||
case EVT_KEY_FIRST(KEY_PGDN):
|
||||
#elif defined(PCBX10)
|
||||
#else
|
||||
case EVT_KEY_BREAK(KEY_PGDN):
|
||||
#endif
|
||||
if (s_editMode>0)
|
||||
@@ -328,8 +328,9 @@ bool check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
|
||||
cc = 0;
|
||||
break;
|
||||
|
||||
#if defined(KEYS_GPIO_REG_PGUP)
|
||||
case EVT_KEY_FIRST(KEY_PGUP):
|
||||
#if defined(PCBX10)
|
||||
#else
|
||||
case EVT_KEY_LONG(KEY_PGDN):
|
||||
#endif
|
||||
if (s_editMode>0)
|
||||
|
||||
@@ -293,9 +293,7 @@ void generalDefault()
|
||||
g_eeGeneral.stickMode = DEFAULT_MODE - 1;
|
||||
#endif
|
||||
|
||||
#if defined(FRSKY_RELEASE)
|
||||
g_eeGeneral.templateSetup = 17; /* TAER */
|
||||
#endif
|
||||
g_eeGeneral.templateSetup = DEFAULT_TEMPLATE_SETUP;
|
||||
|
||||
g_eeGeneral.backlightMode = e_backlight_mode_all;
|
||||
g_eeGeneral.lightAutoOff = 2;
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#elif defined(RADIO_T16)
|
||||
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,1, -1,1, -1,1};
|
||||
#elif defined(RADIO_TX16S)
|
||||
const int8_t adcDirection[NUM_ANALOGS] = {-1,1,-1,1, 1,1,1, -1,1, -1,1};
|
||||
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, 1,1,1, -1,1, -1,1};
|
||||
#elif defined(PCBX10)
|
||||
const int8_t adcDirection[NUM_ANALOGS] = {1,-1,1,-1, -1,1,-1, 1,1, 1, -1};
|
||||
#elif defined(PCBX9E)
|
||||
|
||||
@@ -61,10 +61,12 @@ if (PCB STREQUAL X10)
|
||||
add_definitions(-DRADIO_FAMILY_T16)
|
||||
option(INTERNAL_MODULE_MULTI "Support for MULTI internal module" ON)
|
||||
option(BLUETOOTH "Support for bluetooth module" OFF)
|
||||
set(HARDWARE_TOUCH YES)
|
||||
set(USB_CHARGER YES)
|
||||
set(DEFAULT_THEME "DARKBLUE")
|
||||
if (NOT BLUETOOTH)
|
||||
set(AUX_SERIAL ON)
|
||||
endif()
|
||||
set(USB_CHARGER YES)
|
||||
else()
|
||||
set(FLAVOUR x10)
|
||||
option(INTERNAL_MODULE_PXX1 "Support for PXX1 internal module" ON)
|
||||
@@ -114,6 +116,12 @@ add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK)
|
||||
add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE})
|
||||
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
|
||||
|
||||
if(DEFAULT_THEME)
|
||||
add_definitions(-DDEFAULT_THEME_${DEFAULT_THEME})
|
||||
else()
|
||||
add_definitions(-DDEFAULT_THEME_DEFAULT)
|
||||
endif()
|
||||
|
||||
if(NOT UNEXPECTED_SHUTDOWN)
|
||||
add_definitions(-DNO_UNEXPECTED_SHUTDOWN)
|
||||
endif()
|
||||
@@ -207,6 +215,13 @@ set(TARGET_SRC
|
||||
../common/arm/stm32/rotary_encoder_driver.cpp
|
||||
)
|
||||
|
||||
if(HARDWARE_TOUCH)
|
||||
set(TARGET_SRC ${TARGET_SRC}
|
||||
tp_gt911.cpp
|
||||
)
|
||||
add_definitions(-DHARDWARE_TOUCH)
|
||||
endif()
|
||||
|
||||
if(USB_CHARGER)
|
||||
set(TARGET_SRC ${TARGET_SRC} usb_charger_driver.cpp)
|
||||
add_definitions(-DUSB_CHARGER)
|
||||
|
||||
@@ -103,9 +103,11 @@ void boardInit()
|
||||
HAPTIC_RCC_AHB1Periph |
|
||||
INTMODULE_RCC_AHB1Periph |
|
||||
EXTMODULE_RCC_AHB1Periph |
|
||||
I2C_TOUCH_RCC_AHB1Periph |
|
||||
I2C_RCC_AHB1Periph |
|
||||
GPS_RCC_AHB1Periph |
|
||||
SPORT_UPDATE_RCC_AHB1Periph,
|
||||
SPORT_UPDATE_RCC_AHB1Periph |
|
||||
TOUCH_INT_RCC_AHB1Periph |
|
||||
TOUCH_RST_RCC_AHB1Periph,
|
||||
ENABLE);
|
||||
|
||||
RCC_APB1PeriphClockCmd(ROTARY_ENCODER_RCC_APB1Periph |
|
||||
@@ -119,7 +121,7 @@ void boardInit()
|
||||
AUDIO_RCC_APB1Periph |
|
||||
INTMODULE_RCC_APB1Periph |
|
||||
EXTMODULE_RCC_APB1Periph |
|
||||
I2C_TOUCH_RCC_APB1Periph |
|
||||
I2C_RCC_APB1Periph |
|
||||
GPS_RCC_APB1Periph |
|
||||
BACKLIGHT_RCC_APB1Periph,
|
||||
ENABLE);
|
||||
@@ -189,6 +191,10 @@ void boardInit()
|
||||
|
||||
ledInit();
|
||||
|
||||
#if defined(USB_CHARGER)
|
||||
usbChargerInit();
|
||||
#endif
|
||||
|
||||
#if HAS_SPORT_UPDATE_CONNECTOR()
|
||||
sportUpdateInit();
|
||||
#endif
|
||||
@@ -235,8 +241,14 @@ void boardOff()
|
||||
pwrOff();
|
||||
}
|
||||
|
||||
#if defined (RADIO_TX16S)
|
||||
#define BATTERY_DIVIDER 1495
|
||||
#else
|
||||
#define BATTERY_DIVIDER 1629
|
||||
#endif
|
||||
|
||||
uint16_t getBatteryVoltage()
|
||||
{
|
||||
int32_t instant_vbat = anaIn(TX_VOLTAGE); // using filtered ADC value on purpose
|
||||
return (uint16_t)((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration)) / 1629);
|
||||
return (uint16_t)((instant_vbat * (1000 + g_eeGeneral.txVoltageCalibration)) / BATTERY_DIVIDER);
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ static void bootloaderDrawFooter()
|
||||
void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
|
||||
{
|
||||
// clear screen
|
||||
lcdDrawSolidFilledRect(0, 0, LCD_W-1, LCD_H-1, TEXT_BGCOLOR);
|
||||
lcdDrawSolidFilledRect(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR);
|
||||
|
||||
if (st == ST_START) {
|
||||
|
||||
|
||||
@@ -182,10 +182,17 @@
|
||||
#define TRIMS_GPIO_REG_LSU GPIOB->IDR
|
||||
#define TRIMS_GPIO_PIN_LSU GPIO_Pin_13 // PB.13
|
||||
#elif defined(PCBX10)
|
||||
#define TRIMS_GPIO_REG_LHL GPIOB->IDR
|
||||
#define TRIMS_GPIO_PIN_LHL GPIO_Pin_8 // PB.08
|
||||
#define TRIMS_GPIO_REG_LHR GPIOB->IDR
|
||||
#define TRIMS_GPIO_PIN_LHR GPIO_Pin_9 // PB.09
|
||||
#if defined(RADIO_TX16S)
|
||||
#define TRIMS_GPIO_REG_LHL GPIOA->IDR
|
||||
#define TRIMS_GPIO_PIN_LHL GPIO_Pin_6 // PA.06
|
||||
#define TRIMS_GPIO_REG_LHR GPIOC->IDR
|
||||
#define TRIMS_GPIO_PIN_LHR GPIO_Pin_4 // PC.04
|
||||
#else
|
||||
#define TRIMS_GPIO_REG_LHL GPIOB->IDR
|
||||
#define TRIMS_GPIO_PIN_LHL GPIO_Pin_8 // PB.08
|
||||
#define TRIMS_GPIO_REG_LHR GPIOB->IDR
|
||||
#define TRIMS_GPIO_PIN_LHR GPIO_Pin_9 // PB.09
|
||||
#endif
|
||||
#define TRIMS_GPIO_REG_LVD GPIOG->IDR
|
||||
#define TRIMS_GPIO_PIN_LVD GPIO_Pin_12 // PG.12
|
||||
#define TRIMS_GPIO_REG_LVU GPIOJ->IDR
|
||||
@@ -226,14 +233,21 @@
|
||||
#define KEYS_GPIOI_PINS (KEYS_GPIO_PIN_PGDN | KEYS_GPIO_PIN_LEFT | KEYS_GPIO_PIN_DOWN | SWITCHES_GPIO_PIN_A_L | GPIO_Pin_4)
|
||||
#define KEYS_GPIOJ_PINS (SWITCHES_GPIO_PIN_D_H | TRIMS_GPIO_PIN_RVU | TRIMS_GPIO_PIN_LVD | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_RSD)
|
||||
#elif defined(PCBX10)
|
||||
#define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9)
|
||||
#if defined(RADIO_TX16S)
|
||||
#define KEYS_GPIOC_PINS (GPIO_Pin_13)
|
||||
#endif
|
||||
#if defined(RADIO_TX16S)
|
||||
#define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13)
|
||||
#else
|
||||
#define KEYS_GPIOB_PINS (GPIO_Pin_12 | GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_8 | GPIO_Pin_9)
|
||||
#endif
|
||||
#define KEYS_GPIOD_PINS (GPIO_Pin_11 | GPIO_Pin_3 | GPIO_Pin_7 | GPIO_Pin_13)
|
||||
#define KEYS_GPIOE_PINS (GPIO_Pin_3)
|
||||
#define KEYS_GPIOG_PINS (SWITCHES_GPIO_PIN_D_L | SWITCHES_GPIO_PIN_G_H | SWITCHES_GPIO_PIN_G_L | SWITCHES_GPIO_PIN_H | TRIMS_GPIO_PIN_LVD)
|
||||
#if defined(RADIO_TX16S)
|
||||
#define KEYS_GPIOA_PINS (GPIO_Pin_6)
|
||||
#define KEYS_GPIOC_PINS (GPIO_Pin_4 | GPIO_Pin_13)
|
||||
#define KEYS_GPIOH_PINS (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||
#else
|
||||
#define KEYS_GPIOH_PINS (GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15)
|
||||
#endif
|
||||
#define KEYS_GPIOI_PINS (GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_11 | GPIO_Pin_15)
|
||||
#define KEYS_GPIOJ_PINS (SWITCHES_GPIO_PIN_D_H | TRIMS_GPIO_PIN_LVU | TRIMS_GPIO_PIN_RVD | TRIMS_GPIO_PIN_RVU | GPIO_Pin_8)
|
||||
#endif
|
||||
@@ -306,7 +320,9 @@
|
||||
#define ADC_DMA_Stream DMA2_Stream0
|
||||
#define ADC_SET_DMA_FLAGS() ADC_DMA->LIFCR = (DMA_LIFCR_CTCIF0 | DMA_LIFCR_CHTIF0 | DMA_LIFCR_CTEIF0 | DMA_LIFCR_CDMEIF0 | DMA_LIFCR_CFEIF0)
|
||||
#define ADC_TRANSFER_COMPLETE() (ADC_DMA->LISR & DMA_LISR_TCIF0)
|
||||
#if defined(RADIO_FAMILY_T16)
|
||||
#if defined(RADIO_TX16S)
|
||||
#define ADC_VREF_PREC2 330
|
||||
#elif defined(RADIO_T16)
|
||||
#define ADC_VREF_PREC2 300
|
||||
#else
|
||||
#define ADC_VREF_PREC2 250
|
||||
@@ -325,6 +341,7 @@
|
||||
#define USB_CHARGER_RCC_AHB1Periph RCC_AHB1Periph_GPIOG
|
||||
#define USB_CHARGER_GPIO GPIOG
|
||||
#define USB_CHARGER_GPIO_PIN GPIO_Pin_11 // PG.11
|
||||
#define USB_USBDet_GPIO_PIN GPIO_Pin_13 // PG.13
|
||||
#else
|
||||
#define USB_CHARGER_RCC_AHB1Periph 0
|
||||
#endif
|
||||
@@ -620,11 +637,34 @@
|
||||
#define AUDIO_MUTE_DELAY 500 // ms
|
||||
#endif
|
||||
|
||||
// I2C Bus
|
||||
#if defined(RADIO_TX16S)
|
||||
#define I2C_RCC_AHB1Periph 0
|
||||
#define I2C_RCC_APB1Periph 0
|
||||
// Only slight noise with 868MHz > 1W, if complaints later remove and set AUDIO_UNMUTE_DELAY to 150
|
||||
#undef AUDIO_MUTE_GPIO_PIN
|
||||
#endif
|
||||
|
||||
// Touch
|
||||
#if defined(HARDWARE_TOUCH)
|
||||
#define TOUCH_INT_RCC_AHB1Periph RCC_AHB1Periph_GPIOH
|
||||
#define TOUCH_INT_GPIO GPIOH
|
||||
#define TOUCH_INT_GPIO_PIN GPIO_Pin_2 // PH.02
|
||||
|
||||
#define TOUCH_RST_RCC_AHB1Periph RCC_AHB1Periph_GPIOF
|
||||
#define TOUCH_RST_GPIO GPIOF
|
||||
#define TOUCH_RST_GPIO_PIN GPIO_Pin_10 // PF.10
|
||||
|
||||
#define TOUCH_INT_EXTI_LINE1 EXTI_Line2
|
||||
#define TOUCH_INT_EXTI_IRQn1 EXTI2_IRQn
|
||||
#define TOUCH_INT_EXTI_IRQHandler1 EXTI2_IRQHandler
|
||||
#define TOUCH_INT_EXTI_PortSource EXTI_PortSourceGPIOH
|
||||
#define TOUCH_INT_EXTI_PinSource1 EXTI_PinSource2
|
||||
|
||||
#define TOUCH_INT_STATUS() (GPIO_ReadInputDataBit(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN))
|
||||
#else
|
||||
#define TOUCH_INT_RCC_AHB1Periph 0
|
||||
#define TOUCH_RST_RCC_AHB1Periph 0
|
||||
#endif
|
||||
|
||||
// I2C Bus
|
||||
#define I2C_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
|
||||
#define I2C_RCC_APB1Periph RCC_APB1Periph_I2C1
|
||||
#define I2C I2C1
|
||||
@@ -635,7 +675,6 @@
|
||||
#define I2C_SCL_GPIO_PinSource GPIO_PinSource8
|
||||
#define I2C_SDA_GPIO_PinSource GPIO_PinSource9
|
||||
#define I2C_SPEED 400000
|
||||
#endif
|
||||
|
||||
// Haptic
|
||||
#define HAPTIC_PWM
|
||||
@@ -828,24 +867,6 @@
|
||||
#define TIMER_2MHz_RCC_APB1Periph RCC_APB1Periph_TIM7
|
||||
#define TIMER_2MHz_TIMER TIM7
|
||||
|
||||
// Touch
|
||||
#if defined(HARDWARE_TOUCH)
|
||||
#define I2C_TOUCH_RCC_AHB1Periph RCC_AHB1Periph_GPIOB
|
||||
#define I2C_TOUCH_RCC_APB1Periph RCC_APB1Periph_I2C1
|
||||
#define I2C_TOUCH I2C1
|
||||
#define I2C_TOUCH_GPIO GPIOB
|
||||
#define I2C_TOUCH_SCL_GPIO_PIN GPIO_Pin_8 // PB.08
|
||||
#define I2C_TOUCH_SDA_GPIO_PIN GPIO_Pin_7 // PB.07
|
||||
|
||||
#define I2C_TOUCH_RESET_GPIO GPIOF
|
||||
#define I2C_TOUCH_RESET_GPIO_PIN GPIO_Pin_10 // PF.10
|
||||
#define I2C_TOUCH_INT_GPIO GPIOH
|
||||
#define I2C_TOUCH_INT_GPIO_PIN GPIO_Pin_2 // PH.02
|
||||
#else
|
||||
#define I2C_TOUCH_RCC_AHB1Periph 0
|
||||
#define I2C_TOUCH_RCC_APB1Periph 0
|
||||
#endif
|
||||
|
||||
// Bluetooth
|
||||
#define STORAGE_BLUETOOTH
|
||||
#if defined(BLUETOOTH)
|
||||
|
||||
Regular → Executable
+23
@@ -204,16 +204,39 @@ void keysInit()
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
|
||||
#if defined(KEYS_GPIOA_PINS)
|
||||
INIT_KEYS_PINS(GPIOA);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOB_PINS)
|
||||
INIT_KEYS_PINS(GPIOB);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOC_PINS)
|
||||
INIT_KEYS_PINS(GPIOC);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOD_PINS)
|
||||
INIT_KEYS_PINS(GPIOD);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOE_PINS)
|
||||
INIT_KEYS_PINS(GPIOE);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOG_PINS)
|
||||
INIT_KEYS_PINS(GPIOG);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOH_PINS)
|
||||
INIT_KEYS_PINS(GPIOH);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOI_PINS)
|
||||
INIT_KEYS_PINS(GPIOI);
|
||||
#endif
|
||||
|
||||
#if defined(KEYS_GPIOJ_PINS)
|
||||
INIT_KEYS_PINS(GPIOJ);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -0,0 +1,412 @@
|
||||
/*
|
||||
* 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 "tp_gt911.h"
|
||||
|
||||
uint8_t touchGT911Flag = 0;
|
||||
uint8_t touchPanelEvent = 0;
|
||||
struct TouchData touchData;
|
||||
struct TouchState touchState;
|
||||
|
||||
void GT911_INT_Change(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = TOUCH_INT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_Init(TOUCH_INT_GPIO, &GPIO_InitStructure);
|
||||
}
|
||||
|
||||
uint8_t GT911_Send_Cfg(uint8_t mode)
|
||||
{
|
||||
uint8_t buf[2];
|
||||
uint8_t i = 0;
|
||||
buf[0] = 0;
|
||||
buf[1] = mode;
|
||||
for (i = 0; i < sizeof(GT911_Cfg); i++)
|
||||
buf[0] += GT911_Cfg[i];//check sum
|
||||
|
||||
buf[0] = (~buf[0]) + 1;
|
||||
gt911WriteRegister(GT_CFGS_REG, (uint8_t *) GT911_Cfg, sizeof(GT911_Cfg));//
|
||||
gt911WriteRegister(GT_CHECK_REG, buf, 2);//write checksum
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void I2C_Config(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
RCC_AHB1PeriphClockCmd(I2C_RCC_AHB1Periph, ENABLE);
|
||||
GPIO_InitStructure.GPIO_Pin = I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(I2C_GPIO, &GPIO_InitStructure);
|
||||
|
||||
GPIO_SetBits(I2C_GPIO, I2C_SCL_GPIO_PIN | I2C_SDA_GPIO_PIN);
|
||||
}
|
||||
|
||||
static void TOUCH_AF_ExtiStop(void)
|
||||
{
|
||||
SYSCFG_EXTILineConfig(TOUCH_INT_EXTI_PortSource, TOUCH_INT_EXTI_PinSource1);
|
||||
|
||||
EXTI_InitTypeDef EXTI_InitStructure;
|
||||
EXTI_StructInit(&EXTI_InitStructure);
|
||||
EXTI_InitStructure.EXTI_Line = TOUCH_INT_EXTI_LINE1;
|
||||
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
||||
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
|
||||
EXTI_InitStructure.EXTI_LineCmd = DISABLE;
|
||||
EXTI_Init(&EXTI_InitStructure);
|
||||
|
||||
|
||||
NVIC_InitTypeDef NVIC_InitStructure;
|
||||
NVIC_InitStructure.NVIC_IRQChannel = TOUCH_INT_EXTI_IRQn1;
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 9;
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /* Not used as 4 bits are used for the pre-emption priority. */;
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE;
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
}
|
||||
|
||||
static void TOUCH_AF_ExtiConfig(void)
|
||||
{
|
||||
SYSCFG_EXTILineConfig(TOUCH_INT_EXTI_PortSource, TOUCH_INT_EXTI_PinSource1);
|
||||
|
||||
EXTI_InitTypeDef EXTI_InitStructure;
|
||||
EXTI_StructInit(&EXTI_InitStructure);
|
||||
EXTI_InitStructure.EXTI_Line = TOUCH_INT_EXTI_LINE1;
|
||||
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
||||
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
|
||||
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
||||
EXTI_Init(&EXTI_InitStructure);
|
||||
|
||||
|
||||
NVIC_InitTypeDef NVIC_InitStructure;
|
||||
NVIC_InitStructure.NVIC_IRQChannel = TOUCH_INT_EXTI_IRQn1;
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 9;
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /* Not used as 4 bits are used for the pre-emption priority. */;
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
}
|
||||
|
||||
static void TOUCH_AF_GPIOConfig(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Pin = TOUCH_RST_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(TOUCH_RST_GPIO, &GPIO_InitStructure);
|
||||
|
||||
GPIO_ResetBits(TOUCH_RST_GPIO, TOUCH_RST_GPIO_PIN);
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = TOUCH_INT_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(TOUCH_INT_GPIO, &GPIO_InitStructure);
|
||||
|
||||
GPIO_ResetBits(TOUCH_INT_GPIO, TOUCH_INT_GPIO_PIN);
|
||||
}
|
||||
|
||||
void SDA_IN(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Pin = I2C_SDA_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(I2C_GPIO, &GPIO_InitStructure);
|
||||
}
|
||||
|
||||
void SDA_OUT(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Pin = I2C_SDA_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(I2C_GPIO, &GPIO_InitStructure);
|
||||
}
|
||||
|
||||
void I2C_Start(void)
|
||||
{
|
||||
SDA_OUT();
|
||||
I2C_SDA_H();
|
||||
I2C_SCL_H();
|
||||
delay_us(2);
|
||||
I2C_SDA_L();//START:when CLK is high,DATA change form high to low
|
||||
delay_us(2);
|
||||
I2C_SCL_L();//
|
||||
delay_us(2);
|
||||
}
|
||||
|
||||
void I2C_Stop(void)
|
||||
{
|
||||
SDA_OUT();
|
||||
I2C_SCL_L();
|
||||
I2C_SDA_L();//STOP:when CLK is high DATA change form low to high
|
||||
delay_us(2);
|
||||
I2C_SCL_H();
|
||||
I2C_SDA_H();//
|
||||
delay_us(2);
|
||||
}
|
||||
|
||||
uint8_t I2C_Wait_Ack(void)
|
||||
{
|
||||
uint8_t ucErrTime = 0;
|
||||
SDA_IN();
|
||||
I2C_SDA_H();
|
||||
delay_us(2);
|
||||
I2C_SCL_H();
|
||||
while (READ_SDA) {
|
||||
ucErrTime++;
|
||||
if (ucErrTime > 166) {
|
||||
I2C_Stop();
|
||||
return 1;
|
||||
}
|
||||
delay_us(1);
|
||||
}
|
||||
I2C_SDA_L();
|
||||
I2C_SCL_L();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void I2C_Ack(void)
|
||||
{
|
||||
I2C_SCL_L();
|
||||
SDA_OUT();
|
||||
I2C_SDA_L();
|
||||
delay_us(2);
|
||||
I2C_SCL_H();
|
||||
delay_us(2);
|
||||
I2C_SCL_L();
|
||||
}
|
||||
|
||||
void I2C_NAck(void)
|
||||
{
|
||||
I2C_SCL_L();
|
||||
SDA_OUT();
|
||||
I2C_SDA_H();
|
||||
delay_us(2);
|
||||
I2C_SCL_H();
|
||||
delay_us(2);
|
||||
I2C_SCL_L();
|
||||
}
|
||||
|
||||
void I2C_Send_Byte(uint8_t txd)
|
||||
{
|
||||
uint8_t t;
|
||||
|
||||
SDA_OUT();
|
||||
I2C_SCL_L();
|
||||
for (t = 0; t < 8; t++) {
|
||||
if ((txd & 0x80) >> 7)
|
||||
I2C_SDA_H();
|
||||
else
|
||||
I2C_SDA_L();
|
||||
txd <<= 1;
|
||||
delay_us(1);
|
||||
I2C_SCL_H();
|
||||
delay_us(2);
|
||||
I2C_SCL_L();
|
||||
delay_us(1);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t I2C_Read_Byte(unsigned char ack)
|
||||
{
|
||||
unsigned char i, receive = 0;
|
||||
|
||||
SDA_IN();
|
||||
for (i = 0; i < 8; i++) {
|
||||
I2C_SCL_L();
|
||||
delay_us(2);
|
||||
I2C_SCL_H();
|
||||
receive <<= 1;
|
||||
if (READ_SDA)receive++;
|
||||
delay_us(1);
|
||||
}
|
||||
if (!ack)
|
||||
I2C_NAck();
|
||||
else
|
||||
I2C_Ack();
|
||||
return receive;
|
||||
}
|
||||
|
||||
uint8_t gt911WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len)
|
||||
{
|
||||
{
|
||||
uint8_t i;
|
||||
uint8_t ret = 0;
|
||||
|
||||
I2C_Start();
|
||||
I2C_Send_Byte(GT_CMD_WR); //send cmd
|
||||
I2C_Wait_Ack();
|
||||
I2C_Send_Byte(reg >> 8); //send hi
|
||||
I2C_Wait_Ack();
|
||||
I2C_Send_Byte(reg & 0XFF); //send low
|
||||
I2C_Wait_Ack();
|
||||
for (i = 0; i < len; i++) {
|
||||
I2C_Send_Byte(buf[i]);
|
||||
ret = I2C_Wait_Ack();
|
||||
if (ret)break;
|
||||
}
|
||||
I2C_Stop();
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
void gt911ReadRegister(u16 reg, uint8_t * buf, uint8_t len)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
I2C_Start();
|
||||
I2C_Send_Byte(GT_CMD_WR); //send addr
|
||||
I2C_Wait_Ack();
|
||||
I2C_Send_Byte(reg >> 8); //send hi
|
||||
I2C_Wait_Ack();
|
||||
I2C_Send_Byte(reg & 0XFF); //send low
|
||||
I2C_Wait_Ack();
|
||||
I2C_Start();
|
||||
I2C_Send_Byte(GT_CMD_RD); //send rd
|
||||
I2C_Wait_Ack();
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
buf[i] = I2C_Read_Byte(i == (len - 1) ? 0 : 1); //send data
|
||||
}
|
||||
I2C_Stop();
|
||||
}
|
||||
|
||||
void touchPanelDeInit(void)
|
||||
{
|
||||
TOUCH_AF_ExtiStop();
|
||||
}
|
||||
|
||||
bool touchPanelInit(void)
|
||||
{
|
||||
uint8_t tmp[4] = {0};
|
||||
|
||||
TRACE("Touchpanel init start ...");
|
||||
|
||||
TOUCH_AF_GPIOConfig(); //SET RST=OUT INT=OUT INT=LOW
|
||||
I2C_Config();
|
||||
|
||||
TPRST_LOW();
|
||||
TPINT_HIGH();
|
||||
delay_us(200);
|
||||
|
||||
TPRST_HIGH();
|
||||
delay_ms(6);
|
||||
|
||||
TPINT_LOW();
|
||||
delay_ms(55);
|
||||
|
||||
GT911_INT_Change(); //Set INT INPUT INT=LOW
|
||||
|
||||
delay_ms(50);
|
||||
|
||||
TRACE("Reading Touch registry");
|
||||
gt911ReadRegister(GT_PID_REG, tmp, 4);
|
||||
|
||||
if (strcmp((char *) tmp, "911") == 0) //ID==9147
|
||||
{
|
||||
TRACE("GT911 chip detected");
|
||||
tmp[0] = 0X02;
|
||||
gt911WriteRegister(GT_CTRL_REG, tmp, 1);
|
||||
gt911ReadRegister(GT_CFGS_REG, tmp, 1);
|
||||
|
||||
TRACE("Chip config Ver:%x\r\n",tmp[0]);
|
||||
if (tmp[0] < GT911_CFG_NUMER) //Config ver
|
||||
{
|
||||
TRACE("Sending new config %d", GT911_CFG_NUMER);
|
||||
GT911_Send_Cfg(1);
|
||||
}
|
||||
|
||||
delay_ms(10);
|
||||
tmp[0] = 0X00;
|
||||
gt911WriteRegister(GT_CTRL_REG, tmp, 1); //end reset
|
||||
touchGT911Flag = true;
|
||||
|
||||
TOUCH_AF_ExtiConfig();
|
||||
|
||||
return true;
|
||||
}
|
||||
TRACE("GT911 chip NOT FOUND");
|
||||
return false;
|
||||
}
|
||||
|
||||
void touchPanelRead()
|
||||
{
|
||||
uint8_t state = 0;
|
||||
gt911ReadRegister(GT911_READ_XY_REG, &state, 1);
|
||||
|
||||
touchPanelEvent = false;
|
||||
|
||||
if ((state & 0x80u) == 0x00) {
|
||||
// not ready
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t pointsCount = (state & 0x0Fu);
|
||||
|
||||
if (pointsCount > 0 && pointsCount < GT911_MAX_TP) {
|
||||
gt911ReadRegister(GT911_READ_XY_REG + 1, touchData.data, pointsCount * sizeof(TouchPoint));
|
||||
if (touchData.pointsCount == 0) {
|
||||
touchState.event = TE_DOWN;
|
||||
touchState.startX = touchState.x = touchData.points[0].x;
|
||||
touchState.startY = touchState.y = touchData.points[0].y;
|
||||
}
|
||||
else {
|
||||
touchState.deltaX = touchData.points[0].x - touchState.x;
|
||||
touchState.deltaY = touchData.points[0].y - touchState.y;
|
||||
if (touchState.event == TE_SLIDE || abs(touchState.deltaX) >= SLIDE_RANGE || abs(touchState.deltaY) >= SLIDE_RANGE) {
|
||||
touchState.event = TE_SLIDE;
|
||||
touchState.x = touchData.points[0].x;
|
||||
touchState.y = touchData.points[0].y;
|
||||
}
|
||||
}
|
||||
touchData.pointsCount = pointsCount;
|
||||
}
|
||||
else {
|
||||
if (touchData.pointsCount > 0) {
|
||||
touchData.pointsCount = 0;
|
||||
if (touchState.event == TE_SLIDE)
|
||||
touchState.event = TE_SLIDE_END;
|
||||
else
|
||||
touchState.event = TE_UP;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t zero = 0;
|
||||
gt911WriteRegister(GT911_READ_XY_REG, &zero, 1);
|
||||
}
|
||||
|
||||
extern "C" void TOUCH_INT_EXTI_IRQHandler1(void)
|
||||
{
|
||||
if (EXTI_GetITStatus(TOUCH_INT_EXTI_LINE1) != RESET) {
|
||||
TRACE("TI");
|
||||
touchPanelEvent = 1;
|
||||
EXTI_ClearITPendingBit(TOUCH_INT_EXTI_LINE1);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,296 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _FT5X06_H_
|
||||
#define _FT5X06_H_
|
||||
|
||||
#include "opentx.h"
|
||||
#include "touch.h"
|
||||
|
||||
#define HAS_TOUCH_PANEL() touchGT911Flag == true
|
||||
|
||||
bool touchPanelInit();
|
||||
void touchPanelDeInit();
|
||||
|
||||
extern uint8_t touchGT911Flag;
|
||||
extern uint8_t touchPanelEvent;
|
||||
|
||||
uint8_t gt911WriteRegister(uint16_t reg, uint8_t * buf, uint8_t len);
|
||||
void gt911ReadRegister(uint16_t reg, uint8_t * buf, uint8_t len);
|
||||
void touchPanelRead();
|
||||
|
||||
#define GT911_MAX_TP 5
|
||||
#define GT911_CFG_NUMER 0x6A
|
||||
|
||||
//GT911 param table
|
||||
const uint8_t GT911_Cfg[] =
|
||||
{
|
||||
GT911_CFG_NUMER, // 0x8047 Config version
|
||||
0xE0, // 0x8048 X output map : x 480
|
||||
0x01,
|
||||
0x10, // 0x804A Y ouptut max : y 272
|
||||
0x01,
|
||||
GT911_MAX_TP, // 0x804C Touch number
|
||||
0x3C, // 0x804D Module switch 1 : bit4= xy change Int mode
|
||||
0x20, // 0x804E Module switch 2
|
||||
0x22, // 0x804F Shake_Count
|
||||
0x0A, // 0x8050 Filter
|
||||
0x28, // 0x8051 Larger touch
|
||||
0x0F, // 0x8052 Noise reduction
|
||||
0x5A, // 0x8053 Screen touch level
|
||||
0x3C, // 0x8054 Screen touch leave
|
||||
0x03, // 0x8055 Low power control
|
||||
0x05, // 0x8056 Refresh rate
|
||||
0x00, // 0x8057 X threshold
|
||||
0x00, // 0x8058 Y threshold
|
||||
0x00, // 0x8059 Reserved
|
||||
0x00, // 0x805A Reserved
|
||||
0x11, // 0x805B Space (top, bottom)
|
||||
0x11, // 0x805C Space (left, right)
|
||||
0x08, // 0x805D Mini filter
|
||||
0x18, // 0x805E Strech R0
|
||||
0x1A, // 0x805F Strech R1
|
||||
0x1E, // 0x8060 Strech R2
|
||||
0x14, // 0x8061 Strech RM
|
||||
0x87, // 0x8062 Drv groupA num
|
||||
0x29, // 0x8063 Drv groupB num
|
||||
0x0A, // 0x8064 Sensor num
|
||||
0xCF, // 0x8065 FreqA factor
|
||||
0xD1, // 0x8066 FreqB factor
|
||||
0xB2, // 0x8067 Panel bit freq
|
||||
0x04,
|
||||
0x00, // 0x8069 Reserved
|
||||
0x00,
|
||||
0x00, // 0x806B Panel tx gain
|
||||
0xD8, // 0x806C Panel rx gain
|
||||
0x02, // 0x806D Panel dump shift
|
||||
0x1D, // 0x806E Drv frame control
|
||||
0x00, // 0x806F Charging level up
|
||||
0x01, // 0x8070 Module switch 3
|
||||
0x00, // 0x8071 Gesture distance
|
||||
0x00, // 0x8072 Gesture long press time
|
||||
0x00, // 0x8073 X/Y slope adjust
|
||||
0x00, // 0x8074 Gesture control
|
||||
0x00, // 0x8075 Gesture switch 1
|
||||
0x00, // 0x8076 Gesture switch 2
|
||||
0x00, // 0x8077 Gesture refresh rate
|
||||
0x00, // 0x8078 Gesture touch level
|
||||
0x00, // 0x8079 New green wake up level
|
||||
0xB4, // 0x807A Freq hopping start
|
||||
0xEF, // 0x807B Freq hopping end
|
||||
0x94, // 0x807C Noise detect time
|
||||
0xD5, // 0x807D Hopping flag
|
||||
0x02, // 0x807E Hopping flag
|
||||
0x07, // 0x807F Noise threshold
|
||||
0x00, // 0x8080 Nois min threshold old
|
||||
0x00, // 0x8081 Reserved
|
||||
0x04, // 0x8082 Hopping sensor group
|
||||
0x6E, // 0x8083 Hopping Seg1 normalize
|
||||
0xB9, // 0x8084 Hopping Seg1 factor
|
||||
0x00, // 0x8085 Main clock adjust
|
||||
0x6A, // 0x8086 Hopping Seg2 normalize
|
||||
0xC4, // 0x8087 Hopping Seg2 factor
|
||||
0x00, // 0x8088 Reserved
|
||||
0x66, // 0x8089 Hopping Seg3 normalize
|
||||
0xCF, // 0x808A Hopping Seg3 factor
|
||||
0x00, // 0x808B Reserved
|
||||
0x62, // 0x808C Hopping Seg4 normalize
|
||||
0xDB, // 0x808D Hopping Seg4 factor
|
||||
0x00, // 0x808E Reserved
|
||||
0x5E, // 0x808F Hopping Seg5 normalize
|
||||
0xE8, // 0x8090 Hopping Seg5 factor
|
||||
0x00, // 0x8091 Reserved
|
||||
0x5E, // 0x8092 Hopping Seg6 normalize
|
||||
0x00, // 0x8093 Key1
|
||||
0x00, // 0x8094 Key2
|
||||
0x00, // 0x8095 Key3
|
||||
0x00, // 0x8096 Key4
|
||||
0x00, // 0x8097 Key area
|
||||
0x00, // 0x8098 Key touch level
|
||||
0x00, // 0x8099 Key leave level
|
||||
0x00, // 0x809A Key sens
|
||||
0x00, // 0x809B Key sens
|
||||
0x00, // 0x809C Key restrain
|
||||
0x00, // 0x809D Key restrain time
|
||||
0x00, // 0x809E Large gesture touch
|
||||
0x00, // 0x809F Reserved
|
||||
0x00, // 0x80A0 Reserved
|
||||
0x00, // 0x80A1 Hotknot noise map
|
||||
0x00, // 0x80A2 Link threshold
|
||||
0x00, // 0x80A3 Pxy threshold
|
||||
0x00, // 0x80A4 GHot dump shift
|
||||
0x00, // 0x80A5 GHot rx gain
|
||||
0x00, // 0x80A6 Freg gain
|
||||
0x00, // 0x80A7 Freg gain 1
|
||||
0x00, // 0x80A8 Freg gain 2
|
||||
0x00, // 0x80A9 Freg gain 3
|
||||
0x00, // 0x80AA Reserved
|
||||
0x00, // 0x80AB Reserved
|
||||
0x00, // 0x80AC Reserved
|
||||
0x00, // 0x80AD Reserved
|
||||
0x00, // 0x80AE Reserved
|
||||
0x00, // 0x80AF Reserved
|
||||
0x00, // 0x80B0 Reserved
|
||||
0x00, // 0x80B1 Reserved
|
||||
0x00, // 0x80B2 Reserved
|
||||
0x00, // 0x80B3 Combine dis
|
||||
0x00, // 0x80B4 Split set
|
||||
0x00, // 0x80B5 Reserved
|
||||
0x00, // 0x80B6 Reserved
|
||||
0x14, // 0x80B7 Sensor CH0
|
||||
0x12, // 0x80B8 Sensor CH1
|
||||
0x10, // 0x80B9 Sensor CH2
|
||||
0x0E, // 0x80BA Sensor CH3
|
||||
0x0C, // 0x80BB Sensor CH4
|
||||
0x0A, // 0x80BC Sensor CH5
|
||||
0x08, // 0x80BD Sensor CH6
|
||||
0x06, // 0x80BE Sensor CH7
|
||||
0x04, // 0x80BF Sensor CH8
|
||||
0x02, // 0x80C0 Sensor CH9
|
||||
0xFF, // 0x80C1 Sensor CH10
|
||||
0xFF, // 0x80C2 Sensor CH11
|
||||
0xFF, // 0x80C3 Sensor CH12
|
||||
0xFF, // 0x80C4 Sensor CH13
|
||||
0x00, // 0x80C5 Reserved
|
||||
0x00, // 0x80C6 Reserved
|
||||
0x00, // 0x80C7 Reserved
|
||||
0x00, // 0x80C8 Reserved
|
||||
0x00, // 0x80C9 Reserved
|
||||
0x00, // 0x80CA Reserved
|
||||
0x00, // 0x80CB Reserved
|
||||
0x00, // 0x80CC Reserved
|
||||
0x00, // 0x80CD Reserved
|
||||
0x00, // 0x80CE Reserved
|
||||
0x00, // 0x80CF Reserved
|
||||
0x00, // 0x80D0 Reserved
|
||||
0x00, // 0x80D1 Reserved
|
||||
0x00, // 0x80D2 Reserved
|
||||
0x00, // 0x80D3 Reserved
|
||||
0x00, // 0x80D4 Reserved
|
||||
0x28, // 0x80D5 Driver CH0
|
||||
0x26, // 0x80D6 Driver CH1
|
||||
0x24, // 0x80D7 Driver CH2
|
||||
0x22, // 0x80D8 Driver CH3
|
||||
0x21, // 0x80D9 Driver CH4
|
||||
0x20, // 0x80DA Driver CH5
|
||||
0x1F, // 0x80DB Driver CH6
|
||||
0x1E, // 0x80DC Driver CH7
|
||||
0x1D, // 0x80DD Driver CH8
|
||||
0x0C, // 0x80DE Driver CH9
|
||||
0x0A, // 0x80DF Driver CH10
|
||||
0x08, // 0x80E0 Driver CH11
|
||||
0x06, // 0x80E1 Driver CH12
|
||||
0x04, // 0x80E2 Driver CH13
|
||||
0x02, // 0x80E3 Driver CH14
|
||||
0x00, // 0x80E4 Driver CH15
|
||||
0xFF, // 0x80E5 Driver CH16
|
||||
0xFF, // 0x80E6 Driver CH17
|
||||
0xFF, // 0x80E7 Driver CH18
|
||||
0xFF, // 0x80E8 Driver CH19
|
||||
0xFF, // 0x80E9 Driver CH20
|
||||
0xFF, // 0x80EA Driver CH21
|
||||
0xFF, // 0x80EB Driver CH22
|
||||
0xFF, // 0x80EC Driver CH23
|
||||
0xFF, // 0x80ED Driver CH24
|
||||
0xFF, // 0x80EE Driver CH25
|
||||
0x00, // 0x80EF Reserved
|
||||
0x00, // 0x80F0 Reserved
|
||||
0x00, // 0x80F1 Reserved
|
||||
0x00, // 0x80F2 Reserved
|
||||
0x00, // 0x80F3 Reserved
|
||||
0x00, // 0x80F4 Reserved
|
||||
0x00, // 0x80F5 Reserved
|
||||
0x00, // 0x80F6 Reserved
|
||||
0x00, // 0x80F7 Reserved
|
||||
0x00, // 0x80F8 Reserved
|
||||
0x00, // 0x80F9 Reserved
|
||||
0x00, // 0x80FA Reserved
|
||||
0x00, // 0x80FB Reserved
|
||||
0x00, // 0x80FC Reserved
|
||||
0x00, // 0x80FD Reserved
|
||||
0x00 // 0x80FE Reserved
|
||||
};
|
||||
|
||||
//I2C
|
||||
#define GT_CMD_WR 0X28
|
||||
#define GT_CMD_RD 0X29
|
||||
|
||||
#define SLAVE_Write_Address 0X28
|
||||
|
||||
//GT9147
|
||||
#define GT_CTRL_REG 0X8040
|
||||
#define GT_CFGS_REG 0X8047
|
||||
#define GT_CHECK_REG 0X80FF
|
||||
#define GT_PID_REG 0X8140
|
||||
|
||||
#define GT_GSTID_REG 0X814E
|
||||
#define GT_TP1_REG 0X8150
|
||||
#define GT_TP2_REG 0X8158
|
||||
#define GT_TP3_REG 0X8160
|
||||
#define GT_TP4_REG 0X8168
|
||||
#define GT_TP5_REG 0X8170
|
||||
|
||||
#define GT911_READ_XY_REG 0x814E
|
||||
#define GT911_CLEARBUF_REG 0x814E
|
||||
#define GT911_CONFIG_REG 0x8047
|
||||
#define GT911_COMMAND_REG 0x8040
|
||||
#define GT911_PRODUCT_ID_REG 0x8140
|
||||
#define GT911_VENDOR_ID_REG 0x814A
|
||||
#define GT911_CONFIG_VERSION_REG 0x8047
|
||||
#define GT911_CONFIG_CHECKSUM_REG 0x80FF
|
||||
#define GT911_FIRMWARE_VERSION_REG 0x8144
|
||||
|
||||
PACK(typedef struct
|
||||
{
|
||||
uint8_t track;
|
||||
uint16_t x;
|
||||
uint16_t y;
|
||||
uint16_t size;
|
||||
uint8_t reserved;
|
||||
}) TouchPoint;
|
||||
|
||||
PACK(struct TouchData
|
||||
{
|
||||
uint8_t pointsCount;
|
||||
union
|
||||
{
|
||||
TouchPoint points[GT911_MAX_TP];
|
||||
uint8_t data[GT911_MAX_TP * sizeof(TouchPoint)];
|
||||
};
|
||||
});
|
||||
|
||||
extern struct TouchData touchData;
|
||||
|
||||
#define TPRST_LOW() do { TOUCH_RST_GPIO->BSRRH = TOUCH_RST_GPIO_PIN; } while(0)
|
||||
#define TPRST_HIGH() do { TOUCH_RST_GPIO->BSRRL = TOUCH_RST_GPIO_PIN; } while(0)
|
||||
|
||||
#define TPINT_LOW() do { TOUCH_INT_GPIO->BSRRH = TOUCH_INT_GPIO_PIN; } while(0)
|
||||
#define TPINT_HIGH() do { TOUCH_INT_GPIO->BSRRL = TOUCH_INT_GPIO_PIN; } while(0)
|
||||
|
||||
|
||||
#define I2C_SCL_L() do { I2C_GPIO->BSRRH = I2C_SCL_GPIO_PIN; } while(0)
|
||||
#define I2C_SCL_H() do { I2C_GPIO->BSRRL = I2C_SCL_GPIO_PIN; } while(0)
|
||||
|
||||
#define I2C_SDA_L() do { I2C_GPIO->BSRRH = I2C_SDA_GPIO_PIN; } while(0)
|
||||
#define I2C_SDA_H() do { I2C_GPIO->BSRRL = I2C_SDA_GPIO_PIN; } while(0)
|
||||
|
||||
#define READ_SDA GPIO_ReadInputDataBit(I2C_GPIO, I2C_SDA_GPIO_PIN)
|
||||
|
||||
#endif // _FT5X06_H_
|
||||
@@ -23,7 +23,7 @@
|
||||
void usbChargerInit()
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.GPIO_Pin = USB_CHARGER_RCC_AHB1Periph;
|
||||
GPIO_InitStructure.GPIO_Pin = USB_CHARGER_GPIO_PIN | USB_USBDet_GPIO_PIN;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
@@ -33,6 +33,6 @@ void usbChargerInit()
|
||||
|
||||
bool usbChargerLed()
|
||||
{
|
||||
return GPIO_ReadInputDataBit(USB_CHARGER_GPIO, USB_CHARGER_GPIO_PIN) == Bit_RESET;
|
||||
return GPIO_ReadInputDataBit(USB_CHARGER_GPIO, USB_USBDet_GPIO_PIN) == 0 ? 0 : GPIO_ReadInputDataBit(USB_CHARGER_GPIO, USB_CHARGER_GPIO_PIN) == Bit_RESET;
|
||||
}
|
||||
|
||||
|
||||
@@ -580,6 +580,7 @@ int usbPlugged() { return false; }
|
||||
int getSelectedUsbMode() { return USB_JOYSTICK_MODE; }
|
||||
void setSelectedUsbMode(int mode) {}
|
||||
void delay_ms(uint32_t ms) { }
|
||||
void delay_us(uint16_t us) { }
|
||||
|
||||
// GPIO fake functions
|
||||
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF) { }
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _TOUCH_H_
|
||||
#define _TOUCH_H_
|
||||
|
||||
enum TouchEvent
|
||||
{
|
||||
TE_NONE,
|
||||
TE_DOWN,
|
||||
TE_UP,
|
||||
TE_SLIDE,
|
||||
TE_SLIDE_END
|
||||
};
|
||||
|
||||
struct TouchState
|
||||
{
|
||||
unsigned char event;
|
||||
short x;
|
||||
short y;
|
||||
short startX;
|
||||
short startY;
|
||||
short deltaX;
|
||||
short deltaY;
|
||||
short lastDeltaX;
|
||||
short lastDeltaY;
|
||||
};
|
||||
|
||||
constexpr uint8_t SLIDE_RANGE = 6;
|
||||
|
||||
extern TouchState touchState;
|
||||
|
||||
#endif // _TOUCH_H_
|
||||
@@ -320,6 +320,8 @@ const char STR_RESET_BTN[] = TR_RESET_BTN;
|
||||
const char STR_DEBUG[] = TR_DEBUG;
|
||||
const char STR_KEYS_BTN[] = TR_KEYS_BTN;
|
||||
const char STR_ANALOGS_BTN[] = TR_ANALOGS_BTN;
|
||||
const char STR_TOUCH_NOTFOUND[] = TR_TOUCH_NOTFOUND;
|
||||
const char STR_TOUCH_EXIT[] = TR_TOUCH_EXIT;
|
||||
const char STR_CALIBRATION[] = TR_CALIBRATION;
|
||||
const char STR_NO_TOOLS[] = TR_NO_TOOLS;
|
||||
const char STR_NORMAL[] = TR_NORMAL;
|
||||
@@ -588,6 +590,7 @@ const char STR_EXIT[] = TR_EXIT;
|
||||
const char STR_MODULE_RANGE[] = TR_MODULE_RANGE;
|
||||
const char STR_RECEIVER_OPTIONS[] = TR_RECEIVER_OPTIONS;
|
||||
const char STR_SPORT_UPDATE_POWER_MODE[] = TR_SPORT_UPDATE_POWER_MODE;
|
||||
const char STR_TOUCH_PANEL[] = TR_TOUCH_PANEL;
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
const char STR_ASSIGN_SPLASH[] = TR_ASSIGN_SPLASH;
|
||||
|
||||
@@ -169,6 +169,7 @@ extern const char STR_VSENSORTYPES[];
|
||||
extern const char STR_VFORMULAS[];
|
||||
extern const char STR_VPREC[];
|
||||
extern const char STR_VCELLINDEX[];
|
||||
extern const char STR_TOUCH_PANEL[];
|
||||
|
||||
#if defined(BLUETOOTH)
|
||||
extern const char STR_BLUETOOTH[];
|
||||
@@ -496,6 +497,8 @@ extern const char STR_RESET_BTN[];
|
||||
extern const char STR_DEBUG[];
|
||||
extern const char STR_KEYS_BTN[];
|
||||
extern const char STR_ANALOGS_BTN[];
|
||||
extern const char STR_TOUCH_NOTFOUND[];
|
||||
extern const char STR_TOUCH_EXIT[];
|
||||
extern const char STR_CALIBRATION[];
|
||||
extern const char STR_NO_TOOLS[];
|
||||
extern const char STR_NORMAL[];
|
||||
|
||||
@@ -917,6 +917,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Přepínače"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogy"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Kalibrace"
|
||||
#define TR_SET BUTTON("Nast")
|
||||
#define TR_TRAINER "Trenér"
|
||||
@@ -990,6 +992,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Název"
|
||||
|
||||
@@ -919,6 +919,8 @@
|
||||
#define TR_DEBUG "Testen"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Kalibrieren"
|
||||
#define TR_SET BUTTON("Set")
|
||||
#define TR_TRAINER "DSC Buchse PPM In/Out"
|
||||
@@ -996,6 +998,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis specific column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Name "
|
||||
|
||||
@@ -918,6 +918,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("Keys", "Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibration"
|
||||
#define TR_SET BUTTON("Set")
|
||||
#define TR_TRAINER "Trainer"
|
||||
@@ -995,6 +997,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Name"
|
||||
|
||||
@@ -918,8 +918,10 @@
|
||||
#define TR_DEL_BUTTON BUTTON(TR("Del", "Borrar"))
|
||||
#define TR_RESET_BTN "[Reset]"
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW", "Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog", "Analogs"))
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibración"
|
||||
#define TR_SET "[Ajuste]"
|
||||
#define TR_TRAINER "Entrenador"
|
||||
@@ -994,6 +996,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS TR("No hay pant. telemetría", "No hay pantallas de telemetría")
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Nombre"
|
||||
|
||||
@@ -936,6 +936,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibration"
|
||||
#define TR_SET "[Set]"
|
||||
#define TR_TRAINER "Trainer"
|
||||
@@ -1009,6 +1011,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Name"
|
||||
|
||||
@@ -938,6 +938,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("Btns","Inters"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Anas", "Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibration"
|
||||
#define TR_SET BUTTON("Déf")
|
||||
#define TR_TRAINER "Ecolage"
|
||||
@@ -1019,6 +1021,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Nom"
|
||||
|
||||
@@ -938,6 +938,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Interruttori"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analogico","Analogici"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION TR("Calibraz.", "Calibrazione")
|
||||
#define TR_SET "[Set]"
|
||||
#define TR_TRAINER TR("Trainer", "Maestro/Allievo")
|
||||
@@ -1011,6 +1013,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Nome"
|
||||
|
||||
@@ -924,6 +924,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibration"
|
||||
#define TR_SET "[Set]"
|
||||
#define TR_TRAINER "Trainer Poort"
|
||||
@@ -1003,6 +1005,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Name"
|
||||
|
||||
@@ -937,6 +937,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibration"
|
||||
#define TR_SET "[Set]"
|
||||
#define TR_TRAINER "Port Trenera"
|
||||
@@ -1010,6 +1012,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Nazwa"
|
||||
|
||||
@@ -927,6 +927,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibration"
|
||||
#define TR_SET "[Set]"
|
||||
#define TR_TRAINER "Trainer"
|
||||
@@ -1000,6 +1002,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Name"
|
||||
|
||||
@@ -937,6 +937,8 @@
|
||||
#define TR_DEBUG "Debug"
|
||||
#define TR_KEYS_BTN BUTTON(TR("SW","Switches"))
|
||||
#define TR_ANALOGS_BTN BUTTON(TR("Analog","Analogs"))
|
||||
#define TR_TOUCH_NOTFOUND "Touch hardware not found"
|
||||
#define TR_TOUCH_EXIT "Touch screen to exit"
|
||||
#define TR_CALIBRATION "Calibration"
|
||||
#define TR_SET "[Spara]"
|
||||
#define TR_TRAINER "Trainer"
|
||||
@@ -1010,6 +1012,7 @@
|
||||
#define LEN_SPORT_UPDATE_POWER_MODES "\004"
|
||||
#define TR_SPORT_UPDATE_POWER_MODES "AUTO""ON\0 "
|
||||
#define TR_NO_TELEMETRY_SCREENS "No Telemetry Screens"
|
||||
#define TR_TOUCH_PANEL "Touch panel:"
|
||||
|
||||
// Horus and Taranis column headers
|
||||
#define TR_PHASES_HEADERS_NAME "Namn"
|
||||
|
||||
@@ -134,7 +134,7 @@ def build(board, translation, srcdir):
|
||||
os.mkdir("output")
|
||||
path = tempfile.mkdtemp()
|
||||
os.chdir(path)
|
||||
command = "cmake %s -DTRANSLATIONS=%s -DFRSKY_RELEASE=YES %s" % (cmake_options, translation, srcdir)
|
||||
command = "cmake %s -DTRANSLATIONS=%s -DFRSKY_RELEASE=YES -DDEFAULT_TEMPLATE_SETUP=17 %s" % (cmake_options, translation, srcdir)
|
||||
print(command)
|
||||
os.system(command)
|
||||
os.system("make firmware -j6")
|
||||
|
||||
Reference in New Issue
Block a user