Refactor code

This commit is contained in:
2020-11-20 08:14:46 +01:00
parent 53bacf016a
commit ffdd2beb35
8 changed files with 41 additions and 45 deletions

View File

@@ -112,18 +112,18 @@ int8_t cmd_at_rst_handler(uint8_t mode, char* arg)
int8_t cmd_at_tim_handler(uint8_t mode, char* arg) int8_t cmd_at_tim_handler(uint8_t mode, char* arg)
{ {
struct TIME_HMS n_time; struct TIME_HMS time;
char* val; char* val;
char* tail; char* tail;
switch(mode) switch(mode)
{ {
case M_GET: case M_GET:
uart_puti(time.hour, 10); uart_puti(clock.hour, 10);
uart_putc(':'); uart_putc(':');
uart_puti(time.minute, 10); uart_puti(clock.minute, 10);
uart_putc(':'); uart_putc(':');
uart_puti(time.second, 10); uart_puti(clock.second, 10);
uart_puts("\n\r"); uart_puts("\n\r");
break; break;
@@ -131,25 +131,25 @@ int8_t cmd_at_tim_handler(uint8_t mode, char* arg)
if(!strlen(arg)) return -1; if(!strlen(arg)) return -1;
val = strtok_r(arg, ",", &tail); val = strtok_r(arg, ",", &tail);
n_time.hour = atoi(val); time.hour = atoi(val);
if(n_time.hour >= 24) return -1; if(time.hour >= 24) return -1;
val = strtok_r(NULL, ",", &tail); val = strtok_r(NULL, ",", &tail);
n_time.minute = atoi(val); time.minute = atoi(val);
if(n_time.minute >= 60) return -1; if(time.minute >= 60) return -1;
val = strtok_r(NULL, ",", &tail); val = strtok_r(NULL, ",", &tail);
n_time.second = atoi(val); time.second = atoi(val);
if(n_time.second >= 60) return -1; if(time.second >= 60) return -1;
rtc_set_time(&n_time); rtc_set_clock(&time);
uart_puts_P(PSTR("+TIM=")); uart_puts_P(PSTR("+TIM="));
uart_puti(time.hour, 10); uart_puti(clock.hour, 10);
uart_puts(","); uart_puts(",");
uart_puti(time.minute, 10); uart_puti(clock.minute, 10);
uart_puts(","); uart_puts(",");
uart_puti(time.second, 10); uart_puti(clock.second, 10);
uart_puts("\n\r"); uart_puts("\n\r");
break; break;

View File

@@ -9,17 +9,17 @@ uint8_t k_inc_hour, k_inc_minute, k_inc_second, k_inc_brightness;
void inc_hour(void) void inc_hour(void)
{ {
rtc_set_time_part(HOUR, (time.hour + 1) % 24); rtc_set_clock_part(HOUR, (clock.hour + 1) % 24);
} }
void inc_minute(void) void inc_minute(void)
{ {
rtc_set_time_part(MINUTE, (time.minute + 1) % 60); rtc_set_clock_part(MINUTE, (clock.minute + 1) % 60);
} }
void inc_second(void) void inc_second(void)
{ {
rtc_set_time_part(SECOND, (time.second + 1) % 60); rtc_set_clock_part(SECOND, (clock.second + 1) % 60);
} }
void inc_brightness(void) void inc_brightness(void)
@@ -27,13 +27,13 @@ void inc_brightness(void)
led_inc_btnes(); led_inc_btnes();
} }
void keyboard_init(void) void kbd_init(void)
{ {
KEYBOARD_DIR &= ~(KEY_INC_HOUR | KEY_INC_MINUTE | KEY_INC_SECOND | KEY_INC_BRIGHTNESS); KEYBOARD_DIR &= ~(KEY_INC_HOUR | KEY_INC_MINUTE | KEY_INC_SECOND | KEY_INC_BRIGHTNESS);
PORTB |= KEY_INC_HOUR | KEY_INC_MINUTE | KEY_INC_SECOND | KEY_INC_BRIGHTNESS; PORTB |= KEY_INC_HOUR | KEY_INC_MINUTE | KEY_INC_SECOND | KEY_INC_BRIGHTNESS;
} }
void keyboard_handle_input(void) void kbd_handle_event(void)
{ {
SuperDebounce(&k_inc_hour, &KEYBOARD_PIN, KEY_INC_HOUR, 20, 0, &inc_hour, 0); SuperDebounce(&k_inc_hour, &KEYBOARD_PIN, KEY_INC_HOUR, 20, 0, &inc_hour, 0);
SuperDebounce(&k_inc_minute, &KEYBOARD_PIN, KEY_INC_MINUTE, 20, 0, &inc_minute, 0); SuperDebounce(&k_inc_minute, &KEYBOARD_PIN, KEY_INC_MINUTE, 20, 0, &inc_minute, 0);

View File

@@ -9,7 +9,7 @@
#define KEY_INC_SECOND (1<<PB2) #define KEY_INC_SECOND (1<<PB2)
#define KEY_INC_BRIGHTNESS (1<<PB3) #define KEY_INC_BRIGHTNESS (1<<PB3)
void keyboard_init(void); void kbd_init(void);
void keyboard_handle_input(void); void kbd_handle_event(void);
#endif #endif

View File

@@ -48,15 +48,15 @@ ISR(TIMER0_OVF_vect)
switch(curr_anode) switch(curr_anode)
{ {
case 1: case 1:
LED_PORT = ~time.hour; LED_PORT = ~clock.hour;
ANODES_PORT = led_btnes >= pwm_counter ? ~HOUR_ANODE : 0xFF; ANODES_PORT = led_btnes >= pwm_counter ? ~HOUR_ANODE : 0xFF;
break; break;
case 2: case 2:
LED_PORT = ~time.minute; LED_PORT = ~clock.minute;
ANODES_PORT = led_btnes >= pwm_counter ? ~MINUTE_ANODE : 0xFF; ANODES_PORT = led_btnes >= pwm_counter ? ~MINUTE_ANODE : 0xFF;
break; break;
case 4: case 4:
LED_PORT = ~time.second; LED_PORT = ~clock.second;
ANODES_PORT = led_btnes >= pwm_counter ? ~SECOND_ANODE : 0xFF; ANODES_PORT = led_btnes >= pwm_counter ? ~SECOND_ANODE : 0xFF;
break; break;
} }

View File

@@ -17,7 +17,7 @@
int main() int main()
{ {
cfg_init(); cfg_init();
keyboard_init(); kbd_init();
ptimer_init(); ptimer_init();
i2c_init(I2C_BITRATE); i2c_init(I2C_BITRATE);
rtc_int0_init(); rtc_int0_init();
@@ -31,9 +31,9 @@ int main()
while(1) while(1)
{ {
keyboard_handle_input(); kbd_handle_event();
uart_handle_event(uart_buf); uart_handle_event(uart_buf);
if(rtc_handle_timer()) nightm_handle(); if(rtc_handle_clock()) nightm_handle();
} }
} }

View File

@@ -14,7 +14,7 @@ void nightm_handle(void)
{ {
if(ram_cfg.night_mode.led_btnes >= 0) if(ram_cfg.night_mode.led_btnes >= 0)
{ {
uint16_t current = TIME2INT(time); uint16_t current = TIME2INT(clock);
uint16_t begin = TIME2INT(ram_cfg.night_mode.begin); uint16_t begin = TIME2INT(ram_cfg.night_mode.begin);
uint16_t end = TIME2INT(ram_cfg.night_mode.end); uint16_t end = TIME2INT(ram_cfg.night_mode.end);

View File

@@ -3,7 +3,7 @@
#include "rtc.h" #include "rtc.h"
#include "i2c.h" #include "i2c.h"
volatile struct TIME_HMS time; volatile struct TIME_HMS clock;
void rtc_int0_init(void) void rtc_int0_init(void)
{ {
@@ -19,37 +19,33 @@ void rtc_int1_init(void)
GICR |= (1<<INT1); GICR |= (1<<INT1);
} }
void rtc_set_time_part(uint8_t part, uint8_t value) void rtc_set_clock_part(uint8_t part, uint8_t value)
{ {
uint8_t bcd = DEC_2_BCD(value); uint8_t bcd = DEC_2_BCD(value);
i2c_writebuf(RTC_I2C_ADDR, part, 1, &bcd); i2c_writebuf(RTC_I2C_ADDR, part, 1, &bcd);
} }
void rtc_set_time(struct TIME_HMS* time) void rtc_set_clock(struct TIME_HMS* time)
{ {
uint8_t buf[] = { DEC_2_BCD(time->second), DEC_2_BCD(time->minute), DEC_2_BCD(time->hour) }; uint8_t buf[] = { DEC_2_BCD(time->second), DEC_2_BCD(time->minute), DEC_2_BCD(time->hour) };
i2c_writebuf(RTC_I2C_ADDR, SECOND, 3, buf); // SECOND is the first memory cell (0x02) i2c_writebuf(RTC_I2C_ADDR, SECOND, 3, buf); // SECOND is the first memory cell (0x02)
} }
struct TIME_HMS rtc_read_time(void) void rtc_update_clock(void)
{ {
uint8_t buffer[3]; uint8_t buffer[3];
i2c_readbuf(RTC_I2C_ADDR, 0x02, 3, buffer); i2c_readbuf(RTC_I2C_ADDR, 0x02, 3, buffer);
struct TIME_HMS curr_time = { clock.hour = BCD_2_DEC(buffer[2]);
BCD_2_DEC(buffer[2]), clock.minute = BCD_2_DEC(buffer[1]);
BCD_2_DEC(buffer[1]), clock.second = BCD_2_DEC(buffer[0]);
BCD_2_DEC(buffer[0])
};
return curr_time;
} }
uint8_t rtc_handle_timer(void) uint8_t rtc_handle_clock(void)
{ {
if(!(GIFR & (1<<INTF0))) if(!(GIFR & (1<<INTF0)))
{ {
time = rtc_read_time(); rtc_update_clock();
GIFR |= 1<<INTF0; GIFR |= 1<<INTF0;
return 1; return 1;
} }

View File

@@ -19,12 +19,12 @@
#define DEC_2_BCD(dec) ((((dec) / 10) << 4) | ((dec) % 10)) #define DEC_2_BCD(dec) ((((dec) / 10) << 4) | ((dec) % 10))
#define BCD_2_DEC(bcd) (((((bcd) >> 4) & 0x0F) * 10) + ((bcd) & 0x0F)) #define BCD_2_DEC(bcd) (((((bcd) >> 4) & 0x0F) * 10) + ((bcd) & 0x0F))
extern volatile struct TIME_HMS time; extern volatile struct TIME_HMS clock;
void rtc_int0_init(void); void rtc_int0_init(void);
void rtc_int1_init(void); void rtc_int1_init(void);
void rtc_set_time(struct TIME_HMS* time); void rtc_set_clock(struct TIME_HMS* time);
void rtc_set_time_part(uint8_t part, uint8_t value); void rtc_set_clock_part(uint8_t part, uint8_t value);
uint8_t rtc_handle_timer(void); uint8_t rtc_handle_clock(void);
#endif #endif