mirror of
https://github.com/mon/PocketVoltex.git
synced 2026-10-07 14:18:01 +03:00
General cleanups, nicer knob code
This commit is contained in:
@@ -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.")
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user