diff --git a/radio/sdcard/horus/THEMES/Default/aboutbg.bmp b/radio/sdcard/horus/THEMES/Default/aboutbg.bmp deleted file mode 100644 index 645425cf7..000000000 Binary files a/radio/sdcard/horus/THEMES/Default/aboutbg.bmp and /dev/null differ diff --git a/radio/src/bitmaps/horus/mask_current_bg.png b/radio/sdcard/horus/THEMES/Default/mask_currentmenu_bg.png similarity index 100% rename from radio/src/bitmaps/horus/mask_current_bg.png rename to radio/sdcard/horus/THEMES/Default/mask_currentmenu_bg.png diff --git a/radio/src/bitmaps/horus/mask_current_dot.png b/radio/sdcard/horus/THEMES/Default/mask_currentmenu_dot.png similarity index 100% rename from radio/src/bitmaps/horus/mask_current_dot.png rename to radio/sdcard/horus/THEMES/Default/mask_currentmenu_dot.png diff --git a/radio/sdcard/horus/THEMES/Default/mask_currentmenu_shadow.png b/radio/sdcard/horus/THEMES/Default/mask_currentmenu_shadow.png new file mode 100644 index 000000000..97bf6c577 Binary files /dev/null and b/radio/sdcard/horus/THEMES/Default/mask_currentmenu_shadow.png differ diff --git a/radio/src/bitmaps/horus/mask_library.png b/radio/sdcard/horus/THEMES/Default/mask_library.png similarity index 100% rename from radio/src/bitmaps/horus/mask_library.png rename to radio/sdcard/horus/THEMES/Default/mask_library.png diff --git a/radio/src/bitmaps/horus/mask_menu_model.png b/radio/sdcard/horus/THEMES/Default/mask_menu_model.png similarity index 100% rename from radio/src/bitmaps/horus/mask_menu_model.png rename to radio/sdcard/horus/THEMES/Default/mask_menu_model.png diff --git a/radio/src/bitmaps/horus/mask_menu_radio.png b/radio/sdcard/horus/THEMES/Default/mask_menu_radio.png similarity index 100% rename from radio/src/bitmaps/horus/mask_menu_radio.png rename to radio/sdcard/horus/THEMES/Default/mask_menu_radio.png diff --git a/radio/src/bitmaps/horus/mask_stats.png b/radio/sdcard/horus/THEMES/Default/mask_menu_stats.png similarity index 100% rename from radio/src/bitmaps/horus/mask_stats.png rename to radio/sdcard/horus/THEMES/Default/mask_menu_stats.png diff --git a/radio/src/bitmaps/horus/mask_mainviews.png b/radio/sdcard/horus/THEMES/Default/mask_menu_theme.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews.png rename to radio/sdcard/horus/THEMES/Default/mask_menu_theme.png diff --git a/radio/src/bitmaps/horus/mask_curves.png b/radio/sdcard/horus/THEMES/Default/mask_model_curves.png similarity index 100% rename from radio/src/bitmaps/horus/mask_curves.png rename to radio/sdcard/horus/THEMES/Default/mask_model_curves.png diff --git a/radio/src/bitmaps/horus/mask_flight_modes.png b/radio/sdcard/horus/THEMES/Default/mask_model_flight_modes.png similarity index 100% rename from radio/src/bitmaps/horus/mask_flight_modes.png rename to radio/sdcard/horus/THEMES/Default/mask_model_flight_modes.png diff --git a/radio/src/bitmaps/horus/mask_gvars.png b/radio/sdcard/horus/THEMES/Default/mask_model_gvars.png similarity index 100% rename from radio/src/bitmaps/horus/mask_gvars.png rename to radio/sdcard/horus/THEMES/Default/mask_model_gvars.png diff --git a/radio/src/bitmaps/horus/mask_heli.png b/radio/sdcard/horus/THEMES/Default/mask_model_heli.png similarity index 100% rename from radio/src/bitmaps/horus/mask_heli.png rename to radio/sdcard/horus/THEMES/Default/mask_model_heli.png diff --git a/radio/src/bitmaps/horus/mask_inputs.png b/radio/sdcard/horus/THEMES/Default/mask_model_inputs.png similarity index 100% rename from radio/src/bitmaps/horus/mask_inputs.png rename to radio/sdcard/horus/THEMES/Default/mask_model_inputs.png diff --git a/radio/src/bitmaps/horus/mask_logical_switches.png b/radio/sdcard/horus/THEMES/Default/mask_model_logical_switches.png similarity index 100% rename from radio/src/bitmaps/horus/mask_logical_switches.png rename to radio/sdcard/horus/THEMES/Default/mask_model_logical_switches.png diff --git a/radio/src/bitmaps/horus/mask_lua_scripts.png b/radio/sdcard/horus/THEMES/Default/mask_model_lua_scripts.png similarity index 100% rename from radio/src/bitmaps/horus/mask_lua_scripts.png rename to radio/sdcard/horus/THEMES/Default/mask_model_lua_scripts.png diff --git a/radio/src/bitmaps/horus/mask_mixer.png b/radio/sdcard/horus/THEMES/Default/mask_model_mixer.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mixer.png rename to radio/sdcard/horus/THEMES/Default/mask_model_mixer.png diff --git a/radio/src/bitmaps/horus/mask_outputs.png b/radio/sdcard/horus/THEMES/Default/mask_model_outputs.png similarity index 100% rename from radio/src/bitmaps/horus/mask_outputs.png rename to radio/sdcard/horus/THEMES/Default/mask_model_outputs.png diff --git a/radio/src/bitmaps/horus/mask_model_setup.png b/radio/sdcard/horus/THEMES/Default/mask_model_setup.png similarity index 100% rename from radio/src/bitmaps/horus/mask_model_setup.png rename to radio/sdcard/horus/THEMES/Default/mask_model_setup.png diff --git a/radio/src/bitmaps/horus/mask_special_functions.png b/radio/sdcard/horus/THEMES/Default/mask_model_special_functions.png similarity index 100% rename from radio/src/bitmaps/horus/mask_special_functions.png rename to radio/sdcard/horus/THEMES/Default/mask_model_special_functions.png diff --git a/radio/src/bitmaps/horus/mask_telemetry.png b/radio/sdcard/horus/THEMES/Default/mask_model_telemetry.png similarity index 100% rename from radio/src/bitmaps/horus/mask_telemetry.png rename to radio/sdcard/horus/THEMES/Default/mask_model_telemetry.png diff --git a/radio/src/bitmaps/horus/mask_topmenu_opentx.png b/radio/sdcard/horus/THEMES/Default/mask_opentx.png similarity index 100% rename from radio/src/bitmaps/horus/mask_topmenu_opentx.png rename to radio/sdcard/horus/THEMES/Default/mask_opentx.png diff --git a/radio/src/bitmaps/horus/mask_calibration.png b/radio/sdcard/horus/THEMES/Default/mask_radio_calibration.png similarity index 100% rename from radio/src/bitmaps/horus/mask_calibration.png rename to radio/sdcard/horus/THEMES/Default/mask_radio_calibration.png diff --git a/radio/src/bitmaps/horus/mask_global_functions.png b/radio/sdcard/horus/THEMES/Default/mask_radio_global_functions.png similarity index 100% rename from radio/src/bitmaps/horus/mask_global_functions.png rename to radio/sdcard/horus/THEMES/Default/mask_radio_global_functions.png diff --git a/radio/src/bitmaps/horus/mask_hardware.png b/radio/sdcard/horus/THEMES/Default/mask_radio_hardware.png similarity index 100% rename from radio/src/bitmaps/horus/mask_hardware.png rename to radio/sdcard/horus/THEMES/Default/mask_radio_hardware.png diff --git a/radio/src/bitmaps/horus/mask_sd_browser.png b/radio/sdcard/horus/THEMES/Default/mask_radio_sd_browser.png similarity index 100% rename from radio/src/bitmaps/horus/mask_sd_browser.png rename to radio/sdcard/horus/THEMES/Default/mask_radio_sd_browser.png diff --git a/radio/src/bitmaps/horus/mask_radio_setup.png b/radio/sdcard/horus/THEMES/Default/mask_radio_setup.png similarity index 100% rename from radio/src/bitmaps/horus/mask_radio_setup.png rename to radio/sdcard/horus/THEMES/Default/mask_radio_setup.png diff --git a/radio/src/bitmaps/horus/mask_trainer.png b/radio/sdcard/horus/THEMES/Default/mask_radio_trainer.png similarity index 100% rename from radio/src/bitmaps/horus/mask_trainer.png rename to radio/sdcard/horus/THEMES/Default/mask_radio_trainer.png diff --git a/radio/src/bitmaps/horus/mask_version.png b/radio/sdcard/horus/THEMES/Default/mask_radio_version.png similarity index 100% rename from radio/src/bitmaps/horus/mask_version.png rename to radio/sdcard/horus/THEMES/Default/mask_radio_version.png diff --git a/radio/src/bitmaps/horus/mask_analogs.png b/radio/sdcard/horus/THEMES/Default/mask_stats_analogs.png similarity index 100% rename from radio/src/bitmaps/horus/mask_analogs.png rename to radio/sdcard/horus/THEMES/Default/mask_stats_analogs.png diff --git a/radio/src/bitmaps/horus/mask_stats_debug.png b/radio/sdcard/horus/THEMES/Default/mask_stats_debug.png similarity index 100% rename from radio/src/bitmaps/horus/mask_stats_debug.png rename to radio/sdcard/horus/THEMES/Default/mask_stats_debug.png diff --git a/radio/src/bitmaps/horus/mask_stats_lua.png b/radio/sdcard/horus/THEMES/Default/mask_stats_lua.png similarity index 100% rename from radio/src/bitmaps/horus/mask_stats_lua.png rename to radio/sdcard/horus/THEMES/Default/mask_stats_lua.png diff --git a/radio/src/bitmaps/horus/mask_stats_graph.png b/radio/sdcard/horus/THEMES/Default/mask_stats_throttle_graph.png similarity index 100% rename from radio/src/bitmaps/horus/mask_stats_graph.png rename to radio/sdcard/horus/THEMES/Default/mask_stats_throttle_graph.png diff --git a/radio/src/bitmaps/horus/mask_stats_time.png b/radio/sdcard/horus/THEMES/Default/mask_stats_timers.png similarity index 100% rename from radio/src/bitmaps/horus/mask_stats_time.png rename to radio/sdcard/horus/THEMES/Default/mask_stats_timers.png diff --git a/radio/src/bitmaps/horus/mask_stats_value.png b/radio/sdcard/horus/THEMES/Default/mask_stats_value.png similarity index 100% rename from radio/src/bitmaps/horus/mask_stats_value.png rename to radio/sdcard/horus/THEMES/Default/mask_stats_value.png diff --git a/radio/src/bitmaps/horus/mask_switches.png b/radio/sdcard/horus/THEMES/Default/mask_switches.png similarity index 100% rename from radio/src/bitmaps/horus/mask_switches.png rename to radio/sdcard/horus/THEMES/Default/mask_switches.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_add.png b/radio/sdcard/horus/THEMES/Default/mask_theme_add_view.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_add.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_add_view.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_topbar.png b/radio/sdcard/horus/THEMES/Default/mask_theme_setup.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_topbar.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_setup.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_1.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view1.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_1.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view1.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_2.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view2.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_2.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view2.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_3.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view3.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_3.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view3.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_4.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view4.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_4.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view4.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_5.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view5.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_5.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view5.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_6.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view6.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_6.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view6.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_7.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view7.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_7.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view7.png diff --git a/radio/src/bitmaps/horus/mask_mainviews_8.png b/radio/sdcard/horus/THEMES/Default/mask_theme_view8.png similarity index 100% rename from radio/src/bitmaps/horus/mask_mainviews_8.png rename to radio/sdcard/horus/THEMES/Default/mask_theme_view8.png diff --git a/radio/sdcard/horus/THEMES/TBS/main.lua b/radio/sdcard/horus/THEMES/TBS/main.lua index 56e06e46f..3defe5d3c 100644 --- a/radio/sdcard/horus/THEMES/TBS/main.lua +++ b/radio/sdcard/horus/THEMES/TBS/main.lua @@ -1,3 +1,5 @@ +local bitmap = 0 + local function load() lcd.setColor(TEXT_COLOR_INDEX, WHITE) lcd.setColor(TEXT_BGCOLOR_INDEX, BLACK) @@ -24,11 +26,14 @@ local function load() lcd.setColor(HEADER_ICON_BGCOLOR_INDEX, BLACK) lcd.setColor(HEADER_CURRENT_BGCOLOR_INDEX, lcd.RGB(10, 78, 121)) lcd.setColor(OVERLAY_COLOR_INDEX, BLACK) + bitmap = lcd.loadBitmap("THEMES/TBS/thumb.bmp") return 0 end local function drawBackground() lcd.drawFilledRectangle(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR); + + lcd.drawBitmap(50, 50, bitmap) end local function drawTopbarBackground(icon) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 7e53ab2c0..9ee055d8c 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -20,6 +20,7 @@ option(AUTOSWITCH "Automatic switch detection in menus" ON) option(JITTER_MEASURE "Enable ADC jitter measurement" OFF) option(JITTER_FILTER "Enable ADC jitter filtering" ON) option(WATCHDOG_DISABLED "Disable hardware Watchdog on Horus" OFF) # TODO remove it when it's OK +option(SIMU_AUDIO "Enable simulator audio" OFF) enable_language(ASM) set(OPT s) @@ -37,6 +38,7 @@ configure_file(stamp.h.in stamp.h @ONLY) add_subdirectory(translations) add_subdirectory(bitmaps) +add_subdirectory(fonts) add_subdirectory(lua) set(EEPROM_VARIANT 0) @@ -472,6 +474,10 @@ if(CPU_FAMILY STREQUAL STM32) sbus.cpp telemetry/crossfire.cpp ) + set(PULSES_SRC + ${PULSES_SRC} + crossfire.cpp + ) endif() if(ARCH STREQUAL ARM) @@ -485,6 +491,10 @@ if(ARCH STREQUAL ARM) option(DEBUG_TRACE_BUFFER "Debug Trace Screen" OFF) option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" OFF) option(SUPPORT_D16_EU_ONLY "XJT module only supports D16-EU and LR12-EU" OFF) # TODO rename to XJT_EU_ONLY + option(DEBUG_INTERRUPTS "Count interrupts" OFF) + option(DEBUG_TASKS "Task switching statistics" OFF) + option(DEBUG_TIMERS "Time critical parts of the code" OFF) + if(TIMERS EQUAL 3) add_definitions(-DTIMERS=3) else() @@ -511,6 +521,18 @@ if(ARCH STREQUAL ARM) if(DEBUG_TRACE_BUFFER) add_definitions(-DDEBUG_TRACE_BUFFER) endif() + if(DEBUG_INTERRUPTS) + add_definitions(-DDEBUG_INTERRUPTS) + set(DEBUG ON) + endif() + if(DEBUG_TASKS) + add_definitions(-DDEBUG_TASKS) + set(DEBUG ON) + endif() + if(DEBUG_TIMERS) + add_definitions(-DDEBUG_TIMERS) + set(DEBUG ON) + endif() if(CLI) add_definitions(-DCLI) set(FIRMWARE_SRC ${FIRMWARE_SRC} cli.cpp) @@ -584,11 +606,11 @@ if(ARCH STREQUAL ARM) ${COOS_DIR}/portable/arch.c ) set(PULSES_SRC + ${PULSES_SRC} pulses_arm.cpp ppm_arm.cpp pxx_arm.cpp dsm2_arm.cpp - crossfire.cpp ) else() option(EXT "Telemetry protocol" OFF) # TODO rename this EXT option to TELEMETRY @@ -842,6 +864,10 @@ if(WATCHDOG_DISABLED) add_definitions(-DWATCHDOG_DISABLED) endif() +if(SIMU_AUDIO) + add_definitions(-DSIMU_AUDIO) +endif() + if(SDCARD) add_definitions(-DSDCARD) include_directories(${FATFS_DIR} ${FATFS_DIR}/option) diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 985a18b36..3d6369dd1 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -781,7 +781,7 @@ void AudioQueue::wakeup() // TRACE("pushing buffer %d\n", bufferWIdx); bufferWIdx = nextBufferIdx(bufferWIdx); buffer->size = size; - buffer->state = audioPushBuffer(buffer) ? AUDIO_BUFFER_PLAYING : AUDIO_BUFFER_FILLED; + audioPushBuffer(buffer); __enable_irq(); } } @@ -1004,176 +1004,174 @@ void audioEvent(unsigned int index, unsigned int freq) char filename[AUDIO_FILENAME_MAXLEN + 1]; if (index < AU_SPECIAL_SOUND_FIRST && isAudioFileReferenced(index, filename)) { audioQueue.playFile(filename); + return; } - else #endif - if (index < AU_SPECIAL_SOUND_FIRST) { - switch (index) { - case AU_INACTIVITY: - audioQueue.playTone(2250, 80, 20, PLAY_REPEAT(2)); - break; - case AU_TX_BATTERY_LOW: + switch (index) { + case AU_INACTIVITY: + audioQueue.playTone(2250, 80, 20, PLAY_REPEAT(2)); + break; + case AU_TX_BATTERY_LOW: #if defined(PCBSKY9X) - case AU_TX_MAH_HIGH: - case AU_TX_TEMP_HIGH: + case AU_TX_MAH_HIGH: + case AU_TX_TEMP_HIGH: #endif - audioQueue.playTone(1950, 160, 20, PLAY_REPEAT(2), 1); - audioQueue.playTone(2550, 160, 20, PLAY_REPEAT(2), -1); - break; - case AU_THROTTLE_ALERT: - case AU_SWITCH_ALERT: - case AU_ERROR: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW); - break; - case AU_KEYPAD_UP: - audioQueue.playTone(BEEP_KEY_UP_FREQ, 80, 20, PLAY_NOW); - break; - case AU_KEYPAD_DOWN: - audioQueue.playTone(BEEP_KEY_DOWN_FREQ, 80, 20, PLAY_NOW); - break; - case AU_MENUS: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW); - break; - case AU_TRIM_MOVE: - audioQueue.playTone(freq, 40, 20, PLAY_NOW); - break; - case AU_TRIM_MIDDLE: - audioQueue.playTone(freq, 80, 20, PLAY_NOW); - break; - case AU_TRIM_END: - audioQueue.playTone(freq, 80, 20, PLAY_NOW); - break; - case AU_WARNING1: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW); - break; - case AU_WARNING2: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 160, 20, PLAY_NOW); - break; - case AU_WARNING3: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW); - break; - // TODO remove all these ones - case AU_STICK1_MIDDLE: - case AU_STICK2_MIDDLE: - case AU_STICK3_MIDDLE: - case AU_STICK4_MIDDLE: - case AU_POT1_MIDDLE: - case AU_POT2_MIDDLE: + audioQueue.playTone(1950, 160, 20, PLAY_REPEAT(2), 1); + audioQueue.playTone(2550, 160, 20, PLAY_REPEAT(2), -1); + break; + case AU_THROTTLE_ALERT: + case AU_SWITCH_ALERT: + case AU_ERROR: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW); + break; + case AU_KEYPAD_UP: + audioQueue.playTone(BEEP_KEY_UP_FREQ, 80, 20, PLAY_NOW); + break; + case AU_KEYPAD_DOWN: + audioQueue.playTone(BEEP_KEY_DOWN_FREQ, 80, 20, PLAY_NOW); + break; + case AU_MENUS: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW); + break; + case AU_TRIM_MOVE: + audioQueue.playTone(freq, 40, 20, PLAY_NOW); + break; + case AU_TRIM_MIDDLE: + audioQueue.playTone(freq, 80, 20, PLAY_NOW); + break; + case AU_TRIM_END: + audioQueue.playTone(freq, 80, 20, PLAY_NOW); + break; + case AU_WARNING1: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 80, 20, PLAY_NOW); + break; + case AU_WARNING2: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 160, 20, PLAY_NOW); + break; + case AU_WARNING3: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20, PLAY_NOW); + break; + // TODO remove all these ones + case AU_STICK1_MIDDLE: + case AU_STICK2_MIDDLE: + case AU_STICK3_MIDDLE: + case AU_STICK4_MIDDLE: + case AU_POT1_MIDDLE: + case AU_POT2_MIDDLE: #if defined(PCBTARANIS) || defined(PCBFLAMENCO) || defined(PCBHORUS) - case AU_SLIDER1_MIDDLE: - case AU_SLIDER2_MIDDLE: + case AU_SLIDER1_MIDDLE: + case AU_SLIDER2_MIDDLE: #else - case AU_POT3_MIDDLE: + case AU_POT3_MIDDLE: #endif - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 80, 20, PLAY_NOW); - break; - case AU_MIX_WARNING_1: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1440, 48, 32); - break; - case AU_MIX_WARNING_2: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1560, 48, 32, PLAY_REPEAT(1)); - break; - case AU_MIX_WARNING_3: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1680, 48, 32, PLAY_REPEAT(2)); - break; - case AU_TIMER_00: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 300, 20, PLAY_NOW); - break; - case AU_TIMER_LT10: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_NOW); - break; - case AU_TIMER_20: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(1) | PLAY_NOW); - break; - case AU_TIMER_30: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(2) | PLAY_NOW); - break; - case AU_A1_ORANGE: - case AU_A2_ORANGE: - case AU_A3_ORANGE: - case AU_A4_ORANGE: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_NOW); - break; - case AU_A1_RED: - case AU_A2_RED: - case AU_A3_RED: - case AU_A4_RED: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_REPEAT(1) | PLAY_NOW); - break; - case AU_RSSI_ORANGE: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 800, 20, PLAY_NOW); - break; - case AU_RSSI_RED: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1800, 800, 20, PLAY_REPEAT(1) | PLAY_NOW); - break; - case AU_SWR_RED: - audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 1); - break; - case AU_SPECIAL_SOUND_BEEP1: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 60, 20); - break; - case AU_SPECIAL_SOUND_BEEP2: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 120, 20); - break; - case AU_SPECIAL_SOUND_BEEP3: - audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20); - break; - case AU_SPECIAL_SOUND_WARN1: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 120, 40, PLAY_REPEAT(2)); - break; - case AU_SPECIAL_SOUND_WARN2: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 120, 40, PLAY_REPEAT(2)); - break; - case AU_SPECIAL_SOUND_CHEEP: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 80, 20, PLAY_REPEAT(2), 2); - break; - case AU_SPECIAL_SOUND_RING: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10)); - audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 80, PLAY_REPEAT(1)); - audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10)); - break; - case AU_SPECIAL_SOUND_SCIFI: - audioQueue.playTone(2550, 80, 20, PLAY_REPEAT(2), -1); - audioQueue.playTone(1950, 80, 20, PLAY_REPEAT(2), 1); - audioQueue.playTone(2250, 80, 20, 0); - break; - case AU_SPECIAL_SOUND_ROBOT: - audioQueue.playTone(2250, 40, 20, PLAY_REPEAT(1)); - audioQueue.playTone(1650, 120, 20, PLAY_REPEAT(1)); - audioQueue.playTone(2550, 120, 20, PLAY_REPEAT(1)); - break; - case AU_SPECIAL_SOUND_CHIRP: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1200, 40, 20, PLAY_REPEAT(2)); - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1620, 40, 20, PLAY_REPEAT(3)); - break; - case AU_SPECIAL_SOUND_TADA: - audioQueue.playTone(1650, 80, 40); - audioQueue.playTone(2850, 80, 40); - audioQueue.playTone(3450, 64, 36, PLAY_REPEAT(2)); - break; - case AU_SPECIAL_SOUND_CRICKET: - audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); - audioQueue.playTone(2550, 40, 160, PLAY_REPEAT(1)); - audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); - break; - case AU_SPECIAL_SOUND_SIREN: - audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 2); - break; - case AU_SPECIAL_SOUND_ALARMC: - audioQueue.playTone(1650, 32, 68, PLAY_REPEAT(2)); - audioQueue.playTone(2250, 64, 156, PLAY_REPEAT(1)); - audioQueue.playTone(1650, 64, 76, PLAY_REPEAT(2)); - audioQueue.playTone(2250, 32, 168, PLAY_REPEAT(1)); - break; - case AU_SPECIAL_SOUND_RATATA: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 80, PLAY_REPEAT(10)); - break; - case AU_SPECIAL_SOUND_TICK: - audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 400, PLAY_REPEAT(2)); - break; - default: - break; - } + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 80, 20, PLAY_NOW); + break; + case AU_MIX_WARNING_1: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1440, 48, 32); + break; + case AU_MIX_WARNING_2: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1560, 48, 32, PLAY_REPEAT(1)); + break; + case AU_MIX_WARNING_3: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1680, 48, 32, PLAY_REPEAT(2)); + break; + case AU_TIMER_00: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 300, 20, PLAY_NOW); + break; + case AU_TIMER_LT10: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_NOW); + break; + case AU_TIMER_20: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(1) | PLAY_NOW); + break; + case AU_TIMER_30: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 150, 120, 20, PLAY_REPEAT(2) | PLAY_NOW); + break; + case AU_A1_ORANGE: + case AU_A2_ORANGE: + case AU_A3_ORANGE: + case AU_A4_ORANGE: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_NOW); + break; + case AU_A1_RED: + case AU_A2_RED: + case AU_A3_RED: + case AU_A4_RED: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 200, 20, PLAY_REPEAT(1) | PLAY_NOW); + break; + case AU_RSSI_ORANGE: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 800, 20, PLAY_NOW); + break; + case AU_RSSI_RED: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1800, 800, 20, PLAY_REPEAT(1) | PLAY_NOW); + break; + case AU_SWR_RED: + audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 1); + break; + case AU_SPECIAL_SOUND_BEEP1: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 60, 20); + break; + case AU_SPECIAL_SOUND_BEEP2: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 120, 20); + break; + case AU_SPECIAL_SOUND_BEEP3: + audioQueue.playTone(BEEP_DEFAULT_FREQ, 200, 20); + break; + case AU_SPECIAL_SOUND_WARN1: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 600, 120, 40, PLAY_REPEAT(2)); + break; + case AU_SPECIAL_SOUND_WARN2: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 120, 40, PLAY_REPEAT(2)); + break; + case AU_SPECIAL_SOUND_CHEEP: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 900, 80, 20, PLAY_REPEAT(2), 2); + break; + case AU_SPECIAL_SOUND_RING: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 80, PLAY_REPEAT(1)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 750, 40, 20, PLAY_REPEAT(10)); + break; + case AU_SPECIAL_SOUND_SCIFI: + audioQueue.playTone(2550, 80, 20, PLAY_REPEAT(2), -1); + audioQueue.playTone(1950, 80, 20, PLAY_REPEAT(2), 1); + audioQueue.playTone(2250, 80, 20, 0); + break; + case AU_SPECIAL_SOUND_ROBOT: + audioQueue.playTone(2250, 40, 20, PLAY_REPEAT(1)); + audioQueue.playTone(1650, 120, 20, PLAY_REPEAT(1)); + audioQueue.playTone(2550, 120, 20, PLAY_REPEAT(1)); + break; + case AU_SPECIAL_SOUND_CHIRP: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1200, 40, 20, PLAY_REPEAT(2)); + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1620, 40, 20, PLAY_REPEAT(3)); + break; + case AU_SPECIAL_SOUND_TADA: + audioQueue.playTone(1650, 80, 40); + audioQueue.playTone(2850, 80, 40); + audioQueue.playTone(3450, 64, 36, PLAY_REPEAT(2)); + break; + case AU_SPECIAL_SOUND_CRICKET: + audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); + audioQueue.playTone(2550, 40, 160, PLAY_REPEAT(1)); + audioQueue.playTone(2550, 40, 80, PLAY_REPEAT(3)); + break; + case AU_SPECIAL_SOUND_SIREN: + audioQueue.playTone(450, 160, 40, PLAY_REPEAT(2), 2); + break; + case AU_SPECIAL_SOUND_ALARMC: + audioQueue.playTone(1650, 32, 68, PLAY_REPEAT(2)); + audioQueue.playTone(2250, 64, 156, PLAY_REPEAT(1)); + audioQueue.playTone(1650, 64, 76, PLAY_REPEAT(2)); + audioQueue.playTone(2250, 32, 168, PLAY_REPEAT(1)); + break; + case AU_SPECIAL_SOUND_RATATA: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 80, PLAY_REPEAT(10)); + break; + case AU_SPECIAL_SOUND_TICK: + audioQueue.playTone(BEEP_DEFAULT_FREQ + 1500, 40, 400, PLAY_REPEAT(2)); + break; + default: + break; } } } diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index b48cead34..01ca0af1a 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -166,7 +166,7 @@ class MixedContext { int mixBuffer(AudioBuffer *buffer, int volume, unsigned int fade); }; -bool audioPushBuffer(AudioBuffer * buffer); +void audioPushBuffer(AudioBuffer * buffer); class AudioQueue { @@ -174,7 +174,9 @@ class AudioQueue { #if defined(SIMU_AUDIO) friend void *audioThread(void *); #endif - +#if defined(CLI) + friend void printAudioVars(); +#endif public: AudioQueue(); diff --git a/radio/src/bitmaps/horus/CMakeLists.txt b/radio/src/bitmaps/horus/CMakeLists.txt index 9289b19ec..6ec6b1c59 100644 --- a/radio/src/bitmaps/horus/CMakeLists.txt +++ b/radio/src/bitmaps/horus/CMakeLists.txt @@ -1,12 +1,3 @@ -add_truetype_font_target(horus tinsize "DejaVu Sans" 9 False) -add_truetype_font_target(horus smlsize "DejaVu Sans" 13 False) -add_truetype_font_target(horus stdsize "DejaVu Sans" 16 False) -add_truetype_font_target(horus stdsizebold "DejaVu Sans" 16 True) -add_truetype_font_target(horus midsize "DejaVu Sans" 24 False) -add_truetype_font_target(horus dblsize "DejaVu Sans" 32 True) -add_truetype_font_target(horus xxlsize "DejaVu Sans" 48 False) -add_custom_target(ttf_horus_fonts DEPENDS ${ttf_horus_fonts_targets}) - add_bitmaps_target(horus_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/bmp_*.png" 480 5/6/5) add_bitmaps_target(horus_calibration_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/calibration/bmp_*.png" 480 5/6/5) add_bitmaps_target(horus_button_bitmaps "${RADIO_SRC_DIRECTORY}/bitmaps/horus/button/alpha_*.png" 480 4/4/4/4) diff --git a/radio/src/bitmaps/horus/mainview_flat.png b/radio/src/bitmaps/horus/mainview_flat.png deleted file mode 100644 index 44f8ca652..000000000 Binary files a/radio/src/bitmaps/horus/mainview_flat.png and /dev/null differ diff --git a/radio/src/bitmaps/horus/mask_current_shadow.png b/radio/src/bitmaps/horus/mask_current_shadow.png deleted file mode 100644 index 4632c601f..000000000 Binary files a/radio/src/bitmaps/horus/mask_current_shadow.png and /dev/null differ diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 669ac9634..04637a976 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -357,6 +357,132 @@ int cliSet(const char ** argv) return 0; } + +#if defined(DEBUG_INTERRUPTS) +void printInterrupts() +{ + __disable_irq(); + struct InterruptCounters ic = interruptCounters; + memset(&interruptCounters, 0, sizeof(interruptCounters)); + interruptCounters.resetTime = get_tmr10ms(); + __enable_irq(); + serialPrint("Interrupts count in the last %u ms:", (get_tmr10ms() - ic.resetTime) * 10); + for(int n = 0; n < INT_LAST; n++) { + serialPrint("%s: %u", interruptNames[n], ic.cnt[n]); + } +} +#endif //#if defined(DEBUG_INTERRUPTS) + +#if defined(DEBUG_TASKS) + +void printTaskSwitchLog() +{ + serialPrint("Tasks legend [, ]:"); + for(int n = 0; n <= CFG_MAX_USER_TASKS+1; n++) { + if (0 == n) { + serialPrint("%d: Idle", n); + } + if (cliTaskId == n) { + serialPrint("%d: CLI", n); + } + else if (menusTaskId == n) { + serialPrint("%d: menus", n); + } + else if (mixerTaskId == n) { + serialPrint("%d: mixer", n); + } + else if (audioTaskId == n) { + serialPrint("%d: audio", n); + } +#if defined(BLUETOOTH) + else if (btTaskId == n) { + serialPrint("%d: BT", n); + } +#endif + } + serialCrlf(); + + serialPrint("Tasks switch log at %u [