Port

更新时间:2022-11-24 09:20:06下载pdf

Port 文件内的函数为 涂鸦蓝牙 SDK(Tuya BLE SDK)所需要的抽象接口。您可以根据设备所使用的蓝牙芯片平台,按需实现各类接口。

TUYA_BLE_PRINTF

函数名 TUYA_BLE_PRINTF
函数原型 void TUYA_BLE_PRINTF(const char *format,…)
功能概述 字符串打印
参数 format[in]:格式控制符
…[in]:可变参数
返回值
备注 通过宏定义的方式移植实现,例如 #define TUYA_BLE_PRINTF(...) log_d (__VA_ARGS__)

TUYA_BLE_HEXDUMP

函数名 TUYA_BLE_HEXDUMP
函数原型 void TUYA_BLE_HEXDUMP(uint8_t *p_data , uint16_t len)
功能概述 16 进制打印
参数 p_data[in]:要打印的数据指针
len[in]:数据长度
返回值
备注 通过宏定义的方式移植实现,例如 #define TUYA_BLE_HEXDUMP(...) elog_hexdump("", 8, __VA_ARGS__)

tuya_ble_gap_advertising_adv_data_update

函数名 tuya_ble_gap_advertising_adv_data_update
函数原型 tuya_ble_status_t tuya_ble_gap_advertising_adv_data_update(uint8_t const * p_ad_data, uint8_t ad_len)
功能概述 蓝牙广播包数据更新
参数 p_ad_data[in]:新的广播数据
ad_len[in]:数据长度
返回值 TUYA_BLE_SUCCESS:成功
其他:失败

tuya_ble_gap_advertising_scan_rsp_data_update

函数名 tuya_ble_gap_advertising_scan_rsp_data_update
函数原型 tuya_ble_status_t tuya_ble_gap_advertising_scan_rsp_data_update(uint8_t const *p_sr_data, uint8_t sr_len)
功能概述 蓝牙扫描响应包数据更新
参数 p_sr_data[in]:新的扫描响应包数据
sr_len[in]:数据长度
返回值 TUYA_BLE_SUCCESS:成功
其他:失败

tuya_ble_gap_disconnect

函数名 tuya_ble_gap_disconnect
函数原型 tuya_ble_status_t tuya_ble_gap_disconnect(void)
功能概述 断开蓝牙连接
参数
返回值 TUYA_BLE_SUCCESS:成功
其他:失败

tuya_ble_gatt_send_data

函数名 tuya_ble_gatt_send_data
函数原型 tuya_ble_status_t tuya_ble_gatt_send_data(const uint8_t *p_data,uint16_t len)
功能概述 蓝牙 GATT 发送数据(notify)
参数 p_data[in]:要发送的数据指针
len[in]:发送的数据长度(目前不能超过20字节)
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注
  • 必须是 notify 方式发送
  • 如果是返回成功,必须是真正的发出去了,因为涂鸦蓝牙 SDK 会基于该返回值判断是否需要缓存和重发

tuya_ble_device_info_characteristic_value_update

函数名 tuya_ble_device_info_characteristic_value_update
函数原型 tuya_ble_status_t tuya_ble_device_info_characteristic_value_update(uint8_t const *p_data, uint8_t data_len)
功能概述 更新 Read Characteristic Value (UUID : 00000003-0000-1001-8001-00805F9B07D0 )
参数 p_data[in]:要发送的数据指针
len[in]:发送的数据长度(目前不能超过20字节)
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注
  • 只有在TUYA_BLE_LINK_LAYER_ENCRYPTION_SUPPORT_ENABLE 定义为 1 时,才需要实现该函数
  • 主要应用于 需要 开启蓝牙 LINK 层配对绑定机制的场景

tuya_ble_timer_create

