跳转至

CI13XX系列离在线API说明


1. 主要任务(Task)说明

任务名称 说明
network_recv_data_task 接收WiFi串口数据任务
request_play_data_task 请求WiFi播放数据任务
network_send_data_task 发送数据到WiFi任务
pcm_data_play_task pcm数据处理及播放任务
opus_data_decode_task opus解码任务
speex_encode_task speex编码任务
opus_encode_task opus编码任务
pcm_debug_task 串口采音任务(用于调试)
vad_state_handle_task vad状态检测任务
record_data_upload_task 录音数据上传任务

2. 函数详细说明

int32_t aiot_wifi_msg_callback(const uint8_t *msg_buf)
名称AIOT网络数据包处理回调
功能描述解析网络数据包的指令类型根据指令类型进行对应处理指令类型详细见启英泰伦离在线应用对接说明-V2.4文档
输入参数msg_buf网络数据地址
返回值RETURN_OK 处理成功RETURN_ERR 数据异常
错误处理解析到未使用的命令时回复主端执行失败

void request_play_data_func(void)
名称请求网络端播放数据函数
功能描述发送请求REQUEST_ONE_FRAME_SEZIE大小的播放数据指令给网路端调用cias_send_cmd_and_data发送命令和数据更新本地唤醒时间来等待网络断数据
输入参数
返回值
错误处理接收到网络播放数据后在请求网络播放数据任务持续调用本接口若超过30次则停止调用请求数据

void request_play_data_func(void)
名称请求网络端播放数据函数
功能描述发送请求REQUEST_ONE_FRAME_SEZIE大小的播放数据指令给网路端调用cias_send_cmd_and_data发送命令和数据更新本地唤醒时间来等待网络断数据
输入参数
返回值
错误处理接收到网络播放数据后在请求网络播放数据任务持续调用本接口若超过30次则停止调用请求数据


void request_play_data_task(void *parameter)
名称请求网络播放数据任务
功能描述若网络数据请求标志有效并且网络流数据队列中数据不足播放数据最小长度4K则调用request_play_data_func函数请求网络数据若网络数据播放标志有效并且网络流数据队列已播放完则将尝试请求超时计数加一当网络播放已结束请求尝试超时计数大于等于10拍每拍100ms),或者播放未结束尝试请求超时计数大于等于30拍时设置bnpu播放结束复位播放相关参数

输入参数parameter-未使用
返回值
错误处理


名称获取VAD_END静音帧配置
功能描述根据输入静音参数索引配置gCiasAiotFuncParam.vad_end_mute_frame的值
输入参数param_index静音参数索引
返回值
错误处理


void pcm_data_play_task(void *parameter)
名称网络PCM数据包播放任务
功能描述接收pcm数据流队列中的数据大于等于512时接收数据流先将数据放入底层空闲队列拷贝完成后再将空闲队列数据搬到忙碌队列发送
输入参数parameter
返回值
错误处理检测播放器状态若在播放中并且pcm数据流队列中的数据不足512则停止播放否则会出现播放卡顿


void vad_state_handle_task(void *p_arg)
名称VAD状态处理任务
功能描述状态处理开始后若开启检测网络状态宏CHECK_NET_WORK_STATE_ENABLE则获取当前云端是否连接未连接则延迟5ms进入下一次状态处理若开启命令自学习宏USE_CWSL则判断当前是否处于学习状态处于则延迟5ms进入下一次状态处理若按键处理在进行VAD未开始并且未唤醒时则延迟5ms进入下一次状态处理若未收到开始录音指令时VAD前端检测到VAD开始若开启云端响应超时宏时则判断云端是否正在处理若在处理则设置VAD前端检测状态为非人声并延迟5ms进入下一次状态处理若未处理则调用cias_aiot_vad_start_handle进行VAD开始处理前端VAD检测到VAD结束并且VAD开始标志有效时则清除VAD开始标志设置VAD前端检测状态为非人声若未被语音识别唤醒则调用cias_aiot_vad_end_handle进行VAD结束处理当检测VAD超时并且VAD开始标志有效并且当前上传音频计数大于等于设置的VAD最大超时时间时则清除VAD开始标志设置VAD前端检测状态为非人声设置超时停止上传数据调用cias_aiot_vad_end_handle进行VAD结束处理若进入OTA升级则将本任务释放
输入参数p_arg未使用
返回值
错误处理

