Fixed NV14 build, added flysky build script and target in build-gh.sh
This commit is contained in:
@@ -582,7 +582,7 @@ PACK(struct CustomScreenData {
|
||||
#define TOPBAR_DATA
|
||||
#endif
|
||||
|
||||
#if defined(PCBHORUS) || defined(PCBTARANIS)
|
||||
#if defined(PCBHORUS) || defined(PCBTARANIS) || defined(PCBNV14)
|
||||
#define SCRIPT_DATA \
|
||||
NOBACKUP(ScriptData scriptsData[MAX_SCRIPTS]);
|
||||
#else
|
||||
|
||||
@@ -168,7 +168,9 @@ class CurveEditWindow : public Page
|
||||
curve.type = newValue;
|
||||
}
|
||||
SET_DIRTY();
|
||||
curveEdit->update();
|
||||
curveEdit->updatePreview();
|
||||
curveDataEdit->clear();
|
||||
curveDataEdit->update();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -190,7 +192,9 @@ class CurveEditWindow : public Page
|
||||
}
|
||||
curve.points = newValue;
|
||||
SET_DIRTY();
|
||||
curveEdit->update();
|
||||
curveEdit->updatePreview();
|
||||
curveDataEdit->clear();
|
||||
curveDataEdit->update();
|
||||
}
|
||||
});
|
||||
edit->setSuffix(STR_PTS);
|
||||
@@ -202,7 +206,7 @@ class CurveEditWindow : public Page
|
||||
[=](int32_t newValue) {
|
||||
g_model.curves[index].smooth = newValue;
|
||||
SET_DIRTY();
|
||||
curveEdit->update();
|
||||
curveEdit->updatePreview();
|
||||
});
|
||||
grid.nextLine();
|
||||
}
|
||||
|
||||
@@ -33,4 +33,5 @@ if(PYTHONINTERP_FOUND)
|
||||
add_lua_export_target(tx12 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_TX12)
|
||||
add_lua_export_target(t8 ${LUA_INCLUDES} -DPCBTARANIS -DPCBX7 -DRADIO_T8)
|
||||
add_lua_export_target(t16 ${LUA_INCLUDES} -DPCBHORUS -DPCBX10 -DRADIO_T16)
|
||||
add_lua_export_target(nv14 ${LUA_INCLUDES} -DPCBFLYSKY -DPCBNV14)
|
||||
endif()
|
||||
|
||||
@@ -64,6 +64,8 @@
|
||||
#include "lua/lua_exports_x9d+2019.inc"
|
||||
#elif defined(PCBTARANIS)
|
||||
#include "lua/lua_exports_x9d.inc"
|
||||
#elif defined(PCBNV14)
|
||||
#include "lua/lua_exports_nv14.inc"
|
||||
#endif
|
||||
|
||||
#if defined(SIMU)
|
||||
|
||||
@@ -93,7 +93,10 @@ struct Data
|
||||
|
||||
void reset()
|
||||
{
|
||||
#if defined(EXTMODULE_USART) && defined(EXTMODULE_TX_INVERT_GPIO)
|
||||
#else
|
||||
pulsesSize = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(EXTMODULE_USART) && defined(EXTMODULE_TX_INVERT_GPIO)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define NUM_SWITCHES_219 10
|
||||
#elif defined(PCBXLITE) ||defined(PCBXLITES)
|
||||
#define NUM_SWITCHES_219 6
|
||||
#elif defined(RADIO_TLITE) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8)
|
||||
#elif defined(RADIO_TLITE) || defined(RADIO_FAMILY_JUMPER_T12) || defined(RADIO_T8) || defined(PCBNV14)
|
||||
#define NUM_SWITCHES_219 8
|
||||
#elif defined(PCBX7) || defined(PCBX7ACCESS)
|
||||
#define NUM_SWITCHES_219 8
|
||||
@@ -49,7 +49,7 @@
|
||||
#elif defined(PCBX9LITE)
|
||||
#define NUM_POTS_219 1
|
||||
#define NUM_SLIDERS_219 0
|
||||
#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(PCBXLITE) || defined(PCBX7)
|
||||
#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(PCBXLITE) || defined(PCBX7) || defined(PCBNV14)
|
||||
#define NUM_POTS_219 2
|
||||
#define NUM_SLIDERS_219 0
|
||||
#elif defined(PCBX9E)
|
||||
@@ -113,7 +113,7 @@
|
||||
#define MAX_CURVE_POINTS_219 512
|
||||
#endif
|
||||
|
||||
#if defined(PCBHORUS)
|
||||
#if defined(PCBHORUS) || defined(PCBNV14)
|
||||
#define MAX_MODELS_219 60
|
||||
#define MAX_OUTPUT_CHANNELS_219 32 // number of real output channels CH1-CH32
|
||||
#define MAX_FLIGHT_MODES_219 9
|
||||
|
||||
@@ -14,6 +14,8 @@ set(STORAGE_FORMAT BIN)
|
||||
set(HAPTIC YES)
|
||||
set(GUI_DIR colorlcd)
|
||||
set(BITMAPS_DIR 480x272)
|
||||
set(HARDWARE_EXTERNAL_MODULE YES)
|
||||
set(AUX_SERIAL ON)
|
||||
# set(NAVIGATION_TYPE touch)
|
||||
set(TARGET_DIR nv14)
|
||||
add_definitions(-DHARDWARE_TRAINER_JACK)
|
||||
@@ -42,17 +44,19 @@ add_definitions(-DBATTERY_CHARGE) # -DSOFTWARE_VOLUME
|
||||
set(TARGET_SRC
|
||||
${TARGET_SRC}
|
||||
audio_spi_driver.cpp
|
||||
../common/arm/stm32/mixer_scheduler_driver.cpp
|
||||
)
|
||||
|
||||
#set(FIRMWARE_TARGET_SRC
|
||||
# ${FIRMWARE_TARGET_SRC}
|
||||
# x12s_adc_driver.cpp
|
||||
# )
|
||||
|
||||
set(FIRMWARE_TARGET_SRC
|
||||
${FIRMWARE_TARGET_SRC}
|
||||
x12s_adc_driver.cpp
|
||||
)
|
||||
|
||||
set(FIRMWARE_TARGET_SRC
|
||||
${FIRMWARE_TARGET_SRC}
|
||||
adc_driver.cpp
|
||||
battery_driver.cpp
|
||||
hallStick_driver.cpp
|
||||
../horus/flyskyHallStick_driver.cpp
|
||||
)
|
||||
|
||||
set(BITMAPS_TARGET nv14_bitmaps)
|
||||
@@ -73,7 +77,9 @@ add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE})
|
||||
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
|
||||
add_definitions(-DCROSSFIRE_NATIVE)
|
||||
add_definitions(-DFLYSKY_HALL_STICKS_REVERSE)
|
||||
add_definitions(-DHALL_STICKS)
|
||||
add_definitions(-DFLYSKY_HALL_STICKS)
|
||||
add_definitions(-DHARDWARE_EXTERNAL_MODULE)
|
||||
add_definitions(-DAUX_SERIAL)
|
||||
#add_definitions(-DFLYSKY_AUTO_POWER_DOWN)
|
||||
|
||||
if(STICKS_DEAD_ZONE)
|
||||
@@ -149,12 +155,52 @@ set(STM32LIB_SRC
|
||||
STM32F4xx_StdPeriph_Driver/src/stm32f4xx_syscfg.c
|
||||
)
|
||||
|
||||
MACRO(GET_GCC_INCLUDE_PATH gcc_include_path)
|
||||
if (WIN32)
|
||||
execute_process(COMMAND arm-none-eabi-gcc -v -x c -E NUL ERROR_VARIABLE _gcc_output OUTPUT_QUIET)
|
||||
else()
|
||||
execute_process(COMMAND arm-none-eabi-gcc -v -x c -E - INPUT_FILE /dev/null ERROR_VARIABLE _gcc_output OUTPUT_QUIET)
|
||||
endif()
|
||||
|
||||
# Build an array of string from the GCC output
|
||||
string(REPLACE "\n" ";" _gcc_output "${_gcc_output}")
|
||||
|
||||
set(_capture_include FALSE)
|
||||
set(_include_path "")
|
||||
|
||||
# Go through the lines and capture between '"#include <...> search starts here:"' and 'End of search list.'
|
||||
foreach(_line ${_gcc_output})
|
||||
if(${_line} STREQUAL "End of search list.")
|
||||
set(_capture_include FALSE)
|
||||
endif()
|
||||
|
||||
if(_capture_include)
|
||||
# Remove the leading and trailing empty characters
|
||||
string(REPLACE "\r" "" _line ${_line})
|
||||
string(SUBSTRING "${_line}" 1 -1 _line)
|
||||
set(_include_path "${_include_path}" "-I${_line}")
|
||||
endif()
|
||||
|
||||
if(${_line} STREQUAL "#include <...> search starts here:")
|
||||
set(_capture_include TRUE)
|
||||
endif()
|
||||
endforeach()
|
||||
set(${gcc_include_path} ${_include_path})
|
||||
ENDMACRO()
|
||||
|
||||
if(PYTHONINTERP_FOUND)
|
||||
add_custom_target(datacopy
|
||||
GET_GCC_INCLUDE_PATH(arm_gcc_include_path)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp
|
||||
WORKING_DIRECTORY ${RADIO_DIRECTORY}/src
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/generate_datacopy.py datastructs.h -DPCBFLYSKY -DPCBNV14 -DCPUARM -DCOLORLCD -DBACKUP > storage/datacopy.cpp
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/generate_datacopy.py datastructs.h -DPCBFLYSKY -DPCBNV14 -DCPUARM -DSTM32F4 -DSTM32F429_439xx -DCOLORLCD -DBACKUP -DSIMU -I. -Igui/colorlcd -Itargets/horus -Itargets/common/arm/stm32 -I${THIRDPARTY_DIR} -I${THIRDPARTY_DIR}/libopenui/src -I${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.8.0/Libraries/STM32F4xx_StdPeriph_Driver/inc -I${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.8.0/Libraries/CMSIS/Device/ST/STM32F4xx/Include -I${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.8.0/Libraries/CMSIS/Include ${arm_gcc_include_path} -Wno-pragma-once-outside-header > ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp
|
||||
DEPENDS ${RADIO_DIRECTORY}/src/datastructs.h ${RADIO_DIRECTORY}/util/generate_datacopy.py
|
||||
)
|
||||
)
|
||||
|
||||
add_custom_target(datacopy
|
||||
DEPENDS ${PROJECT_BINARY_DIR}/radio/src/datacopy.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
set(LUA_EXPORT lua_export_nv14)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
#define FIRST_ANALOG_ADC 0
|
||||
#define NUM_MAIN_ANALOGS_ADC 10
|
||||
#define NUM_MAIN_ANALOGS_ADC_EXT (NUM_MAIN_ANALOGS - 10)
|
||||
#elif defined(PCBNV14) && defined(HALL_STICKS)
|
||||
#elif defined(PCBNV14) && defined(FLYSKY_HALL_STICKS)
|
||||
#define FIRST_ANALOG_ADC 4
|
||||
#define NUM_MAIN_ANALOGS_ADC 9
|
||||
#else
|
||||
@@ -147,7 +147,7 @@ void adcInit()
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_SWE<<0) + (ADC_CHANNEL_SWF<<5) + (ADC_CHANNEL_LIBATT<<10) + (ADC_CHANNEL_DRYBATT<<15); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_POT1<<0) + (ADC_CHANNEL_POT2<<5) + (ADC_CHANNEL_SWA<<10) + (ADC_CHANNEL_SWB<<15) + (ADC_CHANNEL_SWC<<20) + (ADC_CHANNEL_SWD<<25); // conversions 1 to 6
|
||||
#elif defined(PCBNV14)
|
||||
#if !defined(HALL_STICKS)
|
||||
#if !defined(FLYSKY_HALL_STICKS)
|
||||
ADC_MAIN->SQR1 |= (ADC_CHANNEL_BATT <<0 );
|
||||
ADC_MAIN->SQR2 = (ADC_CHANNEL_SWA << 0) + (ADC_CHANNEL_SWC << 5) + (ADC_CHANNEL_SWE << 10) + (ADC_CHANNEL_SWF << 15) + (ADC_CHANNEL_SWG << 20) + (ADC_CHANNEL_SWH << 25); // conversions 7 and more
|
||||
ADC_MAIN->SQR3 = (ADC_CHANNEL_STICK_LH<<0) + (ADC_CHANNEL_STICK_LV<<5) + (ADC_CHANNEL_STICK_RV<<10) + (ADC_CHANNEL_STICK_RH<<15) + (ADC_CHANNEL_POT1<<20) + (ADC_CHANNEL_POT2<<25); // conversions 1 to 6
|
||||
|
||||
@@ -29,6 +29,9 @@ extern "C" {
|
||||
}
|
||||
#endif
|
||||
|
||||
extern void flysky_hall_stick_init( void );
|
||||
extern void flysky_hall_stick_loop( void );
|
||||
|
||||
HardwareOptions hardwareOptions;
|
||||
|
||||
void watchdogInit(unsigned int duration)
|
||||
@@ -84,7 +87,7 @@ void interrupt1ms()
|
||||
if (pre_scale == 10) {
|
||||
pre_scale = 0;
|
||||
#if !defined(SIMU)
|
||||
if (boardState == BOARD_STARTED) hall_stick_loop();
|
||||
if (boardState == BOARD_STARTED) flysky_hall_stick_loop();
|
||||
#endif
|
||||
DEBUG_TIMER_START(debugTimerPer10ms);
|
||||
DEBUG_TIMER_SAMPLE(debugTimerPer10msPeriod);
|
||||
@@ -144,7 +147,7 @@ void delay_self(int count)
|
||||
#define RCC_APB1PeriphOther (TELEMETRY_RCC_APB1Periph |\
|
||||
TRAINER_RCC_APB1Periph |\
|
||||
INTMODULE_RCC_APB1Periph |\
|
||||
HALL_RCC_APB1Periph |\
|
||||
FLYSKY_HALL_RCC_APB1Periph |\
|
||||
EXTMODULE_RCC_APB1Periph |\
|
||||
INTMODULE_RCC_APB1Periph |\
|
||||
AUX_SERIAL_RCC_APB1Periph \
|
||||
@@ -229,7 +232,7 @@ void boardInit()
|
||||
backlightInit();
|
||||
lcdInit();
|
||||
#if defined(FLYSKY_HALL_STICKS)
|
||||
hall_stick_init(FLYSKY_HALL_BAUDRATE);
|
||||
flysky_hall_stick_init();
|
||||
#endif
|
||||
usbInit();
|
||||
hapticInit();
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
#endif
|
||||
|
||||
#include "touch_driver.h"
|
||||
#include "hallStick_driver.h"
|
||||
//#include "hallStick_driver.h"
|
||||
#include "lcd_driver.h"
|
||||
#include "battery_driver.h"
|
||||
|
||||
@@ -128,7 +128,8 @@ void intmoduleSerialStart(uint32_t baudrate, uint8_t rxEnable, uint16_t parity,
|
||||
void intmoduleSendBuffer(const uint8_t * data, uint8_t size);
|
||||
void intmoduleSendNextFrame();
|
||||
|
||||
void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us, bool inverted);
|
||||
//void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us, bool inverted);
|
||||
void extmoduleSerialStart();
|
||||
void extmoduleSendNextFrame();
|
||||
void extmoduleSendInvertedByte(uint8_t byte);
|
||||
|
||||
@@ -146,6 +147,7 @@ enum EnumKeys
|
||||
KEY_PGUP,
|
||||
KEY_PGDN,
|
||||
KEY_UP,
|
||||
KEY_MODEL = KEY_UP, // TODO: just fixed for compile error, seems this is quite different from horus definition.
|
||||
KEY_DOWN,
|
||||
KEY_RIGHT,
|
||||
KEY_LEFT,
|
||||
@@ -332,6 +334,8 @@ enum CalibratedAnalogs {
|
||||
CALIBRATED_STICK4,
|
||||
CALIBRATED_POT1,
|
||||
CALIBRATED_POT2,
|
||||
CALIBRATED_SLIDER_REAR_LEFT,
|
||||
CALIBRATED_SLIDER_REAR_RIGHT,
|
||||
CALIBRATED_SWA,
|
||||
CALIBRATED_SWB,
|
||||
CALIBRATED_SWC,
|
||||
@@ -374,6 +378,11 @@ void pwrSoftReboot();
|
||||
void pwrOff();
|
||||
void pwrResetHandler();
|
||||
bool pwrPressed();
|
||||
#if defined(PWR_EXTRA_SWITCH_GPIO)
|
||||
bool pwrForcePressed();
|
||||
#else
|
||||
#define pwrForcePressed() false
|
||||
#endif
|
||||
uint32_t pwrPressedDuration();;
|
||||
#if defined(SIMU) || defined(NO_UNEXPECTED_SHUTDOWN)
|
||||
#define UNEXPECTED_SHUTDOWN() (false)
|
||||
@@ -493,9 +502,13 @@ void hapticOff();
|
||||
void hapticOn(uint32_t pwmPercent);
|
||||
|
||||
// Second serial port driver
|
||||
#define AUX_SERIAL
|
||||
//#define AUX_SERIAL
|
||||
#define DEBUG_BAUDRATE 115200
|
||||
#define LUA_DEFAULT_BAUDRATE 115200
|
||||
extern uint8_t auxSerialMode;
|
||||
#if defined __cplusplus
|
||||
void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t length = USART_WordLength_8b, uint16_t parity = USART_Parity_No, uint16_t stop = USART_StopBits_1);
|
||||
#endif
|
||||
void auxSerialInit(unsigned int mode, unsigned int protocol);
|
||||
void auxSerialPutc(char c);
|
||||
#define auxSerialTelemetryInit(protocol) auxSerialInit(UART_MODE_TELEMETRY, protocol)
|
||||
|
||||
@@ -79,8 +79,8 @@ void bootloaderDrawScreen(BootloaderState st, int opt, const char* str)
|
||||
lcd->drawText(center, 200, "for mass storage", CENTERED | DEFAULT_COLOR);
|
||||
|
||||
bootloaderDrawFooter();
|
||||
lcd->drawText(center, LCD_H - DOUBLE_PADDING, "Current Firmware:", CENTERED | DEFAULT_COLOR);
|
||||
lcd->drawText(center, LCD_H - DEFAULT_PADDING, getOtherVersion(nullptr), CENTERED | DEFAULT_COLOR);
|
||||
lcd->drawText(center, LCD_H - DOUBLE_PADDING, "Current Firmware:", CENTERED | DEFAULT_COLOR);
|
||||
lcd->drawText(center, LCD_H - DEFAULT_PADDING, getFirmwareVersion(nullptr), CENTERED | DEFAULT_COLOR);
|
||||
}
|
||||
else if (st == ST_USB) {
|
||||
//lcd->drawBitmap(136, 98, &BMP_USB_PLUGGED);
|
||||
|
||||
@@ -148,7 +148,7 @@ void extmodulePpmStart()
|
||||
NVIC_SetPriority(EXTMODULE_TIMER_IRQn, 7);
|
||||
}
|
||||
|
||||
void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us, bool inverted)
|
||||
void extmoduleSerialStart()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
// ADC
|
||||
#define ADC_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_DMA2)
|
||||
#define ADC_RCC_APB2Periph (RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC3)
|
||||
#if !defined(HALL_STICKS)
|
||||
#if !defined(FLYSKY_HALL_STICKS)
|
||||
#define ADC_GPIO_PIN_STICK_LH GPIO_Pin_2 // PA.02
|
||||
#define ADC_GPIO_PIN_STICK_LV GPIO_Pin_3 // PA.03
|
||||
#define ADC_GPIO_PIN_STICK_RH GPIO_Pin_4 // PA.04
|
||||
@@ -127,7 +127,7 @@
|
||||
#define ADC_GPIOC_PINS (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_4 | GPIO_Pin_5)
|
||||
#define ADC_GPIOF_PINS (GPIO_Pin_8 | GPIO_Pin_10)
|
||||
|
||||
#if !defined(HALL_STICKS)
|
||||
#if !defined(FLYSKY_HALL_STICKS)
|
||||
#define ADC_CHANNEL_STICK_LH ADC_Channel_2 // ADC123_IN2 -> ADC1_IN2
|
||||
#define ADC_CHANNEL_STICK_LV ADC_Channel_3 // ADC123_IN3 -> ADC1_IN3
|
||||
#define ADC_CHANNEL_STICK_RH ADC_Channel_4 // ADC12_IN4 -> ADC1_IN4
|
||||
@@ -160,7 +160,8 @@
|
||||
|
||||
// Power
|
||||
#define PWR_RCC_AHB1Periph RCC_AHB1Periph_GPIOI
|
||||
#define PWR_GPIO GPIOI
|
||||
#define PWR_ON_GPIO GPIOI
|
||||
#define PWR_SWITCH_GPIO GPIOI
|
||||
#define PWR_SWITCH_GPIO_REG PWR_GPIO->IDR
|
||||
#define PWR_SWITCH_GPIO_PIN GPIO_Pin_11 // PI.11
|
||||
#define PWR_ON_GPIO_PIN GPIO_Pin_14 // PI.14
|
||||
@@ -205,6 +206,11 @@
|
||||
//used in BOOTLOADER
|
||||
#define SERIAL_RCC_AHB1Periph 0
|
||||
#define SERIAL_RCC_APB1Periph 0
|
||||
#define AUX2_SERIAL_RCC_AHB1Periph 0
|
||||
#define AUX2_SERIAL_RCC_APB1Periph 0
|
||||
#define AUX2_SERIAL_RCC_APB2Periph 0
|
||||
#define KEYS_BACKLIGHT_RCC_AHB1Periph 0
|
||||
|
||||
// Telemetry
|
||||
#define TELEMETRY_RCC_AHB1Periph (RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOJ | RCC_AHB1Periph_DMA1)
|
||||
#define TELEMETRY_RCC_APB1Periph RCC_APB1Periph_USART2
|
||||
@@ -357,6 +363,37 @@
|
||||
#define HAPTIC_TIMER_MODE TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE
|
||||
#define HAPTIC_TIMER_COMPARE_VALUE HAPTIC_GPIO_TIMER->CCR1
|
||||
|
||||
// Flysky Hall Stick
|
||||
#if defined(FLYSKY_HALL_STICKS)
|
||||
#if defined (RADIO_TX16S)
|
||||
#define FLYSKY_HALL_STICKS_REVERSE
|
||||
#endif
|
||||
|
||||
#define FLYSKY_HALL_SERIAL_USART UART4
|
||||
#define FLYSKY_HALL_SERIAL_GPIO GPIOA
|
||||
#define FLYSKY_HALL_DMA_Channel DMA_Channel_4
|
||||
#define FLYSKY_HALL_SERIAL_TX_GPIO_PIN GPIO_Pin_0 // PA.00
|
||||
#define FLYSKY_HALL_SERIAL_RX_GPIO_PIN GPIO_Pin_1 // PA.01
|
||||
#define FLYSKY_HALL_SERIAL_TX_GPIO_PinSource GPIO_PinSource0
|
||||
#define FLYSKY_HALL_SERIAL_RX_GPIO_PinSource GPIO_PinSource1
|
||||
#define FLYSKY_HALL_SERIAL_GPIO_AF GPIO_AF_UART4
|
||||
|
||||
#define FLYSKY_HALL_RCC_AHB1Periph RCC_AHB1Periph_DMA1
|
||||
#define FLYSKY_HALL_RCC_APB1Periph RCC_APB1Periph_UART4
|
||||
|
||||
#define FLYSKY_HALL_SERIAL_USART_IRQHandler UART4_IRQHandler
|
||||
#define FLYSKY_HALL_SERIAL_USART_IRQn UART4_IRQn
|
||||
#define FLYSKY_HALL_SERIAL_RX_DMA_Stream_IRQn DMA1_Stream2_IRQn
|
||||
#define FLYSKY_HALL_SERIAL_TX_DMA_Stream_IRQn DMA1_Stream4_IRQn
|
||||
#define FLYSKY_HALL_DMA_Stream_RX DMA1_Stream2
|
||||
#define FLYSKY_HALL_DMA_Stream_TX DMA1_Stream4
|
||||
#define FLYSKY_HALL_DMA_TX_FLAG_TC DMA_IT_TCIF4
|
||||
|
||||
#define FLYSKY_HALL_RX_DMA_Stream_IRQHandler DMA1_Stream2_IRQHandler
|
||||
#define FLYSKY_HALL_TX_DMA_Stream_IRQHandler DMA1_Stream4_IRQHandler
|
||||
|
||||
#endif
|
||||
|
||||
// Internal Module
|
||||
#define HARDWARE_INTERNAL_MODULE
|
||||
#define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_DMA1)
|
||||
@@ -399,6 +436,7 @@
|
||||
#define EXTMODULE_PULSES
|
||||
#define EXTMODULE_PWR_GPIO GPIOD
|
||||
#define EXTMODULE_PWR_GPIO_PIN GPIO_Pin_11
|
||||
#define EXTERNAL_MODULE_PWR_OFF() GPIO_ResetBits(EXTMODULE_PWR_GPIO, EXTMODULE_PWR_GPIO_PIN)
|
||||
#define EXTMODULE_PWR_FIX_GPIO GPIOA
|
||||
#define EXTMODULE_PWR_FIX_GPIO_PIN GPIO_Pin_2 // PA.02
|
||||
#define EXTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOI | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_DMA2)
|
||||
@@ -519,4 +557,11 @@
|
||||
#define TIMER_2MHz_RCC_APB1Periph RCC_APB1Periph_TIM7
|
||||
#define TIMER_2MHz_TIMER TIM7
|
||||
|
||||
// Mixer scheduler timer
|
||||
#define MIXER_SCHEDULER_TIMER_RCC_APB1Periph RCC_APB1Periph_TIM13
|
||||
#define MIXER_SCHEDULER_TIMER TIM13
|
||||
#define MIXER_SCHEDULER_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1)
|
||||
#define MIXER_SCHEDULER_TIMER_IRQn TIM8_UP_TIM13_IRQn
|
||||
#define MIXER_SCHEDULER_TIMER_IRQHandler TIM8_UP_TIM13_IRQHandler
|
||||
|
||||
#endif // _HAL_H_
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
uint8_t LCD_FIRST_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
|
||||
uint8_t LCD_SECOND_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
|
||||
uint8_t LCD_BACKUP_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
|
||||
uint8_t LCD_SCRATCH_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(pixel_t)] __SDRAM;
|
||||
uint8_t currentLayer = LCD_FIRST_LAYER;
|
||||
|
||||
lcdSpiInitFucPtr lcdInitFunction;
|
||||
@@ -1273,7 +1274,8 @@ BitmapBuffer lcdBuffer1(BMP_RGB565, LCD_W, LCD_H,
|
||||
(uint16_t *) LCD_FIRST_FRAME_BUFFER);
|
||||
BitmapBuffer lcdBuffer2(BMP_RGB565, LCD_W, LCD_H,
|
||||
(uint16_t *) LCD_SECOND_FRAME_BUFFER);
|
||||
BitmapBuffer * lcd = &lcdBuffer1;
|
||||
BitmapBuffer * lcdFront = &lcdBuffer1;
|
||||
BitmapBuffer * lcd = &lcdBuffer2;
|
||||
|
||||
void LCD_SetLayer(uint32_t layer) {
|
||||
if (layer == LCD_FIRST_LAYER) {
|
||||
@@ -1455,6 +1457,54 @@ void DMACopyAlphaBitmap(uint16_t * dest, uint16_t destw, uint16_t desth, uint16_
|
||||
while (DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET);
|
||||
}
|
||||
|
||||
// same as DMACopyAlphaBitmap(), but with an 8 bit mask for each pixel (used by fonts)
|
||||
void DMACopyAlphaMask(uint16_t * dest, uint16_t destw, uint16_t desth, uint16_t x, uint16_t y, const uint8_t * src, uint16_t srcw, uint16_t srch, uint16_t srcx, uint16_t srcy, uint16_t w, uint16_t h, uint16_t bg_color)
|
||||
{
|
||||
TRACE("++++++");
|
||||
DMA2D_DeInit();
|
||||
|
||||
DMA2D_InitTypeDef DMA2D_InitStruct;
|
||||
DMA2D_InitStruct.DMA2D_Mode = DMA2D_M2M_BLEND;
|
||||
DMA2D_InitStruct.DMA2D_CMode = CM_RGB565;
|
||||
DMA2D_InitStruct.DMA2D_OutputMemoryAdd = CONVERT_PTR_UINT(dest + y*destw + x);
|
||||
DMA2D_InitStruct.DMA2D_OutputBlue = 0;
|
||||
DMA2D_InitStruct.DMA2D_OutputGreen = 0;
|
||||
DMA2D_InitStruct.DMA2D_OutputRed = 0;
|
||||
DMA2D_InitStruct.DMA2D_OutputAlpha = 0;
|
||||
DMA2D_InitStruct.DMA2D_OutputOffset = destw - w;
|
||||
DMA2D_InitStruct.DMA2D_NumberOfLine = h;
|
||||
DMA2D_InitStruct.DMA2D_PixelPerLine = w;
|
||||
DMA2D_Init(&DMA2D_InitStruct);
|
||||
|
||||
DMA2D_FG_InitTypeDef DMA2D_FG_InitStruct;
|
||||
DMA2D_FG_StructInit(&DMA2D_FG_InitStruct);
|
||||
DMA2D_FG_InitStruct.DMA2D_FGMA = CONVERT_PTR_UINT(src + srcy*srcw + srcx);
|
||||
DMA2D_FG_InitStruct.DMA2D_FGO = srcw - w;
|
||||
DMA2D_FG_InitStruct.DMA2D_FGCM = CM_A8; // 8 bit inputs every time
|
||||
DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_MODE = NO_MODIF_ALPHA_VALUE;
|
||||
DMA2D_FG_InitStruct.DMA2D_FGPFC_ALPHA_VALUE = 0;
|
||||
DMA2D_FG_InitStruct.DMA2D_FGC_RED = GET_RED(bg_color); // 8 bit red
|
||||
DMA2D_FG_InitStruct.DMA2D_FGC_GREEN = GET_GREEN(bg_color); // 8 bit green
|
||||
DMA2D_FG_InitStruct.DMA2D_FGC_BLUE = GET_BLUE(bg_color); // 8 bit blue
|
||||
|
||||
DMA2D_FGConfig(&DMA2D_FG_InitStruct);
|
||||
|
||||
DMA2D_BG_InitTypeDef DMA2D_BG_InitStruct;
|
||||
DMA2D_BG_StructInit(&DMA2D_BG_InitStruct);
|
||||
DMA2D_BG_InitStruct.DMA2D_BGMA = CONVERT_PTR_UINT(dest + y*destw + x);
|
||||
DMA2D_BG_InitStruct.DMA2D_BGO = destw - w;
|
||||
DMA2D_BG_InitStruct.DMA2D_BGCM = CM_RGB565;
|
||||
DMA2D_BG_InitStruct.DMA2D_BGPFC_ALPHA_MODE = NO_MODIF_ALPHA_VALUE;
|
||||
DMA2D_BG_InitStruct.DMA2D_BGPFC_ALPHA_VALUE = 0;
|
||||
DMA2D_BGConfig(&DMA2D_BG_InitStruct);
|
||||
|
||||
/* Start Transfer */
|
||||
DMA2D_StartTransfer();
|
||||
|
||||
/* Wait for CTC Flag activation */
|
||||
while (DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET);
|
||||
}
|
||||
|
||||
void DMABitmapConvert(uint16_t * dest, const uint8_t * src, uint16_t w, uint16_t h, uint32_t format)
|
||||
{
|
||||
DMA2D_DeInit();
|
||||
@@ -1532,6 +1582,16 @@ int lcdRestoreBackupBuffer()
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint16_t* lcdGetBackupBuffer()
|
||||
{
|
||||
return (uint16_t*)LCD_BACKUP_FRAME_BUFFER;
|
||||
}
|
||||
|
||||
uint16_t* lcdGetScratchBuffer()
|
||||
{
|
||||
return (uint16_t*)LCD_SCRATCH_FRAME_BUFFER;
|
||||
}
|
||||
|
||||
void lcdRefresh()
|
||||
{
|
||||
if (currentLayer == LCD_FIRST_LAYER) {
|
||||
|
||||
@@ -86,7 +86,7 @@ constexpr uint32_t ALERT_BUTTON_TOP = 300;
|
||||
constexpr uint32_t PAGE_TITLE_TOP = 4;
|
||||
constexpr uint32_t PAGE_TITLE_LEFT = 70;
|
||||
|
||||
enum LcdColorIndex
|
||||
/*enum LcdColorIndex
|
||||
{
|
||||
DEFAULT_COLOR_INDEX,
|
||||
DEFAULT_BGCOLOR_INDEX,
|
||||
@@ -130,7 +130,7 @@ enum LcdColorIndex
|
||||
|
||||
TABLE_HEADER_BGCOLOR_INDEX,
|
||||
TABLE_BGCOLOR_INDEX,
|
||||
};
|
||||
};*/
|
||||
|
||||
enum FontIndex
|
||||
{
|
||||
|
||||
@@ -32,13 +32,13 @@ void pwrInit()
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_Init(PWR_GPIO, &GPIO_InitStructure);
|
||||
GPIO_Init(PWR_ON_GPIO, &GPIO_InitStructure);
|
||||
|
||||
// TODO move this elsewhere!
|
||||
// Init Module PWR
|
||||
//GPIO_ResetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN);
|
||||
//GPIO_InitStructure.GPIO_Pin = INTMODULE_PWR_GPIO_PIN;
|
||||
//GPIO_Init(INTMODULE_PWR_GPIO, &GPIO_InitStructure);
|
||||
//GPIO_ResetBits(INTMODULE_PWR_ON_GPIO, INTMODULE_PWR_ON_GPIO_PIN);
|
||||
//GPIO_InitStructure.GPIO_Pin = INTMODULE_PWR_ON_GPIO_PIN;
|
||||
//GPIO_Init(INTMODULE_PWR_ON_GPIO, &GPIO_InitStructure);
|
||||
|
||||
//Bluetooth
|
||||
GPIO_SetBits(BLUETOOTH_ON_GPIO, BLUETOOTH_ON_GPIO_PIN);
|
||||
@@ -48,7 +48,7 @@ void pwrInit()
|
||||
// Init PWR SWITCH PIN
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
|
||||
GPIO_InitStructure.GPIO_Pin = PWR_SWITCH_GPIO_PIN;
|
||||
GPIO_Init(PWR_GPIO, &GPIO_InitStructure);
|
||||
GPIO_Init(PWR_ON_GPIO, &GPIO_InitStructure);
|
||||
|
||||
// Init SD-DETECT PIN
|
||||
GPIO_ResetBits(SD_PRESENT_GPIO, SD_PRESENT_GPIO_PIN);
|
||||
@@ -56,16 +56,16 @@ void pwrInit()
|
||||
GPIO_Init(SD_PRESENT_GPIO, &GPIO_InitStructure);
|
||||
|
||||
//turn power off
|
||||
GPIO_ResetBits(PWR_GPIO, PWR_ON_GPIO_PIN);
|
||||
GPIO_ResetBits(PWR_ON_GPIO, PWR_ON_GPIO_PIN);
|
||||
//turn Bluetooth off
|
||||
GPIO_ResetBits(PWR_GPIO, BLUETOOTH_ON_GPIO_PIN);
|
||||
GPIO_ResetBits(PWR_ON_GPIO, BLUETOOTH_ON_GPIO_PIN);
|
||||
|
||||
boardState = BOARD_POWER_OFF;
|
||||
}
|
||||
|
||||
void pwrOn()
|
||||
{
|
||||
GPIO_SetBits(PWR_GPIO, PWR_ON_GPIO_PIN);
|
||||
GPIO_SetBits(PWR_ON_GPIO, PWR_ON_GPIO_PIN);
|
||||
boardState = BOARD_POWER_ON;
|
||||
}
|
||||
|
||||
@@ -78,12 +78,12 @@ void pwrOff()
|
||||
// Shutdown the Haptic
|
||||
hapticDone();
|
||||
boardState = BOARD_POWER_OFF;
|
||||
GPIO_ResetBits(PWR_GPIO, PWR_ON_GPIO_PIN);
|
||||
GPIO_ResetBits(PWR_ON_GPIO, PWR_ON_GPIO_PIN);
|
||||
}
|
||||
|
||||
bool pwrPressed()
|
||||
{
|
||||
return GPIO_ReadInputDataBit(PWR_GPIO, PWR_SWITCH_GPIO_PIN) == Bit_RESET;
|
||||
return GPIO_ReadInputDataBit(PWR_ON_GPIO, PWR_SWITCH_GPIO_PIN) == Bit_RESET;
|
||||
}
|
||||
|
||||
void pwrResetHandler()
|
||||
|
||||
@@ -473,7 +473,8 @@ void handleTouch()
|
||||
touchState.startY = touchState.y;
|
||||
touchState.event = TE_DOWN;
|
||||
if (g_eeGeneral.backlightMode & e_backlight_mode_keys)
|
||||
backlightOn(); // TODO is that the best place ?
|
||||
backlightEnable(BACKLIGHT_LEVEL_MAX);
|
||||
// backlightOn(); // TODO is that the best place ?
|
||||
}
|
||||
else if (touchState.event == TE_DOWN) {
|
||||
if (dx >= SLIDE_RANGE || dx <= -SLIDE_RANGE || dy >= SLIDE_RANGE || dy <= -SLIDE_RANGE) {
|
||||
|
||||
@@ -133,6 +133,9 @@ case $FLAVOR in
|
||||
TX16S_FS)
|
||||
BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=TX16S -DFLYSKY_HALL_STICKS=ON"
|
||||
;;
|
||||
NV14)
|
||||
BUILD_OPTIONS+="-DPCB=NV14"
|
||||
;;
|
||||
esac
|
||||
|
||||
cmake ${BUILD_OPTIONS} "${SRCDIR}"
|
||||
|
||||
Reference in New Issue
Block a user