Added sensor inputs from wind/sun sensors.

This commit is contained in:
Robert Strouse 2023-06-01 19:31:11 -07:00
parent cd173525b1
commit f850cc0a1e
6 changed files with 97 additions and 47 deletions

33
Somfy.h
View file

@ -28,7 +28,7 @@ enum class somfy_commands : byte {
StepDown = 0xB,
UnknownC = 0xC,
UnknownD = 0xD,
UnknownE = 0xE,
Sensor = 0xE,
RTWProto = 0xF, // RTW Protocol
// Command extensions for 80 bit frames
StepUp = 0x8B
@ -59,17 +59,6 @@ typedef enum {
} t_status;
struct somfy_rx_t {
void clear() {
this->status = t_status::waiting_synchro;
this->bit_length = 56;
this->cpt_synchro_hw = 0;
this->cpt_bits = 0;
this->previous_bit = 0;
this->waiting_half_symbol = false;
memset(this->payload, 0, sizeof(this->payload));
memset(this->pulses, 0, sizeof(this->pulses));
this->pulseCount = 0;
}
t_status status;
uint8_t bit_length = 56;
uint8_t cpt_synchro_hw = 0;
@ -92,25 +81,13 @@ struct somfy_rx_queue_t {
bool pop(somfy_rx_t *rx);
};
struct somfy_tx_t {
void clear() {
this->await = 0;
this->cmd = somfy_commands::Unknown0;
this->repeats = 0;
}
uint32_t await = 0;
somfy_commands cmd;
uint8_t repeats;
};
struct somfy_tx_queue_t {
somfy_tx_queue_t() {
this->clear();
}
void clear() {
for (uint8_t i = 0; i < MAX_TX_BUFFER; i++) {
this->index[i] = 255;
this->items[i].clear();
}
}
somfy_tx_queue_t() { memset(this->index, 255, MAX_TX_BUFFER); memset(&this->items[0], 0x00, sizeof(somfy_tx_queue_t) * MAX_TX_BUFFER); }
void clear() { memset(&this->index[0], 255, MAX_TX_BUFFER); memset(&this->items[0], 0x00, sizeof(somfy_tx_queue_t) * MAX_TX_BUFFER); }
uint8_t length = 0;
uint8_t index[MAX_TX_BUFFER];
somfy_tx_t items[MAX_TX_BUFFER];
@ -119,7 +96,9 @@ struct somfy_tx_queue_t {
};
enum class somfy_flags_t : byte {
Sun = 1
SunFlag = 0x01,
Windy = 0x10,
Sunny = 0x20
};
struct somfy_frame_t {
bool valid = false;