Merge branch 'ds1307_NVRAM'
This commit is contained in:
@@ -12,6 +12,12 @@
|
||||
#include "clock.h"
|
||||
#include "ds1307.h"
|
||||
|
||||
|
||||
#define NV_COLOUR_HOURS_ADDR 0x08
|
||||
#define NV_COLOUR_MINUTES_ADDR 0x0B
|
||||
#define NV_COLOUR_SECONDS_ADDR 0x0E
|
||||
#define NV_COLOUR_BACKGND_ADDR 0x11
|
||||
|
||||
typedef struct {
|
||||
uint8_t cmdId;
|
||||
|
||||
@@ -25,7 +31,10 @@ typedef struct {
|
||||
uint8_t crc;
|
||||
} uartMessage_s;
|
||||
|
||||
static void cmd_readNV(uint32_t data);
|
||||
static void cmd_writeNV(uint8_t data);
|
||||
|
||||
static uint8_t nok[] = "NOK\n";
|
||||
static uint8_t ok[] = "OK\n";
|
||||
uint8_t myId[] = "Clock\n";
|
||||
|
||||
@@ -38,9 +47,44 @@ void (*commands[])(uint32_t) = {
|
||||
cmd_GetTime,
|
||||
cmd_setColour_hour,
|
||||
cmd_setColour_minute,
|
||||
cmd_setColour_second,
|
||||
cmd_setColour_background,
|
||||
cmd_readNV,
|
||||
cmd_writeNV,
|
||||
cmd_setColour_second
|
||||
};
|
||||
|
||||
static void cmd_readNV(uint32_t data){
|
||||
HAL_StatusTypeDef status = HAL_ERROR;
|
||||
|
||||
uint8_t addr = (uint8_t) data;
|
||||
uint8_t respBuf[3] = {0};
|
||||
|
||||
status = ds1307_read_user_RAM(addr, respBuf, sizeof(respBuf));
|
||||
|
||||
if(HAL_OK == status){
|
||||
CDC_Transmit_FS(respBuf, sizeof(respBuf));
|
||||
}
|
||||
else{
|
||||
CDC_Transmit_FS(nok, sizeof(nok));
|
||||
}
|
||||
}
|
||||
|
||||
static void cmd_writeNV(uint8_t data){
|
||||
HAL_StatusTypeDef status = HAL_ERROR;
|
||||
|
||||
|
||||
status = ds1307_write_user_RAM(UART_RxBuf[1], &UART_RxBuf[2], 3);
|
||||
|
||||
if(HAL_OK == status){
|
||||
CDC_Transmit_FS(ok, sizeof(ok));
|
||||
}
|
||||
else{
|
||||
CDC_Transmit_FS(nok, sizeof(nok));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void setRxFlag(void){
|
||||
RxComplete_fl = 1;
|
||||
@@ -128,6 +172,15 @@ void cmd_setColour_hour(uint32_t colour){
|
||||
|
||||
clock_setColourHours(r, g, b);
|
||||
|
||||
uint8_t nv[] = {
|
||||
NV_COLOUR_HOURS_ADDR,
|
||||
r,
|
||||
g,
|
||||
b
|
||||
};
|
||||
|
||||
cmd_writeNV(nv);
|
||||
|
||||
CDC_Transmit_FS(ok, sizeof(ok));
|
||||
|
||||
}
|
||||
@@ -141,6 +194,16 @@ void cmd_setColour_minute(uint32_t colour){
|
||||
|
||||
clock_setColourMinutes(r, g, b);
|
||||
|
||||
|
||||
uint8_t nv[] = {
|
||||
NV_COLOUR_MINUTES_ADDR,
|
||||
r,
|
||||
g,
|
||||
b
|
||||
};
|
||||
|
||||
cmd_writeNV(nv);
|
||||
|
||||
CDC_Transmit_FS(ok, sizeof(ok));
|
||||
|
||||
}
|
||||
@@ -154,6 +217,16 @@ void cmd_setColour_second(uint32_t colour){
|
||||
|
||||
clock_setColourSeconds(r, g, b);
|
||||
|
||||
|
||||
uint8_t nv[] = {
|
||||
NV_COLOUR_SECONDS_ADDR,
|
||||
r,
|
||||
g,
|
||||
b
|
||||
};
|
||||
|
||||
cmd_writeNV(nv);
|
||||
|
||||
CDC_Transmit_FS(ok, sizeof(ok));
|
||||
|
||||
}
|
||||
@@ -167,5 +240,15 @@ void cmd_setColour_background(uint32_t colour){
|
||||
|
||||
clock_setColourBackground(r, g, b);
|
||||
|
||||
|
||||
uint8_t nv[] = {
|
||||
NV_COLOUR_BACKGND_ADDR,
|
||||
r,
|
||||
g,
|
||||
b
|
||||
};
|
||||
|
||||
cmd_writeNV(nv);
|
||||
|
||||
CDC_Transmit_FS(ok, sizeof(ok));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user