1bae4d13cSopenharmony_ci/*
2bae4d13cSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3bae4d13cSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4bae4d13cSopenharmony_ci * you may not use this file except in compliance with the License.
5bae4d13cSopenharmony_ci * You may obtain a copy of the License at
6bae4d13cSopenharmony_ci *
7bae4d13cSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8bae4d13cSopenharmony_ci *
9bae4d13cSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10bae4d13cSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11bae4d13cSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12bae4d13cSopenharmony_ci * See the License for the specific language governing permissions and
13bae4d13cSopenharmony_ci * limitations under the License.
14bae4d13cSopenharmony_ci */
15bae4d13cSopenharmony_ci
16bae4d13cSopenharmony_ci#ifndef SENSOR_DUMP_H
17bae4d13cSopenharmony_ci#define SENSOR_DUMP_H
18bae4d13cSopenharmony_ci
19bae4d13cSopenharmony_ci#include <vector>
20bae4d13cSopenharmony_ci
21bae4d13cSopenharmony_ci#include "singleton.h"
22bae4d13cSopenharmony_ci
23bae4d13cSopenharmony_ci#include "nocopyable.h"
24bae4d13cSopenharmony_ci
25bae4d13cSopenharmony_ci#include "client_info.h"
26bae4d13cSopenharmony_ci#include "sensor.h"
27bae4d13cSopenharmony_ci#include "sensor_agent_type.h"
28bae4d13cSopenharmony_ci
29bae4d13cSopenharmony_cinamespace OHOS {
30bae4d13cSopenharmony_cinamespace Sensors {
31bae4d13cSopenharmony_ciclass SensorDump : public Singleton<SensorDump> {
32bae4d13cSopenharmony_cipublic:
33bae4d13cSopenharmony_ci    SensorDump() = default;
34bae4d13cSopenharmony_ci    virtual ~SensorDump() = default;
35bae4d13cSopenharmony_ci    void ParseCommand(int32_t fd, const std::vector<std::string> &args, const std::vector<Sensor> &sensors,
36bae4d13cSopenharmony_ci        ClientInfo &clientInfo);
37bae4d13cSopenharmony_ci    void DumpHelp(int32_t fd);
38bae4d13cSopenharmony_ci    bool DumpSensorList(int32_t fd, const std::vector<Sensor> &sensors);
39bae4d13cSopenharmony_ci    bool DumpSensorChannel(int32_t fd, ClientInfo &clientInfo);
40bae4d13cSopenharmony_ci    bool DumpOpeningSensor(int32_t fd, const std::vector<Sensor> &sensors, ClientInfo &clientInfo);
41bae4d13cSopenharmony_ci    bool DumpSensorData(int32_t fd, ClientInfo &clientInfo);
42bae4d13cSopenharmony_ci
43bae4d13cSopenharmony_ciprivate:
44bae4d13cSopenharmony_ci    DISALLOW_COPY_AND_MOVE(SensorDump);
45bae4d13cSopenharmony_ci    void DumpCurrentTime(int32_t fd);
46bae4d13cSopenharmony_ci    int32_t GetDataDimension(int32_t sensorId);
47bae4d13cSopenharmony_ci    std::string GetDataBySensorId(int32_t sensorId, SensorData &sensorData);
48bae4d13cSopenharmony_ci    static std::unordered_map<int32_t, std::string> sensorMap_;
49bae4d13cSopenharmony_ci    void RunSensorDump(int32_t fd, int32_t optionIndex, const std::vector<std::string> &args, char **argv);
50bae4d13cSopenharmony_ci    std::vector<Sensor> sensors_;
51bae4d13cSopenharmony_ci    ClientInfo &clientInfo_ = ClientInfo::GetInstance();
52bae4d13cSopenharmony_ci};
53bae4d13cSopenharmony_ci} // namespace Sensors
54bae4d13cSopenharmony_ci} // namespace OHOS
55bae4d13cSopenharmony_ci#endif // SENSOR_DUMP_H
56