void asr_wakeup_on_handle(void)
名称语音识别唤醒句柄
功能描述设置bnpu清除VAD状态设置降噪状态复位云端播放相关参数云端超时宏开启则停止云端播放请求定时器设置bnpu唤醒回复唤醒成功到网络端调用本地唤醒用户回调执行函数
输入参数
返回值
错误处理CHECK_NET_WORK_STATE_ENABLE宏开启则判断是否与目标云端连接若未连接则播放2005音频并退出接口

void cias_aiot_vad_start_handle(int cmd)
名称VAD开始句柄
功能描述检测pcm压缩缓存内的有效数据是否超过前端回退宏PCM_ALG_ROOLBACK_FRAME_LEN超过则进行数据回退设置相关标志若开启了全双工则取消网络数据请求标志停止数据请求串口回复网络端最后若用户自定义了VAD开始回调函数则调用回调函数
输入参数cmd 串口回复的指令类型
返回值
错误处理若pcm压缩缓存需要回退但接收到缓存数据不为一帧长度PCM_ALG_FRAME_LEN则输出错误日志

void cias_aiot_vad_end_handle(int type)
名称VAD结束句柄
功能描述设置VAD前端检测状态为非人声若VAD退出类型type为0则
输入参数type VAD退出类型
返回值
错误处理若pcm压缩缓



void record_data_upload_task(void *p_arg)
名称采集数据上传任务
功能描述若音频压缩失能宏AUDIO_COMPRESS_RECORD_DISABLE有效pcm压缩缓存内有效数据大于0则接收流缓存中COMPRESS_UPLOAD_QUEUE_TIEM_SIZE长度的数据收到数据后置位上传忙碌标志然后分4次调用voice_data_packet_and_send接口发送串口数据完成发送后清除上传忙碌标志
若音频压缩失能宏AUDIO_COMPRESS_RECORD_DISABLE无效并且上传网络端标志有效时接收pcm_upload_queue上传队列的数据收到一个队列消息后置位上传忙碌标志调用voice_data_packet_and_send接口发送串口数据完成发送后清除上传忙碌标志
每上传5包数据调用update_awake_time接口更新唤醒超时时间保持唤醒状态若进入OTA升级则将本任务释放
输入参数p_arg未使用
返回值
错误处理若接收到流缓存数据不为512字节或者发送pcm_upload_queue上传队列超时则输出错误日志


void speex_encode_task(void)
名称speex压缩任务
功能描述当开始压缩标志有效并且pcm压缩缓存内有效数据大于等于压缩所需长度2*COMPRESS_NEED_PCM_LEN并且speex压缩忙碌标志有效时则从流缓存中接收压缩所需长度的数据收到数据后进行speex压缩置位speex压缩忙碌标志压缩完成后清除该标志当pcm_upload_queue上传队列中帧数每个队列消息为两帧数据大于等于50500ms加上过滤帧数时使能上传网络端标志将speex压缩后的数据发送pcm_upload_queue上传队列若进入OTA升级则将本任务释放
输入参数
返回值
错误处理若接收到流缓存数据不为两帧COMPRESS_NEED_PCM_LEN的长度或者发送pcm_upload_queue上传队列超时则输出错误日志


bool audio_speex_task_init(void)
名称speex压缩任务初始化
功能描述根据sb_wb_mode中的参数配置speex编码模式初始化speex创建speex压缩任务
输入参数
返回值pdTRUE初始化成功pdFALSE初始化失败

错误处理分配临时speex缓存配置speex编码失败时输出错误日志并返回pdFALSE


