67 lines
2.4 KiB
C
67 lines
2.4 KiB
C
// RH_TcpProtocol.h
|
|
// Author: Mike McCauley (mikem@aierspayce.com)
|
|
// Definition of protocol messages sent and received by RH_TCP
|
|
// Copyright (C) 2014 Mike McCauley
|
|
// $Id: RHTcpProtocol.h,v 1.3 2014/05/22 06:07:09 mikem Exp $
|
|
|
|
/// This file contains the definitions of message structures passed between
|
|
/// RH_TCP and the etherSimulator
|
|
#ifndef RH_TcpProtocol_h
|
|
#define RH_TcpProtocol_h
|
|
|
|
#define RH_TCP_MESSAGE_TYPE_NOP 0
|
|
#define RH_TCP_MESSAGE_TYPE_THISADDRESS 1
|
|
#define RH_TCP_MESSAGE_TYPE_PACKET 2
|
|
|
|
// Maximum message length (including the headers) we are willing to support
|
|
#define RH_TCP_MAX_PAYLOAD_LEN 255
|
|
|
|
// The length of the headers we add.
|
|
// The headers are inside the RF69's payload and are therefore encrypted if encryption is enabled
|
|
#define RH_TCP_HEADER_LEN 4
|
|
|
|
|
|
// This is the maximum message length that can be supported by this protocol.
|
|
#define RH_TCP_MAX_MESSAGE_LEN (RH_TCP_MAX_PAYLOAD_LEN - RH_TCP_HEADER_LEN)
|
|
|
|
#pragma pack(push, 1) // No padding
|
|
|
|
/// \brief Generic RH_TCP simulator message structure
|
|
typedef struct
|
|
{
|
|
uint32_t length; ///< Number of octets following, in network byte order
|
|
uint8_t payload[RH_TCP_MAX_PAYLOAD_LEN + 1]; ///< Payload
|
|
} RHTcpMessage;
|
|
|
|
/// \brief Generic RH_TCP message structure with message type
|
|
typedef struct
|
|
{
|
|
uint32_t length; ///< Number of octets following, in network byte order
|
|
uint8_t type; ///< One of RH_TCP_MESSAGE_TYPE_*
|
|
uint8_t payload[RH_TCP_MAX_PAYLOAD_LEN]; ///< Payload
|
|
} RHTcpTypeMessage;
|
|
|
|
/// \brief RH_TCP message Notifies the server of thisAddress of this client
|
|
typedef struct
|
|
{
|
|
uint32_t length; ///< Number of octets following, in network byte order
|
|
uint8_t type; ///< == RH_TCP_MESSAGE_TYPE_THISADDRESS
|
|
uint8_t thisAddress; ///< Node address
|
|
} RHTcpThisAddress;
|
|
|
|
/// \brief RH_TCP radio message passed to or from the simulator
|
|
typedef struct
|
|
{
|
|
uint32_t length; ///< Number of octets following, in network byte order
|
|
uint8_t type; ///< == RH_TCP_MESSAGE_TYPE_PACKET
|
|
uint8_t to; ///< Node address of the recipient
|
|
uint8_t from; ///< Node address of the sender
|
|
uint8_t id; ///< Message sequence number
|
|
uint8_t flags; ///< Message flags
|
|
uint8_t payload[RH_TCP_MAX_MESSAGE_LEN]; ///< 0 or more, length deduced from length above
|
|
} RHTcpPacket;
|
|
|
|
#pragma pack(pop)
|
|
|
|
#endif
|