#ifndef _RY_H_ #define _RY_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "soe.h" #include "yxbw.h" #include "ycbw.h" #include "yklog.h" #include "ytlog.h" #include "public.h" #define MAX_MSG_COUNT 4096 typedef std::unordered_map uid2pidmap; #define CMD_CONTROL_OPERATION 0 #define CMD_CONTROL_SETTING 1 typedef struct { int uid; int point; int order; int type; } struct_service_item; typedef std::unordered_map name2servicemap; typedef std::unordered_map unitname2servicemap; typedef std::unordered_map unitserviceName2cmdIdmap; typedef struct { std::string name; Json::Value value; int highSpeed; } struct_attr; typedef std::vector attrvector; class CRYDevice { public: CRYDevice(); ~CRYDevice(); BOOLEAN ry_init(const char*, const int, const char*, const char*); void ry_destroy(void); bool ry_run(void); private: uid2pidmap uid2pid_map; unitname2servicemap unitname2service_map; unitserviceName2cmdIdmap unitserviceName2cmdId_map; std::string m_traceId; LONG m_soeload = 0; LONG m_yxbwload = 0; LONG m_ycbwload = 0; struSystem config_system32; struConfig config_config; struDatabase config_database; struNodeOption config_nodes; struUnitStatic config_static_units[UNIT_NUM]; private: noPollCtx *ctx; noPollConn *conn; DWORD last_connect_sec = 0; int status; int msg_count = 0; noPollMsg *msg[2048]; bool m_dataAcquisitionReload = false; char m_host[256] = {"127.0.0.1"}; int m_port = 7790; char m_nodeId[128] = {"runyang_dn"}; char m_version[128] = {"v1.0"}; time_t last_sec; private: bool configInitializeMemory(void); bool configWriteSystemCFG(void); bool configWriteNodeCFG(void); bool configWriteHardwareCFG(void); bool configWriteProcessCFG(void); bool configWriteUnitCFG(void); bool configWriteStaticUnitCFG(void); bool configWriteDatabaseCFG(void); void releaseAllUnits(void); int GetUnitYXCount(int uid); int GetUnitYCCount(int uid); int GetUnitYMCount(int uid); LONG GetUnitYC(int uid, int order) const; float GetUnitYCReal(int uid, int order) const; float GetUnitYCRealFromValue(int uid, int order, long value) const; BOOLEAN GetUnitYCIsFloat(int uid, int order) const; float GetUnitYCLimitReal(int uid, int order, int type = 1) const; float GetUnitYMReal(int uid, int order); BYTE GetUnitYX(int uid, int point); int GetUnitYXBW(int& uid, BOOLEAN& value, unionCP56Time& st); int GetUnitSOE(int& uid, BOOLEAN& value, BYTE& qds, unionCP56Time& st); int GetUnitYCBW(int& uid, LONG& value, int& type, unionCP56Time& st); BOOLEAN GetUnitYK(int uid, int& order, BYTE& value, BYTE& act, BYTE& result); void SetUnitYK(int uid, int order, BYTE value, BYTE act, BYTE result); BOOLEAN GetUnitYT(int, int& order, DWORD& value, BYTE& act, BYTE& result); void SetUnitYT(int, int order, DWORD value, BYTE act, BYTE result); int MakeYKFrame(int); int MakeYTFrame(int); bool OnReceivedDeviceCommand(const Json::Value); BOOLEAN processUartParam(const Json::Value, int); BOOLEAN processModbustcpParam(const Json::Value, int); BOOLEAN processRymodbustcpParam(const Json::Value, int); BOOLEAN processRyFTP2MinioParam(const Json::Value, int); BOOLEAN processHostIEC104ProcessParam(const Json::Value, int); BOOLEAN processSubIEC104ProcessParam(const Json::Value, int); BOOLEAN processModbusPointParam(const Json::Value, int, int, int); bool dealConfigFile(const Json::Value); bool OnReceivedSystemAction(const std::string, const std::string, const Json::Value); void on_message(const char*, const int); void heart_beat(int status); bool publishinitDeviceData(int uid); bool publishAnalogData(int uid); bool publishStateData(int uid); bool publishHistoryAnalogData(int uid); bool publishHistoryStateData(int uid); bool publishdeviceEventData(void); BOOLEAN publishYXBWData(int uid); BOOLEAN publishYCBWData(int uid); BOOLEAN websocket_msg_join(noPollMsg **msg, int msg_count, BYTE* &buffer, int &buffer_size); int websocket_write(const char * buffer, int buffer_len); bool publish_sensor_data(const std::string traceId, const char* command, const Json::Value payload); }; #endif //_RY_H_