函数名 tuya_ble_timer_create
函数原型 tuya_ble_status_t tuya_ble_timer_create(void** p_timer_id,uint32_t timeout_value_ms,
tuya_ble_timer_mode mode,tuya_ble_timer_handler_t timeout_handler)
功能概述 创建一个定时器
参数 p_timer_id[out]:创建的定时器指针
timeout_value_ms[in]:定时时间,单位 ms
mode[in]:
  • TUYA_BLE_TIMER_SINGLE_SHOT:单一模式
  • TUYA_BLE_TIMER_REPEATED:重复模式
timeout_handler [in]:定时器回调函数
返回值 TUYA_BLE_SUCCESS:成功
其他:失败

tuya_ble_timer_delete

函数名 tuya_ble_timer_delete
函数原型 tuya_ble_status_t tuya_ble_timer_delete(void* timer_id)
功能概述 删除一个定时器
参数 timer_id [in]:定时器 ID
返回值 TUYA_BLE_SUCCESS:成功
TUYA_BLE_ERR_INVALID_PARAM:无效的参数
其他:失败

tuya_ble_timer_start

函数名 tuya_ble_timer_start
函数原型 tuya_ble_status_t tuya_ble_timer_start(void* timer_id)
功能概述 启动一个定时器
参数 timer_id [in]:定时器 ID
返回值 TUYA_BLE_SUCCESS:成功
TUYA_BLE_ERR_INVALID_PARAM:无效的参数
其他:失败
备注 如果定时器已经启动,执行该函数后会重新启动

tuya_ble_timer_restart

函数名 tuya_ble_timer_restart
函数原型 tuya_ble_status_t tuya_ble_timer_restart(void* timer_id,uint32_t timeout_value_ms)
功能概述 以新的定时时间重新启动一个定时器
参数 timer_id [in]:定时器 ID
timeout_value_ms[in]:定时时间,单位ms
返回值 TUYA_BLE_SUCCESS:成功
TUYA_BLE_ERR_INVALID_PARAM:无效的参数
其他:失败

tuya_ble_timer_stop

函数名 tuya_ble_timer_stop
函数原型 tuya_ble_status_t tuya_ble_timer_stop(void* timer_id)
功能概述 停止一个定时器
参数 timer_id [in]:定时器 ID
返回值 TUYA_BLE_SUCCESS:成功
TUYA_BLE_ERR_INVALID_PARAM:无效的参数
其他:失败

tuya_ble_device_delay_ms

函数名 tuya_ble_device_delay_ms
函数原型 void tuya_ble_device_delay_ms(uint32_t ms)
功能概述 ms 级延时函数
参数 ms [in]:延时毫秒数
返回值
备注 如果是在 OS 平台下,必须为无阻塞延时

tuya_ble_device_delay_us

函数名 tuya_ble_device_delay_us
函数原型 void tuya_ble_device_delay_us(uint32_t us)
功能概述 us 级延时函数
参数 us [in]:延时微妙数
返回值
备注 如果是在 OS 平台下,必须为无阻塞延时

tuya_ble_device_reset

函数名 tuya_ble_device_reset
函数原型 tuya_ble_status_t tuya_ble_device_reset(void)
功能概述 设备重启
参数
返回值 TUYA_BLE_SUCCESS:成功
其他:失败

tuya_ble_gap_addr_get

函数名 tuya_ble_gap_addr_get
函数原型 tuya_ble_status_t tuya_ble_gap_addr_get(tuya_ble_gap_addr_t *p_addr);
功能概述 获取设备 Mac 地址
参数 p_addr [out]:Mac 地址指针
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
typedef enum
{
	TUYA_BLE_ADDRESS_TYPE_PUBLIC, // public address
	TUYA_BLE_ADDRESS_TYPE_RANDOM, // random address
} tuya_ble_addr_type_t;
typedef struct
{
	tuya_ble_addr_type_t addr_type;
	uint8_t addr[6];
}tuya_ble_gap_addr_t;

tuya_ble_gap_addr_set

函数名 tuya_ble_gap_addr_set
函数原型 tuya_ble_status_t tuya_ble_gap_addr_set(tuya_ble_gap_addr_t *p_addr);
功能概述 设置更新设备 Mac 地址
参数 p_addr [in]:Mac 地址指针
返回值 TUYA_BLE_SUCCESS:成功
其他:失败

