map/das-dn/cmg/changemaster.h
2024-10-21 10:53:15 +08:00

79 lines
1.7 KiB
C++

#ifndef __CHANGE__MASTER__HH__
#define __CHANGE__MASTER__HH__
#include "public.h"
#include <map>
#include <string>
#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(void);
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);
};
void *ChangeNewObject(void *args);
#endif