From b802aad1de60b6b44ef24638820db5cad681bdd6 Mon Sep 17 00:00:00 2001 From: William Toohey Date: Mon, 13 Feb 2017 23:35:50 +1000 Subject: [PATCH] General cleanups, nicer knob code --- .../PocketVoltex/DFU/hid_bootloader_loader.py | 2 +- Firmware/PocketVoltex/LED.c | 8 +++++++ Firmware/PocketVoltex/LED.h | 2 ++ Firmware/PocketVoltex/LEDPatterns.c | 23 ++++++++----------- Firmware/PocketVoltex/LEDPatterns.h | 2 +- Firmware/PocketVoltex/PocketVoltex.c | 7 +++--- 6 files changed, 24 insertions(+), 20 deletions(-) diff --git a/Firmware/PocketVoltex/DFU/hid_bootloader_loader.py b/Firmware/PocketVoltex/DFU/hid_bootloader_loader.py index a9487b0..e369efc 100644 --- a/Firmware/PocketVoltex/DFU/hid_bootloader_loader.py +++ b/Firmware/PocketVoltex/DFU/hid_bootloader_loader.py @@ -94,7 +94,7 @@ def program_device(hex_data, device_info): print("No valid HID device found.") sys.exit(1) print("Rebooted to bootloader") - time.sleep(4) + time.sleep(6) hid_device = get_hid_device_handle() if hid_device is None: print("No valid HID device found.") diff --git a/Firmware/PocketVoltex/LED.c b/Firmware/PocketVoltex/LED.c index ee6781a..fbad3e0 100644 --- a/Firmware/PocketVoltex/LED.c +++ b/Firmware/PocketVoltex/LED.c @@ -68,6 +68,10 @@ void led_set(uint8_t num, uint8_t r, uint8_t g, uint8_t b) { leds[offset+B] = b; } +void led_set_rgb(uint8_t num, RGB_t* colour) { + led_set(num, colour->r, colour->g, colour->b); +} + void led_set_max(uint8_t num, uint8_t r, uint8_t g, uint8_t b) { uint8_t offset = num * 3; if(r > leds[offset+R]) @@ -105,6 +109,10 @@ void led_fade_over(uint8_t num, uint8_t r, uint8_t g, uint8_t b, uint8_t strengt } } +void led_fade_over_rgb(uint8_t num, RGB_t* colour, uint8_t strength) { + led_fade_over(num, colour->r, colour->g, colour->b, strength); +} + void led_set_all(uint8_t r, uint8_t g, uint8_t b) { for(uint8_t i = 0; i < LED_COUNT; i++) { led_set(i, r, g, b); diff --git a/Firmware/PocketVoltex/LED.h b/Firmware/PocketVoltex/LED.h index 21bf877..e353086 100644 --- a/Firmware/PocketVoltex/LED.h +++ b/Firmware/PocketVoltex/LED.h @@ -39,8 +39,10 @@ static const PROGMEM uint8_t ledRightCircleMap[] = {7, 5, 3, 1}; void led_init(void); void led_commit(void); void led_set(uint8_t num, uint8_t r, uint8_t g, uint8_t b); +void led_set_rgb(uint8_t num, RGB_t* colour); void led_set_max(uint8_t num, uint8_t r, uint8_t g, uint8_t b); void led_fade_over(uint8_t num, uint8_t r, uint8_t g, uint8_t b, uint8_t strength); +void led_fade_over_rgb(uint8_t num, RGB_t* colour, uint8_t strength); void led_set_all(uint8_t r, uint8_t g, uint8_t b); void led_set_indiv(uint8_t num, uint8_t val); diff --git a/Firmware/PocketVoltex/LEDPatterns.c b/Firmware/PocketVoltex/LEDPatterns.c index a371338..dbd7143 100644 --- a/Firmware/PocketVoltex/LEDPatterns.c +++ b/Firmware/PocketVoltex/LEDPatterns.c @@ -33,7 +33,6 @@ static Patterns_t pattern; // These can always be active and are thus not unionised. Capitalism wins again. typedef struct { - const uint8_t rgb[3]; uint8_t leds[2]; uint8_t levels[2]; uint16_t fadeTimer; @@ -43,13 +42,13 @@ typedef struct { // OPTIONS SHOULD BE: blue, pink, green, yellow static KnobLights knobs[2] = { - // Aqua, mid left LEDs - {{0,BRIGHTNESS_MAX,BRIGHTNESS_MAX}, {2,3}, {BRIGHTNESS_MAX, 0}}, - // Pink, mid right LEDs - {{BRIGHTNESS_MAX,0,BRIGHTNESS_MAX}, {0,1}, {0, BRIGHTNESS_MAX}} + // mid left LEDs + {{2,3}, {BRIGHTNESS_MAX, 0}}, + // mid right LEDs + {{0,1}, {0, BRIGHTNESS_MAX}} }; -void led_knob_light_indiv(KnobLights* knob, const uint8_t* map); +void led_knob_light_indiv(KnobLights* knob, RGB_t* colour, const uint8_t* map); uint8_t led_on_frame(void) { if(++frameCounter >= LED_MS_PER_FRAME) { @@ -122,26 +121,22 @@ void led_animate(void) { } void led_knob_lights(void) { - led_knob_light_indiv(&knobs[0], ledLeftCircleMap); - led_knob_light_indiv(&knobs[1], ledRightCircleMap); + led_knob_light_indiv(&knobs[0], &sdvxConfig.knobColours[0], ledLeftCircleMap); + led_knob_light_indiv(&knobs[1], &sdvxConfig.knobColours[1], ledRightCircleMap); } -void led_knob_light_indiv(KnobLights* knob, const uint8_t* map) { +void led_knob_light_indiv(KnobLights* knob, RGB_t* colour, const uint8_t* map) { if(knob->fadeOut >= BRIGHTNESS_MAX) { return; } for(uint8_t led = 0; led < 2; led++) { - uint8_t r = knob->rgb[0]; - uint8_t g = knob->rgb[1]; - uint8_t b = knob->rgb[2]; uint8_t power = knob->levels[led]; if(knob->fadeOut > power) { power = 0; } else { power -= knob->fadeOut; } - //led_set_max(ledCircleMap[knobs[i].leds[led]], r, g, b); - led_fade_over(pgm_read_byte(&map[knob->leds[led]]), r, g, b, power); + led_fade_over_rgb(pgm_read_byte(&map[knob->leds[led]]), colour, power); } } diff --git a/Firmware/PocketVoltex/LEDPatterns.h b/Firmware/PocketVoltex/LEDPatterns.h index d19d3af..d29c560 100644 --- a/Firmware/PocketVoltex/LEDPatterns.h +++ b/Firmware/PocketVoltex/LEDPatterns.h @@ -13,7 +13,7 @@ #define LED_KNOB_SPEED (BRIGHTNESS_LEVELS/42) #define LED_KNOB_HOLD 300 #define LED_KNOB_FADE (BRIGHTNESS_LEVELS/128) -#define LED_KNOB_SENSITIVITY 3 +#define LED_KNOB_SENSITIVITY 5 enum LEDMode { diff --git a/Firmware/PocketVoltex/PocketVoltex.c b/Firmware/PocketVoltex/PocketVoltex.c index 062b836..b8309f3 100644 --- a/Firmware/PocketVoltex/PocketVoltex.c +++ b/Firmware/PocketVoltex/PocketVoltex.c @@ -214,8 +214,7 @@ void SetupHardware() // Pullups PORTB |= SWITCH_MASKB; PORTC |= SWITCH_MASKC; - // RESET has its own pullup - PORTC &= ~_BV(1); + PORTC &= ~_BV(1); // RESET has its own pullup PORTD |= SWITCH_MASKD; // RESET held while plugging in @@ -329,13 +328,13 @@ void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDI // BT LEDs flash pure white for(uint8_t i = 0; i < 4; i++) { if(LEDReport->btFx[i]) { - led_set(ledMap[i], BRIGHTNESS_MAX, BRIGHTNESS_MAX, BRIGHTNESS_MAX); + led_set_rgb(ledMap[i], &sdvxConfig.btColour); } } // FX LEDs flash orange for(uint8_t i = 4; i < 6; i++) { if(LEDReport->btFx[i]) { - led_set(ledMap[i], BRIGHTNESS_MAX, BRIGHTNESS_LEVELS/4, 0); + led_set_rgb(ledMap[i], &sdvxConfig.fxColour); } } }