tuya_ble_device_enter_critical

函数名 tuya_ble_device_enter_critical
函数原型 voidtuya_ble_device_enter_critical(void)
功能概述 进入临界区
参数
返回值
备注 通过宏定义方式定义,例如在 Nordic 平台下定义如下所示
#define tuya_ble_device_enter_critical() \
   {                  \
     uint8_t __CR_NESTED = 0;     \
     app_util_critical_region_enter(&__CR_NESTED);\
   #define tuya_ble_device_exit_critical() \
     app_util_critical_region_exit(__CR_NESTED); \
   }

tuya_ble_device_exit_critical

函数名 tuya_ble_device_exit_critical
函数原型 void tuya_ble_device_exit_critical(void)
功能概述 退出临界区
参数
返回值
备注 通过宏定义方式定义,例如在 Nordic 平台下定义如下示
#define tuya_ble_device_enter_critical() \
   {                  \
     uint8_t __CR_NESTED = 0;     \
     app_util_critical_region_enter(&__CR_NESTED);\
   #define tuya_ble_device_exit_critical() \
     app_util_critical_region_exit(__CR_NESTED); \
   }

tuya_ble_rand_generator

函数名 tuya_ble_rand_generator
函数原型 tuya_ble_status_t tuya_ble_rand_generator(uint8_t* p_buf, uint8_t len)
功能概述 随机数生成
参数 p_buf [out]:生成的随机数的数组指针
len[in]:随机数字节数
返回值 TUYA_BLE_SUCCESS:成功
其他:失败

tuya_ble_rtc_get_timestamp

函数名 tuya_ble_rtc_get_timestamp
函数原型 tuya_ble_status_t tuya_ble_rtc_get_timestamp(uint32_t *timestamp,int32_t *timezone);
功能概述 获取 unix 时间戳
参数 timestamp [out]:时间戳
timezone [out]:时区(有符号型整数,真实时区的100倍)
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 数据来自应用本身维护的 RTC 实时时钟,如果应用没有RTC,无需实现该接口

tuya_ble_rtc_set_timestamp

函数名 tuya_ble_rtc_set_timestamp
函数原型 tuya_ble_status_t tuya_ble_rtc_set_timestamp(uint32_t timestamp,int32_t timezone)
功能概述 更新 unix 时间戳
参数 timestamp [in]:unix 时间戳
timezone [in]:时区(有符号型整数,真实时区的100倍)
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 SDK 通过调用此函数更新应用程序维护的 RTC 实时时钟,如果应用没有RTC,无需实现该接口

tuya_ble_nv_init

函数名 tuya_ble_nv_init
函数原型 tuya_ble_status_t tuya_ble_nv_init(void)
功能概述 NV 初始化
参数
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 配合 Config 文件定义的 NV 空间地址使用,SDK 调用 NV 相关函数来存储和管理授权信息和其他信息

tuya_ble_nv_erase

函数名 tuya_ble_nv_erase
函数原型 tuya_ble_status_t tuya_ble_nv_erase(uint32_t addr,uint32_t size)
功能概述 NV 擦除函数
参数 addr[in]:要擦除 NV 区域的起始地址
size[in]:要擦除的大小(单位:字节)
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 配合 config 文件定义的 NV 空间地址使用,SDK 调用 NV 相关函数来存储和管理授权信息和其他信息

tuya_ble_nv_write

函数名 tuya_ble_nv_write
函数原型 tuya_ble_status_t tuya_ble_nv_write(uint32_t addr,const uint8_t * p_data, uint32_t size)
功能概述 NV 写数据函数
参数 addr[in]:指向被写入数据的起始地址
p_data[in]:写入的起始地址
size[in]:要写入数据的大小(单位:字节)
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 配合 config 文件定义的 NV 空间地址使用,SDK 调用 NV 相关函数来存储和管理授权信息和其他信息

