hunting/application/MissionManager/src/LedsHandle.cpp
2024-07-19 10:38:29 +08:00

55 lines
2.0 KiB
C++

/*
* Copyright (c) 2023 Fancy Code.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "LedsHandle.h"
#include "ILog.h"
#include "LedControl.h"
#include "SetLedState.h"
void LedsHandle::ControlDeviceStatusLed(const DeviceStatus &status, const long int &keepAliveTime,
const unsigned int &blinkPeriod)
{
switch (status) {
case DeviceStatus::NORMAL:
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::GREEN, keepAliveTime, blinkPeriod);
break;
case DeviceStatus::FORMATTING:
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::RED, keepAliveTime, blinkPeriod);
break;
case DeviceStatus::SD_CARD_REMOVE:
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::GREEN, keepAliveTime, blinkPeriod);
break;
case DeviceStatus::SD_CARD_INSERT:
/**
* @brief When the SD card is normal, there is no need to change the state of the status light, but the status
* light resources need to be released and the status light needs to be restored to its proper state.
*/
mDeviceStatus.reset();
break;
default:
LogWarning("unknow device status.\n");
break;
}
}
void inline LedsHandle::DeleteDeviceStatusLed(void)
{
if (mDeviceStatus) {
mDeviceStatus->DeleteState();
mDeviceStatus.reset();
}
}
void LedsHandle::DeleteAllLeds(void)
{
DeleteDeviceStatusLed();
}