From 75adda314e068a0c90c4d3cadd410da67b025285 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Thu, 28 Feb 2019 21:32:03 -0800 Subject: [PATCH] LED: Refactor halt function from CPLD update to core API. Also call if CPLD load fails. --- firmware/common/hackrf_core.c | 15 +++++++++++++++ firmware/common/hackrf_core.h | 1 + firmware/hackrf_usb/hackrf_usb.c | 2 +- firmware/hackrf_usb/usb_api_cpld.c | 17 +---------------- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/firmware/common/hackrf_core.c b/firmware/common/hackrf_core.c index 5ca74b7d..4d01c0e2 100644 --- a/firmware/common/hackrf_core.c +++ b/firmware/common/hackrf_core.c @@ -906,3 +906,18 @@ void led_toggle(const led_t led) { void hw_sync_enable(const hw_sync_mode_t hw_sync_mode){ gpio_write(&gpio_hw_sync_enable, hw_sync_mode==1); } + +void halt_and_flash(const uint32_t duration) { + /* blink LED1, LED2, and LED3 */ + while (1) + { + led_on(LED1); + led_on(LED2); + led_on(LED3); + delay(duration); + led_off(LED1); + led_off(LED2); + led_off(LED3); + delay(duration); + } +} \ No newline at end of file diff --git a/firmware/common/hackrf_core.h b/firmware/common/hackrf_core.h index b30cfdff..57d01ebe 100644 --- a/firmware/common/hackrf_core.h +++ b/firmware/common/hackrf_core.h @@ -315,6 +315,7 @@ void led_toggle(const led_t led); void hw_sync_enable(const hw_sync_mode_t hw_sync_mode); +void halt_and_flash(const uint32_t duration); #ifdef __cplusplus } diff --git a/firmware/hackrf_usb/hackrf_usb.c b/firmware/hackrf_usb/hackrf_usb.c index a575963c..2c8fca1a 100644 --- a/firmware/hackrf_usb/hackrf_usb.c +++ b/firmware/hackrf_usb/hackrf_usb.c @@ -230,7 +230,7 @@ int main(void) { cpu_clock_init(); if( !cpld_jtag_sram_load(&jtag_cpld) ) { - // TODO: Fail, do not continue booting. + halt_and_flash(6000000); } #ifndef DFU_MODE diff --git a/firmware/hackrf_usb/usb_api_cpld.c b/firmware/hackrf_usb/usb_api_cpld.c index 9b94e27c..fc5ab51f 100644 --- a/firmware/hackrf_usb/usb_api_cpld.c +++ b/firmware/hackrf_usb/usb_api_cpld.c @@ -61,8 +61,6 @@ static void refill_cpld_buffer(void) void cpld_update(void) { - #define WAIT_LOOP_DELAY (6000000) - int i; int error; usb_queue_flush_endpoint(&usb_endpoint_bulk_in); @@ -75,20 +73,7 @@ void cpld_update(void) refill_cpld_buffer); if(error == 0) { - /* blink LED1, LED2, and LED3 on success */ - while (1) - { - led_on(LED1); - led_on(LED2); - led_on(LED3); - for (i = 0; i < WAIT_LOOP_DELAY; i++) /* Wait a bit. */ - __asm__("nop"); - led_off(LED1); - led_off(LED2); - led_off(LED3); - for (i = 0; i < WAIT_LOOP_DELAY; i++) /* Wait a bit. */ - __asm__("nop"); - } + halt_and_flash(6000000); }else { /* LED3 (Red) steady on error */