void opus_encode_task(void)
名称opus压缩任务初始化
功能描述初始化opus编码器当开始压缩标志有效并且pcm压缩缓存内有效数据大于等于所需压缩长度2*COMPRESS_NEED_PCM_LEN则从流缓存中接收压缩所需长度的数据收到数据后进行opus压缩置位opus压缩忙碌标志压缩完成后清除该标志当pcm_upload_queue上传队列中帧数每个队列消息为四帧数据大于等于50500ms加上过滤帧数时使能上传网络端标志 将opus压缩后的数据发送pcm_upload_queue上传队列若进入OTA升级则将本任务释放
输入参数
返回值
错误处理若接收到流缓存数据不为所需压缩长度2*COMPRESS_NEED_PCM_LEN或者发送pcm_upload_queue上传队列超时则输出错误日志



bool audio_opus_task_init(void)
名称opus压缩任务初始化
功能描述创建opus压缩任务
输入参数
返回值pdTRUE初始化成功pdFALSE初始化失败
错误处理创建任务失败后输出日志并返回false


int32_t broadlink_frame_create(uint32_t type, const uint8_t *input, uint32_t len, uint8_t *output, uint32_t maxsize, uint32_t fill_data, uint16_t index)
名称广播连接帧头创建
功能描述若开启带协议头上传则在输出数据开始添加协议头再将输入数据拷贝到输出数据
输入参数type 指令类型input 输入数据地址len输入数据长度output输出数据地址maxsize 网络数据包最大长度fill_data填充数据index
返回值正确返回输出数据长度错误返回-1
错误处理输出数据地址若为NULL或者输入数据长度加上标准头长度大于最大maxsize返回-1


int32_t cias_send_cmd(uint32_t cmd, uint32_t fill_data)
名称cias发送命令函数
功能描述网络发送消息进行组包调用broadlink_frame_create接口填充协议头填充消息数据类型消息数据长度等消息类型填充为仅命令组包好的数据输入send_msg_to_network_task接口
输入参数cmd 指令类型fill_data填充数据
返回值返回组包的指令类型
错误处理



int32_t cias_send_cmd_and_data(uint32_t cmd_type, uint8_t *buf, int32_t len, uint32_t fill_data)
名称cias发送命令和数据函数
功能描述网络发送消息进行组包调用broadlink_frame_create接口填充协议头填充消息类型消息数据长度等消息的数据类型填充为命令和数据组包好的数据输入send_msg_to_network_task接口调用本接口与voice_data_packet_and_send接口共用5帧缓存
输入参数cmd 指令类型fill_data填充数据
返回值返回组包数据长度
错误处理


int voice_data_packet_and_send(uint32_t packet_type,uint8_t *voice_data, int32_t packet_len)
名称cias发送音频数据函数
功能描述网络发送消息进行组包调用broadlink_frame_create接口填充协议头填充消息类型消息数据长度等消息的数据类型填充为音频数据中间包组包好的数据输入send_msg_to_network_task接口调用本接口与cias_send_cmd_and_data接口共用5帧缓存
输入参数cmd 指令类型fill_data填充数据
返回值0
错误处理

BaseType_t send_msg_to_network_task(sdio_task_msg_t *send_msg, BaseType_t *xHigherPriorityTaskWoken)
名称发送网络消息
功能描述根据当前是否处于中断/异常状态采用不同队列发送接口将发送消息到network_msg_queue队列
输入参数send_msg发送的消息xHigherPriorityTaskWoken上下文切换标志
返回值返回组包的指令类型
错误处理若开启带协议头上传直接返回0


void network_send_data_task(void *p_arg)
名称网络发送数据任务
功能描述读取network_msg_queue队列判断收到的消息类型为DMA发送则判断消息内数据的类型根据命令和数据或者仅命令将消息内的对应数据输入到network_send接口任务延时为5ms
输入参数p_arg-未使用
返回值
错误处理