Add support for night mode
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "at.h"
|
||||
#include "uart.h"
|
||||
#include "config.h"
|
||||
#include "nightm.h"
|
||||
#include "time.h"
|
||||
#include "led.h"
|
||||
#include "rtc.h"
|
||||
@@ -18,7 +19,8 @@ const struct AT_CMD at_commands[AT_NUM] PROGMEM = {
|
||||
{ "ATI", cmd_ati_handler },
|
||||
{ "AT+RST", cmd_at_rst_handler },
|
||||
{ "AT+TIME", cmd_at_time_handler },
|
||||
{ "AT+BTNES", cmd_at_btnes_handler }
|
||||
{ "AT+BTNES", cmd_at_btnes_handler },
|
||||
{ "AT+NGT", cmd_at_ngt_handler }
|
||||
};
|
||||
|
||||
void parse_at(char* at_cmd, char* arg, uint8_t mode)
|
||||
@@ -115,7 +117,7 @@ int8_t cmd_at_rst_handler(uint8_t mode, char* arg)
|
||||
|
||||
int8_t cmd_at_time_handler(uint8_t mode, char* arg)
|
||||
{
|
||||
struct TIME time;
|
||||
struct TIME_HMS time;
|
||||
char* val;
|
||||
char* tail;
|
||||
|
||||
@@ -171,8 +173,7 @@ int8_t cmd_at_btnes_handler(uint8_t mode, char* arg)
|
||||
switch(mode)
|
||||
{
|
||||
case M_GET:
|
||||
for(btness=0; btness<8; ++btness) if(ram_cfg.led_brightness & (1<<btness)) break;
|
||||
uart_puti(btness, 10);
|
||||
uart_puti(ram_cfg.led_brightness, 10);
|
||||
uart_puts("\n\r");
|
||||
|
||||
break;
|
||||
@@ -196,3 +197,69 @@ int8_t cmd_at_btnes_handler(uint8_t mode, char* arg)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int8_t cmd_at_ngt_handler(uint8_t mode, char* arg)
|
||||
{
|
||||
struct NIGHTM_CFG nightm_cfg;
|
||||
char* val;
|
||||
char* tail;
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case M_GET:
|
||||
uart_puti(ram_cfg.night_mode.led_btnes, 10);
|
||||
uart_puts(ram_cfg.night_mode.led_btnes >= 0 ? " (EN)\n\r" : " (DIS)\n\r");
|
||||
uart_puti(ram_cfg.night_mode.begin.hour, 10);
|
||||
uart_puts(":");
|
||||
uart_puti(ram_cfg.night_mode.begin.minute, 10);
|
||||
uart_puts("\n\r");
|
||||
uart_puti(ram_cfg.night_mode.end.hour, 10);
|
||||
uart_puts(":");
|
||||
uart_puti(ram_cfg.night_mode.end.minute, 10);
|
||||
uart_puts("\n\r");
|
||||
break;
|
||||
|
||||
case M_SET:
|
||||
if(!strlen(arg)) return -1;
|
||||
|
||||
val = strtok_r(arg, ",", &tail);
|
||||
nightm_cfg.led_btnes = atoi(val);
|
||||
if(nightm_cfg.led_btnes < -1 && 7 < nightm_cfg.led_btnes) return -1;
|
||||
|
||||
val = strtok_r(NULL, ",", &tail);
|
||||
nightm_cfg.begin.hour = atoi(val);
|
||||
if(nightm_cfg.begin.hour > 23) return -1;
|
||||
|
||||
val = strtok_r(NULL, ",", &tail);
|
||||
nightm_cfg.begin.minute = atoi(val);
|
||||
if(nightm_cfg.begin.minute > 59) return -1;
|
||||
|
||||
val = strtok_r(NULL, ",", &tail);
|
||||
nightm_cfg.end.hour = atoi(val);
|
||||
if(nightm_cfg.end.hour > 23) return -1;
|
||||
|
||||
val = strtok_r(NULL, ",", &tail);
|
||||
nightm_cfg.end.minute = atoi(val);
|
||||
if(nightm_cfg.end.minute > 59) return -1;
|
||||
|
||||
nightm_config(&nightm_cfg);
|
||||
|
||||
uart_puts("+NGT=");
|
||||
uart_puti(nightm_cfg.led_btnes, 10);
|
||||
uart_puts(",");
|
||||
uart_puti(nightm_cfg.begin.hour, 10);
|
||||
uart_puts(",");
|
||||
uart_puti(nightm_cfg.begin.minute, 10);
|
||||
uart_puts(",");
|
||||
uart_puti(nightm_cfg.end.hour, 10);
|
||||
uart_puts(",");
|
||||
uart_puti(nightm_cfg.end.minute, 10);
|
||||
uart_puts("\n\r");
|
||||
break;
|
||||
|
||||
case M_NORM:
|
||||
uart_puts("AT+NGT=(-1|0-7),(0-23),(0-59),(0-23),(0-59)");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user