# SDK开发过程 SDK头文件的功能实现是基于对SDK的调用映射到对客户端的调用。客户端端提供的接口如下表所示。 **表1** Client端提供的接口 | 接口名 | 接口说明 | 参数要求 | | -------- | -------- | -------- | | int **AieClientInit**(const ConfigInfo &configInfo,
 ClientInfo &clientInfo, const AlgorithmInfo
 &algorithmInfo, IServiceDeadCb \*cb) | **作用**:链接并初始化引擎服务,激活跨进程调用。
**返回值**:0为成功,其他返回值失败。 | **configInfo**(NOT NULL):引擎相关初始化配置数据;
**clientInfo**(NOT NULL):引擎客户端信息;
**algorithmInfo**(NOT NULL):调用算法信息;
**cb**(可为NULL):死亡回调 对象; | | int **AieClientPrepare**(const ClientInfo &clientInfo
, const AlgorithmInfo &algorithmInfo, const DataInfo
 &inputInfo, DataInfo &outputInfo, IClientCb \*cb) | **作用**:加载算法插件。
**返回值**: 0为成功,其他返回值失败。 | **clientInfo**(NOT NULL):引擎客户端信息;
**algorithmInfo**(NOT NULL):调用算法信息;
**inputInfo**(可为NULL):加载算法插件时输入所需信息;
**outputInfo**(可为NULL):加载算法插件之后如需返回信息则通过此出参返回;
**cb**:异步算法通过此回调返回运算结果,因此**异步算法此结构体不能为空**;若为同步算法,传入空值即可; | | int **AieClientAsyncProcess**(const ClientInfo &clientInfo,
 const AlgorithmInfo &algorithmInfo, const DataInfo
 &inputInfo) | **作用**:执行异步算法。
**返回值**:0为成功,其他返回值失败。 | **clientInfo**(NOT NULL):引擎客户端信息;
**algorithmInfo**(NOT NULL):调用算法信息;
**inputInfo**(可为NULL):算法运算入参; | | int **AieClientSyncProcess**(const ClientInfo &clientInfo,
 const AlgorithmInfo &algorithmInfo, const
 DataInfo &inputInfo, DataInfo &outputInfo) | **作用**:执行同步算法。
**返回值**:0为成功,其他返回值失败。 | **clientInfo**(NOT NULL):引擎客户端信息;
**algorithmInfo**(NOT NULL):调用算法信息;
**inputInfo**(可为NULL):算法运算入参;
**outputInfo**(可为NULL):同步算法运算结果出参; | | int **AieClientRelease**(const ClientInfo &clientInfo,
 const AlgorithmInfo &algorithmInfo, const
 DataInfo &inputInfo) | **作用**:卸载算法插件。
**返回值**:0为成功,其他返回值失败。 | **clientInfo**(NOT NULL):引擎客户端信息;
**algorithmInfo**(NOT NULL):卸载算法插件的相关信息;
**inputInfo**(可为NULL):调用卸载接口时的输入信息; | | int **AieClientDestroy**(ClientInfo &clientInfo) | **作用**:断开与服务端的链接,释放相关缓存。
**返回值**:0为成功,其他返回值失败。 | **clientInfo**(NOT NULL):所要销毁的引擎客户端信息; | | int **AieClientSetOption**(const ClientInfo &clientInfo,
 int optionType, const DataInfo &inputInfo) | **作用**:设置配置项,可将一些算法的拓展信息通过此接口传入插件。
**返回值**:0为成功,其他返回值失败。 | **clientInfo**(NOT NULL):引擎客户端信息;
**optionType** (NOT NULL):算法配置项,算法插件可根据需要利用此状态位;
**inputInfo**(可为NULL):插件可根据需要通过此入参设置算法参数信息; | | int **AieClientGetOption**(const ClientInfo &clientInfo,
 int optionType, const DataInfo &inputInfo,
 DataInfo &outputInfo) | **作用**:给定特定的optionType和inputInfo,获取其对应的配置项信息。
**返回值**:0为成功,其他返回值失败。 | **clientInfo**(NOT NULL):引擎客户端信息;
**optionType**(NOT NULL):所获取配置项信息的对应算法状态位;
**inputInfo**(可为NULL):所获取配置项信息的对应算法参数信息;
**outputInfo**(可为NULL):所要获取的配置项信息返回结果; | 其中,ConfigInfo,ClientInfo,AlgorithmInfo,DataInfo的数据结构如下表所示。 **表2** ConfigInfo,ClientInfo,AlgorithmInfo,DataInfo的数据结构 | 结构体名称 | 说明 | 属性 | | -------- | -------- | -------- | | ConfigInfo | 算法配置项信息。 | **const char \*description**:配置项信息主体; | | ClientInfo | 客户端信息。 | **long long clientVersion**:客户端设备版本号(当前还未启用);
**int clientId**:客户端ID;
**int sessionId:**会话ID;
**uid_t serverUid**:server端UID;
**uid_t clientUid:**client端UID;
**int extendLen**:拓展信息(extendMsg)长度;
**unsigned char \*extendMsg**:拓展信息主体; | | AlgorithmInfo | 算法信息。 | **long long clientVersion**:客户端设备版本号(当前还未启用);
**bool isAsync**:是否为异步执行;
**int algorithmType:**引擎框架根据插件加载顺序分配的算法类型ID;
**long long algorithmVersion**:算法版本号;
**bool isCloud**:是否上云(当前还未启用);
**int operateId**:执行ID(当前还未启用);
**int requestId**:请求ID,标识每次request,以对应执行结果;
**int extendLen**:拓展信息(extendMsg)长度;
**unsigned char \*extendMsg**:拓展信息主体; | | DataInfo | 算法数据入参(inputInfo)、
接口调用结果出参(outputInfo)。 | **unsigned char \*data:**数据主体;
**int length**:数据(data)长度; | 具体开发过程可参考[唤醒词识别SDK开发示例](../subsystems/subsys-aiframework-demo-sdk.md)。