驱动服务管理
驱动服务是HDF驱动设备对外提供能力的对象,由HDF框架统一管理。驱动服务管理主要包含驱动服务的发布和获取。
HDF框架定了驱动对外发布服务的策略,是由配置文件中的policy字段来控制,policy字段的取值范围以及含义如下:
- typedef enum {
- /* 驱动不提供服务 */
- SERVICE_POLICY_NONE = 0,
- /* 驱动对内核态发布服务 */
- SERVICE_POLICY_PUBLIC = 1,
- /* 驱动对内核态和用户态都发布服务 */
- SERVICE_POLICY_CAPACITY = 2,
- /* 驱动服务不对外发布服务,但可以被订阅 */
- SERVICE_POLICY_FRIENDLY = 3,
- /* 驱动私有服务不对外发布服务,也不能被订阅 */
- SERVICE_POLICY_PRIVATE = 4,
- /* 错误的服务策略 */
- SERVICE_POLICY_INVALID
- } ServicePolicy;
使用场景当驱动以接口的形式对外提供能力时,可以使用HDF框架的驱动服务管理能力。
接口说明针对驱动服务管理功能,HDF框架开放了以下接口供开发者调用,如下表所示:
表1 服务管理接口[td]
| |
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); | 订阅驱动的服务。 |
开发步骤驱动服务管理的开发包括驱动服务的编写、绑定、获取或者订阅,详细步骤如下。