diff --git a/zh-cn/device-dev/driver/driver-hdf-servicemanage.md b/zh-cn/device-dev/driver/driver-hdf-servicemanage.md index 66ea6eaa54a3470268f5e1598ae713e343c42334..37f57ad77dbd05f9e2aaea70096b408c012eb57e 100755 --- a/zh-cn/device-dev/driver/driver-hdf-servicemanage.md +++ b/zh-cn/device-dev/driver/driver-hdf-servicemanage.md @@ -4,7 +4,7 @@ 驱动服务是HDF驱动设备对外提供能力的对象,由HDF框架统一管理。驱动服务管理主要包含驱动服务的发布和获取。 -HDF框架定义了驱动对外发布服务的策略,是由配置文件中的policy字段来控制,policy字段的取值范围以及含义如下: +HDF框架定义了驱动对外发布服务的策略,由配置文件中的policy字段来控制,policy字段的取值范围以及含义如下: @@ -39,26 +39,26 @@ typedef enum { | 方法 | 描述 | | -------- | -------- | -| int32_t (\*Bind)(struct HdfDeviceObject \*deviceObject); | 需要驱动开发者实现Bind函数,将自己的服务接口绑定到HDF框架中。 | -| const struct HdfObject \*DevSvcManagerClntGetService(const char \*svcName); | 获取驱动的服务。 | -| int HdfDeviceSubscribeService(
struct HdfDeviceObject \*deviceObject, const char \*serviceName, struct SubscriberCallback callback); | 订阅驱动的服务。 | +| int32_t (\*Bind)(struct HdfDeviceObject \*deviceObject) | 需要驱动开发者实现Bind函数,将自己的服务接口绑定到HDF框架中。 | +| const struct HdfObject \*DevSvcManagerClntGetService(const char \*svcName)| 获取驱动的服务。 | +|int HdfDeviceSubscribeService(
struct HdfDeviceObject \*deviceObject, const char \*serviceName, struct SubscriberCallback callback) | 订阅驱动的服务。 | ## 开发步骤 驱动服务管理的开发包括驱动服务的编写、绑定、获取或者订阅,详细步骤如下。 -1. 驱动服务发布。 +1. 驱动服务编写。 ``` - 驱动服务结构的定义 + // 驱动服务结构的定义 struct ISampleDriverService { - struct IDeviceIoService ioService; // 服务结构的首个成员必须是IDeviceIoService类型的成员 - int32_t (*ServiceA)(void); // 驱动的第一个服务接口 - int32_t (*ServiceB)(uint32_t inputCode); // 驱动的第二个服务接口,有多个可以依次往下累加 + struct IDeviceIoService ioService; // 服务结构的首个成员必须是IDeviceIoService类型的成员。 + int32_t (*ServiceA)(void); // 驱动的第一个服务接口。 + int32_t (*ServiceB)(uint32_t inputCode); // 驱动的第二个服务接口,有多个可以依次往下累加。 }; - 驱动服务接口的实现 + // 驱动服务接口的实现 int32_t SampleDriverServiceA(void) { // 驱动开发者实现业务逻辑 @@ -77,7 +77,7 @@ typedef enum { ``` int32_t SampleDriverBind(struct HdfDeviceObject *deviceObject) { - // deviceObject为HDF框架给每一个驱动创建的设备对象,用来保存设备相关的私有数据和服务接口 + // deviceObject为HDF框架给每一个驱动创建的设备对象,用来保存设备相关的私有数据和服务接口。 if (deviceObject == NULL) { HDF_LOGE("Sample device object is null!"); return -1; @@ -92,10 +92,11 @@ typedef enum { ``` 3. 驱动服务获取。 - 驱动服务的获取有两种方式,HDF框架提供接口直接获取和HDF框架提供订阅机制获取。 + 驱动服务的获取有两种方式,HDF框架提供接口直接获取和订阅机制获取。 - 通过HDF接口直接获取 - 当明确驱动已经加载完成时,获取该驱动的服务可以通过HDF框架提供的能力接口直接获取,如下所示: + + 当明确驱动已经加载完成时,获取该驱动的服务可以通过HDF框架提供的能力接口直接获取,如下所示: ``` @@ -108,7 +109,8 @@ typedef enum { sampleService->ServiceB(5); ``` - 通过HDF提供的订阅机制获取 - 当内核态对驱动(同一个host)加载的时机不感知时,可以通过HDF框架提供的订阅机制来订阅该驱动,当该驱动加载完成时,HDF框架会将被订阅的驱动服务发布给订阅者,实现方式如下所示: + + 当内核态对驱动(同一个host)加载的时机不感知时,可以通过HDF框架提供的订阅机制来订阅该驱动。当该驱动加载完成时,HDF框架会将被订阅的驱动服务发布给订阅者,实现方式如下所示: ```