optical/NxFuncs/controlbus/controlbus.h

276 lines
7.7 KiB
C
Raw Permalink Normal View History

2025-09-04 01:45:08 +00:00
#ifndef __CONTROLBUS_H__
#define __CONTROLBUS_H__
#include "canctrl.h"
/*
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĿ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>CAN<EFBFBD><EFBFBD>485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵÿ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>
<EFBFBD>ڵ<EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD>̻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нڵ<EFBFBD>ID<EFBFBD><EFBFBD>Ψһ<EFBFBD>ԡ<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD>򣬽ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD>Ϊ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD>
ÿ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD>
*/
//-------------------------------------------------------------------------------------------------------------
//-------------------------------------- CAN ͨѶ<CDA8><D1B6>Э<EFBFBD><EFBFBD><E9B6A8> -----------------------------------------------
//-------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------
// CAN <20><><EFBFBD>ݰ<EFBFBD>
// |--------------------------------------------------------------------
// | exId | data
// |--------------------------------------------------------------------
// |
// |--------------------------------------------------------------------
// |
// |--------------------------------------------------------------------
// CAN Զ<>̰<EFBFBD>
//-------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------
// exId <20>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>29λ<39><CEBB>
#define BNMASK_PRT 0x1F000000 // ͨѶЭ<D1B6><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BNMASK_TID 0x00FF0000 // Ŀ<><C4BF><EFBFBD>豸ID
#define BNMASK_SID 0x0000FF00 // Դ<>豸ID
#define BNMASK_CMD 0x000000FF // <20><><EFBFBD><EFBFBD>
#define BNMASK_ID (BNMASK_TID|BNMASK_SID)
// Ŀ<><C4BF><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>豸ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8>ڵ<EFBFBD><DAB5>ı<EFBFBD>ʶ<EFBFBD><CAB6>ͨѶ<CDA8>ڵ<EFBFBD><DAB5><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ψһ
//----------------------------------------------------------------
// ͨѶ<CDA8><D1B6>ѭ<EFBFBD><D1AD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ͨѶЭ<D1B6><D0AD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
#define BN_PROTOCOL_ALL 0x00 // <20><><EFBFBD><EFBFBD><EFBFBD>豸ͨѶ
#define BN_PROTOCOL_MVCTRL 0x01 // <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
#define BN_PROTOCOL_HEAD 0x05 // <20><>ͷ<EFBFBD><CDB7>ͨѶЭ<D1B6><D0AD>
#define BN_PROTOCOL_COLOR 0x06 // <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
#define BN_PROTOCOL_EXTIO 0x07 // IO<49><4F>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
#define BN_PROTOCOL_SEWHD 0xA1 // <20><><EFBFBD>һ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
//----------------------------------------------------------------
// <20>豸ID <20><>Ŀ<EFBFBD><C4BF><EFBFBD>豸ID <20><> Դ<>豸ID<49><44><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>Э<EFBFBD><D0AD><EFBFBD>µ<EFBFBD>ID<49>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8>ġ<EFBFBD>
#define BN_ID_BROADCAST 0x00 // <20><><EFBFBD><EFBFBD>ID<49><44><EFBFBD>㲥ID<49><44>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1--255<35><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ӵķ<D3B5><C4B7><EFBFBD>IDִ<44><D6B4>
// ID <20>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̷<EFBFBD><CCB7>䣬Ҳ<E4A3AC><D2B2><EFBFBD>Թ̶<D4B9><CCB6><EFBFBD><EFBFBD><EFBFBD>
//
//
//----------------------------------------------------------------
// ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EEB6A8>
#define BN_CMD_BROADCAST 0x00 // <20><EFBFBD><E3B2A5><EFBFBD><EFBFBD>
#define BN_CMD_TRAVERSE 0x01 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-<2D><><EFBFBD><EFBFBD><E5B7A2><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7>
#define BN_CMD_BUSSTA 0x02 // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-<2D><>Χ<EFBFBD><EFBFBD><E5B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BN_CMD_INPUTCHG 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD>źű仯
#define BN_CMD_CHGOUTPUT 0x04 // <20><EFBFBD><E4BBAF><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
#define BN_CMD_REGVAL 0x05 // ״̬<D7B4>˿ڱ仯<DAB1><E4BBAF><EFBFBD><EFBFBD>ȡ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ<EFBFBD><D6B5>
#define BN_CMD_WTREG 0x06 // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>ֵ<EFBFBD><D6B5>
#define BN_CMD_EXCTRL 0x07 // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BN_CMD_EXSTA 0x08 // <20><>Χ<EFBFBD><CEA7>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define BN_CMD_TRANS_DATA 0x09 // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
#define BN_CMD_NVPARA 0x0A // <20><>ȡ or <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
//----------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8>
#define TRA_CMD_ENTER_TRA 0x01 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
#define TRA_CMD_EXIT_TRA 0x02 // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>״̬
#define TRA_CMD_NODE_TRA_BEG 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ڵ<EFBFBD>ID<49><44>ʼ
#define TRA_CMD_NODE_TRA_END 0x04 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ڵ<EFBFBD>ID<49><44><EFBFBD><EFBFBD>
#define TRA_CMD_ASK_TRA_STA 0x05 // <20><>ѯ<EFBFBD><D1AF><EFBFBD>нڵ<D0BD><DAB5><EFBFBD><EFBFBD><EFBFBD>״̬
//----------------------------------------------------------------
// <20><><EFBFBD>߽ڵ<DFBD>״̬
#define TRA_STA_INIT 0x00 // <20><>ʼ״̬
#define TRA_STA_TRA 0x01 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>
#define TRA_STA_BEG 0X02 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>״̬<D7B4>£<EFBFBD><C2A3>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ýڵ<C3BD>ID<49><44><EFBFBD>
#define TRA_STA_RESP 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ״̬<D7B4><CCAC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ʼ״̬<D7B4>£<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
#define TRA_STA_COMP 0x04 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>Ӧ״̬<D7B4>£<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5B7A2><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//----------------------------------------------------------------
// <20>Ĵ<EFBFBD><C4B4><EFBFBD>
#define BOARD_VER_LEN 8 // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
// <20><EFBFBD><E6B4A2>ȡ<EFBFBD><C8A1><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>ֵ(<28><><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>,<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>)
typedef struct
{
u8 rdnewbverflag; // <20><>ȡ<EFBFBD>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD><E6B1BE>־
u32 rdbverbitmap; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD>λͼ
u32 exbVer[BOARD_VER_LEN]; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ...
}BoardRegVal;
#define PORT_ADDR_HIGH 0xFFFF0000
#define PORT_ADDR_LOW 0x0000FFFF
#define BOARD_VERSION 0x00010000 // <20><><EFBFBD><EFBFBD><EFBFBD>
#define EXBOARD_UPDATE 0x00080000 // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define GET_NV_PARA 0x00100000 // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
//----------------------------------------------------------------
// <20><><EFBFBD><EFBFBD>EXID
#define MAKE_EXID(prt, tid, sid, cmd) ( (((u32)((prt)&0x1f))<<24) | (((u32)((tid)&0xff))<<16) | (((u32)((sid)&0xff))<<8) | (((u32)((cmd)&0xff))) )
// <20><>EXID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
#define GET_PRT_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_PRT) >> 24))
#define GET_TID_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_TID) >> 16))
#define GET_SID_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_SID) >> 8))
#define GET_CMD_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_CMD) >> 0))
//----------------------------------------------------------------
// <20>㲥ID
#define BROADCAST_EXID (MAKE_EXID(BN_PROTOCOL_ALL, BN_ID_BROADCAST, BN_ID_BROADCAST, BN_CMD_BROADCAST))
// <20><><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>
#define MAKE_FILTER(exid, rtr) ((((u32)exid)<<3) | CAN_ID_EXT | rtr)
//----------------------------------------------------------------
//----------------------------------------------------------------
typedef union
{
// ʹ<>ô<EFBFBD><C3B4><EFBFBD>ʱ<EFBFBD><CAB1>ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>ʽ
struct
{
u32 sync;
u16 cmd;
u32 addr;
u32 val;
u16 crc;
} __attribute__ ((packed)) sercomm;
// ʹ<><CAB9>CAN<41><4E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ͨѶ
struct
{
u16 rev1;
union
{
u32 id;
struct
{
u8 type; // ͨѶ<CDA8>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC>Чλ<D0A7><CEBB>Ϊ5λ<35><CEBB>֧<EFBFBD><D6A7>0--31<33><31>32<33>֣<EFBFBD><D6A3><EFBFBD>
u8 tid; // Ŀ<><C4BF>ͨѶ<CDA8>ڵ<EFBFBD>id<69><64><EFBFBD><EFBFBD>Чλ<D0A7><CEBB>Ϊ8λ<38><CEBB>֧<EFBFBD><D6A7>0--255<35><35>256<35><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 sid; // ԴͨѶ<CDA8>ڵ<EFBFBD>id<69><64><EFBFBD><EFBFBD>Чλ<D0A7><CEBB>Ϊ8λ<38><CEBB>֧<EFBFBD><D6A7>0--255<35><35>256<35><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 cmd; // ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EEA3A8><EFBFBD>ܱ<EFBFBD><DCB1>
} __attribute__ ((packed)) desc;
} __attribute__ ((packed)) exId; // can ͨѶ<CDA8><D1B6>29λ exid
union
{
u8 buff[8]; // buff
struct
{
u8 tracmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 nodeid; // <20>ڵ<EFBFBD>ID
u8 nodetype; // <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
u8 rev[5];
} __attribute__ ((packed)) traverse; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u8 staCode; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u32 cpuid; // <20>ɰ忨CPUID<49><44><EFBFBD>ɵ<EFBFBD>У<EFBFBD><D0A3>
u8 nodetype;
u8 signal; // <20>źż<C5BA><C5BC><EFBFBD>,<2C>쳣Ϊ1
// bit0,ZP
// bit1,MP
u8 rev;
} __attribute__ ((packed)) busSta; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
int64_t inputs; // <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
struct
{
u32 mask;
u32 value;
} __attribute__ ((packed)) outputs; // <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
struct
{
u32 portaddr;
u32 status;
} __attribute__ ((packed)) rdport; // ״̬<D7B4>˿<EFBFBD>
struct
{
u32 portaddr;
u32 wrdata;
} __attribute__ ((packed)) wrport; // д<><D0B4><EFBFBD>˿<EFBFBD>
struct
{
u16 ccmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 para[6]; // <20><><EFBFBD><EFBFBD>
} __attribute__ ((packed)) exctrl; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 esta; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
u8 para[6]; // <20><><EFBFBD><EFBFBD>
} __attribute__ ((packed)) exsta; // <20><>Χ<EFBFBD><CEA7>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
struct
{
u16 ccmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 subcmd;
u8 para1;
s32 para2;
} __attribute__ ((packed)) mctrl; // M<><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 ccmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 currentNP; // <20><>ǰ<EFBFBD><C7B0>λ
u16 mrotCtnAng;
u8 para[3];
} __attribute__ ((packed)) coilpara;
struct
{
u16 cmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 parablockID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
u8 paraID; // <20><><EFBFBD><EFBFBD>ID
s32 paraval; // <20><><EFBFBD><EFBFBD>ֵ
} __attribute__ ((packed)) headNvPara; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
} __attribute__ ((packed)) data; // can ͨѶ<CDA8><D1B6>8<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
u16 rev2;
} __attribute__ ((packed)) cancomm;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>ʽ......
} CtrlBusPacket;
//----------------------------------------------------------------
//----------------------------------------------------------------
//----------------------------------------------------------------
#endif