《鸿蒙智能互联设备开发(微课版)》 课件 6.2.2 驱动服务管理开发_第1页
《鸿蒙智能互联设备开发(微课版)》 课件 6.2.2 驱动服务管理开发_第2页
《鸿蒙智能互联设备开发(微课版)》 课件 6.2.2 驱动服务管理开发_第3页
《鸿蒙智能互联设备开发(微课版)》 课件 6.2.2 驱动服务管理开发_第4页
《鸿蒙智能互联设备开发(微课版)》 课件 6.2.2 驱动服务管理开发_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.2.2驱动服务管理开发通过本节学习,您可以:了解驱动服务管理开发驱动服务管理开发1.驱动服务管理接口针对驱动服务管理功能,HDF框架开放了部分接口给开发者调用。方法描述int32_t(*Bind)(structHdfDeviceObject*deviceObject);需要驱动开发者实现Bind函数,将自己的服务接口绑定到HDF框架中conststructHdfObject*DevSvcManagerClntGetService(constchar*svcName);获取驱动的服务intHdfDeviceSubscribeService(structHdfDeviceObject*deviceObject,constchar*serviceName,structSubscriberCallbackcallback);订阅驱动的服务驱动服务管理开发2.驱动服务管理开发步骤(1)驱动服务的编写驱动服务管理开发的第一步是定义驱动的服务接口。

//驱动服务结构的定义

structITestDriverService{

structIDeviceIoServiceioService;//服务结构的首个成员必须是IDeviceIoService类型的成员

int32_t(*ServiceA)(void);//驱动的第一个服务接口

int32_t(*ServiceB)(uint32_tinputCode);//驱动的第二个服务接口,有多个可以依次往下累加

};

驱动服务接口的实现

int32_tTestDriverServiceA(void)

{

//驱动开发者实现业务逻辑

returnHDF_SUCCESS;

}

int32_tTestDriverServiceB(uint32_tinputCode)

{

//驱动开发者实现业务逻辑

returnHDF_SUCCESS;

}驱动服务管理开发(2)驱动服务绑定驱动服务绑定到HDF框架中,实现HdfDriverEntry中的Bind指针函数。

int32_tTestDriverBind(structHdfDeviceObject*deviceObject)

{

//deviceObject为HDF框架给每一个驱动创建的设备对象,用来保存设备相关的私有数据和服务接口

if(deviceObject==NULL){

HDF_LOGE("Testdeviceobjectisnull!");

returnHDF_FAILURE;

}

static

structITestDriverServicetestDriverA={

.ServiceA=TestDriverServiceA,

.ServiceB=TestDriverServiceB,

};

deviceObject->service=&testDriverA.ioService;

returnHDF_SUCCESS;

}驱动服务管理开发(3)驱动服务获取通过HDF接口直接获取:

const

structITestDriverService*testService=

(const

structITestDriverService*)DevSvcManagerClntGetService("test_driver");

if(testService==NULL){

returnHDF_FAILURE;

}

testService->ServiceA();testService->ServiceB(5);驱动服务管理开发

//object为订阅者的私有数据,service为被订阅的服务对象

int32_tTestDriverSubCallBack(structHdfDeviceObject*deviceObject,const

structHdfObject*service)

{

const

structITestDriverService*testService=

(const

structITestDriverService*)service;

if(testService==NULL){

returnHDF_FAILURE;

}

testService->ServiceA();

testService->ServiceB(5);

}通过HDF提供的订阅机制获取:需要编写订阅回调函数,当被订阅的驱动加载完成后,HDF框架会将被订阅驱动的服务发布给订阅者,通过这个回调函数给订阅者使用。驱动服务管理开发

//订阅过程的实现

int32_tTestDriverInit(structHdfDeviceObject*deviceObject)

{

if(deviceObject==NULL){

HDF_LOGE("Testdriverinitfailed,deviceObjectisnull!");

returnHDF_FAILURE;

}

structSubscriberCallbackcallBack;

callBack.deviceObject=deviceObject;

callBack.OnServiceConnected=TestDriverSubCallBack;

int32_tret=HdfDeviceSubscribeService(deviceObject,"test_driver",call

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论