6#ifndef TUYA_CLOUD_TYPES_H
7#define TUYA_CLOUD_TYPES_H
9#include "tuya_iot_config.h"
12#if OPERATING_SYSTEM == SYSTEM_LINUX
20#include "tuya_error_code.h"
27typedef int OPERATE_RET;
28typedef long long DLONG_T;
29typedef DLONG_T *PDLONG_T;
31typedef FLOAT_T *PFLOAT_T;
32typedef signed int INT_T;
37typedef signed char SCHAR_T;
38typedef unsigned char UCHAR_T;
40typedef unsigned short USHORT_T;
41typedef short *PSHORT_T;
43typedef unsigned long ULONG_T;
45typedef unsigned char BYTE_T;
46typedef BYTE_T *PBYTE_T;
47typedef unsigned int UINT_T;
48typedef unsigned int *PUINT_T;
50typedef BOOL_T *PBOOL_T;
51typedef long long int INT64_T;
52typedef INT64_T *PINT64_T;
53typedef unsigned long long int UINT64_T;
54typedef UINT64_T *PUINT64_T;
55typedef unsigned int UINT32_T;
56typedef unsigned int *PUINT32_T;
60typedef INT16_T *PINT16_T;
61typedef unsigned short UINT16_T;
62typedef UINT16_T *PUINT16_T;
63typedef signed char INT8_T;
64typedef INT8_T *PINT8_T;
65typedef unsigned char UINT8_T;
66typedef UINT8_T *PUINT8_T;
67typedef ULONG_T TIME_MS;
68typedef ULONG_T TIME_S;
69typedef unsigned int TIME_T;
70typedef double DOUBLE_T;
71typedef unsigned short WORD_T;
72typedef WORD_T *PWORD_T;
73typedef unsigned int DWORD_T;
74typedef DWORD_T *PDWORD_T;
125#define NULL ((void *)0)
141typedef size_t SIZE_T;
144#define MAX(a,b) (((a) > (b)) ? (a) : (b))
148#define MIN(a,b) (((a) < (b)) ? (a) : (b))
152#define BIT(nr) (1UL << (nr))
154#define MAKEWORD(a, b) ((WORD_T)(((BYTE_T)(a)) | ((WORD_T)((BYTE_T)(b))) << 8))
155#define MAKELONG(a, b) ((LONG_T)(((WORD_T)(a)) | ((DWORD_T)((WORD_T)(b))) << 16))
156#define LOWORD(l) ((WORD_T)(l))
157#define HIWORD(l) ((WORD_T)(((DWORD_T)(l) >> 16) & 0xFFFF))
158#define LOBYTE(w) ((BYTE_T)(w))
159#define HIBYTE(w) ((BYTE_T)(((WORD_T)(w) >> 8) & 0xFF))
161#define WORD_SWAP(X) (((X << 8) | (X >> 8))&0xFFFF)
162#define DWORD_SWAP(X) ( (((X)&0xff)<<24) + \
163 (((X)&0xff00)<<8) + \
164 (((X)&0xff0000)>>8) + \
165 (((X)&0xff000000)>>24) )
166#define DDWORD_SWAP(X) { \
167 unsigned long temp_low, temp_high; \
168 temp_low = DWORD_SWAP((unsigned long)((X) & 0xffffffff)); \
169 temp_high = DWORD_SWAP((unsigned long)((X) >> 32)); \
176#if defined(LITTLE_END) && (LITTLE_END==1)
177#define UNI_NTOHS(X) WORD_SWAP(X)
178#define UNI_HTONS(X) WORD_SWAP(X)
179#define UNI_NTOHL(X) DWORD_SWAP(X)
180#define UNI_HTONL(X) DWORD_SWAP(X)
181#define UNI_NTOHLL(X) DDWORD_SWAP(X)
182#define UNI_HTONLL(X) DDWORD_SWAP(X)
186#define UNI_NTOHS(X) X
187#define UNI_HTONS(X) X
188#define UNI_NTOHL(X) X
189#define UNI_HTONL(X) X
190#define UNI_NTOHLL(X) X
191#define UNI_HTONLL(X) X
195#define OFFSOF(s,m) ((SIZE_T)(&(((s*)0)->m)))
196#define CNTSOF(a) (sizeof(a)/sizeof(a[0]))
197#define CNTR_OF(ptr, type, member) \
198 ({(type *)( (char *)ptr - OFFSOF(type,member) );})
207#define MAC_ADDR_LEN 6
209 UINT8_T mac[MAC_ADDR_LEN];
245}TUYA_ADDR_BITS_DEF_E;
261 TUYA_ADC_INNER_SAMPLE_VOL = 0,
262 TUYA_ADC_EXTERNAL_SAMPLE_VOL
282 TUYA_ADC_TYPE_E type;
283 TUYA_ADC_MODE_E mode;
318 TUYA_DAC_WRITE_FIFO = 0,
319 TUYA_DAC_SET_BASE_CFG,
332 TUYA_FLASH_TYPE_BTL0 = 0,
333 TUYA_FLASH_TYPE_BTL1,
334 TUYA_FLASH_TYPE_STACK,
337 TUYA_FLASH_TYPE_USER0,
338 TUYA_FLASH_TYPE_USER1,
339 TUYA_FLASH_TYPE_KV_DATA,
340 TUYA_FLASH_TYPE_KV_SWAP,
341 TUYA_FLASH_TYPE_KV_KEY,
343 TUYA_FLASH_TYPE_INFO,
344 TUYA_FLASH_TYPE_KV_UF,
345 TUYA_FLASH_TYPE_KV_PROTECT,
364#ifndef TUYA_FLASH_TYPE_MAX_PARTITION_NUM
365#define TUYA_FLASH_TYPE_MAX_PARTITION_NUM 10
369 UINT_T partition_num;
445 TUYA_GPIO_LEVEL_LOW = 0,
446 TUYA_GPIO_LEVEL_HIGH,
461 TUYA_GPIO_PULLUP = 0,
463 TUYA_GPIO_HIGH_IMPEDANCE,
467 TUYA_GPIO_OPENDRAIN_PULLUP,
474 TUYA_GPIO_IRQ_RISE = 0,
476 TUYA_GPIO_IRQ_RISE_FALL,
485 TUYA_GPIO_MODE_E mode;
486 TUYA_GPIO_DRCT_E direct;
487 TUYA_GPIO_LEVEL_E level;
490typedef VOID_T (*TUYA_GPIO_IRQ_CB)(VOID_T *args);
496 TUYA_GPIO_IRQ_E mode;
520 TUYA_IIC_MODE_MASTER,
529 TUYA_IIC_BUS_SPEED_100K = 0,
530 TUYA_IIC_BUS_SPEED_400K = 1,
531 TUYA_IIC_BUS_SPEED_1M = 2,
532 TUYA_IIC_BUS_SPEED_3_4M = 3
540 TUYA_IIC_ADDRESS_7BIT = 0,
541 TUYA_IIC_ADDRESS_10BIT = 1
542} TUYA_IIC_ADDR_MODE_E;
549 TUYA_IIC_ROLE_E role;
550 TUYA_IIC_SPEED_E speed;
551 TUYA_IIC_ADDR_MODE_E addr_width;
568 TUYA_IIC_EVENT_TRANSFER_DONE = 0,
569 TUYA_IIC_EVENT_TRANSFER_INCOMPLETE = 1,
570 TUYA_IIC_EVENT_SLAVE_TRANSMIT = 2,
571 TUYA_IIC_EVENT_SLAVE_RECEIVE = 3,
572 TUYA_IIC_EVENT_ADDRESS_NACK = 4,
573 TUYA_IIC_EVENT_GENERAL_CALL = 5,
574 TUYA_IIC_EVENT_ARBITRATION_LOST = 6,
575 TUYA_IIC_EVENT_BUS_ERROR = 7,
576 TUYA_IIC_EVENT_BUS_CLEAR = 8
579typedef VOID_T (*TUYA_I2C_IRQ_CB)(TUYA_I2C_NUM_E port, TUYA_IIC_IRQ_EVT_E event);
622 TUYA_PWM_NEGATIVE = 0,
624} TUYA_PWM_POLARITY_E;
630 TUYA_PWM_POLARITY_E polarity;
661 TUYA_SPI_ORDER_MSB2LSB = 0,
662 TUYA_SPI_ORDER_LSB2MSB = 1,
663} TUYA_SPI_BIT_ORDER_E;
667 TUYA_SPI_ROLE_INACTIVE,
668 TUYA_SPI_ROLE_MASTER,
670 TUYA_SPI_ROLE_MASTER_SIMPLEX,
671 TUYA_SPI_ROLE_SLAVE_SIMPLEX
679 TUYA_SPI_DATA_BIT8 = 0,
681} TUYA_SPI_DATABITS_E;
688 TUYA_SPI_AUTO_TYPE = 0,
690 TUYA_SPI_SOFT_ONE_WIRE_TYPE,
698 TUYA_SPI_ROLE_E role;
699 TUYA_SPI_MODE_E mode;
700 TUYA_SPI_TYPE_E type;
701 TUYA_SPI_DATABITS_E databits;
702 TUYA_SPI_BIT_ORDER_E bitorder;
708 TUYA_SPI_EVENT_TRANSFER_COMPLETE = 0,
709 TUYA_SPI_EVENT_TX_COMPLETE,
710 TUYA_SPI_EVENT_RX_COMPLETE,
711 TUYA_SPI_EVENT_DATA_LOST,
712 TUYA_SPI_EVENT_MODE_FAULT
719typedef VOID_T (*TUYA_SPI_IRQ_CB)(TUYA_SPI_NUM_E port, TUYA_SPI_IRQ_EVT_E event);
750 TUYA_I2S_MODE_MASTER = (0x1 << 0),
751 TUYA_I2S_MODE_SLAVE = (0x1 << 1),
752 TUYA_I2S_MODE_TX = (0x1 << 2),
753 TUYA_I2S_MODE_RX = (0x1 << 3),
757 TUYA_I2S_BITS_PER_SAMPLE_8BIT = 8,
758 TUYA_I2S_BITS_PER_SAMPLE_16BIT = 16,
759 TUYA_I2S_BITS_PER_SAMPLE_24BIT = 24,
760 TUYA_I2S_BITS_PER_SAMPLE_32BIT = 32,
761} TUYA_I2S_BITS_PER_SAMP_E;
764 TUYA_I2S_CHANNEL_FMT_RIGHT_LEFT,
765 TUYA_I2S_CHANNEL_FMT_ALL_RIGHT,
766 TUYA_I2S_CHANNEL_FMT_ALL_LEFT,
767 TUYA_I2S_CHANNEL_FMT_ONLY_RIGHT,
768 TUYA_I2S_CHANNEL_FMT_ONLY_LEFT,
769} TUYA_I2S_CHANNEL_FMT_E;
772 I2S_COMM_FORMAT_STAND_I2S = 0X01,
773 I2S_COMM_FORMAT_STAND_MSB = 0X02,
774 I2S_COMM_FORMAT_STAND_PCM_SHORT = 0x04,
775 I2S_COMM_FORMAT_STAND_PCM_LONG = 0x0C,
776 I2S_COMM_FORMAT_STAND_MAX,
777} TUYA_I2S_COMM_FORMAT_E;
790#define TUYA_IRUSR 0400
791#define TUYA_IWUSR 0200
792#define TUYA_IXUSR 0100
796#define TUYA_SEEK_SET 0
797#define TUYA_SEEK_CUR 1
798#define TUYA_SEEK_END 2
805typedef VOID_T* TUYA_DIR;
806typedef VOID_T* TUYA_FILEINFO;
807typedef VOID_T* TUYA_FILE;
816} TUYA_CPU_SLEEP_MODE_E;
821typedef VOID_T (*TUYA_PRE_SLEEP_CB)(VOID_T);
826typedef VOID_T (*TUYA_POST_WAKEUP_CB)(VOID_T);
832 TUYA_PRE_SLEEP_CB pre_sleep_cb;
833 TUYA_POST_WAKEUP_CB post_wakeup_cb;
838#if OPERATING_SYSTEM == SYSTEM_LINUX
839typedef UINT64_T SYS_TICK_T;
840typedef UINT64_T SYS_TIME_T;
842typedef UINT_T SYS_TICK_T;
843typedef UINT_T SYS_TIME_T;
850 TUYA_RESET_REASON_POWERON = 0,
851 TUYA_RESET_REASON_HW_WDOG = 1,
852 TUYA_RESET_REASON_FAULT = 2,
853 TUYA_RESET_REASON_SW_WDOG = 3,
854 TUYA_RESET_REASON_SOFTWARE = 4,
855 TUYA_RESET_REASON_DEEPSLEEP = 5,
856 TUYA_RESET_REASON_EXTERNAL = 6,
857 TUYA_RESET_REASON_UNKNOWN = 7,
858 TUYA_RESET_REASON_FIB = 8,
859 TUYA_RESET_REASON_BOOTLOADER = 8,
860 TUYA_RESET_REASON_CRASH = 10,
861 TUYA_RESET_REASON_FLASH = 11,
862 TUYA_RESET_REASON_FATAL = 12,
863 TUYA_RESET_REASON_BROWNOUT = 13,
864 TUYA_RESET_REASON_UNSUPPORT = 0xFF,
865} TUYA_RESET_REASON_E;
869#define TUYA_OTA_FILE_MD5_LEN 16
881 TUYA_OTA_PATH_AIR = 0,
882 TUYA_OTA_PATH_UART = 1,
883 TUYA_OTA_PATH_BLE = 2,
884 TUYA_OTA_PATH_ZIGBEE = 3,
891 UINT8_T md5[TUYA_OTA_FILE_MD5_LEN];
931 TUYA_UART_DATA_LEN_5BIT = 0x05,
932 TUYA_UART_DATA_LEN_6BIT = 0x06,
933 TUYA_UART_DATA_LEN_7BIT = 0x07,
934 TUYA_UART_DATA_LEN_8BIT = 0x08,
935} TUYA_UART_DATA_LEN_E;
942 TUYA_UART_STOP_LEN_1BIT = 0x01,
943 TUYA_UART_STOP_LEN_1_5BIT1 = 0x02,
944 TUYA_UART_STOP_LEN_2BIT = 0x03,
945} TUYA_UART_STOP_LEN_E;
952 TUYA_UART_PARITY_TYPE_NONE = 0,
953 TUYA_UART_PARITY_TYPE_ODD = 1,
954 TUYA_UART_PARITY_TYPE_EVEN = 2,
955} TUYA_UART_PARITY_TYPE_E;
958 TUYA_UART_FLOWCTRL_NONE = 0,
959 TUYA_UART_FLOWCTRL_RTSCTS,
960 TUYA_UART_FLOWCTRL_XONXOFF,
961 TUYA_UART_FLOWCTRL_DTRDSR,
962} TUYA_UART_FLOWCTRL_TYPE_E;
964#define TUYA_UART_PORT_ID(port_type, port_num) ((((port_type) << 16) & 0xFFFF0000) | (port_num))
965#define TUYA_UART_GET_PORT_TYPE(port_id) (((port_id) >> 16) & 0xFFFF)
966#define TUYA_UART_GET_PORT_NUMBER(port_id) ((port_id) & 0xFFFF)
974 TUYA_UART_PARITY_TYPE_E parity;
975 TUYA_UART_DATA_LEN_E databits;
976 TUYA_UART_STOP_LEN_E stopbits;
977 TUYA_UART_FLOWCTRL_TYPE_E flowctrl;
991typedef VOID_T (*TUYA_UART_IRQ_CB)(TUYA_UART_NUM_E port_id);
998 TUYA_UART_SUSPEND_CMD = 0,
999 TUYA_UART_RESUME_CMD,
1000 TUYA_UART_FLUSH_CMD,
1001 TUYA_UART_RECONFIG_CMD,
1003 TUYA_UART_MAX_CMD = 1000
1004}TUYA_UART_IOCTL_CMD_E;
1025#define TUYA_TIMER_CFG(__CFG, __MODE, __CB, __ARG) \
1026 (__CFG)->mode = __MODE; \
1027 (__CFG)->cb = __CB; \
1028 (__CFG)->arg = __ARG
1031 TUYA_TIMER_MODE_ONCE = 0,
1032 TUYA_TIMER_MODE_PERIOD
1035typedef VOID (*TUYA_TIMER_ISR_CB)(VOID *args);
1038 TUYA_TIMER_MODE_E mode;
1039 TUYA_TIMER_ISR_CB cb;
1043#if defined(SYSTEM_LINUX) && (OPERATING_SYSTEM == SYSTEM_LINUX)
1045#define TUYA_FD_MAX_COUNT (1024)
1048#define TUYA_FD_MAX_COUNT (64)
1051typedef INT_T TUYA_OPT_LEVEL;
1052typedef INT_T TUYA_OPT_NAME;
1056 UINT8_T placeholder[(TUYA_FD_MAX_COUNT+7)/8];
1064}TUYA_PROTOCOL_TYPE_E;
1074typedef UINT_T TUYA_IP_ADDR_T;
1077typedef UINT_T TUYA_ERRNO;
1078#define TUYA_ERRNO_NOT_SUPPORT 255
Definition: tuya_cloud_types.h:201
Definition: tuya_cloud_types.h:208
adc config
Definition: tuya_cloud_types.h:277
dac config //xbf
Definition: tuya_cloud_types.h:305
Definition: tuya_cloud_types.h:322
Definition: tuya_cloud_types.h:312
Definition: tuya_cloud_types.h:1055
Definition: tuya_cloud_types.h:368
flash partition information
Definition: tuya_cloud_types.h:354
gpio config
Definition: tuya_cloud_types.h:484
gpio interrupt config
Definition: tuya_cloud_types.h:495
Definition: tuya_cloud_types.h:779
UINT32_T mclk
Definition: tuya_cloud_types.h:782
UINT32_T sample_rate
Definition: tuya_cloud_types.h:781
TUYA_I2S_COMM_FORMAT_E communication_format
Definition: tuya_cloud_types.h:785
TUYA_I2S_MODE_E mode
Definition: tuya_cloud_types.h:780
TUYA_I2S_CHANNEL_FMT_E channel_format
Definition: tuya_cloud_types.h:784
UINT32_T i2s_dma_flags
Definition: tuya_cloud_types.h:786
TUYA_I2S_BITS_PER_SAMP_E bits_per_sample
Definition: tuya_cloud_types.h:783
i2c cfg
Definition: tuya_cloud_types.h:548
Definition: tuya_cloud_types.h:554
UINT32_T direction
Direction: 0=Transmitter, 1=Receiver
Definition: tuya_cloud_types.h:557
UINT32_T arbitration_lost
Master lost arbitration(in case of multi-masters) (cleared on start of next Master operation)
Definition: tuya_cloud_types.h:559
UINT32_T general_call
General Call(address 0) indication (cleared on start of next Slave operation)
Definition: tuya_cloud_types.h:558
UINT32_T mode
Mode: 0=Slave, 1=Master
Definition: tuya_cloud_types.h:556
UINT32_T busy
Transmitter/Receiver busy flag,1 is busy.
Definition: tuya_cloud_types.h:555
UINT32_T bus_error
Bus error detected (cleared on start of next Master/Slave operation)
Definition: tuya_cloud_types.h:560
Definition: tuya_cloud_types.h:897
UINT_T offset
ota image offset
Definition: tuya_cloud_types.h:899
UINT_T total_len
ota image totle len
Definition: tuya_cloud_types.h:898
void * pri_data
private pointer
Definition: tuya_cloud_types.h:902
UINT_T len
ota data len
Definition: tuya_cloud_types.h:901
UCHAR_T * data
ota data
Definition: tuya_cloud_types.h:900
Definition: tuya_cloud_types.h:888
pwm config
Definition: tuya_cloud_types.h:629
sleep callback
Definition: tuya_cloud_types.h:831
spi config
Definition: tuya_cloud_types.h:697
SPI Status
Definition: tuya_cloud_types.h:725
UINT32_T busy
Transmitter/Receiver busy flag
Definition: tuya_cloud_types.h:726
UINT32_T data_lost
Data lost: Receive overflow / Transmit underflow (cleared on start of transfer operation)
Definition: tuya_cloud_types.h:727
UINT32_T mode_fault
Mode fault detected; optional (cleared on start of transfer operation)
Definition: tuya_cloud_types.h:728
Definition: tuya_cloud_types.h:1037
uart config
Definition: tuya_cloud_types.h:972
Definition: tuya_cloud_types.h:1007