mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-24 19:26:37 +00:00
tuya: reorder functions
This commit is contained in:
parent
256b5cba8e
commit
0c3123a7aa
@ -54,11 +54,15 @@ int8_t tuya_wifi_state = -2; // Keep MCU wifi-status in sync with
|
|||||||
char tuya_buffer[TUYA_BUFFER_SIZE]; // Serial receive buffer
|
char tuya_buffer[TUYA_BUFFER_SIZE]; // Serial receive buffer
|
||||||
int tuya_byte_counter = 0; // Index in serial receive buffer
|
int tuya_byte_counter = 0; // Index in serial receive buffer
|
||||||
|
|
||||||
|
/*********************************************************************************************\
|
||||||
|
* Internal Functions
|
||||||
|
\*********************************************************************************************/
|
||||||
|
|
||||||
void TuyaSendCmd(uint8_t cmd, uint8_t payload[] = nullptr, uint16_t payload_len = 0){
|
void TuyaSendCmd(uint8_t cmd, uint8_t payload[] = nullptr, uint16_t payload_len = 0){
|
||||||
uint8_t checksum = (0xFF + cmd + (payload_len >> 8) + (payload_len & 0xFF));
|
uint8_t checksum = (0xFF + cmd + (payload_len >> 8) + (payload_len & 0xFF));
|
||||||
TuyaSerial->write(0x55); // Tuya header 55AA
|
TuyaSerial->write(0x55); // Tuya header 55AA
|
||||||
TuyaSerial->write(0xAA);
|
TuyaSerial->write(0xAA);
|
||||||
TuyaSerial->write(0x00); // version 00
|
TuyaSerial->write((uint8_t)0x00); // version 00
|
||||||
TuyaSerial->write(cmd); // Tuya command
|
TuyaSerial->write(cmd); // Tuya command
|
||||||
TuyaSerial->write(payload_len >> 8); // following data length (Hi)
|
TuyaSerial->write(payload_len >> 8); // following data length (Hi)
|
||||||
TuyaSerial->write(payload_len & 0xFF); // following data length (Lo)
|
TuyaSerial->write(payload_len & 0xFF); // following data length (Lo)
|
||||||
@ -148,6 +152,25 @@ void LightSerialDuty(uint8_t duty)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TuyaRequestState(){
|
||||||
|
if(TuyaSerial) {
|
||||||
|
// Get current status of MCU
|
||||||
|
snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state");
|
||||||
|
AddLog(LOG_LEVEL_DEBUG);
|
||||||
|
|
||||||
|
TuyaSendCmd(TUYA_CMD_QUERY_STATE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TuyaResetWifi()
|
||||||
|
{
|
||||||
|
if (!Settings.flag.button_restrict) {
|
||||||
|
char scmnd[20];
|
||||||
|
snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2);
|
||||||
|
ExecuteCommand(scmnd, SRC_BUTTON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TuyaPacketProcess()
|
void TuyaPacketProcess()
|
||||||
{
|
{
|
||||||
char scmnd[20];
|
char scmnd[20];
|
||||||
@ -237,6 +260,39 @@ void TuyaPacketProcess()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************************************\
|
||||||
|
* API Functions
|
||||||
|
\*********************************************************************************************/
|
||||||
|
|
||||||
|
boolean TuyaModuleSelected()
|
||||||
|
{
|
||||||
|
if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected
|
||||||
|
pin[GPIO_TUYA_TX] = 1;
|
||||||
|
pin[GPIO_TUYA_RX] = 3;
|
||||||
|
Settings.my_gp.io[1] = GPIO_TUYA_TX;
|
||||||
|
Settings.my_gp.io[3] = GPIO_TUYA_RX;
|
||||||
|
restart_flag = 2;
|
||||||
|
}
|
||||||
|
light_type = LT_SERIAL;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TuyaInit()
|
||||||
|
{
|
||||||
|
if (!Settings.param[P_TUYA_DIMMER_ID]) {
|
||||||
|
Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID;
|
||||||
|
}
|
||||||
|
TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1);
|
||||||
|
if (TuyaSerial->begin(9600)) {
|
||||||
|
if (TuyaSerial->hardwareSerial()) { ClaimSerial(); }
|
||||||
|
// Get MCU Configuration
|
||||||
|
snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU configuration");
|
||||||
|
AddLog(LOG_LEVEL_DEBUG);
|
||||||
|
|
||||||
|
TuyaSendCmd(TUYA_CMD_MCU_CONF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TuyaSerialInput()
|
void TuyaSerialInput()
|
||||||
{
|
{
|
||||||
while (TuyaSerial->available()) {
|
while (TuyaSerial->available()) {
|
||||||
@ -292,17 +348,16 @@ void TuyaSerialInput()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean TuyaModuleSelected()
|
|
||||||
|
boolean TuyaButtonPressed()
|
||||||
{
|
{
|
||||||
if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected
|
if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) {
|
||||||
pin[GPIO_TUYA_TX] = 1;
|
snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Reset GPIO triggered"));
|
||||||
pin[GPIO_TUYA_RX] = 3;
|
AddLog(LOG_LEVEL_DEBUG);
|
||||||
Settings.my_gp.io[1] = GPIO_TUYA_TX;
|
TuyaResetWifi();
|
||||||
Settings.my_gp.io[3] = GPIO_TUYA_RX;
|
return true; // Reset GPIO served here
|
||||||
restart_flag = 2;
|
|
||||||
}
|
}
|
||||||
light_type = LT_SERIAL;
|
return false; // Don't serve other buttons
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TuyaSetWifiLed(){
|
void TuyaSetWifiLed(){
|
||||||
@ -326,51 +381,6 @@ void TuyaSetWifiLed(){
|
|||||||
TuyaSendCmd(TUYA_CMD_WIFI_STATE, &wifi_state, 1);
|
TuyaSendCmd(TUYA_CMD_WIFI_STATE, &wifi_state, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TuyaRequestState(){
|
|
||||||
if(TuyaSerial) {
|
|
||||||
// Get current status of MCU
|
|
||||||
snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state");
|
|
||||||
AddLog(LOG_LEVEL_DEBUG);
|
|
||||||
|
|
||||||
TuyaSendCmd(TUYA_CMD_QUERY_STATE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TuyaInit()
|
|
||||||
{
|
|
||||||
if (!Settings.param[P_TUYA_DIMMER_ID]) {
|
|
||||||
Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID;
|
|
||||||
}
|
|
||||||
TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1);
|
|
||||||
if (TuyaSerial->begin(9600)) {
|
|
||||||
if (TuyaSerial->hardwareSerial()) { ClaimSerial(); }
|
|
||||||
// Get MCU Configuration
|
|
||||||
snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU configuration");
|
|
||||||
AddLog(LOG_LEVEL_DEBUG);
|
|
||||||
|
|
||||||
TuyaSendCmd(TUYA_CMD_MCU_CONF);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TuyaResetWifi()
|
|
||||||
{
|
|
||||||
if (!Settings.flag.button_restrict) {
|
|
||||||
char scmnd[20];
|
|
||||||
snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2);
|
|
||||||
ExecuteCommand(scmnd, SRC_BUTTON);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
boolean TuyaButtonPressed()
|
|
||||||
{
|
|
||||||
if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) {
|
|
||||||
snprintf_P(log_data, sizeof(log_data), PSTR("TYA: Reset GPIO triggered"));
|
|
||||||
AddLog(LOG_LEVEL_DEBUG);
|
|
||||||
TuyaResetWifi();
|
|
||||||
return true; // Reset GPIO served here
|
|
||||||
}
|
|
||||||
return false; // Don't serve other buttons
|
|
||||||
}
|
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* Interface
|
* Interface
|
||||||
|
Loading…
x
Reference in New Issue
Block a user