跳转至

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。整体数据流程如下:

record_sound_path

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:失败