#ifndef __CHANGE__MASTER__HH__ #define __CHANGE__MASTER__HH__ #include "public.h" #include #include #include #include #define MASTER_TCI_ALIVE 0x55 #define MASTER_TCI_SEND_INTERVAL (1000*200) //sleep(1) #define TCI_CHANGE_FULL_CRITICAL 5 #define NORMAL_MACHINE 0 #define MASTER_TCI 1 #define STANDBY_TCI 2 #define DUAL_NET 2 #define TIME_OUT_COUNT 3 #define GROUND 2 #define ON 1 #define OFF 0 typedef struct { BYTE m_type; char m_host[HOST_NAME_LENGTH + 1]; } ChangeMaster; typedef struct { char m_hostTr[HOST_NAME_LENGTH + 1]; BOOLEAN m_dualMaster; int m_total; int m_count; NODE_STRUCT *m_node; } ChangeControl; class CChangeMaster { public: void MasterTciFirstRun(); void MasterSend(); CChangeMaster(); public: static BYTE m_tcitype; BYTE m_lastTcitype; ChangeMaster m_changeStruct; ChangeControl m_control; public: BOOLEAN Init(noPollConn *conn); void OnReceive(ChangeMaster chControl); protected: BOOLEAN uart_init(const char *dev); int uart_write(const void *data, int size); int uart_read(void *data, int size); public: int uart_fd; public: void ChangeNew(); void ChangeDelete(); virtual ~CChangeMaster(); private: void SendNodeWarn(BYTE netno, BYTE onOff); NODE_STRUCT *GetNode(char *name); NODE_STRUCT *GetNode(int netno); void ChangeDual(); void ChangeNode(); BOOLEAN IsMasterTci(); void StartUp(void); noPollConn *m_conn; }; void *ChangeNewObject(void *args); #endif