QuakeGod
2024-02-25 95322c84888cbe2e92024d4d65698f59b016cb52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
/**
  ******************************************************************************
  * @file           : KBusDefine.h
  * @brief          : Header for KBus protocol.
  *                   This file contains the common defines of the KBus Protocol .
  ******************************************************************************
    */
 
#ifndef __KBUSDEFINE_H__
#define __KBUSDEFINE_H__
 
#define KBUS_VER    (0x104)
 
//#define SYN_PREFIX 1
 
typedef unsigned char uchar;
 
enum enKBusStationType 
{
    KBNone = 0,
    KBusMaster = 1,
    KBusSlave = 2,
    KBusRepeater = 3,
};
 
// diagnosis
enum enKBusStats
{
        KBusStatIdel,
        KBusStatConfig,
        KBusStatRunning,
        KBusStatError,
};
 
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',                //ExChangeData, = Wirte + Read
    cmdExChgDataReply,            //ExchangeData Reply
    
    cmdSyncRead='a',                //SyncRead
    cmdSyncWrite,                        //SyncWrite
    cmdSequenRead,                    //Sequence Read
    cmdSyncTime,                        //SyncTime
};
 
enum {
            SYN = 0x55,
            StartSign='%',
            EndSign=0x0D,
            MaxPacketLength=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;
 
typedef struct tagVerInfo
{
    unsigned char nMainVer;
    unsigned char nSubVer;
}stVerInfo;
 
typedef struct tagMasterStat
{
    unsigned int CycleTime;
} stMasterStat;
 
typedef struct tagClientInfo
{
    unsigned short ClientType;
    unsigned short ClientVer;
//    stVerInfo ClientVer;
    unsigned char InBitCount;
    unsigned char OutBitCount;
    unsigned char AICount;
    unsigned char AIBits;
    unsigned char AQCount;
    unsigned char AQbits;
    unsigned char InDWCount;
    unsigned char OutDWCount;
    unsigned char bOnline;
}stClientInfo;
 
 
typedef struct tagClientCfg
{
    unsigned char nGroup;
    unsigned char Addr;
    unsigned char InStartAddrBit;
    unsigned char OutStartAddrBit;
    unsigned char InAWStartAddrByte;
    unsigned char OutAWStartAddrByte;
    unsigned char InDWStartAddrByte;
    unsigned char OutDWStartAddrByte;
    unsigned int KeepOut;        //Keep Output when comm err;
}stClientCfg;
 
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 tagMachineState
{
    unsigned char Addr;
    unsigned char state;
    unsigned char InStartAddrBit;
    unsigned char OutStartAddrBit;
    unsigned char InDWStartAddrByte;
    unsigned char OutDWStartAddrByte;
}ClientState;
 
 
 
#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;
 
 
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 tagMachineConfig
{
    int bKBusMaster;
    int nAddr;
}stMachineConfig;
 
/*
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 struct tagStatusDef
{
            unsigned char nSeq:2;        //ÐòÁкÅ
            unsigned char :2;
            unsigned char nErr1:1;
            unsigned char nErr2:1;
}stStatus;    
 
typedef union tagUnStatusDef
{
    unsigned char nStatus;
 stStatus;
}unStatus;
 
typedef struct tagKBPacket
{
    unsigned char Sign;        //Æðʼ±ê¼Ç        
    unsigned char DstHost;    //Ä¿±êµØÖ·
    unsigned char SrcAddr;    //Ô´µØÖ·
    unsigned char nCMD;        //ÃüÁî
    union{
        unsigned char nStatus;        //״̬+ÐòÁкÅ
        struct{
            unsigned char nSeq:2;        //ÐòÁкÅ
            unsigned char :2;
            unsigned char nErr1:1;
            unsigned char nErr2:1;
            
        };
    };
    unsigned char DataLen;    //Êý¾ÝÔغɳ¤¶È    ²»°üÀ¨Í·²¿5¸ö×Ö½Ú£¬²»°üÀ¨Î²²¿BCC¡£
    unsigned char data[1];        //Êý¾ÝÔغÉ,×îĩβÊÇBCC£¬Êý¾Ý³¤¶ÈΪ0ʱ£¬Êµ¼ÊÒ²ÓÐÒ»¸öÊý¾Ý¡£
}stKBPacket,* pKBPacket;    
 
typedef struct tagKBInfoBlockV1
{
    unsigned short nDeviceType;
    unsigned short nProgVer;
    
    unsigned char InBitCount;
    unsigned char OutBitCount;
    
    unsigned char AICount;
    unsigned char AIBits;
    unsigned char AQCount;
    unsigned char AQbits;
    
    unsigned char InDWCount;
    unsigned char OutDWCount;    
    
}stKBInfoBlockV1, *pKBInfoBlockV1;
 
 
/*
typedef struct tagKBPacketV10
{
    unsigned char Sign;        //Æðʼ±ê¼Ç        
    unsigned char DstHost;    //Ä¿±êµØÖ·
    unsigned char SrcAddr;    //Ô´µØÖ·
    unsigned char nCMD;        //ÃüÁî
    union{
        unsigned char nStatus;        //״̬+ÐòÁкÅ
        struct{
            unsigned char nSeq:2;        //ÐòÁкÅ
            unsigned char :2;
            unsigned char nErr1:1;
            unsigned char nErr2:1;
            
        };
    };
    unsigned char DataLen;    //Êý¾ÝÔغɳ¤¶È    ²»°üÀ¨Í·²¿5¸ö×Ö½Ú£¬²»°üÀ¨Î²²¿BCC¡£
    unsigned char data[1];        //Êý¾ÝÔغÉ,×îĩβÊÇBCC£¬Êý¾Ý³¤¶ÈΪ0ʱ£¬Êµ¼ÊÒ²ÓÐÒ»¸öÊý¾Ý¡£
}stKBPacketV10,* pKBPacketV10;    
 
typedef struct tagKBPacketV20
{
    unsigned char Sign;        //Æðʼ±ê¼Ç        
    unsigned char DstHost;    //Ä¿±êµØÖ·
    unsigned char SrcAddr;    //Ô´µØÖ·
    unsigned char nCMD;        //ÃüÁî
    union{
        unsigned char nStatus;        //״̬+ÐòÁкÅ
        struct{
            unsigned char nSeq:2;        //ÐòÁкÅ
            unsigned char :2;
            unsigned char nErr1:1;
            unsigned char nErr2:1;
            
        };
    };
    unsigned char DataLen;    //Êý¾ÝÔغɳ¤¶È    ²»°üÀ¨Í·²¿5¸ö×Ö½Ú£¬²»°üÀ¨Î²²¿BCC¡£
    unsigned char data[1];        //Êý¾ÝÔغÉ,×îĩβÊÇBCC£¬Êý¾Ý³¤¶ÈΪ0ʱ£¬Êµ¼ÊÒ²ÓÐÒ»¸öÊý¾Ý¡£
}stKBPacketV20,* pKBPacketV20;    
*/
typedef void *(*CBFuncDef) (void*, void *, int);    //callback func ,prama s is  void *,void *,int; return void *;
 
enum eResult
{    
    S_OK =0,
    S_ERR=1,
    S_TIMEOUT=2
 
}    ;
 
enum enumCallBackEvent
{
    evNone = 0,
    evCreate = 1,
    evConnected = 2,
    evDisConnected = 3,
    evClosed = 4,
};
 
 
#endif    /* __KBUSDEFINE_H__ */