Improve:Led show device status.
This commit is contained in:
parent
03303797fe
commit
281a1aa60f
|
@ -16,14 +16,29 @@
|
||||||
#include "ILog.h"
|
#include "ILog.h"
|
||||||
#include "LedControl.h"
|
#include "LedControl.h"
|
||||||
#include "SetLedState.h"
|
#include "SetLedState.h"
|
||||||
|
LedsHandle::LedsHandle() : mDeviceStatusFlag(DeviceStatus::END)
|
||||||
|
{
|
||||||
|
}
|
||||||
void LedsHandle::ControlDeviceStatusLed(const DeviceStatus &status, const long int &keepAliveTime,
|
void LedsHandle::ControlDeviceStatusLed(const DeviceStatus &status, const long int &keepAliveTime,
|
||||||
const unsigned int &blinkPeriod)
|
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) {
|
switch (status) {
|
||||||
case DeviceStatus::NORMAL:
|
case DeviceStatus::NORMAL:
|
||||||
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::GREEN, keepAliveTime, blinkPeriod);
|
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::GREEN, keepAliveTime, blinkPeriod);
|
||||||
break;
|
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:
|
case DeviceStatus::FORMATTING:
|
||||||
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::RED, keepAliveTime, blinkPeriod);
|
mDeviceStatus = SetLedState::ControlLed("device_status", LedState::RED, keepAliveTime, blinkPeriod);
|
||||||
break;
|
break;
|
||||||
|
@ -44,6 +59,7 @@ void LedsHandle::ControlDeviceStatusLed(const DeviceStatus &status, const long i
|
||||||
LogWarning("unknow device status.\n");
|
LogWarning("unknow device status.\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
mDeviceStatusFlag = status;
|
||||||
}
|
}
|
||||||
void LedsHandle::DeleteDeviceStatusLed(void)
|
void LedsHandle::DeleteDeviceStatusLed(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,7 +19,8 @@ enum class DeviceStatus
|
||||||
{
|
{
|
||||||
NORMAL = 0,
|
NORMAL = 0,
|
||||||
TAKING_PICTURE_OR_VIDEO,
|
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_REMOVE,
|
||||||
SD_CARD_INSERT,
|
SD_CARD_INSERT,
|
||||||
SD_CARD_ABNORMAL,
|
SD_CARD_ABNORMAL,
|
||||||
|
@ -32,7 +33,7 @@ enum class DeviceStatus
|
||||||
class LedsHandle
|
class LedsHandle
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LedsHandle() = default;
|
LedsHandle();
|
||||||
virtual ~LedsHandle() = default;
|
virtual ~LedsHandle() = default;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -55,5 +56,6 @@ private:
|
||||||
* calling the DeleteState function.
|
* calling the DeleteState function.
|
||||||
*/
|
*/
|
||||||
std::shared_ptr<SetLedState> mDeviceStatus; ///< Device status indicator.
|
std::shared_ptr<SetLedState> mDeviceStatus; ///< Device status indicator.
|
||||||
|
DeviceStatus mDeviceStatusFlag;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
|
@ -52,7 +52,7 @@ void TestMissionState::GoInState()
|
||||||
std::shared_ptr<VAppMonitor> monitor =
|
std::shared_ptr<VAppMonitor> monitor =
|
||||||
std::dynamic_pointer_cast<TestMissionState>(MissionState::shared_from_this());
|
std::dynamic_pointer_cast<TestMissionState>(MissionState::shared_from_this());
|
||||||
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
IAppManager::GetInstance()->SetAppMonitor(monitor);
|
||||||
LedsHandle::ControlDeviceStatusLed(DeviceStatus::NORMAL);
|
LedsHandle::ControlDeviceStatusLed(DeviceStatus::NORMAL, KEEP_ALIVE_FOREVER, BLINKING_SLOW_MS);
|
||||||
}
|
}
|
||||||
void TestMissionState::GoOutState()
|
void TestMissionState::GoOutState()
|
||||||
{
|
{
|
||||||
|
@ -87,24 +87,30 @@ bool TestMissionState::ClickResetKey(const KeyEventData &data)
|
||||||
bool TestMissionState::HoldDownResetKey(const KeyEventData &data)
|
bool TestMissionState::HoldDownResetKey(const KeyEventData &data)
|
||||||
{
|
{
|
||||||
constexpr int CLOSE_WATCH_DOG_PRESSING_TIME_MS = 1000 * 3;
|
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");
|
LogInfo("Close watch dog.\n");
|
||||||
constexpr int KEEP_BLINKING_FAST_MS = 1000 * 3;
|
constexpr int KEEP_BLINKING_FAST_MS = 1000 * 3;
|
||||||
LedsHandle::ControlDeviceStatusLed(DeviceStatus::CLOSE_WATCHDOG, KEEP_BLINKING_FAST_MS, BLINKING_FAST_MS);
|
LedsHandle::ControlDeviceStatusLed(DeviceStatus::CLOSE_WATCHDOG, KEEP_BLINKING_FAST_MS, BLINKING_FAST_MS);
|
||||||
CloseWatchDog();
|
CloseWatchDog();
|
||||||
}
|
}
|
||||||
|
if (CLOSE_WATCH_DOG_PRESSING_TIME_MS > data.mHoldTime) {
|
||||||
|
return NOT_EXECUTED;
|
||||||
|
}
|
||||||
mFormattingSDCard = DO_NOT_FORMAT_SDCARD_ANYMORE;
|
mFormattingSDCard = DO_NOT_FORMAT_SDCARD_ANYMORE;
|
||||||
// mResetKeyHoldTime = data.mHoldTime;
|
mResetKeyHoldTime = data.mHoldTime;
|
||||||
return EXECUTED;
|
return EXECUTED;
|
||||||
}
|
}
|
||||||
bool TestMissionState::HoldUpResetKey(const KeyEventData &data)
|
bool TestMissionState::HoldUpResetKey(const KeyEventData &data)
|
||||||
{
|
{
|
||||||
mFormattingSDCard = SD_CARD_IS_NOT_FORMATTING;
|
mFormattingSDCard = SD_CARD_IS_NOT_FORMATTING;
|
||||||
|
mResetKeyHoldTime = 0;
|
||||||
return EXECUTED;
|
return EXECUTED;
|
||||||
}
|
}
|
||||||
bool TestMissionState::HoldDownFormatKey(const KeyEventData &data)
|
bool TestMissionState::HoldDownFormatKey(const KeyEventData &data)
|
||||||
{
|
{
|
||||||
constexpr int FORMAT_SD_CARD_PRESSING_TIME_MS = 1000 * 15;
|
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) {
|
if (FORMAT_SD_CARD_PRESSING_TIME_MS <= data.mHoldTime && SD_CARD_IS_NOT_FORMATTING == mFormattingSDCard) {
|
||||||
LogInfo("format key down.\n");
|
LogInfo("format key down.\n");
|
||||||
mFormattingSDCard = DO_NOT_FORMAT_SDCARD_ANYMORE;
|
mFormattingSDCard = DO_NOT_FORMAT_SDCARD_ANYMORE;
|
||||||
|
@ -113,6 +119,13 @@ bool TestMissionState::HoldDownFormatKey(const KeyEventData &data)
|
||||||
MissionStateMachine::GetInstance()->SendStateMessage(message);
|
MissionStateMachine::GetInstance()->SendStateMessage(message);
|
||||||
return EXECUTED;
|
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;
|
mFormatKeyHoldTime = data.mHoldTime;
|
||||||
return NOT_EXECUTED;
|
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 StatusCode McuManagerImpl::SetFeedingCycleForWatchDog(std::shared_ptr<VMcuAsk> &ask,
|
||||||
const unsigned short &feedCycle_s)
|
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);
|
std::shared_ptr<VProtocolContext> context = std::make_shared<ProtocolContext<std::shared_ptr<VMcuAsk>>>(ask);
|
||||||
return McuProtocol::SetFeedingCycleForWatchDog(feedCycle_s, context);
|
return McuProtocol::SetFeedingCycleForWatchDog(feedCycle_s, context);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user