tuya_ble_nv_read

函数名 tuya_ble_nv_read
函数原型 tuya_ble_status_t tuya_ble_nv_read(uint32_t addr,uint8_t * p_data, uint32_t size)
功能概述 NV 读数据函数
参数 addr[in]:要读取数据的 NV 起始地址
p_data[out]:读取数据的地址
size[in]:要读取数据的大小(单位:字节)
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 配合 config 文件定义的 NV 空间地址使用,SDK 调用 NV 相关函数来存储和管理授权信息和其他信息

tuya_ble_common_uart_init

函数名 tuya_ble_common_uart_init
函数原型 tuya_ble_status_t tuya_ble_common_uart_init(void)
功能概述 Uart 初始化函数
参数
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注
  • 该 UART 主要用于产测授权使用
  • 如果需要使用 SDK 的产测授权功能并且应用代码在初始化 SDK 之前已经初始化过 UART,则不用实现该函数

tuya_ble_common_uart_send_data

函数名 tuya_ble_common_uart_send_data
函数原型 tuya_ble_status_t tuya_ble_common_uart_send_data(const uint8_t *p_data,uint16_t len)
功能概述 UART 发送数据函数
参数 p_data[in]:要发送的数据指针
len[in]:要发送的数据长度
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 主要用于授权产测使用

tuya_ble_os_task_create

函数名 tuya_ble_os_task_create
函数原型 bool tuya_ble_os_task_create(void **pp_handle, const char *p_name, void(*p_routine)(void *),void *p_param, uint16_t stack_size, uint16_t priority)
功能概述 任务创建
参数 pp_handle [out]:用于回传一个句柄,通过该句柄可以引用创建的任务
p_name[in]:任务的描述性名称
p_routine [in]:用以实现永不返回的指向任务例程函数的指针
p_param[in]:传递给任务例程函数的指针参数
stack_size[in]:指定为字节数的任务堆栈的大小
priority[in]:任务应该运行的优先级,优先级值越高任务优先级越大
返回值 True:任务创建成功并添加到任务就绪列表中
False:任务创建失败
备注 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_task_delete

函数名 tuya_ble_os_task_delete
函数原型 bool tuya_ble_os_task_delete(void *p_handle)
功能概述 从 RTOS 的任务管理中移除一个任务,正在删除的任务将从 RUNNING、READY 或 WAITING 状态中移除
参数 pp_handle [in]:要删除的任务的句柄
返回值 True:任务删除成功
False:任务删除失败
备注 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_task_suspend

函数名 tuya_ble_os_task_suspend
函数原型 bool tuya_ble_os_task_suspend(void *p_handle)
功能概述 任务挂起,挂起的任务不会被调度,也不会获得任何微控制器处理时间
参数 pp_handle [in]:要挂起的任务的句柄
返回值 True:任务挂起成功
False:任务挂起失败
备注 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_task_resume

函数名 tuya_ble_os_task_resume
函数原型 bool tuya_ble_os_task_resume(void *p_handle)
功能概述 恢复挂起的任务
参数 pp_handle [in]:要恢复的任务的句柄
返回值 True:任务恢复成功
False:任务恢复失败
备注 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_msg_queue_create

函数名 tuya_ble_os_msg_queue_create
函数原型 bool tuya_ble_os_msg_queue_create(void **pp_handle, uint32_t msg_num, uint32_tmsg_size)
功能概述 创建消息队列实例,这将分配新队列所需的存储空间并传回队列的句柄
参数 pp_handle [out]:用于传回一个可以引用消息队列的句柄
msg_num [in]:队列可以包含的最大列表数
msg_size [in]:消息队列的数量队列中,每个项目所需的字节数
返回值 True:消息队列创建成功
False:消息队列创建失败
备注 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_msg_queue_delete

函数名 tuya_ble_os_msg_queue_delete
函数原型 bool tuya_ble_os_msg_queue_delete(void *p_handle)
功能概述 删除消息队列实例
参数 pp_handle [in]:被删除的消息队列的句柄
返回值 True:消息队列删除成功
False:消息队列删除失败
备注 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_msg_queue_peek

