/** ****************************************************************************** * @file : KBus.h * @brief : Header for KBus.c file. * This file contains the common defines of the application. ****************************************************************************** */ #include "KMachine.h" #ifndef __KBUS_H__ #define __KBUS_H__ typedef unsigned char uchar; extern unsigned char bKBusMaster,bKBusSlave,bKBusRepeater;; enum enCMDs { cmdNone = '0', //Nothing cmdPing = '1', //Ping cmdPingReply = '2', //PingReply cmdRead = '3', //Read cmdReadReply = '4', //ReadReply cmdWrite = '5', //Write cmdWriteReply = '6', //WriteReply cmdGetVersion = '7', //GetVersion cmdVerInfo = '8', //VersionReply cmdExChgData='A', //ExChangeDate, = Wirte + Read cmdExChgDataReply, //ExchangeData Reply cmdSyncRead='a', //SyncRead cmdSyncWrite, //SyncWrite cmdSequenRead, //Sequence Read cmdSyncTime, //SyncTime }; enum {StartSign='%', EndSign=0x0D, MaxPacketLength=128, }; extern unsigned char PacketBuf1[128]; extern unsigned char PacketBuf2[128]; typedef struct tagKBusRunStat { unsigned char bMaster; unsigned char nStationID; unsigned char nChildren; unsigned char nCurPollId; unsigned char nSeq; unsigned char bMasterRecved; unsigned char bMasterRecvOK; unsigned char bSlaveRecved; unsigned int nSendTimeuS; }stKBusRunStat , * pstKBusRunStat; extern unsigned char BufferIn[16]; extern unsigned char BufferOut[16]; extern unsigned char nStationID; extern unsigned char nChilds; extern int ChildStat[16]; extern unsigned char nCurPollId; extern unsigned char nSeq; extern volatile unsigned char KBusMasterRecved; extern volatile unsigned char KBusMasterRecvOK; extern volatile unsigned char KBusSlaveRecved; extern unsigned int KBusSendTimeuS; extern volatile int KBusRecvTimeuS; extern int KBusDelayuS; extern int KBusMaxDelayuS; extern volatile unsigned int nSlaveTick; typedef struct tagVerInfo { unsigned char nMainVer; unsigned char nSubVer; }stVerInfo; typedef struct tagMachineState { unsigned char Addr; unsigned char state; unsigned char InStartAddrBit; unsigned char OutStartAddrBit; unsigned char InDWStartAddrByte; unsigned char OutDWStartAddrByte; }ClientState; typedef struct tagMasterStat { unsigned int CycleTime; } stMasterStat; typedef struct ServerStatus { unsigned char Addr; unsigned char Status; unsigned short Input[16]; unsigned short DT[128]; unsigned short output[16]; }stServerStatus,*pServerStatus; typedef struct tagClientCfg { unsigned int KeepOut; //Keep Output when comm err; }stClientCfg; struct ClientInfo { stVerInfo ClientVer; unsigned char nType; unsigned char nGroup; unsigned char InPutCount; unsigned char OutPutCount; unsigned char InDWCount; unsigned char OutDWCount; unsigned char bOnline; }; #pragma anon_unions typedef struct tagChnStat { unsigned int Stat; unsigned int SendPackets; unsigned int RecvPackets; unsigned int LastSentTimeuS; unsigned int LostPackets; unsigned int CtnLstPkts; unsigned int MaxCtnLstPkts; unsigned int NotPkgErr; unsigned int PkgLenErr; unsigned int BCCErr; unsigned int TimeOutErr; unsigned int Delay; unsigned int MaxDelay; unsigned int SendTimeInterval; union { unsigned int ClientDatas[10]; struct { unsigned int ClientRecvPkts; // unsigned int ClientSendPkts; // unsigned int ClientNotPktErr; // unsigned int ClientMisIdPkts; // // unsigned int ClientNoEndErr; // unsigned int ClientPkgLenErr; // unsigned int ClientBccErr; // unsigned int ClientTimeOutErr; // }; }; } stChnStat; extern stChnStat KBusChnStats[8]; typedef struct tagSlaveStat { unsigned int nSlaveTick; } stSlaveStat; typedef struct ServerClientListElement { unsigned char Addr; unsigned char Status; unsigned char Father; unsigned char Childs; } stServerClientListElement; typedef struct ServerClientList { unsigned char Addr; }stServerClientList,*pServerClientList; typedef struct ClientStatus { unsigned char Addr; unsigned char Status; unsigned char Father; unsigned char Childs; unsigned short Input[16]; unsigned short DT[128]; unsigned short output[16]; }stChnStatus,*pClientStatus; typedef void *(*CBFuncDef) (void*, void *, int); //callback func ,prama s is void *,void *,int; return void *; enum enumCallBackEvent { evNone = 0, evCreate = 1, evConnected = 2, evDisConnected = 3, evClosed = 4, }; typedef struct tagKBPacket { unsigned char Sign; //起始标记 unsigned char DstHost; //目标地址 unsigned char SrcAddr; //源地址 unsigned char nCMD; //命令 unsigned char nSEQ; //序列号 unsigned char PacketLen; //数据载荷长度 不包括头部5个字节,不包括尾部BCC。 unsigned char data[1]; //数据载荷,最末尾是BCC,数据长度为0时,实际也有一个数据。 }stKBPacket,* pKBPacket; enum eResult { S_OK =0, S_ERR=1, S_TIMEOUT=2 } ; unsigned char KBusBCC(void * pData, int nSize); // /* Make a Packet and return Packet Length */ int KBusMakePacket(pKBPacket p1,uchar Src, uchar Dst, uchar nType, uchar nSEQ, uchar DataLen, void *pData ); /* */ int KBusCheckPacket(int nChn, pKBPacket p1, int len1); /* */ int KBusParsePacket(int nChn, pKBPacket p1, int Len1); typedef struct tagMachineConfig { int bKBusMaster; int nAddr; }stMachineConfig; /* int InitMachine(stMachineConfig * pConfig); int SetConfig(void ); int StartConfig(void); int SetMasterConfig(void); int StartPolling(void); int ReadData(void); int WriteData(void); int GetStat(void); */ int KBusRepeaterFunc(int nChn); int KBusMasterFunc(int nChn); int KBusSlaveFunc(int nChn); #endif /* __KBUS_H__ */