涂鸦通用Wi-Fi SDK相关API使用
Posted 三明治开发社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了涂鸦通用Wi-Fi SDK相关API使用相关的知识,希望对你有一定的参考价值。
本文主要介绍涂鸦SDK中应用层GPIO、按键、串口、线程、消息队列等相关接口函数的使用,方便开发者直接调用。
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(按键)
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
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) |
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)
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. 信号量
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. 线程(任务)
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. 互斥锁
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. 定时器
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. 消息队列
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) |
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
Tuya Wi-Fi MCU SDK Arduino Library 介绍
开发者方案 · 用涂鸦Wi-Fi+蓝牙模组SDK完成复合物联网产品的控制