AiGlasses 功能介绍¶
1. 概述¶
本文是对AI Glasses 程序说明的补充,更加详细地介绍 AI Glasses 功能。
1.1 规格说明¶
- Sensor: IMX681
- ISP :multichannel、HDR off
- LDC :畸变校正、EIS
- SCL :图像缩放
- VENC:
- 拍照:12M(4032x3024) 1fps,需要jpg编码。
- 录像:3M(2016x1512) 30fps H265
2. 场景介绍¶
下图为本 demo 的完整结构图,其中白色部分为未实现功能。
核心硬件组件
- ISP 主控:主芯片 SSC309QL,运行主控程序,负责图像处理、拍照和录像等核心功能
- TWS:高规格蓝牙音频芯片 WQ7036AX,支持音频处理和语音唤醒,与主芯片和 Wi-Fi 交互
- Wi-Fi 模块:负责照片和视频文件的无线传输功能
- CMOS 传感器与惯性传感器组合:
- CMOS Sensor:图像采集
- G Sensor:惯性传感器 ICM42607,支持重力感应和运动检测
- ALS(环境光传感器):环境光线检测
交互外设
- 拍照/录像键:
- 短按(<500ms):触发拍照功能
- 长按(500ms-2s):触发录像功能
- 开合检测:眼镜开合状态检测功能(本 demo 未实现)
- 触摸条:触摸交互区域(本 demo 未实现)
- 状态指示灯:根据不同功能场景显示不同颜色的指示灯,提供状态反馈(本 demo 未实现)
音频系统
- 数字麦克风(DMIC):支持 2 Channel × 2 DMIC 配置,提供高质量音频采集
- 扬声器系统:
- 默认采用一级运放 IC
- TWS 通过 IIS 接口将音频数据传输至扬声器播放
环境感知
- 光敏传感器:实时检测环境光线变化,将光信号转换为电信号,支持图像传感器根据光照条件自动调整参数
SOC 端连接 Wi-Fi 模块,eMMC,sensor 和 陀螺仪,TWS 连接充电 IC,数字光敏,音频外设和相关用户交互外设。SOC 通过 Uart 向 TWS 发送命令请求和接收 TWS 的控制指令,通过 I2S 接收 TWS 的音频数据,通过 PSPI 向 TWS 发送缩略图。SOC 通过 Wi-Fi 将图像数据传送到手机端。
各场景下模块供电状态¶
场景图中灰色部分表示模块掉电状态。
- Idle状态
- 拍照/录像
- Wi-Fi传输照片/视频文件
- 待机
SOC 进入 STR 模式,DDR 不断电。
3. 功能介绍¶
3.1 拍照¶
-
拍照场景下sensor使用4032x3024分辨率,帧率为15fps。过ISP时做3DNR,因为ISP单帧处理最大size为3840x3840,需要开启multichn的设置,将一张图像分成两部分在两个chn中分开处理,然后再拼成一张。
-
AESTABLE模块从ISP模块获取buffer并检查AE状态。当判断AE为stable状态时,将stable的buffer传给LDC。因为拍照只处理一张buffer,基于功耗考虑,提前解绑VIF和ISP模块,disable VIF/ISP的output port,然后stop sensor。
-
LDC模块对输入图像做畸变校正,输出为一路拍照图片和一路720p的缩略图,需要接入SCL模块做scaling down。
-
SCL的input port对NV12格式图像的宽度有限制,最大不能超过3840,对YUYV格式则没有限制,所以LDC输入YUYV格式的数据。SCL内部做图像格式转换输出NV12的数据。SCL输出图像给VENC做编码。
-
两VENC编码分别保存拍照和缩略图的jpeg文件。保存文件结束会从后向前逐级disable VENC,SCL,LDC的output port。
3.2 录像¶
-
录像场景下sensor使用2016x1512分辨率,帧率为30fps。过ISP时做3DNR。
-
AESTABLE模块从ISP模块获取buffer并检查AE状态。当判断AE为stable状态时,将stable的buffer传给LDC,录像一直处理数据直到接收到停止录像指令才会停止。
-
LDC模块对输入图像做畸变校正和防抖,输出为一路H265码流和一路720p的缩略图。
-
两VENC编码分别将所有图像数据保存H265视频文件和取第一帧图像数据保存jpeg文件。当接收到停止录像指令时,保存文件结束,会从后向前逐级disable VENC,LDC,然后解除VIF和ISP模块的绑定,并disable ISP,VIF的output port,最后stop sensor。
3.3 文件传输¶
-
拍照和录像生成的缩略图会通过 PSPI 协议传送到 TWS。TWS 端蓝牙常开,上位机浏览时,缩略图会由 TWS 通过蓝牙协议传送到上位机。
-
Wi-Fi接 SOC 端,其电源 pin 脚由 TWS 控制上下电。上位机通过蓝牙向TWS发送下载照片/视频文件的指令(demo板以按键触发方式模拟蓝牙指令),TWS 端接收到上位机的指令后,会将文件下载任务添加到任务待处理列表中,并对 Wi-Fi 电源上电,Wi-Fi 上电后默认为AP模式。
-
当 Wi-Fi 检测到有上位机连接热点时,会对 SOC 上电,然后 app 会请求 TWS 端的任务,当查询到有文件下载请求后会加载 Wi-Fi 驱动,获取 IP,然后创建ftp server。之后上位机可以连接 Wi-Fi 热点并访问ftp server。
-
当TWS端接收到上位机发送的结束文件下载指令时,TWS会主动向 SOC 端发送结束文件下载的消息。 SOC 接收到后会先关闭ftp server,然后向 TWS 回复 E_AIGLASSES_DATA_TYPE_TASK_DONE,TWS端收到后会控制 Wi-Fi 下电。
注意
运行本 demo 会产生缩略图,但并未实现通过 PSPI 协议传输缩略图到 TWS,您需要参考上述流程自行实现。
3.4 AESTABLE模块介绍¶
3.4.1 模块处理流程¶
AESTABLE模块是一个用户层模块,连接在ISP模块后级,通过检查经ISP模块处理后的图像效果是否达到stable状态,用来控制图像数据是直接传输到下一级模块还是等到图像效果stable后再开始传输到下一级模块,以及控制传输图像数据的张数。
AESTABLE处理流程如下:
APP接收到数字光敏lux值,根据ae table查询到shutter,gain值,再设置给ISP达到加速收敛的效果。APP设置shutter,gain值后会循环查询ISP的AE状态。如果AE达到stable状态,AESTABLE模块从ISP的output port获取buffer并注入到下一级的input port。
3.4.2 模块属性说明¶
-
SGS_GLASSES_AESTABLE_ControlTypeE_t
- E_SGS_GLASSES_AESTABLE_CONTROL_AUTO:自动模式,由ISP判断接收的图像是否AE达到stable状态,未stable的图像帧都丢弃。
- E_SGS_GLASSES_AESTABLE_CONTROL_FORCE:强制模式,不判断AE的stable状态,丢弃指定数量的图像帧,取之后接收的图像。
4. 环境配置及运行¶
4.1 依赖的资源文件¶
-
demo bin文件
-
prog_ai_glasses_sample
demo执行档,默认会打包到板端 /customer/sample_code/bin 目录。若是手动编译demo,请将生成的 prog_ai_glasses_sample 拷贝至板端 /customer/sample_code/bin 目录下。
-
IQ bin
使用上例给出的deconfig整包编译烧录后,IQ bin会默认打包至板端。
-
imx681_12m_comake_1201.bin
拍照场景sensor api bin,位于板端 /config/iqfile 目录下。
-
imx681_3m_comake_1201.bin
录像场景sensor api bin,位于板端 /config/iqfile 目录下。
-
12m_alsc_cali.data
拍照场景镜头补偿校正,位于板端 /config/iqfile 目录下。
-
12m_ne_cali.data
拍照场景3DNR Noise型态分析校正,位于板端 /config/iqfile 目录下。
-
3m_ne_cali.data
录像场景3DNR Noise型态分析校正,位于板端 /config/iqfile 目录下。
-
CalibPoly_new.bin
LDC畸变校正,位于板端 /customer/sample_code/bin/resource 目录下。
-
setup_rndis.sh
配置虚拟网卡脚本,需要PC端先安装USB RNDIS驱动,调试使用。位于板端 /customer/sample_code/bin/resource 目录下。
4.2 运行 demo¶
# 如果有修改 prog_ai_glasses_sample 的路径,需保证 resource 目录和 prog_ai_glasses_sample 在同一目录下。
cd /customer/sample_code/bin
./prog_ai_glasses_sample
4.2.1 运行参数列表¶
-
nostr:在task队列为空时不进入suspend,改为 sleep 10s。默认task队列为空时进susend。
-
nosig:不捕获 SIGINT, SIGKILL, SIGTERM 信号。默认捕获上述信号。
-
nopipe: 不初始化pipeline,仅做拍照和录像以外的其它功能调试。
prog_ai_glasses_sample 默认启动后一直保持运行状态,直到接收到 SIGINT 或 SIGTERM 信号后退出。
4.2.2 应用处理流程¶
注意
开发板默认开机是长供电的 idle 模式, 需要命令行运行 prog_ai_glasses_sample,通知 TWS 进入 AI glass 模式后,才能进入下述流程。
TWS 端通过按键触发事件, 将事件对应的 task 添加到 TWS 端 task list 中。若 SOC 处于掉电状态,则会对 SOC 上电。设备上电后自动运行 prog_ai_glasses_sample,初始化pipeline,初始化完成后 SOC 就进入 suspend。当有事件触发唤醒后,demo 会请求处理 TWS 端的 task,并根据 task 类型进行处理。task 处理完成后,demo 会继续请求新的task,若请求不到 task, SOC 会进入 suspend 状态(掉电)。
4.2.2.1 拍照处理流程¶
触发拍照事件时进入拍照处理流程,app会传入光敏lux值和拍照张数参数,根据lux查找对应shutter/gain值设置sensor ae参数,然后start sensor开始拍照。连拍场景时只需要在第一帧前设置ae参数和start sensor,当拍照任务完成后会stop sensor。
4.2.2.2 录像处理流程¶
触发开始录像事件时进入录像处理流程,app会传入光敏lux值,根据lux查找对应shutter/gain值设置sensor ae参数,然后start sensor开始录像。触发结束录像事件时会退出录像处理流程,结束录像然后stop sensor。
4.2.2.3 Wi-Fi传输处理流程¶
触发开始Wi-Fi传输事件时进入文件传输处理流程,Wi-Fi上电并初始化为AP模式。当Wi-Fi接收到上位机的连接请求时, SOC 上电,然后 SOC 端加载Wi-Fi驱动,获取IP并建立ftp server,开始接收文件传输请求。触发结束Wi-Fi传输事件时会退出文件传输处理流程,关闭ftp server然后向TWS端发送文件传输任务完成的消息。TWS接收到消息后对Wi-Fi下电。
5. 开发指南¶
5.1 交互协议¶
5.1.1 UART 协议¶
5.1.1.1 消息结构¶
+-----------------------------+
| Header | 消息头,4 bytes,固定为0x5A5A5A5A
+-----------------------------+
| CmdType | 消息处理类型,1 byte,0:REQ;1:ACK
+-----------------------------+
| CmdId | 消息ID,1 byte,详细介绍见 5.1.1.2 章节
+-----------------------------+
| Accept in ACK | ACK处理状态,1 byte,0:接收请求;1:拒绝请求。全按0处理,暂无拒绝请求的业务需求。
+-----------------------------+
| SOC state | SOC 状态,1 byte,详细介绍见 5.1.1.3 章节
+-----------------------------+
| user define | 用户定义,2 bytes,bit[0~7]: task序列号; bit[8~15]: task参数
+-----------------------------+
| Tail | 消息尾,4 bytes,固定为0xA5A5A5A5
+-----------------------------+
5.1.1.2 消息类型¶
| 消息ID | 说明 | 使用场景 |
|---|---|---|
| E_AIGLASSES_DATA_TYPE_TASK_NONE | task队列为空 | MCU to SOC |
| E_AIGLASSES_DATA_TYPE_TASK_PHOTO | 拍照 | MCU to SOC |
| E_AIGLASSES_DATA_TYPE_TASK_START_REC | 开始录像 | MCU to SOC |
| E_AIGLASSES_DATA_TYPE_TASK_STOP_REC | 停止录像 | MCU to SOC |
| E_AIGLASSES_DATA_TYPE_TASK_TRANS | 开始通过WI-Fi从ftp server下载文件 | MCU to SOC |
| E_AIGLASSES_DATA_TYPE_TASK_STOP_TRANS | 停止从ftp server下载文件 | MCU to SOC |
| E_AIGLASSES_DATA_TYPE_TASK_POWEROFF_WIFI | 传输结束后关闭 Wi-Fi | MCU to SOC |
| E_AIGLASSES_DATA_TYPE_TASK_POWEROFF_OK | OC 响应断电请求 | SOC to MCU |
| E_AIGLASSES_DATA_TYPE_TASK_REQUEST | SOC 请求处理MCU的task队列的第一个task | SOC to MCU |
| E_AIGLASSES_DATA_TYPE_TASK_DONE | SOC 通知MCU当前请求的task已处理完成 | SOC to MCU |
| E_AIGLASSES_DATA_TYPE_TASK_HEARTBEAT | SOC 向MCU发送心跳包 | SOC to MCU |
| E_AIGLASSES_DATA_TYPE_TASK_INDEF_LEN_MSG | 用户自定义不定长消息 | SOC to MCU & MCU to SOC |
5.1.1.3 SOC 状态¶
| SOC 状态 | 说明 |
|---|---|
| E_AIGLASSES_DATA_TYPE_STATE_RESUMING | SOC 在唤醒过程中。暂未使用 |
| E_AIGLASSES_DATA_TYPE_STATE_IDEL | SOC 在空闲状态 |
| E_AIGLASSES_DATA_TYPE_STATE_CAP_PIC | SOC 正在拍照 |
| E_AIGLASSES_DATA_TYPE_STATE_REC | SOC 正在录像 |
| E_AIGLASSES_DATA_TYPE_STATE_TRANS | SOC 正在上传文件 |
| E_AIGLASSES_DATA_TYPE_STATE_SUSPENDING | SOC 开始进入suspend状态 |
| E_AIGLASSES_DATA_TYPE_STATE_SUSPENDED | SOC 的suspend流程完成,准备掉电 |
5.1.1.4 串口通信说明¶
-
MCU 和 SOC 都有自己的工作队列,队列中存放待处理的task,task的类型和消息ID一致。
-
MCU 和 SOC 工作期间 SOC 会定时向MCU发送心跳包。SOC 向 MCU 发送消息时会携带 SOC 的状态信息。
-
MCU端,当触发拍照,录像,传输文件事件时,会向MCU的工作队列中添加对应的task。若 SOC 未上电,触发这些事件时会给 SOC 上电。
-
SOC 端,开机后运行demo或是设备运行demo后从待机恢复唤醒时,又或是 SOC 完成前一个task后, SOC 会查询自己的工作队列是否为空。
-
若为空, SOC 状态置为 E_AIGLASSES_DATA_TYPE_STATE_IDEL,并向 MCU 发送 E_AIGLASSES_DATA_TYPE_TASK_REQUEST 命令。MCU接收到 E_AIGLASSES_DATA_TYPE_TASK_REQUEST 后会查询自己的工作队列。若工作队列不为空,返回队列中的第一个task给 SOC 处理;若工作队列为空,返回 E_AIGLASSES_DATA_TYPE_TASK_NONE 的消息给 SOC 。 SOC 收到 E_AIGLASSES_DATA_TYPE_TASK_NONE 消息后,会发送一个 E_AIGLASSES_DATA_TYPE_TASK_HEARTBEAT 消息,并携带 E_AIGLASSES_DATA_TYPE_STATE_SUSPENDING 的状态信息给MCU,然后 SOC 开始执行suspend操作。
-
若不为空,SOC 从工作队列中取出task进行处理。根据task类型的不同 SOC 的行为分别如下:
-
若task的类型为 E_AIGLASSES_DATA_TYPE_TASK_PHOTO,E_AIGLASSES_DATA_TYPE_TASK_START_REC 或 E_AIGLASSES_DATA_TYPE_TASK_TRANS, SOC 的状态对应变更为 E_AIGLASSES_DATA_TYPE_STATE_CAP_PIC,E_AIGLASSES_DATA_TYPE_STATE_REC 或 E_AIGLASSES_DATA_TYPE_STATE_TRANS。此时若有心跳包发送,心跳包携带的 SOC 状态为变更后的状态。当task处理完成后, SOC 状态变更为 E_AIGLASSES_DATA_TYPE_STATE_IDEL,并返回 E_AIGLASSES_DATA_TYPE_TASK_DONE 的消息给MCU。
-
若task的类型为 E_AIGLASSES_DATA_TYPE_TASK_STOP_REC 或 E_AIGLASSES_DATA_TYPE_TASK_STOP_TRANS, SOC 结束当前正在处理的录像task或传输文件task,然后 SOC 的状态变更为 E_AIGLASSES_DATA_TYPE_STATE_IDEL,并返回 E_AIGLASSES_DATA_TYPE_TASK_DONE 的消息给MCU。
-
-
SOC 执行suspend操作后,在kernel suspend结束阶段会写串口寄存器发送 E_AIGLASSES_DATA_TYPE_TASK_POWEROFF_OK 消息给MCU,消息携带的 SOC 状态为 E_AIGLASSES_DATA_TYPE_STATE_SUSPENDED。MCU接收后会对 SOC 执行掉电操作。
5.1.1.5 拍照录像串口交互流程示例¶
5.1.2 PSPI 协议¶
PSPI 协议主要用于传输缩略图数据,本演示程序暂未实现该功能。如需了解 SPI 的使用方法,请参考独立演示代码 sdk/verify/sample_code/source/iford/spi/Readme.md。关于 SPI 协议的详细说明,请参阅SPI 使用参考。
5.1.3 IIS 协议¶
IIS 协议用于在 SOC 和 TWS 之间传输音频数据。
5.1.3.1 数据流¶
SOC 和 TWS 之间通过 IIS 接口传递音频数据,其中 SOC 作为 IIS RX,TWS 作为 IIS TX。整体数据流程如下:
TWS需要通过PDM接口获取dmic的音频数据,然后通过IIS TX发送到 SOC ,目前TWS已有一个dmic录音demo,烧录后上电即可一直录音并且通过IIS送出来。
SOC 需要通过 IIS RX 接收 TWS 的数据,目前在 SOC 端已有一个demo sdk/verify/sample_code/source/iford/audio/ai_demo用于把TWS发来的音频数据dump成WAV文件,此demo依赖于Sigmastar的MI audio模块。
5.1.3.2 IIS 配置¶
对于 SOC 和 TWS 来说要使用 IIS 传音频数据,一些 IIS 的关键配置需要双方一致。
5.1.3.2.1 指定从IIS RX获取音频数据¶
对于MI audio in模块,可以有多种数据的输入接口,如AMIC,DMIC,IIS RX等。
MI_AI_If_e enAiIIS = E_MI_AI_IF_I2S_A_01;
ST_Common_AiAttachIf(stAiDevId, stChnGrpId, &enAiIIS, 1);
5.1.3.2.2 IIS量化位数¶
表示传输的音频数据
注意: SOC 的IIS RX只能使用16-bits,TWS端因此同样只能使用16-bits
MI_AUDIO_I2sConfig_t stI2SConfig;
stI2SConfig.enBitWidth = E_MI_AUDIO_BIT_WIDTH_16;
MI_AI_SetI2SConfig(E_MI_AI_IF_I2S_A_01, &stI2SConfig);
5.1.3.2.3 IIS数据格式¶
IIS有三种数据格式:标准IIS模式(Philips standard)、左对齐模式(left justified standard)、右对齐模式(right justified standard)。
MI_AUDIO_I2sConfig_t stI2SConfig;
stI2SConfig.enFormat = E_MI_AUDIO_I2S_FMT_LEFT_JUSTIFY_MSB;
MI_AI_SetI2SConfig(E_MI_AI_IF_I2S_A_01, &stI2SConfig);
5.1.3.2.4 IIS从模式指定¶
SOC 作为IIS RX,因此要设置为IIS从模式,E_MI_AUDIO_I2S_MODE_I2S_SLAVE指定。
MI_AUDIO_I2sConfig_t stI2SConfig;
stI2SConfig.enMode = E_MI_AUDIO_I2S_MODE_I2S_SLAVE;
MI_AI_SetI2SConfig(E_MI_AI_IF_I2S_A_01, &stI2SConfig);
5.1.3.2.5 IIS采样率¶
IIS 的采样率同样需要和对端TWS一致
MI_AUDIO_I2sConfig_t stI2SConfig;
stI2SConfig.enSampleRate = E_MI_AUDIO_SAMPLE_RATE_8000;
MI_AI_SetI2SConfig(E_MI_AI_IF_I2S_A_01, &stI2SConfig);
5.1.3.3 IIS 录音demo运行¶
SOC 端实现通过IIS rx录音demo可参考:sdk/verify/sample_code/source/iford/audio/ai_demo,对应的使用文档在同级目录Readme.md。
1.烧录TWS固件并启动TWS,固件会一直进行从 DMIC 录音并通过 IIS TX 发送到 SOC 端。
2.编译 SOC 端 demo
cd sdk/verify/sample_code/
make source/iford/audio/ai_demo
编译完成会在 sample_code/out/arm/app 目录下生成 prog_audio_ai_demo。
3.执行 SOC 端demo,并对着DMIC说话
./prog_audio_ai_demo iis
4.执行结果
会从IIS RX中录音10s获取到音频数据,并dump到WAV文件中。
5.2 API 说明¶
| API名 | 功能 |
|---|---|
| SGS_GLASSES_PIPE_MediaInit | 初始化pipeline |
| SGS_GLASSES_PIPE_MediaCapture | 拍照指令 |
| SGS_GLASSES_PIPE_MediaStartRecord | 开始录像 |
| SGS_GLASSES_PIPE_MediaStopRecord | 结束录像 |
| SGS_GLASSES_PIPE_DealMediaFileThread | 创建文件线程 |
| SGS_GLASSES_MAIN_SignalThreadCanExit | 结束数据接收线程 |
| SGS_GLASSES_MESSENGER_Init | 串口初始化,创建数据接收线程 |
| SGS_GLASSES_MESSENGER_DeInit | 等待数据接收线程结束,关闭串口 |
| SGS_GLASSES_MESSENGER_RegisterNotifyReceiver | 解析串口接收数据 |
| SGS_GLASSES_MESSENGER_Send | 构建串口发送数据 |
SGS_GLASSES_PIPE_MediaInit¶
-
功能
初始化pipeline
-
语法
MI_S32 SGS_GLASSES_PIPE_MediaInit(); -
形参
无
-
返回值
MI_SUCCESS:成功
非 MI_SUCCESS:失败
SGS_GLASSES_PIPE_MediaCapture¶
-
功能
拍照指令
-
语法
MI_S32 SGS_GLASSES_PIPE_MediaCapture(const char *pSaveFileName, const char *pSaveThumbnail, MI_U32 currIdx, MI_U32 totalNum, MI_S32 externLux, SGS_GLASSES_PIPE_MediaType_t mediaType); -
形参
参数名称 描述 输入/输出 pSaveFileName 保存拍照图片的路径 输入 pSaveThumbnail 保存拍照缩略图的路径 输入 currIdx 未使用 输入 totalNum 期望拍摄的数量 输入 externLux TWS端光敏lux值 输入 mediaType 媒体类型 输入 -
返回值
MI_SUCCESS:成功
非 MI_SUCCESS:失败
SGS_GLASSES_PIPE_MediaStartRecord¶
-
功能
开始录像
-
语法
int SGS_GLASSES_PIPE_MediaStartRecord(const char *pSaveFileName, const char *pSaveThumbnail, MI_S32 externLux); -
形参
参数名称 描述 输入/输出 pSaveFileName 保存录像文件的路径 输入 pSaveThumbnail 保存录像缩略图的路径 输入 externLux TWS端光敏lux值 输入 -
返回值
MI_SUCCESS:成功
非 MI_SUCCESS:失败
SGS_GLASSES_PIPE_MediaStopRecord¶
-
功能
结束录像
-
语法
MI_S32 SGS_GLASSES_PIPE_MediaStopRecord(); -
形参
无
-
返回值
MI_SUCCESS:成功
非 MI_SUCCESS:失败
SGS_GLASSES_MESSENGER_Init¶
-
功能
串口初始化,创建数据接收线程
-
语法
MI_S32 SGS_GLASSES_MESSENGER_Init(void* protcolTaskHandler, MI_BOOL bEnableDma); -
形参
参数名称 描述 输入/输出 protcolTaskHandler 命令解析工厂函数指针 输入 bEnableDma 是否开启DMA 输入 -
返回值
0:成功
非0:失败
SGS_GLASSES_MESSENGER_DeInit¶
-
功能
等待数据接收线程结束,关闭串口
-
语法
MI_S32 SGS_GLASSES_MESSENGER_DeInit(void); -
形参
无
-
返回值
0:成功
非0:失败
SGS_GLASSES_MAIN_SignalThreadCanExit¶
-
功能
结束数据接收线程
-
语法
MI_BOOL SGS_GLASSES_MAIN_SignalThreadCanExit(void); -
形参
无
-
返回值
TRUE:成功
FALSE:失败
SGS_GLASSES_MESSENGER_RegisterNotifyReceiver¶
-
功能
解析接收数据
-
语法
MI_S32 SGS_GLASSES_MESSENGER_RegisterNotifyReceiver(MI_S32 (*pstNotifyFun)(AIGLASSES_DATA_TYPE_ProtrcolTask_t* taskInfo); -
形参
参数名称 描述 输入/输出 pstNotifyFun task 接收函数指针 输入 -
返回值
0:成功
非0:失败
SGS_GLASSES_MESSENGER_Send¶
-
功能
发送数据
-
语法
MI_S32 SGS_GLASSES_MESSENGER_Send(AIGLASSES_DATA_TYPE_ProtrcolTask_t* sendInfo, unsigned char needCheck); -
形参
参数名称 描述 输入/输出 sendInfo 发送数据 输入 needCheck 是否需要数据验证 输入 -
返回值
MI_SUCCESS:成功
非 MI_SUCCESS:失败