158ec469eSopenharmony_ci/*
258ec469eSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
358ec469eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
458ec469eSopenharmony_ci * you may not use this file except in compliance with the License.
558ec469eSopenharmony_ci * You may obtain a copy of the License at
658ec469eSopenharmony_ci *
758ec469eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
858ec469eSopenharmony_ci *
958ec469eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1058ec469eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1158ec469eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1258ec469eSopenharmony_ci * See the License for the specific language governing permissions and
1358ec469eSopenharmony_ci * limitations under the License.
1458ec469eSopenharmony_ci */
1558ec469eSopenharmony_ci
1658ec469eSopenharmony_ci#ifndef MISCDEVICE_DUMP_H
1758ec469eSopenharmony_ci#define MISCDEVICE_DUMP_H
1858ec469eSopenharmony_ci
1958ec469eSopenharmony_ci#include <queue>
2058ec469eSopenharmony_ci
2158ec469eSopenharmony_ci#include "singleton.h"
2258ec469eSopenharmony_ci
2358ec469eSopenharmony_ci#include "nocopyable.h"
2458ec469eSopenharmony_ci#include "vibrator_infos.h"
2558ec469eSopenharmony_ci
2658ec469eSopenharmony_cinamespace OHOS {
2758ec469eSopenharmony_cinamespace Sensors {
2858ec469eSopenharmony_cistruct VibrateRecord {
2958ec469eSopenharmony_ci    std::string startTime;
3058ec469eSopenharmony_ci    VibrateInfo info;
3158ec469eSopenharmony_ci};
3258ec469eSopenharmony_ci
3358ec469eSopenharmony_ciclass MiscdeviceDump {
3458ec469eSopenharmony_ci    DECLARE_DELAYED_SINGLETON(MiscdeviceDump);
3558ec469eSopenharmony_cipublic:
3658ec469eSopenharmony_ci    DISALLOW_COPY_AND_MOVE(MiscdeviceDump);
3758ec469eSopenharmony_ci    void DumpHelp(int32_t fd);
3858ec469eSopenharmony_ci    void DumpMiscdeviceRecord(int32_t fd);
3958ec469eSopenharmony_ci    void ParseCommand(int32_t fd, const std::vector<std::string> &args);
4058ec469eSopenharmony_ci    void SaveVibrateRecord(const VibrateInfo &vibrateInfo);
4158ec469eSopenharmony_ci
4258ec469eSopenharmony_ciprivate:
4358ec469eSopenharmony_ci    std::queue<VibrateRecord> dumpQueue_;
4458ec469eSopenharmony_ci    std::mutex recordQueueMutex_;
4558ec469eSopenharmony_ci    void DumpCurrentTime(std::string &startTime);
4658ec469eSopenharmony_ci    void UpdateRecordQueue(const VibrateRecord &record);
4758ec469eSopenharmony_ci    std::string GetUsageName(int32_t usage);
4858ec469eSopenharmony_ci    void RunVibratorDump(int32_t fd, int32_t optionIndex, const std::vector<std::string> &args, char **argv);
4958ec469eSopenharmony_ci};
5058ec469eSopenharmony_ci#define DumpHelper DelayedSingleton<MiscdeviceDump>::GetInstance()
5158ec469eSopenharmony_ci}  // namespace Sensors
5258ec469eSopenharmony_ci}  // namespace OHOS
5358ec469eSopenharmony_ci#endif  // MISCDEVICE_DUMP_H
54