#pragma once #include #include "ResDataObject.h" #include "DIOS.Dev.IODevice.hpp" #include "DIOS.Dev.MouldDefine.hpp" namespace DIOS::Dev::Detail { #pragma region DeviceWifiMould class DeviceWifiMould : public IntMouldWithWarn { typedef enum ECOM_Wifi_state { ECOM_WIFI_STATE_TOO_LOW = 0, ECOM_WIFI_STATE_LOW, ECOM_WIFI_STAE_NORMAL, ECOM_WIFI_STATE_GOOD, ECOM_WIFI_STATE_FULL }ECOM_WIFI_STATE; int m_CurrentValue; //ResDataObject m_Cache; std::shared_ptr m_EventCenter; std::string m_Key; public: using super = IntMouldWithWarn; DeviceWifiMould(const char* strkey, int initialvalue, int min, int WarnMin, int WarnMax, int max, int accuracy, std::shared_ptr EventCenter) :super(strkey, initialvalue, min, WarnMin, WarnMax, max, accuracy) { m_Key = strkey; m_EventCenter = EventCenter; m_CurrentValue = 0; } ~DeviceWifiMould() {} std::string GetDescription() { ResDataObject temp, result; temp.add(ValKey::UPPERLIMIT, m_LimitMax); temp.add(ValKey::LOWERLIMIT, m_LimitMin); temp.add(ValKey::WARNUPPERLIMIT, m_WarningMax); temp.add(ValKey::WARNLOWERLIMIT, m_WarningMin); temp.add(ValKey::ACCURACY, m_Accuracy); temp.add(ValKey::UNIT, m_Key.c_str()); result.add(Key.c_str(), temp); return result.encode(); } RET_STATUS JSGetCurrentSignalValue(std::string& out) { char szFDinfo[MAX_STRING] = { 0 }; sprintf_s(szFDinfo, "%d", m_CurrentValue); out = szFDinfo; return RET_STATUS::RET_SUCCEED; } bool SetSignalValue(int nValue, int & nStatus) { if (nValue != m_CurrentValue) { m_CurrentValue = nValue; if (m_WarningMin <= nValue) { nStatus = ECOM_WIFI_STAE_NORMAL; } else if (m_LimitMin <= nValue && nValue < m_WarningMin) { nStatus = ECOM_WIFI_STATE_LOW; } else if (nValue < m_LimitMin) { nStatus = ECOM_WIFI_STATE_TOO_LOW; } char szFDinfo[MAX_STRING] = { 0 }; sprintf_s(szFDinfo, "%d", nValue); //std::string str = szFDinfo; m_EventCenter->OnNotify((int)ATTRACTION_SET, "Wifi_Strength_Value", szFDinfo); } return true; }; }; #pragma endregion DeviceWifiMould }