1/*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef HDI_SENSOR_MANAGER_H
17#define HDI_SENSOR_MANAGER_H
18
19#include "hdf_dlist.h"
20#include "hdf_io_service_if.h"
21#include "osal_mutex.h"
22#include "sensor_type.h"
23
24#define CALLBACK_TYPE_COUNT 2
25
26struct SensorIdListNode {
27    int32_t sensorId;
28    struct HdfIoService *ioService;
29    struct DListHead node;
30};
31
32struct SensorManagerNode {
33    struct HdfIoService *ioService;
34    int32_t sensorCount;
35    struct DListHead node;
36};
37
38struct SensorDevManager {
39    bool initState;
40    bool hasSensorListener;
41    RecordDataCallback recordDataCb[CALLBACK_TYPE_COUNT];
42    struct DListHead managerHead;
43    struct DListHead sensorIdListHead;
44    struct HdfIoServiceGroup *serviceGroup;
45    struct SensorInformation *sensorInfoEntry;
46    int32_t sensorSum;
47    struct OsalMutex mutex;
48    struct OsalMutex eventMutex;
49};
50
51struct SensorDevManager *GetSensorDevManager(void);
52
53#endif /* HDI_SENSOR_MANAGER_H */
54