Program Listing for File dm_fx_debug.cpp¶
↰ Return to documentation for file (src/dm_fx_debug.cpp)
// Copyright (c) 2020 Run Jump Labs LLC. All right reserved.
// This code is licensed under MIT license (see license.txt for details)
#include "dreammakerfx.h"
#include "dm_fx_debug.h"
#ifndef DOXYGEN_SHOULD_SKIP_THIS
// Support for Serial debug messages
DEBUG_MSG_LEVEL dmfx_debug_level;
char debug_levels[4][6] = {"DEBUG", "INFO", "WARN", "ERROR"};
// Global debug flags accessible outside of class structure
bool dmfx_debug_mode = false;
bool dmfx_dsp_telemetry_mode = false;
bool dmfx_debug_no_reset = false;
void display_error_status(uint8_t error_number) {
digitalWrite(PIN_DSP_RESET, LOW);
for (int i=0;i<20;i++) {
#if defined (DM_FX)
turn_on_left_footsw_led();
turn_off_right_footsw_led();
delay(50);
turn_off_left_footsw_led();;
turn_on_right_footsw_led();;
delay(50);
#elif defined (DM_FX_TWO)
digitalWrite(PIN_ARD_LED_G, HIGH);
digitalWrite(PIN_ARD_LED_Y, LOW);
delay(50);
digitalWrite(PIN_ARD_LED_G, LOW);
digitalWrite(PIN_ARD_LED_Y, HIGH);
delay(50);
#endif
}
#if defined (DM_FX)
turn_on_left_footsw_led();
turn_off_right_footsw_led();;
#elif defined (DM_FX_TWO)
digitalWrite(PIN_ARD_LED_Y, HIGH);
digitalWrite(PIN_ARD_LED_G, LOW);
#endif
while (1) {
for (int i=0;i<error_number;i++) {
#if defined (DM_FX)
turn_on_right_footsw_led();;
delay(250);
turn_off_right_footsw_led();
delay(250);
#elif defined (DM_FX_TWO)
digitalWrite(PIN_ARD_LED_G, HIGH);
delay(250);
digitalWrite(PIN_ARD_LED_G, LOW);
delay(250);
#endif
}
delay(2000);
}
}
// Code to drop back into bootloader
#define DBL_TAP_MAGIC 0xf01669ef // Randomly selected, adjusted to have first and last bit set
#define DBL_TAP_MAGIC_QUICK_BOOT 0xf02669ef
#define DBL_TAP_PTR ((volatile uint32_t *)(HSRAM_ADDR + HSRAM_SIZE - 4))
void reset_into_bootloader(void) {
// reset without waiting for double tap (only works for one reset)
*DBL_TAP_PTR = DBL_TAP_MAGIC;
NVIC_SystemReset();
}
#endif