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