12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #pragma once
- #include <memory>
- #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 <DIOS::Dev::IOEventCenter> 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 <DIOS::Dev::IOEventCenter> 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
- }
|