• 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 #include "hdf_object_manager.h"
10 #include "devhost_service.h"
11 #include "devmgr_service.h"
12 #include "devsvc_manager.h"
13 #include "hdf_device.h"
14 #include "hdf_device_node_ext.h"
15 #include "hdf_device_token.h"
16 #include "hdf_driver_installer.h"
17 #include "hdf_driver_loader.h"
18 
19 static const struct HdfObjectCreator g_liteObjectCreators[] = {
20     [HDF_OBJECT_ID_DEVMGR_SERVICE] =
21         {
22             .Create = DevmgrServiceCreate,
23             .Release = DevmgrServiceRelease,
24         },
25     [HDF_OBJECT_ID_DEVSVC_MANAGER] =
26         {
27             .Create = DevSvcManagerCreate,
28             .Release = DevSvcManagerRelease,
29         },
30     [HDF_OBJECT_ID_DEVHOST_SERVICE] =
31         {
32             .Create = DevHostServiceCreate,
33             .Release = DevHostServiceRelease,
34         },
35     [HDF_OBJECT_ID_DRIVER_INSTALLER] =
36         {
37             .Create = DriverInstallerCreate,
38             .Release = NULL,
39         },
40     [HDF_OBJECT_ID_DRIVER_LOADER] =
41         {
42             .Create = HdfDriverLoaderCreate,
43             .Release = NULL,
44         },
45     [HDF_OBJECT_ID_DEVICE] =
46         {
47             .Create = HdfDeviceCreate,
48             .Release = HdfDeviceRelease,
49         },
50     [HDF_OBJECT_ID_DEVICE_TOKEN] =
51         {
52             .Create = HdfDeviceTokenCreate,
53             .Release = HdfDeviceTokenRelease,
54         },
55     [HDF_OBJECT_ID_DEVICE_SERVICE] =
56         {
57             .Create = DeviceNodeExtCreate,
58             .Release = DeviceNodeExtRelease,
59         }
60 };
61 
HdfObjectManagerGetCreators(int objectId)62 const struct HdfObjectCreator *HdfObjectManagerGetCreators(int objectId)
63 {
64     int numConfigs = sizeof(g_liteObjectCreators) / sizeof(g_liteObjectCreators[0]);
65     if ((objectId >= 0) && (objectId < numConfigs)) {
66         return &g_liteObjectCreators[objectId];
67     }
68     return NULL;
69 }
70