Skip to content

supprot RP2040, STM32 #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions config.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
#include "TuyaDefs.h"

/* Distribution mode selection, only three choices, Anti-touch mode is recommende */
// #define CONFIG_MODE CONFIG_MODE_DEFAULT //Default working mode
#define CONFIG_MODE CONFIG_MODE_DEFAULT //Default working mode
// #define CONFIG_MODE CONFIG_MODE_LOWPOWER //Safe mode (low power working mode)
#define CONFIG_MODE CONFIG_MODE_SPECIAL // Anti-touch mode (special working mode)
// #define CONFIG_MODE CONFIG_MODE_SPECIAL // Anti-touch mode (special working mode)

/* some extra features defined begin */
#define WIFI_CONTROL_SELF_MODE 0
Expand Down
31 changes: 16 additions & 15 deletions examples/DataPointType/DataPointType.ino
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@
*/

#include <TuyaWifi.h>
#include <SoftwareSerial.h>

// STM32
// HardwareSerial Serial2(PA_3, PA_2);

TuyaWifi my_device;
SoftwareSerial DebugSerial(8,9);

/* Current LED status */
unsigned char led_state = 0;
Expand Down Expand Up @@ -59,7 +60,7 @@ unsigned long last_time = 0;
void setup()
{
Serial.begin(9600);
DebugSerial.begin(9600);
Serial2.begin(9600);

//Initialize led port, turn off led.
pinMode(LED_BUILTIN, OUTPUT);
Expand Down Expand Up @@ -121,49 +122,49 @@ unsigned char dp_process(unsigned char dpid, const unsigned char value[], unsign
{
switch (dpid) {
case DPID_BOOL:
DebugSerial.println("Bool type:");
Serial2.println("Bool type:");
dp_bool_value = my_device.mcu_get_dp_download_data(dpid, value, length);
DebugSerial.println(dp_bool_value);
Serial2.println(dp_bool_value);
/* After processing the download DP command, the current status should be reported. */
my_device.mcu_dp_update(DPID_BOOL, dp_bool_value, 1);
break;

case DPID_VALUE:
DebugSerial.println("Value type:");
Serial2.println("Value type:");
dp_value_value = my_device.mcu_get_dp_download_data(DPID_VALUE, value, length);
DebugSerial.println(dp_value_value);
Serial2.println(dp_value_value);
/* After processing the download DP command, the current status should be reported. */
my_device.mcu_dp_update(DPID_VALUE, dp_value_value, 1);
break;

case DPID_ENUM:
DebugSerial.println("Enum type:");
Serial2.println("Enum type:");
dp_enum_value = my_device.mcu_get_dp_download_data(dpid, value, length);
DebugSerial.println(dp_enum_value);
Serial2.println(dp_enum_value);
/* After processing the download DP command, the current status should be reported. */
my_device.mcu_dp_update(DPID_ENUM, dp_enum_value, 1);
break;

case DPID_STRING:
DebugSerial.println("String type:");
Serial2.println("String type:");
/* */
for (unsigned int i=0; i<length; i++) {
dp_string_value[i] = value[i];
DebugSerial.write(dp_string_value[i]);
Serial2.write(dp_string_value[i]);
}
DebugSerial.println("");
Serial2.println("");
/* After processing the download DP command, the current status should be reported. */
my_device.mcu_dp_update(DPID_STRING, dp_string_value, length);
break;

case DPID_RAW:
DebugSerial.println("Raw type:");
Serial2.println("Raw type:");
/* */
for (unsigned int i=0; i<length; i++) {
dp_raw_value[i] = value[i];
DebugSerial.write(dp_raw_value[i]);
Serial2.write(dp_raw_value[i]);
}
DebugSerial.println("");
Serial2.println("");
/* After processing the download DP command, the current status should be reported. */
my_device.mcu_dp_update(DPID_RAW, dp_raw_value, length);
break;
Expand Down
31 changes: 16 additions & 15 deletions examples/GetGreenTime/GetGreenTime.ino
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,11 @@
* @Github:https://github.com/tuya/tuya-wifi-mcu-sdk-arduino-library
*/
#include <TuyaWifi.h>
#include <SoftwareSerial.h>

// STM32
// HardwareSerial Serial2(PA_3, PA_2);

TuyaWifi my_device;
SoftwareSerial DebugSerial(8,9);

/* Current LED status */
unsigned char led_state = 0;
Expand Down Expand Up @@ -44,7 +45,7 @@ unsigned long last_time = 0;
void setup()
{
Serial.begin(9600);
DebugSerial.begin(9600);
Serial2.begin(9600);

//Initialize led port, turn off led.
pinMode(LED_BUILTIN, OUTPUT);
Expand Down Expand Up @@ -94,19 +95,19 @@ void loop()
if (millis() - last_get_green_time >= 3000) {
last_get_green_time = millis();
if (TY_SUCCESS == my_device.get_green_time(&green_time, 100)) { /* if network lag, you can increase the timeout */
DebugSerial.print(green_time.year);
DebugSerial.print("-");
DebugSerial.print(green_time.month);
DebugSerial.print("-");
DebugSerial.println(green_time.day);

DebugSerial.print(green_time.hour);
DebugSerial.print(":");
DebugSerial.print(green_time.minute);
DebugSerial.print(":");
DebugSerial.println(green_time.second);
Serial2.print(green_time.year);
Serial2.print("-");
Serial2.print(green_time.month);
Serial2.print("-");
Serial2.println(green_time.day);

Serial2.print(green_time.hour);
Serial2.print(":");
Serial2.print(green_time.minute);
Serial2.print(":");
Serial2.println(green_time.second);
} else {
DebugSerial.println("get green time failed");
Serial2.println("get green time failed");
}
}

Expand Down
1 change: 0 additions & 1 deletion examples/ModuleControlSelf/ModuleControlSelf.ino
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
*/

#include <TuyaWifi.h>
#include <SoftwareSerial.h>

TuyaWifi my_device;

Expand Down
5 changes: 2 additions & 3 deletions examples/start/start.ino
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
* @Github:https://github.com/tuya/tuya-wifi-mcu-sdk-arduino-library
*/

#include <Arduino.h>

#include <TuyaWifi.h>
#include <SoftwareSerial.h>

TuyaWifi my_device;


/* Current LED status */
unsigned char led_state = 0;
/* Connect network button pin */
Expand All @@ -42,7 +42,6 @@ unsigned long last_time = 0;

void setup()
{
// Serial.begin(9600);
Serial.begin(9600);

//Initialize led port, turn off led.
Expand Down
2 changes: 1 addition & 1 deletion library.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name=Tuya_WiFi_MCU_SDK
version=0.0.2
version=0.0.3
author=Tuya
maintainer=Tuya
sentence=Communicate with Tuya modules that have flashed the Tuya common Wi-Fi firmware.
Expand Down
4 changes: 2 additions & 2 deletions src/TuyaExtras.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ void TuyaExtras::mcu_request_green_time(void)

void TuyaExtras::mcu_get_green_time(unsigned char time[], TUYA_WIFI_TIME *tuya_time)
{
if (time == NULL || tuya_time == NULL) {
if (time == TY_NULL || tuya_time == TY_NULL) {
return;
}

Expand All @@ -50,7 +50,7 @@ void TuyaExtras::mcu_request_rtc_time(void)

void TuyaExtras::mcu_get_rtc_time(unsigned char time[], TUYA_WIFI_TIME *tuya_time)
{
if (time == NULL || tuya_time == NULL) {
if (time == TY_NULL || tuya_time == TY_NULL) {
return;
}

Expand Down
46 changes: 11 additions & 35 deletions src/TuyaUart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
* @Company: http://www.tuya.com
* @Description: Tuya mcu sdk Arduino library about uart buffer, data receiving and sending.
*/
#include <Arduino.h>
#include "TuyaWifi.h"
#include "TuyaUart.h"
#include "TuyaTools.h"
Expand Down Expand Up @@ -74,7 +73,7 @@ void TuyaUart::uart_receive_buff_input(unsigned char value[], unsigned short dat

unsigned char TuyaUart::take_byte_rxbuff(void)
{
unsigned char date;
unsigned char date = 0;

if (rx_buf_out != rx_buf_in)
{
Expand All @@ -101,7 +100,7 @@ unsigned char TuyaUart::with_data_rxbuff(void)

void TuyaUart::wifi_uart_write_data(unsigned char *in, unsigned short len)
{
if ((NULL == in) || (0 == len))
if ((TY_NULL == in) || (0 == len))
{
return;
}
Expand Down Expand Up @@ -151,50 +150,27 @@ unsigned short TuyaUart::set_wifi_uart_buffer(unsigned short dest, const unsigne
return dest;
}

void TuyaUart::set_serial(HardwareSerial *serial)
void TuyaUart::set_serial(TY_UART *serial)
{
_isHWSerial = TY_TRUE;
_port = serial;
_serial_port = serial;
}

void TuyaUart::set_serial(SoftwareSerial *serial)
void TuyaUart::begin(unsigned long baud_rate)
{
_isHWSerial = TY_FALSE;
_port = serial;
_serial_port->begin(baud_rate);
}

void TuyaUart::begin(long baud_rate)
int TuyaUart::read(void)
{
if (_isHWSerial) {
static_cast<HardwareSerial*>(_port)->begin(baud_rate);
} else {
static_cast<SoftwareSerial*>(_port)->begin(baud_rate);
}
return _serial_port->read();
}

char TuyaUart::read(void)
size_t TuyaUart::write(uint8_t c)
{
if (_isHWSerial) {
return static_cast<HardwareSerial*>(_port)->read();
} else {
return static_cast<SoftwareSerial*>(_port)->read();
}
}

size_t TuyaUart::write(char value)
{
if (_isHWSerial) {
return static_cast<HardwareSerial*>(_port)->write(value);
} else {
return static_cast<SoftwareSerial*>(_port)->write(value);
}
return _serial_port->write(c);
}

int TuyaUart::available(void)
{
if (_isHWSerial) {
return static_cast<HardwareSerial*>(_port)->available();
} else {
return static_cast<SoftwareSerial*>(_port)->available();
}
return _serial_port->available();
}
27 changes: 13 additions & 14 deletions src/TuyaUart.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,21 @@
#ifndef __TUYA_UART_H__
#define __TUYA_UART_H__

#include <Arduino.h>

#include "../config.h"
#include "TuyaDefs.h"
#include <SoftwareSerial.h>

#include <HardwareSerial.h>
#include <Stream.h>
#undef TY_UART
#define TY_UART HardwareSerial

class TuyaUart
{
public:
volatile unsigned char wifi_uart_rx_buf[PROTOCOL_HEAD + WIFI_UART_RECV_BUF_LMT]; //Serial data processing buffer
volatile unsigned char wifi_uart_tx_buf[PROTOCOL_HEAD + WIFIR_UART_SEND_BUF_LMT]; //Serial receive buffer
volatile unsigned char wifi_data_process_buf[PROTOCOL_HEAD + WIFI_DATA_PROCESS_LMT]; //Serial port send buffer
unsigned char wifi_uart_rx_buf[PROTOCOL_HEAD + WIFI_UART_RECV_BUF_LMT]; //Serial data processing buffer
unsigned char wifi_uart_tx_buf[PROTOCOL_HEAD + WIFIR_UART_SEND_BUF_LMT]; //Serial receive buffer
unsigned char wifi_data_process_buf[PROTOCOL_HEAD + WIFI_DATA_PROCESS_LMT]; //Serial port send buffer

TuyaUart(void);
~TuyaUart(void);
Expand All @@ -40,20 +43,16 @@ class TuyaUart
unsigned short set_wifi_uart_byte(unsigned short dest, unsigned char byte);
unsigned short set_wifi_uart_buffer(unsigned short dest, const unsigned char *src, unsigned short len);

/* serial set */
bool _isHWSerial;

void set_serial(HardwareSerial *serial);
void set_serial(SoftwareSerial *serial);
void begin(long baud_rate);
char read(void);
size_t write(char value);
void set_serial(TY_UART *serial);
void begin(unsigned long baud_rate);
int read(void);
size_t write(uint8_t c);
int available(void);

private:
volatile unsigned char *rx_buf_in;
volatile unsigned char *rx_buf_out;
Stream *_port;
TY_UART *_serial_port;
};

#endif /* __TUYA_UART_H__ */
Loading