| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- #include "satisfaction75.h"
- void pre_encoder_mode_change(){
- if(encoder_mode == ENC_MODE_CLOCK_SET){
- RTCDateTime timespec;
- timespec.year = year_config;
- timespec.month = month_config;
- timespec.day = day_config;
- // timespec.dayofweek = last_timespec.dayofweek;
- // timespec.dstflag = last_timespec.dstflag;
- timespec.millisecond = (hour_config * 60 + minute_config) * 60 * 1000;
- rtcSetTime(&RTCD1, ×pec);
- }
- }
- void post_encoder_mode_change(){
- if(encoder_mode == ENC_MODE_CLOCK_SET){
- hour_config = (last_minute / 60);
- minute_config = last_minute % 60;
- year_config = last_timespec.year;
- month_config = last_timespec.month;
- day_config = last_timespec.day;
- time_config_idx = 0;
- }
- }
- void change_encoder_mode(bool negative){
- pre_encoder_mode_change();
- do {
- if(negative){
- if (encoder_mode == 0){
- encoder_mode = _NUM_ENCODER_MODES - 1;
- } else{
- encoder_mode = encoder_mode - 1;
- }
- } else {
- encoder_mode = (encoder_mode + 1) % _NUM_ENCODER_MODES;
- }
- } while(((1 << encoder_mode) & enabled_encoder_modes) == 0);
- post_encoder_mode_change();
- }
- void update_time_config(int8_t increment){
- uint8_t day_limit = 31;
- uint16_t adjusted_year = 1980 + year_config;
- switch(time_config_idx){
- case 0: // hour
- default:
- hour_config = (hour_config + increment) % 24;
- if (hour_config < 0){
- hour_config += 24;
- }
- break;
- case 1: // minute
- minute_config = (minute_config + increment) % 60;
- if (minute_config < 0){
- minute_config += 60;
- }
- break;
- case 2: // year
- year_config += increment;
- break;
- case 3: // month
- month_config = (month_config % 12) + increment;
- if (month_config <= 0){
- month_config += 12;
- }
- break;
- case 4: //day
- if (month_config == 9 || month_config == 4 || month_config == 6 || month_config == 11){
- day_limit = 30;
- } else if(month_config == 2){
- day_limit = adjusted_year % 4 == 0 && !(adjusted_year % 100 == 0 && adjusted_year % 400 != 0) ? 29 : 28;
- }
- day_config = (day_config % day_limit) + increment;
- if(day_config <= 0){
- day_config += day_limit;
- }
- break;
- }
- }
- uint16_t handle_encoder_clockwise(){
- uint16_t mapped_code = 0;
- switch(encoder_mode){
- default:
- case ENC_MODE_VOLUME:
- mapped_code = KC_VOLU;
- break;
- case ENC_MODE_MEDIA:
- mapped_code = KC_MEDIA_NEXT_TRACK;
- break;
- case ENC_MODE_SCROLL:
- mapped_code = KC_WH_D;
- break;
- case ENC_MODE_BACKLIGHT:
- // mapped_code = BL_INC;
- kb_backlight_config.level = kb_backlight_config.level + 1;
- if(kb_backlight_config.level > BACKLIGHT_LEVELS){
- kb_backlight_config.level = BACKLIGHT_LEVELS;
- }
- backlight_set(kb_backlight_config.level);
- break;
- case ENC_MODE_BRIGHTNESS:
- mapped_code = KC_BRIGHTNESS_UP;
- break;
- case ENC_MODE_CLOCK_SET:
- update_time_config(1);
- queue_for_send = true;
- break;
- }
- return mapped_code;
- }
- uint16_t handle_encoder_ccw(){
- uint16_t mapped_code = 0;
- switch(encoder_mode){
- default:
- case ENC_MODE_VOLUME:
- mapped_code = KC_VOLD;
- break;
- case ENC_MODE_MEDIA:
- mapped_code = KC_MEDIA_PREV_TRACK;
- break;
- case ENC_MODE_SCROLL:
- mapped_code = KC_WH_U;
- break;
- case ENC_MODE_BACKLIGHT:
- // mapped_code = BL_DEC;
- if(kb_backlight_config.level != 0){
- kb_backlight_config.level = kb_backlight_config.level - 1;
- }
- backlight_set(kb_backlight_config.level);
- break;
- case ENC_MODE_BRIGHTNESS:
- mapped_code = KC_BRIGHTNESS_DOWN;
- break;
- case ENC_MODE_CLOCK_SET:
- update_time_config(-1);
- queue_for_send = true;
- break;
- }
- return mapped_code;
- }
- uint16_t handle_encoder_press(){
- uint16_t mapped_code = 0;
- switch(encoder_mode){
- case ENC_MODE_VOLUME:
- mapped_code = KC_MUTE;
- break;
- case ENC_MODE_MEDIA:
- mapped_code = KC_MEDIA_PLAY_PAUSE;
- break;
- case ENC_MODE_SCROLL:
- mapped_code = KC_BTN3;
- break;
- case ENC_MODE_BACKLIGHT:
- // mapped_code = BL_TOGG;
- kb_backlight_config.breathing = !kb_backlight_config.breathing;
- if(!kb_backlight_config.breathing){
- breathing_disable();
- } else{
- breathing_enable();
- }
- break;
- case ENC_MODE_CLOCK_SET:
- time_config_idx = (time_config_idx + 1) % 5;
- default:
- case ENC_MODE_BRIGHTNESS:
- break;
- }
- return mapped_code;
- }
|