|
|
/**
|
|
|
* \file rmap_packet_library.h
|
|
|
* \brief Declarations of the functions provided by the STAR-Dundee RMAP Packet
|
|
|
* Library.
|
|
|
* STAR-Dundee\n
|
|
|
* Unit 12, Dundee University Incubator\n
|
|
|
* James Lindsay Place\n
|
|
|
* Dundee Technopole\n
|
|
|
* Dundee, DD1 5JJ\n
|
|
|
* Scotland, UK\n
|
|
|
* e-mail: support@star-dundee.com
|
|
|
*
|
|
|
* This file contains the declarations of the functions provided by the
|
|
|
* STAR-Dundee RMAP Packet Library, along with constants and types used by the
|
|
|
* library. The RMAP Packet Library provides functions for building and
|
|
|
* interpreting RMAP packets.
|
|
|
*
|
|
|
* <b>IMPORTANT NOTE:</b>
|
|
|
* \note If you are experiencing compilation errors indicating that
|
|
|
* U8 is already defined, for example, please add the following
|
|
|
* line to your code prior to including this file:\n
|
|
|
* <code>\#define NO_STAR_TYPES</code>\n
|
|
|
* Alternatively you can compile your code with a flag of
|
|
|
* <code>-DNO_STAR_TYPES</code>.\n
|
|
|
* (Copied from star_dundee_types.h)
|
|
|
*
|
|
|
* \version 3.2 - June 19th 2012\n
|
|
|
* Fixed bug when checking a write command packet or read reply packet
|
|
|
* has a data length of 0.
|
|
|
* Updates to documentation.
|
|
|
*
|
|
|
* \version 3.1 - February 10th 2012\n
|
|
|
* Minor updates to packet types to avoid errors in static
|
|
|
* analysers.\n\n
|
|
|
*
|
|
|
* \version 3.0 - October 14th 2011\n
|
|
|
* Updated linking process on Windows.\n
|
|
|
* Updated library file name.\n\n
|
|
|
*
|
|
|
* \version 2.1 - August 22nd 2011\n
|
|
|
* Made minor improvements to the internal structure.\n\n
|
|
|
*
|
|
|
* \version 2.0 - October 28th 2009\n
|
|
|
* Changed internal architecture to minimise memory allocations.\n
|
|
|
* Restored __stdcall calling convention on Windows.\n
|
|
|
* Updated names to be consistent with terminology in latest RMAP
|
|
|
* standard.\n
|
|
|
* Added functions to calculate the length of different packet types
|
|
|
* and to fill a buffer with specific packets.\n\n
|
|
|
*
|
|
|
* \version 1.9 - July 29th 2009\n
|
|
|
* Fixed problem with byte ordering in return value of
|
|
|
* RMAP_GetAddress.\n
|
|
|
* Fixed bug when creating read and write reply packets, with a packet
|
|
|
* structure provided.\n\n
|
|
|
*
|
|
|
* \version 1.8 - February 26th 2009\n
|
|
|
* Updated the calling convention used in the function declaration to
|
|
|
* __stdcall on Windows.\n\n
|
|
|
*
|
|
|
* \version 1.7 - November 20th 2008\n
|
|
|
* Fixed problem with naming of RMAP_IsCRCValid in header file.\n
|
|
|
* Added function to calculate a CRC starting from a CRC seed
|
|
|
* value.\n\n
|
|
|
*
|
|
|
* \version 1.6 - October 29th 2007\n
|
|
|
* Added support for SpaceCube.\n\n
|
|
|
*
|
|
|
* \version 1.5 - March 23rd 2007\n
|
|
|
* Used star_dundee_types.h to represent integer values of 1, 2 and 4
|
|
|
* bytes in a cross-platform manner.\n
|
|
|
* Fixed problems encountered on big endian machines.\n\n
|
|
|
*
|
|
|
* \version 1.4 - March 19th 2007\n
|
|
|
* Improved freeing of memory following errors.\n\n
|
|
|
*
|
|
|
* \version 1.3 - November 7th 2006\n
|
|
|
* Updated to be multi-platform.\n
|
|
|
* Using new CRC table.\n
|
|
|
* Fixed error when checking the format of read-modify-write command
|
|
|
* packets, data length incorrect.\n
|
|
|
* Fixed error when identifying the start of the extended and normal
|
|
|
* read/write address.\n
|
|
|
* Fixed error when reading the data length in a read command.\n\n
|
|
|
*
|
|
|
* \version 1.2 - April 3rd 2006\n
|
|
|
* Fixed potential problems with RMAP_PACKET_STATUS enum being an
|
|
|
* undefined size (no change to this file required).\n\n
|
|
|
*
|
|
|
* \version 1.1 - March 9th 2006\n
|
|
|
* Added support for different byte alignment requirements.\n\n
|
|
|
*
|
|
|
* \version 1.0 - December 20th 2005\n
|
|
|
* Initial version.\n\n
|
|
|
*
|
|
|
* Copyright © 2009 STAR-Dundee Ltd
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef RMAP_PACKET_LIBRARY_H
|
|
|
#define RMAP_PACKET_LIBRARY_H
|
|
|
|
|
|
|
|
|
|
|
|
#include "star-dundee_types.h"
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
extern "C" {
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#if defined(_WIN32) || defined(_WIN64)
|
|
|
#ifdef _WIN64
|
|
|
#define RMAPPACKETLIBRARY_CC
|
|
|
#else
|
|
|
#define RMAPPACKETLIBRARY_CC __stdcall
|
|
|
#endif
|
|
|
#else
|
|
|
#define RMAPPACKETLIBRARY_CC
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
{
|
|
|
RMAP_SUCCESS = 0x00,
|
|
|
RMAP_GENERAL_ERROR = 0x01,
|
|
|
RMAP_UNUSED_PACKET_TYPE_OR_COMMAND_CODE = 0x02,
|
|
|
RMAP_INVALID_KEY = 0x03,
|
|
|
RMAP_INVALID_DATA_CRC = 0x04,
|
|
|
RMAP_EARLY_EOP = 0x05,
|
|
|
RMAP_TOO_MUCH_DATA = 0x06,
|
|
|
RMAP_EEP = 0x07,
|
|
|
RMAP_VERIFY_BUFFER_OVERRUN = 0x09,
|
|
|
RMAP_COMMAND_NOT_IMPLEMENTED_OR_AUTHORISED = 0x0a,
|
|
|
RMAP_RMW_DATA_LENGTH_ERROR = 0x0b,
|
|
|
RMAP_INVALID_TARGET_LOGICAL_ADDRESS = 0x0c,
|
|
|
RMAP_INVALID_STATUS = 0xff
|
|
|
} RMAP_STATUS;
|
|
|
|
|
|
|
|
|
|
|
|
#define RMAP_PROTOCOL_IDENTIFIER 1
|
|
|
|
|
|
#define RMAP_RESERVED_BIT 0x80
|
|
|
#define RMAP_COMMAND_BIT 0x40
|
|
|
#define RMAP_WRITE_OPERATION_BIT 0x20
|
|
|
#define RMAP_VERIFY_BEFORE_WRITE_BIT 0x10
|
|
|
#define RMAP_REPLY_BIT 0x08
|
|
|
#define RMAP_INCREMENT_ADDRESS_BIT 0x04
|
|
|
#define RMAP_REPLY_ADDRESS_LENGTH_BITS 0x03
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
{
|
|
|
RMAP_WRITE_COMMAND = (RMAP_COMMAND_BIT |
|
|
|
RMAP_WRITE_OPERATION_BIT),
|
|
|
RMAP_WRITE_REPLY = (RMAP_WRITE_OPERATION_BIT),
|
|
|
RMAP_READ_COMMAND = (RMAP_COMMAND_BIT),
|
|
|
RMAP_READ_REPLY = (0),
|
|
|
RMAP_READ_MODIFY_WRITE_COMMAND = (RMAP_COMMAND_BIT |
|
|
|
RMAP_VERIFY_BEFORE_WRITE_BIT),
|
|
|
RMAP_READ_MODIFY_WRITE_REPLY = (RMAP_VERIFY_BEFORE_WRITE_BIT),
|
|
|
RMAP_INVALID_PACKET_TYPE = (0xff)
|
|
|
} RMAP_PACKET_TYPE;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
{
|
|
|
RMAP_PACKET_TYPE packetType;
|
|
|
U8 *pTargetAddress;
|
|
|
unsigned long targetAddressLength;
|
|
|
U8 *pReplyAddress;
|
|
|
unsigned long replyAddressLength;
|
|
|
U8 *pProtocolIdentifier;
|
|
|
U8 *pInstruction;
|
|
|
char verifyBeforeWrite;
|
|
|
char acknowledge;
|
|
|
char incrementAddress;
|
|
|
U8 *pKey;
|
|
|
U16 *pTransactionIdentifier;
|
|
|
U32 *pReadWriteAddress;
|
|
|
U8 *pExtendedReadWriteAddress;
|
|
|
U8 *pStatus;
|
|
|
U8 *pHeader;
|
|
|
unsigned long headerLength;
|
|
|
U8 *pHeaderCRC;
|
|
|
U8 *pData;
|
|
|
void *pDataLength;
|
|
|
U32 dataLength;
|
|
|
U8 *pDataCRC;
|
|
|
U8 *pMask;
|
|
|
U8 maskLength;
|
|
|
U8 *pRawPacket;
|
|
|
unsigned long rawPacketLength;
|
|
|
} RMAP_PACKET;
|
|
|
|
|
|
|
|
|
|
|
|
/* Declarations of the functions provided by the RMAP Packet Library */
|
|
|
|
|
|
U32
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetVersion(
|
|
|
void
|
|
|
);
|
|
|
|
|
|
U8
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateCRC(
|
|
|
void *pBuffer,
|
|
|
unsigned long len
|
|
|
);
|
|
|
|
|
|
U8
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateCRCWithSeed(
|
|
|
void *pBuffer,
|
|
|
unsigned long len,
|
|
|
U8 crc
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_IsCRCValid(
|
|
|
void *pBuffer,
|
|
|
unsigned long len,
|
|
|
U8 crc
|
|
|
);
|
|
|
|
|
|
RMAP_STATUS
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CheckPacketValid(
|
|
|
void *pRawPacket,
|
|
|
unsigned long packetLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char checkPacketTooLong
|
|
|
);
|
|
|
|
|
|
RMAP_PACKET_TYPE
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetPacketType(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
U8 *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetTargetAddress(
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
unsigned long *pTargetAddressLength
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetVerifyBeforeWrite(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetPerformAcknowledgement(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetIncrementAddress(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
U8
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetKey(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
U8 *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetReplyAddress(
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
unsigned long *pReplyAddressLength
|
|
|
);
|
|
|
|
|
|
U16
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetTransactionID(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
U32
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetAddress(
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
U8 *pExtendedAddress
|
|
|
);
|
|
|
|
|
|
U8 *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetData(
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
U32 *pDataLength
|
|
|
);
|
|
|
|
|
|
U32
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetReadLength(
|
|
|
RMAP_PACKET* pPacketStruct
|
|
|
);
|
|
|
|
|
|
RMAP_STATUS
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetStatus(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
U8
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetHeaderCRC(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
U8
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetDataCRC(
|
|
|
RMAP_PACKET *pPacketStruct
|
|
|
);
|
|
|
|
|
|
U8 *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_GetMask(
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
U8 *pMaskLength
|
|
|
);
|
|
|
|
|
|
unsigned long
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateWriteCommandPacketLength(
|
|
|
unsigned long targetAddressLength,
|
|
|
unsigned long replyAddressLength,
|
|
|
U32 dataLength,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_FillWriteCommandPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
char verifyBeforeWrite,
|
|
|
char acknowledge,
|
|
|
char incrementAddress,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 writeAddress,
|
|
|
U8 extendedWriteAddress,
|
|
|
U8 *pData,
|
|
|
U32 dataLength,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment,
|
|
|
U8 *pRawPacket,
|
|
|
unsigned long rawPacketLength
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildWriteCommandPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
char verifyBeforeWrite,
|
|
|
char acknowledge,
|
|
|
char incrementAddress,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 writeAddress,
|
|
|
U8 extendedWriteAddress,
|
|
|
U8 *pData,
|
|
|
U32 dataLength,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildWriteRegisterPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
char verifyBeforeWrite,
|
|
|
char acknowledge,
|
|
|
char incrementAddress,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 writeAddress,
|
|
|
U8 extendedWriteAddress,
|
|
|
U32 registerValue,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
unsigned long
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateWriteReplyPacketLength(
|
|
|
unsigned long initiatorAddressLength,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_FillWriteReplyPacket(
|
|
|
U8 *pInitiatorAddress,
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U8 targetAddress,
|
|
|
char verifyBeforeWrite,
|
|
|
char incrementAddress,
|
|
|
RMAP_STATUS status,
|
|
|
U16 transactionIdentifier,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment,
|
|
|
U8 *pRawPacket,
|
|
|
unsigned long rawPacketLength
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildWriteReplyPacket(
|
|
|
U8 *pInitiatorAddress,
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U8 targetAddress,
|
|
|
char verifyBeforeWrite,
|
|
|
char incrementAddress,
|
|
|
RMAP_STATUS status,
|
|
|
U16 transactionIdentifier,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
unsigned long
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateReadCommandPacketLength(
|
|
|
unsigned long targetAddressLength,
|
|
|
unsigned long replyAddressLength,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_FillReadCommandPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
char incrementAddress,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 readAddress,
|
|
|
U8 extendedReadAddress,
|
|
|
U32 dataLength,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment,
|
|
|
U8 *pRawPacket,
|
|
|
unsigned long rawPacketLength
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildReadCommandPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
char incrementAddress,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 readAddress,
|
|
|
U8 extendedReadAddress,
|
|
|
U32 dataLength,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildReadRegisterPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
char incrementAddress,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 readAddress,
|
|
|
U8 extendedReadAddress,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
unsigned long
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateReadReplyPacketLength(
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U32 dataLength,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_FillReadReplyPacket(
|
|
|
U8 *pInitiatorAddress,
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U8 targetAddress,
|
|
|
char incrementAddress,
|
|
|
RMAP_STATUS status,
|
|
|
U16 transactionIdentifier,
|
|
|
U8 *pData,
|
|
|
U32 dataLength,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment,
|
|
|
U8 *pRawPacket,
|
|
|
unsigned long rawPacketLength
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildReadReplyPacket(
|
|
|
U8 *pInitiatorAddress,
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U8 targetAddress,
|
|
|
char incrementAddress,
|
|
|
RMAP_STATUS status,
|
|
|
U16 transactionIdentifier,
|
|
|
U8 *pData,
|
|
|
U32 dataLength,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
unsigned long
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateReadModifyWriteCommandPacketLength(
|
|
|
unsigned long targetAddressLength,
|
|
|
unsigned long replyAddressLength,
|
|
|
U32 dataAndMaskLength,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_FillReadModifyWriteCommandPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 readModifyWriteAddress,
|
|
|
U8 extendedReadModifyWriteAddress,
|
|
|
U8 dataAndMaskLength,
|
|
|
U8 *pData,
|
|
|
U8 *pMask,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment,
|
|
|
U8 *pRawPacket,
|
|
|
unsigned long rawPacketLength
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildReadModifyWriteCommandPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 readModifyWriteAddress,
|
|
|
U8 extendedReadModifyWriteAddress,
|
|
|
U8 dataAndMaskLength,
|
|
|
U8 *pData,
|
|
|
U8 *mask,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildReadModifyWriteRegisterPacket(
|
|
|
U8 *pTargetAddress,
|
|
|
unsigned long targetAddressLength,
|
|
|
U8 *pReplyAddress,
|
|
|
unsigned long replyAddressLength,
|
|
|
U8 key,
|
|
|
U16 transactionIdentifier,
|
|
|
U32 readModifyWriteAddress,
|
|
|
U8 extendedReadModifyWriteAddress,
|
|
|
U32 registerValue,
|
|
|
U32 mask,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
unsigned long
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_CalculateReadModifyWriteReplyPacketLength(
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U32 dataLength,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
char
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_FillReadModifyWriteReplyPacket(
|
|
|
U8 *pInitiatorAddress,
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U8 targetAddress,
|
|
|
RMAP_STATUS status,
|
|
|
U16 transactionIdentifier,
|
|
|
unsigned long dataLength,
|
|
|
U8 *pData,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment,
|
|
|
U8 *pRawPacket,
|
|
|
unsigned long rawPacketLength
|
|
|
);
|
|
|
|
|
|
void *
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_BuildReadModifyWriteReplyPacket(
|
|
|
U8 *pInitiatorAddress,
|
|
|
unsigned long initiatorAddressLength,
|
|
|
U8 targetAddress,
|
|
|
RMAP_STATUS status,
|
|
|
U16 transactionIdentifier,
|
|
|
unsigned long dataLength,
|
|
|
U8 *pData,
|
|
|
unsigned long *pRawPacketLength,
|
|
|
RMAP_PACKET *pPacketStruct,
|
|
|
char alignment
|
|
|
);
|
|
|
|
|
|
void
|
|
|
RMAPPACKETLIBRARY_CC
|
|
|
RMAP_FreeBuffer(
|
|
|
void *pBuffer
|
|
|
);
|
|
|
|
|
|
|
|
|
/* Macros for accessing the version */
|
|
|
|
|
|
#define RMAP_GET_VERSION_MAJOR(versionInfo) (((version) & 0xff000000) >> 24)
|
|
|
#define RMAP_GET_VERSION_MINOR(versionInfo) (((version) & 0x00ff0000) >> 16)
|
|
|
#define RMAP_GET_VERSION_EDIT(versionInfo) (((version) & 0x0000ffc0) >> 6)
|
|
|
#define RMAP_GET_VERSION_PATCH(versionInfo) ((version) & 0x0000003f)
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* RMAP_PACKET_LIBRARY_H */
|
|
|
|
|
|
|
|
|
|
|
|
|