函数名 tuya_ble_os_msg_queue_peek
原型函数 bool tuya_ble_os_msg_queue_peek(void *p_handle, uint32_t *p_msg_num)
功能概述 查看已发送和驻留在消息队列中的列表数
参数 pp_handle [in]:被查看的消息队列的句柄
p_msg_num[out]:用于传回驻留在消息队列中的列表数
返回值 True:消息队列查看成功
False:消息队列查看失败
注意事项 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_msg_queue_send

函数名 tuya_ble_os_msg_queue_send
函数原型 bool tuya_ble_os_msg_queue_send(void *p_handle, void *p_msg, uint32_t wait_ms)
功能概述 将列表发送到指定消息队列的后面
参数 pp_handle [in]:消息队列的句柄,将在其上发送列表
p_msg[in] :指向将在队列上发送的列表的指针
wait_ms[in] :最大值任务应该阻塞等待列表在队列上发送的时间(以毫秒为单位)
  • 0 无阻塞并立即返回
  • 0xFFFFFFFF 无限阻塞直到列表发送
  • others 超时值(以毫秒为单位)
返回值 True:消息项已成功发送
False:消息项发送失败
注意事项 该接口函数只需在基于 OS 的平台下实现

tuya_ble_os_msg_queue_recv

函数名 tuya_ble_os_msg_queue_recv
函数原型 bool tuya_ble_os_msg_queue_recv(void *p_handle, void *p_msg, uint32_t wait_ms)
功能概述 从指定的消息队列接收项目
参数 pp_handle [in] :要接收项目的消息队列的句柄
p_msg[out] :指向接收项目将被复制到的缓冲区的指针
wait_ms[in] :最大值 任务应该阻塞等待队列中接收到项目的时间量(以毫秒为单位)
  • 0:无阻塞,立即返回
  • 0xFFFFFFFF:无限阻塞直到收到项目
  • 其他:以毫秒为单位的超时值
返回值 True:消息项已成功接收
False:消息项接收失败
注意事项 该接口函数只需在基于 OS 的平台下实现

tuya_ble_event_queue_send_port

函数名 tuya_ble_event_queue_send_port
函数原型 bool tuya_ble_event_queue_send_port(tuya_ble_evt_param_t *evt, uint32_t wait_ms)
功能概述 如果取消定义 TUYA_BLE_SELF_BUILT_TASK,应用程序应向 SDK 提供任务以处理事件,SDK 将使用此端口向应用程序提供的任务发送事件
参数 evt [in] :要发送的消息数据点
wait_ms[in] :任务应该阻塞等待队列上的项目发送的最长时间(以毫秒为单位)
  • 0:无阻塞,立即返回
  • 0xFFFFFFFF:无限阻塞直到项目发送
  • 其他:以毫秒为单位的超时值
返回值 True:消息项发送成功
False:消息项发送失败
注意事项 该接口函数非常在基于 OS 的平台下实现

tuya_ble_aes128_ecb_encrypt

函数名 tuya_ble_aes128_ecb_encrypt
函数原型 bool tuya_ble_aes128_ecb_encrypt(uint8_t *key,uint8_t *input,uint16_tinput_len,uint8_t *output)
功能概述 指定明文和密钥的 128 位 AES ECB(电码本模式)加密
参数 key [in]:加密明文的密钥
In_put[in]:指定要加密的纯文本
in_put_len[in]:要加密的数据的字节长度,必须是 16 的倍数
Out_put[out]:用于存储加密数据的输出缓冲区
返回值 True:成功
False:失败

tuya_ble_aes128_ecb_decrypt

