• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
3  *
4  * HDF is dual licensed: you can use it either under the terms of
5  * the GPL, or the BSD license, at your option.
6  * See the LICENSE file in the root of this repository for complete details.
7  */
8 
9 #ifndef HDF_DEVICE_NODE_H
10 #define HDF_DEVICE_NODE_H
11 
12 #include "hdf_device.h"
13 #include "hdf_device_info.h"
14 #include "hdf_device_desc.h"
15 #include "hdf_dlist.h"
16 #include "hdf_driver.h"
17 #include "hdf_pm.h"
18 
19 struct HdfDeviceNode;
20 struct DevHostService;
21 
22 struct IDeviceNode {
23     struct HdfObject object;
24     int (*PublishService)(struct HdfDeviceNode *devNode);
25     int (*RemoveService)(struct HdfDeviceNode *devNode);
26     int (*LaunchNode)(struct HdfDeviceNode *devNode);
27     void (*UnlaunchNode)(struct HdfDeviceNode *devNode);
28 };
29 
30 struct HdfDeviceNode {
31     struct IDeviceNode super;
32     struct DListHead entry;
33     struct PowerStateToken *powerToken;
34     struct DevHostService *hostService;
35     struct HdfDeviceObject deviceObject;
36     struct IHdfDeviceToken *token;
37     struct HdfDriver *driver;
38     struct HdfDevice *device;
39     char *servName;
40     const char *servInfo;
41     char *driverName;
42     devid_t devId;
43     uint16_t policy;
44     uint16_t permission;
45     uint8_t devStatus;
46     bool servStatus;
47     char *interfaceDesc;
48 };
49 
50 enum DevNodeStaus {
51     DEVNODE_NONE = 0,
52     DEVNODE_INITED,
53     DEVNODE_LAUNCHED,
54 };
55 
56 int HdfDeviceNodeAddPowerStateListener(
57     struct HdfDeviceNode *devNode, const struct IPowerEventListener *listener);
58 void HdfDeviceNodeRemovePowerStateListener(
59     struct HdfDeviceNode *devNode, const struct IPowerEventListener *listener);
60 void HdfDeviceNodeConstruct(struct HdfDeviceNode *devNode);
61 void HdfDeviceNodeDestruct(struct HdfDeviceNode *devNode);
62 struct HdfDeviceNode *HdfDeviceNodeNewInstance(const struct HdfDeviceInfo *deviceInfo, struct HdfDriver *driver);
63 void HdfDeviceNodeFreeInstance(struct HdfDeviceNode *devNode);
64 void HdfDeviceNodeDelete(struct HdfDeviceNode *devNode);
65 int HdfDeviceNodePublishPublicService(struct HdfDeviceNode *devNode);
66 int HdfDeviceNodeRemoveService(struct HdfDeviceNode *devNode);
67 int DeviceDriverBind(struct HdfDeviceNode *devNode);
68 
69 #endif /* HDF_DEVICE_NODE_H */
70