涂鸦通用Wi-Fi SDK相关API使用

Posted 三明治开发社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了涂鸦通用Wi-Fi SDK相关API使用相关的知识,希望对你有一定的参考价值。

本文主要介绍涂鸦SDK中应用层GPIO、按键、串口、线程、消息队列等相关接口函数的使用,方便开发者直接调用。

1. GPIO

1.1 GPIO初始化

OPERATE_RET tuya_gpio_inout_set(IN CONST TY_GPIO_PORT_E port,IN CONST BOOL_T in);
功能描述GPIO初始化
输入参数port: gpio口 in: 输入输出标识(true:输入,false:输出)
输出参数
返回值OPERATE_RET(int)

1.2 GPIO电平状态初始化

OPERATE_RET tuya_gpio_inout_set_select(IN CONST TY_GPIO_PORT_E port,
									   IN CONST BOOL_T in,
									   IN CONST BOOL_T high);
功能描述gpio初始化,设置gpio电平状态
输入参数port:gpio口 in:输入输出标识(true:输入,false: 输出) high:是否配置为高有效(true:高有效,false:低有效)
输出参数
返回值OPERATE_RET(int)

 1.3 读取GPIO电平

INT_T tuya_gpio_read(IN CONST TY_GPIO_PORT_E port);
功能描述读取gpio电平
输入参数port:gpio口
输出参数
返回值0:低电平 1:高电平

1.4 设置GPIO电平

OPERATE_RET tuya_gpio_write(IN CONST TY_GPIO_PORT_E port,IN CONST BOOL_T high);
功能描述设置gpio电平
输入参数port:gpio口 high:电平状态(true:高电平,false:低电平)
输出参数
返回值OPERATE_RET(int)

2. KEY(按键)

2.1 按键初始化

OPERATE_RET key_init(IN CONST KEY_USER_DEF_S *p_tbl,
					 IN CONST INT_T cnt,
					 IN CONST INT_T timer_space);
功能描述按键初始化
输入参数p_tbl :按键初始化参数对应结构体 cnt:连击次数 (0:禁止连击) timer_space:轮询检测时间,单位:ms
输出参数
返回值OPERATE_RET(int)

 2.2 按键注册

OPERATE_RET reg_proc_key(IN CONST KEY_USER_DEF_S *key_ud);

 输入参数:

typedef struct { // user define
    			TY_GPIO_PORT_E port;
   				BOOL_T low_level_detect; // 低电平检测
    			KEY_LONG_PRESS_TP_E lp_tp;
    			USHORT_T long_key_time; // ms (lp_tp == LP_ONCE_TRIG then valid and must >= 1000ms)
    			USHORT_T seq_key_detect_time; // ms 0:disable default:400ms
    			KEY_CALLBACK call_back;
}KEY_USER_DEF_S;
功能描述按键注册
输入参数如上 ↖
输出参数
返回值OPERATE_RET(int)

3. LED

3.1 创建LED控制句柄

OPERATE_RET tuya_create_led_handle_select(IN CONST TY_GPIO_PORT_E port,
										  IN CONST BOOL_T high,
										  OUT LED_HANDLE *handle);
功能描述创建LED控制句柄
输入参数port:gpio high:高有效使能( true:高有效 false:低有效) handle:led 句柄
输出参数
返回值OPERATE_RET(int)

3.2 LED控制

VOID tuya_set_led_light_type(IN CONST LED_HANDLE handle,
							 IN CONST LED_LT_E type, 
							 IN CONST USHORT_T flh_mstime,			
							 IN CONST flh_ms_sumtime);
功能描述LED控制
输入参数handle:LED句柄 type:控制类型( ① OL_LOW 低电平 ②OL_HIGH 高电平 ③ OL_FLASH_LOW LED低电平闪烁 ④OL_FLASH_HIGH LED高电平闪烁) flh_mstime:闪烁间隔时间,单位:ms flh_ms_sumtime:闪烁总时间,如果一直闪就是0xffff ffff;如果只是控制亮 / 灭,这两个时间都是0
输出参数
返回值VOID(void)

 

4. 串口(UART)

4.1 串口初始化

OPERATE_RET ty_uart_init(IN CONST TY_UART_PORT_E port,
						 IN CONST TY_UART_BAUD_E badu, 
						 IN CONST TY_DATA_BIT_E bits,
						 IN CONST TY_PARITY_E parity,
						 IN CONST TY_STOPBITS_E stop,
						 IN CONST UINT_T bufsz,
						 IN CONST BOOL_T unblock);
功能描述串口初始化
输入参数port:gpio badu:波特率 bits:数据位 parity:奇偶校验 stop:停止位 bufsz:接收缓冲区大小unblock:是否阻塞(true:非阻塞 false:阻塞)
输出参数
返回值OPERATE_RET(int)

4.2 串口发送数据

VOID ty_uart_send_data(IN CONST TY_UART_PORT_E port,
					   IN CONST BYTE_T *data,
					   IN CONST UINT_T len);