函数名 tuya_ble_aes128_ecb_decrypt
函数原型 bool tuya_ble_aes128_ecb_decrypt(uint8_t *key,uint8_t *input,uint16_tinput_len,uint8_t *output)
功能概述 对指定的加密数据和密钥进行 128 位 AES ECB 解密
参数 key [in]:解密明文的密钥
In_put[in]:要解密的指定加密数据
in_put_len[in]:要解密的数据的字节长度,必须是 16 的倍数
Out_put[out]:用于存储解密数据的输出缓冲区
返回值 True:成功
False:失败

tuya_ble_aes128_cbc_encrypt

函数名 tuya_ble_aes128_cbc_encrypt
函数原型 bool tuya_ble_aes128_cbc_encrypt(uint8_t *key,uint8_t *iv,uint8_t input,uint16_t input_len,uint8_toutput)
功能概述 特定明文和密钥上的 128 位 AES CBC(密码分组链接)加密
参数 key [in]:加密明文的密钥
iv[in]:CBC 加密模式的初向量(IV,Initialization vector)
In_put[in]:指定要加密的纯文本
in_put_len[in]:要加密的数据的字节长度,必须是 16 的倍数
Out_put[out]:用于存储加密数据的输出缓冲区
返回值 True:成功
False:失败

tuya_ble_aes128_cbc_decrypt

函数名 tuya_ble_aes128_cbc_decrypt
函数原型 bool tuya_ble_aes128_cbc_decrypt(uint8_t*key,uint8_t *iv,uint8_t *input,uint16_t input_len,uint8_t *output)
功能概述 指定明文和密钥的 128 位 AES CBC 解密
参数 key [in]:解密明文的密钥
Iv[in]:CBC 加密模式的初始化向量
In_put[in]:要解密的指定数据
in_put_len[in]:要解密的数据的字节长度,必须是 16 的倍数
Out_put[out]:用于存储解密数据的输出缓冲区
返回值

tuya_ble_md5_crypt

函数名 tuya_ble_md5_crypt
函数原型 booltuya_ble_md5_crypt(uint8_t *input,uint16_t input_len,uint8_t *output)
功能概述 MD5 校验和.
参数 In_put[in]:指定要加密的纯文本
in_put_len[in]:要加密的数据的字节长度
Out_put[out]:输出缓冲区用于存储 MD5 结果数据,输出数据 len 始终为 16
返回值 True:成功
False:失败

tuya_ble_hmac_sha1_crypt

函数名 tuya_ble_hmac_sha1_crypt
函数原型 bool tuya_ble_hmac_sha1_crypt(constuint8_t *key, uint32_t key_len,
const uint8_t *input, uint32_t input_len,uint8_t *output)
功能概述 使用提供的密钥,计算输入缓冲区上的全通用 HMAC
参数 key [in]:HMAC 密钥
key_len[in]:HMAC 密钥的长度(以字节为单位
In_put[in]:指定要加密的纯文本
in_put_len[in]:要加密的数据的字节长度
out_put[out]:输出缓冲器存储结果数据
返回值 True:成功.
False:失败
备注 目前没有使用,不需要实现

tuya_ble_hmac_sha256_crypt

函数名 tuya_ble_hmac_sha256_crypt
函数原型 bool tuya_ble_hmac_sha256_crypt(const uint8_t *key, uint32_t key_len,
const uint8_t *input, uint32_t input_len, uint8_t *output)
功能概述 使用提供的密钥,计算输入缓冲区上的全通用 HMAC
参数 key [in]:HMAC 密钥
key_len[in]:HMAC 密钥的长度(以字节为单位)
In_put[in]:指定要加密的纯文本
in_put_len[in]:要加密的数据的字节长度
out_put[out]:输出缓冲器存储结果数据
返回值 True:成功.
False:失败
备注 目前没有使用,不需要实现

tuya_ble_storage_private_data

函数名 tuya_ble_storage_private_data
函数原型 tuya_ble_status_t tuya_ble_storage_private_data(tuya_ble_private_data_type private_data_type, uint8_t *p_data, uint32_t data_size)
功能概述 存储密钥数据,用于 基于安全芯片加密 的高级加密模式
参数 private_data_type[in]:数据类型
p_data[in]:要写入数据的起始地址
data_size[in]:数据长度
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 用于基于安全芯片加密的高级加密模式,否则无需实现

tuya_ble_get_dev_crt_len

函数名 tuya_ble_get_dev_crt_len
函数原型 uint32_t tuya_ble_get_dev_crt_len(void)
功能概述 获取存储在安全芯片内的证书长度
参数
返回值 证书长度
备注 用于基于安全芯片加密的高级加密模式,否则无需实现

tuya_ble_get_dev_crt_der

函数名 tuya_ble_get_dev_crt_der
函数原型 tuya_ble_status_t tuya_ble_get_dev_crt_der(uint8_t *p_der,uint32_t der_len))
功能概述 读取安全芯片内的设备证书数据
参数 p_der[out]:读取的证书数据存放地址
der_len[in]:要读取的证书数据长度
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 用于基于安全芯片加密的高级加密模式,否则无需实现

