main firmware: basic user UI, setting save / restore added
Can now use the buttons to change programs, change active LED zones, change LED brightness and enter and exit programming mode. Exiting programming mode will save settings. Holding MODE upon boot will load defaults (though not overwrite them in EEPROM). Also added basic power management. If the badge is still for 15min, LEDs will go out. When LEDs are blank due to brightness off setting or timeout, they are turned off to save power. Moving badge, entering programming mode, changing the program, or changing brightness will enable the LEDs.
This commit is contained in:
@@ -17,15 +17,26 @@
|
||||
|
||||
#define BTN_PUSH (1 << 0)
|
||||
#define BTN_HELD (1 << 1)
|
||||
#define BTN_RELEASE (1 << 2)
|
||||
#define BTN_HELDRT (1 << 2)
|
||||
#define BTN_RELEASE (1 << 3)
|
||||
|
||||
#define BTN_PUSH_CB (1 << 4)
|
||||
#define BTN_HELD_CB (1 << 5)
|
||||
#define BTN_RELEASE_CB (1 << 6)
|
||||
#define BTN_HELDRT_CB (1 << 6)
|
||||
#define BTN_RELEASE_CB (1 << 7)
|
||||
|
||||
#define BTN_DEBOUNCE 11 // how many button ticks to wait before registering press
|
||||
#define BTN_MAX_HOLD (512*30) // longest reported / processed hold time (30s)
|
||||
#define BTN_HOLD_SHIFT 6 // rshift value to get 1/16th sec hold time
|
||||
#define BTN_HOLD_SHIFT 5 // rshift value to get 1/16th sec hold time
|
||||
|
||||
#define BTN_HOLD_0_25S 4
|
||||
#define BTN_HOLD_0_50S 8
|
||||
#define BTN_HOLD_1_00S 16
|
||||
#define BTN_HOLD_1_50S 24
|
||||
#define BTN_HOLD_2_00S (16 * 2)
|
||||
#define BTN_HOLD_3_00S (16 * 3)
|
||||
#define BTN_HOLD_4_00S (16 * 4)
|
||||
#define BTN_HOLD_5_00S (16 * 5)
|
||||
|
||||
|
||||
|
||||
@@ -36,9 +47,9 @@ typedef struct Btn_t {
|
||||
uint16_t hold_retrig; // hold time retrigger threshold in button ticks, 0 disables
|
||||
uint16_t hold_rt_ctr; // hold retrigger counter
|
||||
|
||||
void (*push_cb)();
|
||||
void (*held_cb)();
|
||||
void (*release_cb)();
|
||||
void (*push_cb)(uint8_t);
|
||||
void (*held_cb)(uint8_t);
|
||||
void (*release_cb)(uint8_t);
|
||||
} Btn_t;
|
||||
|
||||
/*
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
|
||||
|
||||
|
||||
extern void (*ledprog)();
|
||||
void ledprog_default(); // set ledprog settings to defaults
|
||||
|
||||
void ledprog_change(); // change active ledprog idx
|
||||
void ledprog_run();
|
||||
|
||||
|
||||
void ledprog_default();
|
||||
void ledprog_change();
|
||||
void ledprog_btn(); // assign buttons to ledprog
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
//#define SK6X_HI 0xc0 // 0b11000000, or 0.25/0.75uS on/off
|
||||
//#define SK6X_LO 0xfc // 0b11111100, or 0.75/0.25uS on/off
|
||||
|
||||
#define SK6X_ZONE_MAIN 0x01
|
||||
#define SK6X_ZONE_SIDE 0x02
|
||||
#define SK6X_ZONE_REAR 0x04
|
||||
#define SK6X_ZONE_ALL (SK6X_ZONE_MAIN | SK6X_ZONE_SIDE | SK6X_ZONE_REAR)
|
||||
|
||||
|
||||
|
||||
void led_sk6x_init();
|
||||
@@ -31,6 +36,9 @@ void led_sk6x_set_all(uint8_t r, uint8_t g, uint8_t b);
|
||||
void led_sk6x_process();
|
||||
void led_sk6x_update();
|
||||
|
||||
void led_sk6x_zone_ena(uint8_t zone_mask);
|
||||
void led_sk6x_brightness(uint8_t brightness);
|
||||
|
||||
|
||||
|
||||
#endif /* CODE_INC_LED_SK6X_SPI_H_ */
|
||||
|
||||
@@ -10,4 +10,9 @@
|
||||
|
||||
|
||||
|
||||
void userled_init();
|
||||
void userled_set(uint8_t brightness);
|
||||
|
||||
|
||||
|
||||
#endif /* CODE_INC_LED_USER_H_ */
|
||||
|
||||
36
badge_firmware/code/inc/userconf.h
Normal file
36
badge_firmware/code/inc/userconf.h
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* userconf.h
|
||||
*
|
||||
* Created on: Aug 3, 2023
|
||||
* Author: true
|
||||
*/
|
||||
|
||||
#ifndef CODE_INC_USERCONF_H_
|
||||
#define CODE_INC_USERCONF_H_
|
||||
|
||||
|
||||
|
||||
#define UCONF_MAGIC 0x1f
|
||||
|
||||
|
||||
|
||||
typedef struct UserConf_t {
|
||||
uint8_t magic;
|
||||
uint8_t led_prog_idx;
|
||||
uint8_t led_zone;
|
||||
uint8_t led_bright;
|
||||
uint8_t led[15][4];
|
||||
} UserConf_t;
|
||||
|
||||
|
||||
|
||||
extern UserConf_t uconf;
|
||||
|
||||
|
||||
|
||||
void uconf_save();
|
||||
void uconf_restore(uint8_t force_defaults);
|
||||
|
||||
|
||||
|
||||
#endif /* CODE_INC_USERCONF_H_ */
|
||||
Reference in New Issue
Block a user