功能描述串口发送数据
输入参数port:gpio data:数据 len:数据长度
输出参数
返回值VOID(void)

4.3 串口发接收数据

UINT_T ty_uart_read_data(IN CONST TY_UART_PORT_E port,
						 OUT BYTE_T *buf,
						 IN CONST UINT_T len);

5. 信号量

5.1 信号量创建

int tuya_hal_semaphore_create_init(SEM_HANDLE *pHandle,
 								   const uint32_t semCnt,
							       const uint32_t sem_max);
功能描述信号量创建
输入参数semCnt:信号量初始值 sem_max:信号量最大值
输出参数pHandle:信号量句柄
返回值成功:0 失败:非0

5.2 信号量接收

int tuya_hal_semaphore_wait(const SEM_HANDLE semHandle);
 
功能描述信号量接收
输入参数semHandle:信号量句柄
输出参数
返回值成功:0 失败:非0

5.3 信号量发送

int tuya_hal_semaphore_post(const SEM_HANDLE semHandle);
功能描述信号量接收
输入参数semHandle:信号量句柄
输出参数
返回值成功:0 失败:非0

5.4 信号量释放

int tuya_hal_semaphore_release(const SEM_HANDLE semHandle);
功能描述信号量释放
输入参数semHandle:信号量句柄
输出参数
返回值成功:0 失败:非0

6. 线程(任务)

6.1 任务创建

int tuya_hal_thread_create(THREAD_HANDLE* thread,
						   const char* name, 
						   uint32_t stack_size,
						   uint32_t priority,
						   THREAD_FUNC_T func,
						   void* const arg);
功能描述任务创建
输入参数name:线程名称 stack_size:线程栈大小 priority:线程优先级 func: 线程函数 arg: 线程的结构体参数
输出参数thread: 任务句柄
返回值成功:0 失败:非0

6.2 任务删除

int tuya_hal_thread_release(THREAD_HANDLE thread);
功能描述任务删除
输入参数thread:任务句柄
输出参数
返回值成功:0 失败:非0

7. 互斥锁

7.1 互斥锁创建

int tuya_hal_mutex_create_init(MUTEX_HANDLE *pMutexHandle);
功能描述互斥锁创建
输入参数
输出参数pMutexHandle:互斥锁句柄
返回值int

7.2 互斥锁上锁

int tuya_hal_mutex_lock(const MUTEX_HANDLE mutexHandle);
功能描述互斥锁上锁
输入参数
输出参数mutexHandle:互斥锁句柄
返回值int

7.3 互斥锁解锁

int tuya_hal_mutex_unlock(const MUTEX_HANDLE mutexHandle);
功能描述互斥锁上解锁
输入参数mutexHandle:互斥锁句柄
输出参数
返回值int

7.4 互斥锁释放

int tuya_hal_mutex_release(const MUTEX_HANDLE mutexHandle);
功能描述互斥锁释放
输入参数mutexHandle:互斥锁句柄
输出参数
返回值int

8. 定时器

8.1 系统定时器初始化

OPERATE_RET system_timer_init(void);
功能描述系统定时器初始化
输入参数
输出参数
返回值OPERATE_RET(int)

8.2 定时器添加

OPERATE_RET sys_add_timer(IN CONST P_TIMER_FUNC pTimerFunc, 
						  IN CONST PVOID_T pTimerArg,
						  OUT TIMER_ID *p_timerID);
功能描述添加一个系统定时器
输入参数pTimerFunc:定时器处理函数 pTimerArg::定时器处理参数
输出参数
返回值OPERATE_RET(int)

8.3 定时器停止

OPERATE_RET sys_stop_timer(IN CONST TIMER_ID timerID);
功能描述停止一个系统定时器
输入参数timerID:定时器ID
输出参数
返回值OPERATE_RET(int)

8.4 定时器删除

OPERATE_RET sys_delete_timer(IN CONST TIMER_ID timerID);
功能描述删除一个系统定时器
输入参数timerQueHandle:定时器队列管理结构句柄 timerID:定时器ID
输出参数
返回值OPERATE_RET(int)

8.5 定时器是否运行

BOOL_T IsThisSysTimerRun(IN CONST TIMER_ID timer_id);
功能描述检测定时器是否运行
输入参数timer_id:定时器ID
输出参数
返回值成功:OPERATE_RET(int)

8.6 启动一个定时器

OPERATE_RET sys_start_timer(IN CONST TIMER_ID timerID,
						    IN CONST TIME_MS timeCycle,
							IN CONST TIMER_TYPE timer_type);
功能描述启动一个定时器
输入参数timerID:定时器ID timeCycle:定时周期(单位ms) timer_type:定时器类 (TIMER_ONCE 单次执行TIMER_CYCLE 循环执行)
输出参数
返回值OPERATE_RET(int)

8.7 系统定时器资源释放

OPERATE_RET system_timer_release(void);
功能描述定时器资源释放
输入参数
输出参数
返回值OPERATE_RET(int)

9. 消息队列

9.1 消息队列创建