tuya_ble_ecc_keypair_gen_secp256r1

函数名 tuya_ble_ecc_keypair_gen_secp256r1
函数原型 tuya_ble_status_t tuya_ble_ecc_keypair_gen_secp256r1(uint8_t *public_key,uint8_t *private_key)
功能概述 生成ECDH密钥对,ECC曲线为 secp256r1
参数 public_key[out]:生成的公钥
private_key[out]:生成的私钥
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 用于基于安全芯片加密的高级加密模式,否则无需实现

tuya_ble_ecc_shared_secret_compute_secp256r1

函数名 tuya_ble_ecc_shared_secret_compute_secp256r1
函数原型 tuya_ble_status_t tuya_ble_ecc_shared_secret_compute_secp256r1(uint8_t *public_key,uint8_t *private_key,uint8_t *secret_key)
功能概述 计算共享密钥
参数 public_key[in]:公钥
private_key[in]:私钥
secret_key[out]:共享密钥
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 用于基于安全芯片加密的高级加密模式,否则无需实现

tuya_ble_ecc_sign_secp256r1

函数名 tuya_ble_ecc_sign_secp256r1
函数原型 tuya_ble_status_t tuya_ble_ecc_sign_secp256r1(const uint8_t *p_sk, const uint8_t * p_data, uint32_t data_size,uint8_t *p_sig)
功能概述 计算 ECDSA 签名
参数 p_sk[in]:签名私钥
p_data[in]:要签名的数据
data_size[in]:要签名的数据长度
p_sig[out]:计算的签名数据
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 用于基于安全芯片加密的高级加密模式,否则无需实现

tuya_ble_ecc_verify_secp256r1

函数名 tuya_ble_ecc_verify_secp256r1
函数原型 tuya_ble_status_t tuya_ble_ecc_verify_secp256r1(const uint8_t *p_pk, const uint8_t * p_data, uint32_t data_size,const uint8_t *p_sig)
功能概述 验证 ECDSA 签名
参数 p_pk[in]:验签公钥
p_data[in]:验证签名的数据
data_size[in]:验证签名的数据长度
p_sig[in]:验证的签名数据
返回值 TUYA_BLE_SUCCESS:成功
其他:失败
备注 用于基于安全芯片加密的高级加密模式,否则无需实现

tuya_ble_port_malloc

函数名 tuya_ble_port_malloc
函数原型 void *tuya_ble_port_malloc( uint32_t size )
功能概述 分配所需大小的内存块
参数 Size[in]:所需的内存大小
返回值 返回分配的内存块的地址,如果地址为 NULL,则内存分配失败
备注 该接口函数只需在 TUYA_BLE_USE_PLATFORM_MEMORY_HEAP==1 时移植实现

tuya_ble_port_free

函数名 tuya_ble_port_free
函数原型 void tuya_ble_port_free(void *pv )
功能概述 释放已分配的内存块
参数 pv[in]:被释放的内存块的地址
返回值 None.
备注 该接口函数只需在 TUYA_BLE_USE_PLATFORM_MEMORY_HEAP==1 时移植实现