##// END OF EJS Templates
Plugin modified to allow the launch of interactiv tests from the python interpreter...
Plugin modified to allow the launch of interactiv tests from the python interpreter the signal processPacketStoreNowSig is sent by the SLOT processPacketStoreLater(unsigned int delay) the SLOT WriteSPWDelay(QList<int> dataList, unsigned int delay) allows the storage of a TC for a sending after "delay" ms

File last commit:

r11:0c9852fa341b default
r11:0c9852fa341b default
Show More
rmapoperations.h
150 lines | 5.5 KiB | text/x-c | CLexer
#ifndef RMAPOPERATIONS_H
#define RMAPOPERATIONS_H
#include "qhexspinbox.h"
#define READ_WRITE_MAX_COUNTS 4096 // in words
#define RMAP_MAX_DATA_LENGTH 4*READ_WRITE_MAX_COUNTS // in bytes, shall be lower than the limit size of SPW packet of the GRESB bridge
#define RMAP_READ_REPLY_HEADER_LENGTH 12 // in bytes => ECSS
#define RMAP_READ_COMMAND_HEADER_LENGTH 16 // in bytes => ECSS
#define RMAP_DATA_CRC_LENGTH 1 // in bytes => ECSS
#define RMAP_MAX_PACKET_LENGTH RMAP_READ_REPLY_HEADER_LENGTH + RMAP_MAX_DATA_LENGTH + RMAP_DATA_CRC_LENGTH
#define DEFAULT_SOURCE 0
#define DEFAULT_TARGET 254
static const unsigned char RMAP_CRCTable[] = {
0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
};
enum RMAP_command_codes{
invalid0, //0000
invalid1, //0001
read_Single, //0010
read_Inc, //0011
invalid2, //0100
invalid3, //0101
invalid4, //0110
readModWri_Inc, //0111
writeSingle_noVer_noRep, //1000
writeInc_noVer_noRep, //1001
writeSingle_noVer_Rep, //1010
writeInc_noVer_Rep, //1011
writeSingle_ver_noRep, //1100
writeInc_ver_noRep, //1101
writeSingle_ver_rep, //1110
writeInc_ver_rep //1111
};
struct rmap_command_format_str
{
// char tagetSpaceWireAddress[]; // used for path addressing or regional addressing
char targetLogicalAddress;
char protocolIdentifier;
char instruction;
unsigned char key; // used for command authorization => check Gaisler GRSPW for compliance
//char replyAddress[]; // not needed if logical addressing is used (replyAddressLength = 0b00)
unsigned char initiatorLogicalAddress;
char transactionIdentifier1;
char transactionIdentifier0;
char extendedAddress;
char address3;
char address2;
char address1;
char address0;
unsigned char dataLength2;
unsigned char dataLength1;
unsigned char dataLength0;
char headerCRC;
};
typedef struct rmap_command_format_str rmap_command_format_t;
struct rmap_write_reply_str
{
unsigned char initiatorLogicalAddress;
unsigned char protocolIdentifier;
unsigned char instruction;
unsigned char status;
unsigned char targetLogicalAddress;
unsigned char transactionIdentifier1;
unsigned char transactionIdentifier2;
unsigned char headerCRC;
};
typedef struct rmap_write_reply_str rmap_write_reply_t;
struct rmap_read_reply_PcktHdr_str
{
//char replyAddress[]; // not needed if logical addressing is used
char initiatorLogicalAddress;
char protocolIdentifier;
char instruction;
char status;
char targetLogicalAddress;
char transactionIdentifier1;
char transactionIdentifier0;
char reserved;
unsigned char dataLength2;
unsigned char dataLength1;
unsigned char dataLength0;
char headerCRC;
};
typedef struct rmap_read_reply_PcktHdr_str rmap_read_reply_PcktHdr_t;
struct rmap_gresb_header_str
{
char GRESBProtocoleID;
unsigned char SPWPacketSize2;
unsigned char SPWPacketSize1;
unsigned char SPWPacketSize0;
};
typedef struct rmap_gresb_header_str rmap_gresb_header_str;
class RMAP
{
public:
RMAP(RMAP_command_codes commandCode,
unsigned char targetLogicalAddress,
unsigned char initiatorLogicalAddress,
int startAddress,
int nbBytes,
char *data);
unsigned char RMAPCalculateCRC(unsigned char INCR, unsigned char INBYTE); // ECSS-E-ST-50-52C
unsigned char RMAPCalculateHeaderCRC();
unsigned char RMAPCalculateDataCRC(char *data, int nbBytes);
rmap_gresb_header_str GRESBHeader;
rmap_command_format_t RMAPHeader;
char dataCRC;
};
#endif // RMAPOPERATIONS_H