2 Commits

Author SHA1 Message Date
Emanuele Trabattoni
79e5760d19 Halfway RTC driver refactoring 2025-06-22 15:27:10 +02:00
Emanuele Trabattoni
dcbe637ccc Fixed typos 2025-06-22 15:26:41 +02:00
9 changed files with 128 additions and 18 deletions

View File

@@ -79,7 +79,7 @@ void TimerEvent_handling(Timing_RTC event){
} }
printf("\r\nCHx Closs : "); printf("\r\nCHx Closs : ");
for (j = 0; j < Relay_Number_MAX; j++) { for (j = 0; j < Relay_Number_MAX; j++) {
if(*(&(event.Relay_CH1)+j) == STATE_Closs) if(*(&(event.Relay_CH1)+j) == STATE_Close)
printf("CH%d ", j+1); printf("CH%d ", j+1);
} }
if(Retain_channels){ if(Retain_channels){
@@ -233,7 +233,7 @@ void TimerEvent_CHxn_Set(datetime_t time,Status_adjustment *Relay_n, Repetition_
for (int i = 0; i < Relay_Number_MAX; i++) { for (int i = 0; i < Relay_Number_MAX; i++) {
if(Relay_n[i] == STATE_Open) if(Relay_n[i] == STATE_Open)
printf("Open "); printf("Open ");
else if(Relay_n[i] == STATE_Closs) else if(Relay_n[i] == STATE_Close)
printf("Closs "); printf("Closs ");
else if(Relay_n[i] == STATE_Retain) else if(Relay_n[i] == STATE_Retain)
printf("Retain "); printf("Retain ");
@@ -253,7 +253,7 @@ void TimerEvent_CHxn_Set(datetime_t time,Status_adjustment *Relay_n, Repetition_
for (int i = 0; i < Relay_Number_MAX; i++) { for (int i = 0; i < Relay_Number_MAX; i++) {
if (Relay_n[i] == STATE_Open) if (Relay_n[i] == STATE_Open)
len += snprintf(Event_content + len, sizeof(Event_content) - len, "Open&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"); len += snprintf(Event_content + len, sizeof(Event_content) - len, "Open&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
else if(Relay_n[i] == STATE_Closs) else if(Relay_n[i] == STATE_Close)
len += snprintf(Event_content + len, sizeof(Event_content) - len, "Closs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"); len += snprintf(Event_content + len, sizeof(Event_content) - len, "Closs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
else if(Relay_n[i] == STATE_Retain) else if(Relay_n[i] == STATE_Retain)
len += snprintf(Event_content + len, sizeof(Event_content) - len, "Retain&nbsp;&nbsp;&nbsp;"); len += snprintf(Event_content + len, sizeof(Event_content) - len, "Retain&nbsp;&nbsp;&nbsp;");
@@ -312,7 +312,7 @@ void TimerEvent_printf(Timing_RTC event){
} }
printf("\r\nCHx Closs : "); printf("\r\nCHx Closs : ");
for (j = 0; j < Relay_Number_MAX; j++) { for (j = 0; j < Relay_Number_MAX; j++) {
if(open[j] == STATE_Closs) if(open[j] == STATE_Close)
printf("CH%d ", j+1); printf("CH%d ", j+1);
} }
printf("\r\nCHx Retain : "); printf("\r\nCHx Retain : ");

View File

@@ -11,7 +11,7 @@ bool Relay_Open(uint8_t CHx)
} }
return 1; return 1;
} }
bool Relay_Closs(uint8_t CHx) bool Relay_Close(uint8_t CHx)
{ {
if(!Set_EXIO(CHx, false)){ if(!Set_EXIO(CHx, false)){
printf("Failed to Closs CH%d!!!\r\n", CHx); printf("Failed to Closs CH%d!!!\r\n", CHx);
@@ -35,7 +35,7 @@ bool Relay_CHx(uint8_t CHx, bool State)
if(State) if(State)
result = Relay_Open(CHx); result = Relay_Open(CHx);
else else
result = Relay_Closs(CHx); result = Relay_Close(CHx);
if(!result) if(!result)
Failure_Flag = 1; Failure_Flag = 1;
return result; return result;
@@ -233,12 +233,12 @@ void Relay_Immediate_CHxn(Status_adjustment * Relay_n, uint8_t Mode_Flag)
else if(Mode_Flag == RTC_Mode) else if(Mode_Flag == RTC_Mode)
printf("RTC Data :\r\n"); printf("RTC Data :\r\n");
for (int i = 0; i < 8; i++) { for (int i = 0; i < 8; i++) {
if(Relay_n[i] == STATE_Open || Relay_n[i] == STATE_Closs){ if(Relay_n[i] == STATE_Open || Relay_n[i] == STATE_Close){
Relay_Flag[i] = (bool)Relay_n[i]; Relay_Flag[i] = (bool)Relay_n[i];
ret = Relay_CHx(i+1,Relay_n[i]); ret = Relay_CHx(i+1,Relay_n[i]);
if(Relay_n[i] == STATE_Open) if(Relay_n[i] == STATE_Open)
printf("|*** Relay CH%d on ***|\r\n",i+1); printf("|*** Relay CH%d on ***|\r\n",i+1);
else if(Relay_n[i] == STATE_Closs) else if(Relay_n[i] == STATE_Close)
printf("|*** Relay CH%d off ***|\r\n",i+1); printf("|*** Relay CH%d off ***|\r\n",i+1);
} }
} }

View File

@@ -36,7 +36,7 @@
#define RTC_Mode 6 #define RTC_Mode 6
typedef enum { typedef enum {
STATE_Closs = 0, // Closs Relay STATE_Close = 0, // Closs Relay
STATE_Open = 1, // Open Relay STATE_Open = 1, // Open Relay
STATE_Retain = 2, // Stay in place STATE_Retain = 2, // Stay in place
} Status_adjustment; } Status_adjustment;
@@ -44,7 +44,7 @@ typedef enum {
extern bool Relay_Flag[8]; // Relay current status flag extern bool Relay_Flag[8]; // Relay current status flag
void Relay_Init(void); void Relay_Init(void);
bool Relay_Closs(uint8_t CHx); bool Relay_Close(uint8_t CHx);
bool Relay_Open(uint8_t CHx); bool Relay_Open(uint8_t CHx);
bool Relay_CHx_Toggle(uint8_t CHx); bool Relay_CHx_Toggle(uint8_t CHx);
bool Relay_CHx(uint8_t CHx, bool State); bool Relay_CHx(uint8_t CHx, bool State);

View File

@@ -11,7 +11,7 @@ namespace drivers
const bool TCA9554PWR::writeRegister(const uint8_t reg, const uint8_t val) const bool TCA9554PWR::writeRegister(const uint8_t reg, const uint8_t val)
{ {
if (m_i2c.Write(m_address, reg, {val})) if (m_i2c.write(m_address, reg, {val}))
return true; return true;
log_e("Unable to write register: reg[%d], val[%d] ", reg, val); log_e("Unable to write register: reg[%d], val[%d] ", reg, val);
return false; return false;
@@ -20,7 +20,7 @@ namespace drivers
const bool TCA9554PWR::readRegister(const uint8_t reg, uint8_t &val) const bool TCA9554PWR::readRegister(const uint8_t reg, uint8_t &val)
{ {
std::vector<uint8_t> data; std::vector<uint8_t> data;
if (m_i2c.Read(m_address, reg, 1, data)) if (m_i2c.read(m_address, reg, 1, data))
{ {
val = data.back(); val = data.back();
return true; return true;

View File

@@ -15,7 +15,7 @@ namespace drivers
isInitialized = true; isInitialized = true;
} }
const bool I2C::Read(const uint8_t deviceAddr, const uint8_t deviceReg, const uint8_t len, std::vector<uint8_t> &data) const bool I2C::read(const uint8_t deviceAddr, const uint8_t deviceReg, const uint8_t len, std::vector<uint8_t> &data)
{ {
busy.try_lock(); busy.try_lock();
Wire.beginTransmission(deviceAddr); Wire.beginTransmission(deviceAddr);
@@ -49,7 +49,7 @@ namespace drivers
return true; return true;
} }
const bool I2C::Write(const uint8_t deviceAddr, const uint8_t deviceReg, const std::vector<uint8_t> &data) const bool I2C::write(const uint8_t deviceAddr, const uint8_t deviceReg, const std::vector<uint8_t> &data)
{ {
busy.lock(); busy.lock();
Wire.beginTransmission(deviceAddr); Wire.beginTransmission(deviceAddr);

View File

@@ -19,8 +19,8 @@ namespace drivers
I2C(void); I2C(void);
~I2C(void); ~I2C(void);
const bool Read(const uint8_t deviceAddr, const uint8_t deviceReg, const uint8_t len, std::vector<uint8_t> &data); const bool read(const uint8_t deviceAddr, const uint8_t deviceReg, const uint8_t len, std::vector<uint8_t> &data);
const bool Write(const uint8_t deviceAddr, const uint8_t deviceReg, const std::vector<uint8_t> &data); const bool write(const uint8_t deviceAddr, const uint8_t deviceReg, const std::vector<uint8_t> &data);
}; };
} }

View File

@@ -191,3 +191,67 @@ void datetime_to_str(char *datetime_str, datetime_t time)
sprintf(datetime_str, " %d.%d.%d %d:%d:%d %s", time.year, time.month, sprintf(datetime_str, " %d.%d.%d %d:%d:%d %s", time.year, time.month,
time.day, time.hour, time.minute, time.second, Week[time.dotw]); time.day, time.hour, time.minute, time.second, Week[time.dotw]);
} }
namespace drivers
{
PCF85063::PCF85063(I2C &i2c, const uint8_t address) : m_i2c(i2c), m_address(address)
{
}
const bool PCF85063::reset(void)
{
}
const bool PCF85063::setTime(datetime_t time)
{
}
const bool PCF85063::setDate(datetime_t date)
{
}
const bool PCF85063::setDatetime(datetime_t datetime)
{
}
const bool PCF85063::readDate(datetime_t &datetime)
{
}
const bool PCF85063::readTime(datetime_t &datetime)
{
}
const bool PCF85063::readDatetime(datetime_t &datetime)
{
}
const bool PCF85063::enableAlarm(const bool enable)
{
}
const bool PCF85063::setAlarm(datetime_t time)
{
}
const bool PCF85063::readAlarm(datetime_t &time)
{
}
const bool PCF85063::getAlarmFlafs(uint8_t &flags)
{
}
const std::string PCF85063::datetime2str(datetime_t &time)
{
}
const uint8_t PCF85063::decToBcd(int val)
{
}
const int PCF85063::bcdToDec(uint8_t val)
{
}
}

View File

@@ -1,6 +1,7 @@
#pragma once #pragma once
#include "I2C_Driver.h" #include "I2C_Driver.h"
#include <string>
// PCF85063_ADDRESS // PCF85063_ADDRESS
#define PCF85063_ADDRESS (0x51) #define PCF85063_ADDRESS (0x51)
@@ -90,3 +91,48 @@ void PCF85063_Set_Alarm(datetime_t time);
void PCF85063_Read_Alarm(datetime_t *time); void PCF85063_Read_Alarm(datetime_t *time);
void datetime_to_str(char *datetime_str, datetime_t time); void datetime_to_str(char *datetime_str, datetime_t time);
namespace drivers
{
class PCF85063
{
I2C &m_i2c;
uint8_t m_address;
typedef struct
{
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t dotw;
uint8_t hour;
uint8_t minute;
uint8_t second;
} datetime_t;
public:
PCF85063(I2C &i2c, const uint8_t address, const uint8_t ctrl1, const uint8_t ctrl2);
const bool reset(void);
const bool setTime(datetime_t time);
const bool setDate(datetime_t date);
const bool setDatetime(datetime_t datetime);
const bool readDate(datetime_t &datetime);
const bool readTime(datetime_t &datetime);
const bool readDatetime(datetime_t &datetime);
const bool enableAlarm(const bool enable);
const bool setAlarm(datetime_t time);
const bool readAlarm(datetime_t &time);
const bool getAlarmFlafs(uint8_t& flags);
private:
const std::string datetime2str(datetime_t &time);
const uint8_t decToBcd(int val);
const int bcdToDec(uint8_t val);
};
}

View File

@@ -18,7 +18,7 @@ void setup() {
Flash_test(); Flash_test();
GPIO_Init(); // RGB . Buzzer GPIO GPIO_Init(); // RGB . Buzzer GPIO
//I2C_Init(); //I2C_Init();
RTC_Init();// RTC //RTC_Init(); // RTC
SD_Init(); SD_Init();
Serial_Init(); // UART(RS485/CAN) Serial_Init(); // UART(RS485/CAN)
MQTT_Init();// MQTT MQTT_Init();// MQTT