Fixed NV14 build, added flysky build script and target in build-gh.sh

This commit is contained in:
Richard Li
2021-06-09 16:10:45 +08:00
parent 7ffd3f5a33
commit cc92f25046
18 changed files with 226 additions and 45 deletions
+1 -1
View File
@@ -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
+7 -3
View File
@@ -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();
}
+1
View File
@@ -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()
+2
View File
@@ -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)
+3
View File
@@ -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
+56 -10
View File
@@ -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)
+2 -2
View File
@@ -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
+6 -3
View File
@@ -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();
+16 -3
View File
@@ -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);
+1 -1
View File
@@ -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()
{
}
+48 -3
View File
@@ -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_
+61 -1
View File
@@ -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) {
+2 -2
View File
@@ -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
{
+10 -10
View File
@@ -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()
+2 -1
View File
@@ -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) {
+3
View File
@@ -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}"