Skip to content

Commit b7f5018

Browse files
authored
Merge pull request #11 from shiliu-yang/master
supprot RP2040, STM32
2 parents a07bfb4 + e439edf commit b7f5018

File tree

11 files changed

+91
-121
lines changed

11 files changed

+91
-121
lines changed

config.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
#include "TuyaDefs.h"
1616

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

2222
/* some extra features defined begin */
2323
#define WIFI_CONTROL_SELF_MODE 0

examples/DataPointType/DataPointType.ino

+16-15
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
*/
1313

1414
#include <TuyaWifi.h>
15-
#include <SoftwareSerial.h>
15+
16+
// STM32
17+
// HardwareSerial Serial2(PA_3, PA_2);
1618

1719
TuyaWifi my_device;
18-
SoftwareSerial DebugSerial(8,9);
1920

2021
/* Current LED status */
2122
unsigned char led_state = 0;
@@ -59,7 +60,7 @@ unsigned long last_time = 0;
5960
void setup()
6061
{
6162
Serial.begin(9600);
62-
DebugSerial.begin(9600);
63+
Serial2.begin(9600);
6364

6465
//Initialize led port, turn off led.
6566
pinMode(LED_BUILTIN, OUTPUT);
@@ -121,49 +122,49 @@ unsigned char dp_process(unsigned char dpid, const unsigned char value[], unsign
121122
{
122123
switch (dpid) {
123124
case DPID_BOOL:
124-
DebugSerial.println("Bool type:");
125+
Serial2.println("Bool type:");
125126
dp_bool_value = my_device.mcu_get_dp_download_data(dpid, value, length);
126-
DebugSerial.println(dp_bool_value);
127+
Serial2.println(dp_bool_value);
127128
/* After processing the download DP command, the current status should be reported. */
128129
my_device.mcu_dp_update(DPID_BOOL, dp_bool_value, 1);
129130
break;
130131

131132
case DPID_VALUE:
132-
DebugSerial.println("Value type:");
133+
Serial2.println("Value type:");
133134
dp_value_value = my_device.mcu_get_dp_download_data(DPID_VALUE, value, length);
134-
DebugSerial.println(dp_value_value);
135+
Serial2.println(dp_value_value);
135136
/* After processing the download DP command, the current status should be reported. */
136137
my_device.mcu_dp_update(DPID_VALUE, dp_value_value, 1);
137138
break;
138139

139140
case DPID_ENUM:
140-
DebugSerial.println("Enum type:");
141+
Serial2.println("Enum type:");
141142
dp_enum_value = my_device.mcu_get_dp_download_data(dpid, value, length);
142-
DebugSerial.println(dp_enum_value);
143+
Serial2.println(dp_enum_value);
143144
/* After processing the download DP command, the current status should be reported. */
144145
my_device.mcu_dp_update(DPID_ENUM, dp_enum_value, 1);
145146
break;
146147

147148
case DPID_STRING:
148-
DebugSerial.println("String type:");
149+
Serial2.println("String type:");
149150
/* */
150151
for (unsigned int i=0; i<length; i++) {
151152
dp_string_value[i] = value[i];
152-
DebugSerial.write(dp_string_value[i]);
153+
Serial2.write(dp_string_value[i]);
153154
}
154-
DebugSerial.println("");
155+
Serial2.println("");
155156
/* After processing the download DP command, the current status should be reported. */
156157
my_device.mcu_dp_update(DPID_STRING, dp_string_value, length);
157158
break;
158159

159160
case DPID_RAW:
160-
DebugSerial.println("Raw type:");
161+
Serial2.println("Raw type:");
161162
/* */
162163
for (unsigned int i=0; i<length; i++) {
163164
dp_raw_value[i] = value[i];
164-
DebugSerial.write(dp_raw_value[i]);
165+
Serial2.write(dp_raw_value[i]);
165166
}
166-
DebugSerial.println("");
167+
Serial2.println("");
167168
/* After processing the download DP command, the current status should be reported. */
168169
my_device.mcu_dp_update(DPID_RAW, dp_raw_value, length);
169170
break;

examples/GetGreenTime/GetGreenTime.ino

100644100755
+16-15
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@
1111
* @Github:https://github.com/tuya/tuya-wifi-mcu-sdk-arduino-library
1212
*/
1313
#include <TuyaWifi.h>
14-
#include <SoftwareSerial.h>
14+
15+
// STM32
16+
// HardwareSerial Serial2(PA_3, PA_2);
1517

1618
TuyaWifi my_device;
17-
SoftwareSerial DebugSerial(8,9);
1819

1920
/* Current LED status */
2021
unsigned char led_state = 0;
@@ -44,7 +45,7 @@ unsigned long last_time = 0;
4445
void setup()
4546
{
4647
Serial.begin(9600);
47-
DebugSerial.begin(9600);
48+
Serial2.begin(9600);
4849

4950
//Initialize led port, turn off led.
5051
pinMode(LED_BUILTIN, OUTPUT);
@@ -94,19 +95,19 @@ void loop()
9495
if (millis() - last_get_green_time >= 3000) {
9596
last_get_green_time = millis();
9697
if (TY_SUCCESS == my_device.get_green_time(&green_time, 100)) { /* if network lag, you can increase the timeout */
97-
DebugSerial.print(green_time.year);
98-
DebugSerial.print("-");
99-
DebugSerial.print(green_time.month);
100-
DebugSerial.print("-");
101-
DebugSerial.println(green_time.day);
102-
103-
DebugSerial.print(green_time.hour);
104-
DebugSerial.print(":");
105-
DebugSerial.print(green_time.minute);
106-
DebugSerial.print(":");
107-
DebugSerial.println(green_time.second);
98+
Serial2.print(green_time.year);
99+
Serial2.print("-");
100+
Serial2.print(green_time.month);
101+
Serial2.print("-");
102+
Serial2.println(green_time.day);
103+
104+
Serial2.print(green_time.hour);
105+
Serial2.print(":");
106+
Serial2.print(green_time.minute);
107+
Serial2.print(":");
108+
Serial2.println(green_time.second);
108109
} else {
109-
DebugSerial.println("get green time failed");
110+
Serial2.println("get green time failed");
110111
}
111112
}
112113

examples/ModuleControlSelf/ModuleControlSelf.ino

100644100755
-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
*/
1515

1616
#include <TuyaWifi.h>
17-
#include <SoftwareSerial.h>
1817

1918
TuyaWifi my_device;
2019

examples/start/start.ino

+2-3
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
* @Github:https://github.com/tuya/tuya-wifi-mcu-sdk-arduino-library
1313
*/
1414

15+
#include <Arduino.h>
16+
1517
#include <TuyaWifi.h>
16-
#include <SoftwareSerial.h>
1718

1819
TuyaWifi my_device;
1920

20-
2121
/* Current LED status */
2222
unsigned char led_state = 0;
2323
/* Connect network button pin */
@@ -42,7 +42,6 @@ unsigned long last_time = 0;
4242

4343
void setup()
4444
{
45-
// Serial.begin(9600);
4645
Serial.begin(9600);
4746

4847
//Initialize led port, turn off led.

library.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=Tuya_WiFi_MCU_SDK
2-
version=0.0.2
2+
version=0.0.3
33
author=Tuya
44
maintainer=Tuya
55
sentence=Communicate with Tuya modules that have flashed the Tuya common Wi-Fi firmware.

src/TuyaExtras.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ void TuyaExtras::mcu_request_green_time(void)
2323

2424
void TuyaExtras::mcu_get_green_time(unsigned char time[], TUYA_WIFI_TIME *tuya_time)
2525
{
26-
if (time == NULL || tuya_time == NULL) {
26+
if (time == TY_NULL || tuya_time == TY_NULL) {
2727
return;
2828
}
2929

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

5151
void TuyaExtras::mcu_get_rtc_time(unsigned char time[], TUYA_WIFI_TIME *tuya_time)
5252
{
53-
if (time == NULL || tuya_time == NULL) {
53+
if (time == TY_NULL || tuya_time == TY_NULL) {
5454
return;
5555
}
5656

src/TuyaUart.cpp

+11-35
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
* @Company: http://www.tuya.com
1010
* @Description: Tuya mcu sdk Arduino library about uart buffer, data receiving and sending.
1111
*/
12-
#include <Arduino.h>
1312
#include "TuyaWifi.h"
1413
#include "TuyaUart.h"
1514
#include "TuyaTools.h"
@@ -74,7 +73,7 @@ void TuyaUart::uart_receive_buff_input(unsigned char value[], unsigned short dat
7473

7574
unsigned char TuyaUart::take_byte_rxbuff(void)
7675
{
77-
unsigned char date;
76+
unsigned char date = 0;
7877

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

102101
void TuyaUart::wifi_uart_write_data(unsigned char *in, unsigned short len)
103102
{
104-
if ((NULL == in) || (0 == len))
103+
if ((TY_NULL == in) || (0 == len))
105104
{
106105
return;
107106
}
@@ -151,50 +150,27 @@ unsigned short TuyaUart::set_wifi_uart_buffer(unsigned short dest, const unsigne
151150
return dest;
152151
}
153152

154-
void TuyaUart::set_serial(HardwareSerial *serial)
153+
void TuyaUart::set_serial(TY_UART *serial)
155154
{
156-
_isHWSerial = TY_TRUE;
157-
_port = serial;
155+
_serial_port = serial;
158156
}
159157

160-
void TuyaUart::set_serial(SoftwareSerial *serial)
158+
void TuyaUart::begin(unsigned long baud_rate)
161159
{
162-
_isHWSerial = TY_FALSE;
163-
_port = serial;
160+
_serial_port->begin(baud_rate);
164161
}
165162

166-
void TuyaUart::begin(long baud_rate)
163+
int TuyaUart::read(void)
167164
{
168-
if (_isHWSerial) {
169-
static_cast<HardwareSerial*>(_port)->begin(baud_rate);
170-
} else {
171-
static_cast<SoftwareSerial*>(_port)->begin(baud_rate);
172-
}
165+
return _serial_port->read();
173166
}
174167

175-
char TuyaUart::read(void)
168+
size_t TuyaUart::write(uint8_t c)
176169
{
177-
if (_isHWSerial) {
178-
return static_cast<HardwareSerial*>(_port)->read();
179-
} else {
180-
return static_cast<SoftwareSerial*>(_port)->read();
181-
}
182-
}
183-
184-
size_t TuyaUart::write(char value)
185-
{
186-
if (_isHWSerial) {
187-
return static_cast<HardwareSerial*>(_port)->write(value);
188-
} else {
189-
return static_cast<SoftwareSerial*>(_port)->write(value);
190-
}
170+
return _serial_port->write(c);
191171
}
192172

193173
int TuyaUart::available(void)
194174
{
195-
if (_isHWSerial) {
196-
return static_cast<HardwareSerial*>(_port)->available();
197-
} else {
198-
return static_cast<SoftwareSerial*>(_port)->available();
199-
}
175+
return _serial_port->available();
200176
}

src/TuyaUart.h

+13-14
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,21 @@
1212
#ifndef __TUYA_UART_H__
1313
#define __TUYA_UART_H__
1414

15+
#include <Arduino.h>
16+
1517
#include "../config.h"
1618
#include "TuyaDefs.h"
17-
#include <SoftwareSerial.h>
19+
1820
#include <HardwareSerial.h>
19-
#include <Stream.h>
21+
#undef TY_UART
22+
#define TY_UART HardwareSerial
2023

2124
class TuyaUart
2225
{
2326
public:
24-
volatile unsigned char wifi_uart_rx_buf[PROTOCOL_HEAD + WIFI_UART_RECV_BUF_LMT]; //Serial data processing buffer
25-
volatile unsigned char wifi_uart_tx_buf[PROTOCOL_HEAD + WIFIR_UART_SEND_BUF_LMT]; //Serial receive buffer
26-
volatile unsigned char wifi_data_process_buf[PROTOCOL_HEAD + WIFI_DATA_PROCESS_LMT]; //Serial port send buffer
27+
unsigned char wifi_uart_rx_buf[PROTOCOL_HEAD + WIFI_UART_RECV_BUF_LMT]; //Serial data processing buffer
28+
unsigned char wifi_uart_tx_buf[PROTOCOL_HEAD + WIFIR_UART_SEND_BUF_LMT]; //Serial receive buffer
29+
unsigned char wifi_data_process_buf[PROTOCOL_HEAD + WIFI_DATA_PROCESS_LMT]; //Serial port send buffer
2730

2831
TuyaUart(void);
2932
~TuyaUart(void);
@@ -40,20 +43,16 @@ class TuyaUart
4043
unsigned short set_wifi_uart_byte(unsigned short dest, unsigned char byte);
4144
unsigned short set_wifi_uart_buffer(unsigned short dest, const unsigned char *src, unsigned short len);
4245

43-
/* serial set */
44-
bool _isHWSerial;
45-
46-
void set_serial(HardwareSerial *serial);
47-
void set_serial(SoftwareSerial *serial);
48-
void begin(long baud_rate);
49-
char read(void);
50-
size_t write(char value);
46+
void set_serial(TY_UART *serial);
47+
void begin(unsigned long baud_rate);
48+
int read(void);
49+
size_t write(uint8_t c);
5150
int available(void);
5251

5352
private:
5453
volatile unsigned char *rx_buf_in;
5554
volatile unsigned char *rx_buf_out;
56-
Stream *_port;
55+
TY_UART *_serial_port;
5756
};
5857

5958
#endif /* __TUYA_UART_H__ */

0 commit comments

Comments
 (0)