OPERATE_RET CreateMsgQueAndInit(OUT MSG_QUE_HANDLE *pMsgQueHandle);
功能描述创建消息队列
输入参数
输出参数pMsgQueHandle:消息管理结构句柄
返回值OPERATE_RET(int)

9.2 消息队列添加

OPERATE_RET AddMsgNodeToQueue(IN CONST MSG_QUE_HANDLE msgQueHandle,
							  IN CONST MSG_ID msgID,
							  IN CONST P_MSG_DATA pMsgData, 
						 	  IN CONST MSG_DATA_LEN msgDataLen,
							  IN CONST MSG_TYPE msgType);
功能描述创建消息队列
输入参数msgQueHandle:消息管理结构句柄 msgID:消息 IDpMsgData:消息数据 msgDataLen:消息数据长度msgType:消息类型
输出参数
返回值OPERATE_RET(int)

9.3 获取指定ID的消息节点

OPERATE_RET GetMsgNodeFromQueue(IN CONST MSG_QUE_HANDLE msgQueHandle,
								IN CONST MSG_ID msgID,
								OUT P_MSG_LIST *ppMsgListNode);
功能描述获取指定ID的消息节点
输入参数msgQueHandle:消息管理结构句柄 msgID:消息ID
输出参数ppMsgListNode:消息节点
返回值OPERATE_RET(int)

9.4 获取首先入链的消息节点

OPERATE_RET GetFirstMsgFromQueue(IN CONST MSG_QUE_HANDLE msgQueHandle,
								 OUT P_MSG_LIST *ppMsgListNode);
功能描述获取首先入链的消息节点
输入参数msgQueHandle:消息管理结构句柄
输出参数ppMsgListNode:消息节点
返回值OPERATE_RET(int)

9.5 获取队列中的消息节点总数

OPERATE_RET GetMsgNodeNum(IN CONST MSG_QUE_HANDLE msgQueHandle, 
						  OUT PINT_T pMsgNodeNum);
功能描述获取队列中的消息节点总数
输入参数msgQueHandle:消息管理结构句柄
输出参数pMsgNodeNum: 消息节点总数
返回值OPERATE_RET(int)

9.6 从链中删除消息节点并释放消息节点内存

OPERATE_RET DelAndFreeMsgNodeFromQueue(IN CONST MSG_QUE_HANDLE  msgQueHandle,                         
									   IN CONST P_MSG_LIST pMsgListNode);
功能描述从链中删除消息节点并释放消息节点内存
输入参数msgQueHandle:消息管理结构句柄 pMsgListNode:消息节点
输出参数pMsgNodeNum:消息节点总数
返回值OPERATE_RET(int)

9.7 释放消息队列所占用的内存

OPERATE_RET ReleaseMsgQue(IN CONST MSG_QUE_HANDLE msgQueHandle);
功能描述释放消息队列所占用的内存
输入参数msgQueHandle:消息管理结构句柄
输出参数
返回值OPERATE_RET(int)

9.8 投递消息

OPERATE_RET PostMessage(IN CONST MSG_QUE_HANDLE msgQueHandle, 
						IN CONST MSG_ID msgID,
						IN CONST P_MSG_DATA pMsgData,
						IN CONST MSG_DATA_LEN msgDataLen);
功能描述投递消息
输入参数msgQueHandle:消息管理结构句柄 msgID:消息ID pMsgData:消息数据 msgDataLen:消息数据长度
输出参数
返回值OPERATE_RET(int)
备注递送一个消息至模块(消息先进先执行)

9.9 投递紧急消息

OPERATE_RET PostInstancyMsg(IN CONST MSG_QUE_HANDLE msgQueHandle,
							IN CONST MSG_ID msgID,
							IN CONST P_MSG_DATA pMsgData, 
							IN CONST MSG_DATA_LEN msgDataLen);
功能描述投递紧急消息
输入参数msgQueHandle:消息管理结构句柄 msgID:消息IDpMsgData:消息数据msgDataLen:消息数据长度
输出参数
返回值OPERATE_RET(int)

9.10 等待消息

OPERATE_RET WaitMessage(IN CONST MSG_QUE_HANDLE msgQueHandle, OUT P_MSG_LIST *ppMsgListNode);
功能描述等待消息
输入参数msgQueHandle:消息管理结构句柄
输出参数ppMsgListNode:消息节点
返回值OPERATE_RET(int)
备注WaitMessage成功后,消息处理完需调用DelAndFreeMsgNodeFromQueue释放消息

以上是关于涂鸦通用Wi-Fi SDK相关API使用的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 Tuya MCU SDK Arduino Library

涂鸦蓝牙SDK开发系列教程——7.SDK API 说明

Tuya Wi-Fi MCU SDK Arduino Library 介绍

开发者方案 · 用涂鸦Wi-Fi+蓝牙模组SDK完成复合物联网产品的控制

开发者方案 · 用涂鸦Wi-Fi+蓝牙模组SDK完成复合物联网产品的控制

涂鸦蓝牙SDK开发系列教程——8.Board API 说明