From bd954478c6af7872b4e18aac94a5ce890e31f712 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 11 Feb 2017 23:35:47 +0100 Subject: [PATCH] [X12S] AUDIO is back --- radio/src/targets/horus/CMakeLists.txt | 5 +++ radio/src/targets/horus/audio_spi_driver.cpp | 39 +++++++++++++++++++- radio/src/targets/horus/board.h | 2 +- radio/src/targets/horus/pwr_driver.cpp | 7 ---- 4 files changed, 43 insertions(+), 10 deletions(-) diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 790b3a57a..eae70dac4 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -1,6 +1,7 @@ option(DISK_CACHE "Enable SD card disk cache" YES) option(BLUETOOTH_CLI_PASSTHROUGH "Enable direct communicaton with Bluetooth module from CLI" NO) option(PWR_BUTTON_DISABLED "Disable the Power Button (for debugging with JTAG)" NO) +option(NO_UNEXPECTED_SHUTDOWN "Disable the Unexpected Shutdown screen (for debugging with JTAG)" NO) set(CPU_TYPE STM32F4) set(HSE_VALUE 12000000) @@ -25,6 +26,10 @@ if(PWR_BUTTON_DISABLED) add_definitions(-DPWR_BUTTON_DISABLED) endif() +if(NO_UNEXPECTED_SHUTDOWN) + add_definitions(-DNO_UNEXPECTED_SHUTDOWN) +endif() + if (PCB STREQUAL X10) set(FLAVOUR x10) add_definitions(-DPCBX10) diff --git a/radio/src/targets/horus/audio_spi_driver.cpp b/radio/src/targets/horus/audio_spi_driver.cpp index 325ed0abe..e36588375 100644 --- a/radio/src/targets/horus/audio_spi_driver.cpp +++ b/radio/src/targets/horus/audio_spi_driver.cpp @@ -349,6 +349,29 @@ void audioSendRiffHeader() audioSpiWriteBuffer(RiffHeader, sizeof(RiffHeader)); } +#if defined(PCBX12S) +void audioMuteInit() +{ + GPIO_InitTypeDef GPIO_InitStructure; + GPIO_InitStructure.GPIO_Pin = AUDIO_SHUTDOWN_GPIO_PIN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(AUDIO_SHUTDOWN_GPIO, &GPIO_InitStructure); +} + +void audioOn() +{ + GPIO_SetBits(AUDIO_SHUTDOWN_GPIO, AUDIO_SHUTDOWN_GPIO_PIN); +} + +void audioOff() +{ + GPIO_ResetBits(AUDIO_SHUTDOWN_GPIO, AUDIO_SHUTDOWN_GPIO_PIN); +} +#endif + void audioInit() { audioSpiInit(); @@ -356,6 +379,12 @@ void audioInit() audioSoftReset(); audioSpiSetSpeed(SPI_SPEED_8); +#if defined(PCBX12S) + audioMuteInit(); + audioOn(); + // TODO X10 code missing +#endif + delay_01us(10000); // 1ms audioSendRiffHeader(); } @@ -366,8 +395,14 @@ int16_t newVolume = -1; void audioSetCurrentBuffer(const AudioBuffer * buffer) { - currentBuffer = (uint8_t *)buffer->data; - currentSize = buffer->size * 2; + if (buffer) { + currentBuffer = (uint8_t *)buffer->data; + currentSize = buffer->size * 2; + } + else { + currentBuffer = NULL; + currentSize = 0; + } } void audioConsumeCurrentBuffer() diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 5fab2da26..73d65f02d 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -399,7 +399,7 @@ void pwrResetHandler(void); uint32_t pwrPressed(void); uint32_t pwrPressedDuration(void); #define pwroffPressed() pwrPressed() -#if defined(SIMU) +#if defined(SIMU) || defined(NO_UNEXPECTED_SHUTDOWN) #define UNEXPECTED_SHUTDOWN() (false) #else #define UNEXPECTED_SHUTDOWN() (powerupReason == DIRTY_SHUTDOWN) diff --git a/radio/src/targets/horus/pwr_driver.cpp b/radio/src/targets/horus/pwr_driver.cpp index 0d0aee1e4..78c888395 100644 --- a/radio/src/targets/horus/pwr_driver.cpp +++ b/radio/src/targets/horus/pwr_driver.cpp @@ -35,13 +35,6 @@ void pwrInit() GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(PWR_GPIO, &GPIO_InitStructure); -#if defined(PCBX12S) - // TODO should not be here! - // TODO and X10 code missing - GPIO_InitStructure.GPIO_Pin = AUDIO_SHUTDOWN_GPIO_PIN; - GPIO_Init(AUDIO_SHUTDOWN_GPIO, &GPIO_InitStructure); -#endif - // Init Module PWR GPIO_ResetBits(INTMODULE_PWR_GPIO, INTMODULE_PWR_GPIO_PIN); GPIO_InitStructure.GPIO_Pin = INTMODULE_PWR_GPIO_PIN;