Improve:Led show device status.
This commit is contained in:
parent
03303797fe
commit
281a1aa60f
|
@ -16,14 +16,29 @@
|
|||
#include "ILog.h"
|
||||
#include "LedControl.h"
|
||||
#include "SetLedState.h"
|
||||
LedsHandle::LedsHandle() : mDeviceStatusFlag(DeviceStatus::END)
|
||||
{
|
||||
}
|
||||
void LedsHandle::ControlDeviceStatusLed(const DeviceStatus &status, const long int &keepAliveTime,
|
||||
const unsigned int &blinkPeriod)
|
||||
{
|
||||
DeleteDeviceStatusLed();
|
||||
if (KEEP_ALIVE_FOREVER == keepAliveTime) {
|
||||
/**
|
||||
* @brief For a specific state instance, when controlling the same indicator light, if the permanently
|
||||
* maintained state changes, the original state needs to be overwritten.
|
||||
*/
|
||||
DeleteDeviceStatusLed();
|
||||
}
|
||||
switch (status) {
|
||||
case DeviceStatus::NORMAL:
|
||||
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::GREEN, keepAliveTime, blinkPeriod);
|
||||
break;
|
||||
case DeviceStatus::FORMAT_KEY_HOLD_DOWN_TIPS:
|
||||
// if (DeviceStatus::FORMAT_KEY_HOLD_DOWN_TIPS == mDeviceStatusFlag) {
|
||||
// break;
|
||||
// }
|
||||
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::RED, keepAliveTime, blinkPeriod);
|
||||
break;
|
||||
case DeviceStatus::FORMATTING:
|
||||
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::RED, keepAliveTime, blinkPeriod);
|
||||
break;
|
||||
|
@ -44,6 +59,7 @@ void LedsHandle::ControlDeviceStatusLed(const DeviceStatus &status, const long i
|
|||
LogWarning("unknow device status.\n");
|
||||
break;
|
||||
}
|
||||
mDeviceStatusFlag = status;
|
||||
}
|
||||
void LedsHandle::DeleteDeviceStatusLed(void)
|
||||
{
|
||||
|
|
|
@ -19,7 +19,8 @@ enum class DeviceStatus
|
|||
{
|
||||
NORMAL = 0,
|
||||
TAKING_PICTURE_OR_VIDEO,
|
||||
FORMATTING,
|
||||
FORMATTING, ///< Prompt the user that the formatting operation is being performed.
|
||||
FORMAT_KEY_HOLD_DOWN_TIPS, ///< Prompt the user that the format button has been pressed.
|
||||
SD_CARD_REMOVE,
|
||||
SD_CARD_INSERT,
|
||||
SD_CARD_ABNORMAL,
|
||||
|
@ -32,7 +33,7 @@ enum class DeviceStatus
|
|||
class LedsHandle
|
||||
{
|
||||
public:
|
||||
LedsHandle() = default;
|
||||
LedsHandle();
|
||||
virtual ~LedsHandle() = default;
|
||||
|
||||
protected:
|
||||
|
@ -55,5 +56,6 @@ private:
|
|||
* calling the DeleteState function.
|
||||
*/
|
||||
std::shared_ptr<SetLedState> mDeviceStatus; ///< Device status indicator.
|
||||
DeviceStatus mDeviceStatusFlag;
|
||||
};
|
||||
#endif
|
|
@ -52,7 +52,7 @@ void TestMissionState::GoInState()
|
|||
std::shared_ptr<VAppMonitor> monitor =
|
||||
std::dynamic_pointer_cast<TestMissionState>(MissionState::shared_from_this());
|
||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||
LedsHandle::ControlDeviceStatusLed(DeviceStatus::NORMAL);
|
||||
LedsHandle::ControlDeviceStatusLed(DeviceStatus::NORMAL, KEEP_ALIVE_FOREVER, BLINKING_SLOW_MS);
|
||||
}
|
||||
void TestMissionState::GoOutState()
|
||||
{
|
||||
|
@ -87,24 +87,30 @@ bool TestMissionState::ClickResetKey(const KeyEventData &data)
|
|||
bool TestMissionState::HoldDownResetKey(const KeyEventData &data)
|
||||
{
|
||||
constexpr int CLOSE_WATCH_DOG_PRESSING_TIME_MS = 1000 * 3;
|
||||
if (mFormatKeyHoldTime > data.mHoldTime && data.mHoldTime >= CLOSE_WATCH_DOG_PRESSING_TIME_MS) {
|
||||
if (mFormatKeyHoldTime > data.mHoldTime && data.mHoldTime >= CLOSE_WATCH_DOG_PRESSING_TIME_MS &&
|
||||
mResetKeyHoldTime == 0) {
|
||||
LogInfo("Close watch dog.\n");
|
||||
constexpr int KEEP_BLINKING_FAST_MS = 1000 * 3;
|
||||
LedsHandle::ControlDeviceStatusLed(DeviceStatus::CLOSE_WATCHDOG, KEEP_BLINKING_FAST_MS, BLINKING_FAST_MS);
|
||||
CloseWatchDog();
|
||||
}
|
||||
if (CLOSE_WATCH_DOG_PRESSING_TIME_MS > data.mHoldTime) {
|
||||
return NOT_EXECUTED;
|
||||
}
|
||||
mFormattingSDCard = DO_NOT_FORMAT_SDCARD_ANYMORE;
|
||||
// mResetKeyHoldTime = data.mHoldTime;
|
||||
mResetKeyHoldTime = data.mHoldTime;
|
||||
return EXECUTED;
|
||||
}
|
||||
bool TestMissionState::HoldUpResetKey(const KeyEventData &data)
|
||||
{
|
||||
mFormattingSDCard = SD_CARD_IS_NOT_FORMATTING;
|
||||
mResetKeyHoldTime = 0;
|
||||
return EXECUTED;
|
||||
}
|
||||
bool TestMissionState::HoldDownFormatKey(const KeyEventData &data)
|
||||
{
|
||||
constexpr int FORMAT_SD_CARD_PRESSING_TIME_MS = 1000 * 15;
|
||||
constexpr int MEANS_REALLY_HOLD_DOWN = 1000;
|
||||
if (FORMAT_SD_CARD_PRESSING_TIME_MS <= data.mHoldTime && SD_CARD_IS_NOT_FORMATTING == mFormattingSDCard) {
|
||||
LogInfo("format key down.\n");
|
||||
mFormattingSDCard = DO_NOT_FORMAT_SDCARD_ANYMORE;
|
||||
|
@ -113,6 +119,13 @@ bool TestMissionState::HoldDownFormatKey(const KeyEventData &data)
|
|||
MissionStateMachine::GetInstance()->SendStateMessage(message);
|
||||
return EXECUTED;
|
||||
}
|
||||
if (MEANS_REALLY_HOLD_DOWN > data.mHoldTime) {
|
||||
return NOT_EXECUTED;
|
||||
}
|
||||
if (0 == mFormatKeyHoldTime) {
|
||||
constexpr int KEEP_MS = 1000 * 5;
|
||||
LedsHandle::ControlDeviceStatusLed(DeviceStatus::FORMAT_KEY_HOLD_DOWN_TIPS, KEEP_MS, LED_NOT_BLINK);
|
||||
}
|
||||
mFormatKeyHoldTime = data.mHoldTime;
|
||||
return NOT_EXECUTED;
|
||||
}
|
||||
|
|
|
@ -124,6 +124,14 @@ const StatusCode McuManagerImpl::SetFeedingCycleForWatchDog(std::shared_ptr<VMcu
|
|||
const StatusCode McuManagerImpl::SetFeedingCycleForWatchDog(std::shared_ptr<VMcuAsk> &ask,
|
||||
const unsigned short &feedCycle_s)
|
||||
{
|
||||
if (CLOSE_WATCH_DOG == feedCycle_s) {
|
||||
/**
|
||||
* @brief When the dog feeding is turned off, you need to stop feeding the dog. Continuing to feed the dog will
|
||||
* restore the watchdog.
|
||||
*/
|
||||
mWatchDogRuning = false;
|
||||
mCv.notify_one();
|
||||
}
|
||||
std::shared_ptr<VProtocolContext> context = std::make_shared<ProtocolContext<std::shared_ptr<VMcuAsk>>>(ask);
|
||||
return McuProtocol::SetFeedingCycleForWatchDog(feedCycle_s, context);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user