TEMU  4.4
The Terma Emulator
Spacewire.h
Go to the documentation of this file.
1 //===------------------------------------------------------------*- C++ -*-===////
2 // TEMU: The Terma Emulator
3 // (c) Terma 2016
4 // Authors: Alberto Ferrazzi <albf (at) terma.com>
5 // Mattias Holm <maho (at) terma.com>
6 //
7 //===----------------------------------------------------------------------===//
8 
9 /*!
10  This is the spacewire device modelling API. It provides an interface
11  to be used for implementing routers, spacewire controllers and
12  devices.
13 
14  The spacewire device interface is EXPERIMENTAL at the moment.
15  */
16 
17 #ifndef TEMU_SPACEWIRE_H
18 #define TEMU_SPACEWIRE_H
19 
20 
21 #include "temu-c/Support/Objsys.h"
22 #include "temu-c/Support/Buffer.h"
23 
24 #include <assert.h>
25 #include <stdbool.h>
26 #include <stdint.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 
33 typedef enum {
34  teSMT_Data = 1, // Normal data packet
35  teSMT_Err = 2, // EEP packet marker
36  teSMT_Time = 3, // Time code
37 } temu_SpwPacketType;
38 
39 
40 typedef struct temu_SpwPacket {
41  temu_SpwPacketType MsgType;
43 
44  // Store Rmap crc fast value.
45  // Bit 1 signal an RMAP crc error in header.
46  // Bit 2 signal an RMAP crc error in data.
47  uint8_t Flags;
48 } temu_SpwPacket;
49 
50 #define TEMU_SPW_FLAG_RMAP_HCRC_ERROR 0x01
51 #define TEMU_SPW_FLAG_RMAP_DCRC_ERROR 0x02
52 
53 #define TEMU_SPW_PORT_IFACE_TYPE "SpwPortIface"
54 
55 typedef struct temu_SpwPortIface temu_SpwPortIface;
56 TEMU_IFACE_REFERENCE_TYPE(temu_SpwPort);
57 
58 // Space wire link states.
59 typedef enum {
66 } temu_SpwLinkState;
67 
68 /*!
69  * SpaceWire port interface.
70  * A model must implement this interface for each SpaceWire port.
71  */
73  /*!
74  * Implement to receive and handle the SpaceWire packet.
75  * This will be called by the model on the other end that sends or
76  * forwards the packet.
77  */
78  void (*receive)(void *Device, void *Sender, temu_SpwPacket *Pkt);
79 
80  /*!
81  * The other end device (A) uses this to inform this device (B) about
82  * its (A) change of link state.
83  */
84  void (*signalLinkStateChange)(void* Device, temu_SpwLinkState LinkState);
85 
86  /*!
87  * Should return the link state of the device.
88  * Called by the other end device to handle connection.
89  */
90  temu_SpwLinkState (*getOtherSideLinkState)(void* Device);
91 
92  /*!
93  * Connect a device to this port.
94  */
95  void (*connect)(void *Device, temu_SpwPortIfaceRef Dest);
96 
97  /*!
98  * Disconnects the device currently connected to this port.
99  */
100  void (*disconnect)(void *Device);
101 
102  /**
103  * Return the amount of time required to send a packet through the port,
104  * in nano seconds.
105  */
106  uint64_t (*timeToSendPacketNs)(void* Device, uint64_t PacketLength);
107 };
108 
109 /*!
110  * Connect two SpaceWire ports.
111  */
112 static inline void
113 temu_spwConnect(temu_SpwPortIfaceRef Dev1PortIface,
114  temu_SpwPortIfaceRef Dev2PortIface)
115 {
116  Dev1PortIface.Iface->connect(Dev1PortIface.Obj, Dev2PortIface);
117  Dev2PortIface.Iface->connect(Dev2PortIface.Obj, Dev1PortIface);
118 }
119 
120 
121 /*!
122  * Disconnect two SpaceWire ports.
123  */
124 static inline void
125 temu_spwDisconnect(temu_SpwPortIfaceRef Dev1PortIface,
126  temu_SpwPortIfaceRef Dev2PortIface)
127 {
128  Dev1PortIface.Iface->disconnect(Dev1PortIface.Obj);
129  Dev2PortIface.Iface->disconnect(Dev2PortIface.Obj);
130 }
131 
132 /*!
133  * Initialize the link state.
134  */
135 void temu_spwLsmInit(temu_SpwLinkState *StatePtr);
136 
137 /*!
138  * Updates the link state.
139  */
140 uint8_t temu_spwLsmUpdate(temu_SpwLinkState *StatePtr, uint8_t AS,
141  uint8_t LS, uint8_t LD, uint8_t PortConnect,
142  temu_SpwLinkState otherSideLinkState);
143 
144 /*!
145  * Returns the string name for the link state.
146  */
147 const char * temu_spwLinkStateToStr(uint8_t linkState);
148 
149 #define TEMU_SPW_BITS_PER_DATA_CHAR 10
150 #define TEMU_SPW_BITS_PER_CTRL_CHAR 4
151 #define TEMU_SPW_EOP_BITS TEMU_SPW_BITS_PER_CTRL_CHAR
152 #define TEMU_SPW_FCT_BITS TEMU_SPW_BITS_PER_CTRL_CHAR
153 #define TEMU_SPW_EEP_BITS TEMU_SPW_BITS_PER_CTRL_CHAR
154 #define TEMU_SPW_ESC_BITS TEMU_SPW_BITS_PER_CTRL_CHAR
155 
156 static inline uint64_t
157 temu_spwBitsForData(uint64_t Bytes)
158 {
160 }
161 
162 // Standard protocol IDs
163 #define TEMU_SPW_PROT_EXT 0
164 #define TEMU_SPW_PROT_RMAP 1
165 #define TEMU_SPW_PROT_CCSDSPKT 2
166 #define TEMU_SPW_PROT_GOES_R 238
167 #define TEMU_SPW_PROT_STUP 239
168 
169 // Logical addresses
170 #define TEMU_SPW_LOGICAL_ADDRESS_DEFAULT 0xfe
171 
172 typedef struct {
174  uint8_t ProtocolId;
175  uint8_t Instruction;
176  uint8_t Key;
177  uint8_t ReplyAddresses[12];
180  uint16_t TransactionId;
181  uint64_t Address;
182  uint32_t DataLength;
183 } temu_SpwRmapDecodedCommandHeader;
184 
185 typedef struct {
187  uint8_t ProtocolId;
188  uint8_t Instruction;
189  uint8_t Status;
191  uint16_t TransactionId;
192  uint32_t DataLength;
193 } temu_SpwRmapDecodedReadReplyHeader;
194 
195 typedef struct {
197  uint8_t ProtocolId;
198  uint8_t Instruction;
199  uint8_t Status;
201  uint16_t TransactionId;
202 } temu_SpwRmapDecodedWriteReplyHeader;
203 
204 typedef enum {
208 } temu_SpwRmapPacketType;
209 
210 typedef enum {
214 } temu_SpwRmapCommandType;
215 
216 typedef struct {
217  temu_SpwRmapDecodedCommandHeader Header;
218 } temu_SpwRmapReadCmdPacket;
219 
220 typedef struct {
221  temu_SpwRmapDecodedCommandHeader Header;
222  /// Pointer to the first data char.
223  const uint8_t *Data;
224  /// The amount of data available.
226  /// Data crc. Valid only if AvailableDataLength > Header.DataLength.
227  uint8_t DataCrc;
228 } temu_SpwRmapWriteCmdPacket;
229 
230 typedef struct {
231  temu_SpwRmapDecodedCommandHeader Header;
232  /// Size of the access.
233  uint8_t AccessSize;
234  /// Pointer to the first data char.
235  const uint8_t *Data;
236  /// Pointer to the first mask char.
237  const uint8_t *Mask;
238  /// The amount of data available.
240  /// Data crc. Valid only if AvailableDataLength > Header.DataLength.
241  uint8_t DataCrc;
242 } temu_SpwRmapRmwCmdPacket;
243 
244 typedef struct {
245  const uint8_t *Data;
246  uint32_t Length;
247  uint32_t Crc;
248 } temu_SpwRmapRawHeader;
249 
250 typedef struct {
251  temu_SpwRmapDecodedReadReplyHeader Header;
252  /// Pointer to the first data char.
253  const uint8_t *Data;
254  /// The amount of data available.
256  /// Data crc. Valid only if AvailableDataLength > Header.DataLength.
257  uint8_t DataCrc;
258 } temu_SpwRmapDecodedReadReply;
259 
260 typedef struct {
261  temu_SpwRmapDecodedWriteReplyHeader Header;
262 } temu_SpwRmapDecodedWriteReply;
263 
264 typedef struct {
265  temu_SpwRmapDecodedReadReplyHeader Header;
266  /// Pointer to the first data char.
267  const uint8_t *Data;
268  /// The amount of data available.
270  /// Data crc. Valid only if AvailableDataLength > Header.DataLength.
271  uint8_t DataCrc;
272 } temu_SpwRmapDecodedRmwReply;
273 
274 typedef enum {
282 } temu_SpwRmapDecodedPacketType;
283 
284 typedef struct {
285  temu_SpwRmapCommandType CmdType;
286  uint8_t Value;
287  uint8_t Write : 1;
288  uint8_t Verify : 1;
289  uint8_t Ack : 1;
290  uint8_t Inc : 1;
291 } temu_SpwRmapDecodedCmdField;
292 
293 typedef struct {
294  /// Total size of the packet received.
295  uint32_t TotalSize;
296  /// The packet type as identified by bits [7,6] in instruction.
297  temu_SpwRmapPacketType PacketType;
298  /// The command field, bits [5,4,3,2] in instruction.
299  temu_SpwRmapDecodedCmdField CmdField;
300  /// Raw header data access.
301  temu_SpwRmapRawHeader RawHeader;
302 
303  // Decoded packet.
304  temu_SpwRmapDecodedPacketType DecodedPacketType;
305  union {
306  temu_SpwRmapReadCmdPacket ReadCmd;
307  temu_SpwRmapWriteCmdPacket WriteCmd;
308  temu_SpwRmapRmwCmdPacket RmwCmd;
309  temu_SpwRmapDecodedReadReply ReadReply;
310  temu_SpwRmapDecodedWriteReply WriteReply;
311  temu_SpwRmapDecodedRmwReply RmwReply;
312  };
313 } temu_SpwRmapDecodedPacket;
314 
315 typedef enum {
319 } temu_SpwRmapDecodingOutcome;
320 
321 /*!
322  * Provided a SpaceWire Rmap packet attempts to decode it.
323  */
324 temu_SpwRmapDecodingOutcome
326  temu_SpwRmapDecodedPacket *PktDecoded);
327 /*!
328  * Provided a buffer containing a SpaceWire Rmap packet attempts to decode it.
329  */
330 temu_SpwRmapDecodingOutcome
331 temu_spwRmapDecodeBuffer(const temu_Buff *PktDataBuffer,
332  temu_SpwRmapDecodedPacket *PktDecoded);
333 
334 /*!
335  * Returns the total packet-size required to reply to the command.
336  */
337 uint32_t
338 temu_spwRmapHeaderReplySize(const temu_SpwRmapDecodedPacket *DCmdPkt);
339 
340 /*!
341  * Encodes the reply for a read command.
342  */
343 uint32_t
345  const temu_SpwRmapDecodedPacket *DCmdPkt,
346  uint8_t *Data, uint32_t AllocatedDataSize,
347  uint8_t Status,
348  uint32_t DataLength);
349 
350 /*!
351  * Encodes the reply for a rmw command.
352  */
353 uint32_t
355  const temu_SpwRmapDecodedPacket *DCmdPkt,
356  uint8_t *Data, uint32_t AllocatedDataSize,
357  uint8_t Status,
358  uint32_t DataLength);
359 
360 /*!
361  * Encodes the reply for a write command.
362  */
363 uint32_t
365  const temu_SpwRmapDecodedPacket *DCmdPkt,
366  uint8_t *Data, uint32_t AllocatedDataSize,
367  uint8_t Status);
368 
369 /*!
370  * Provided the previous calculated crc and a the current byte
371  * returns the next CRC value.
372  */
373 uint8_t
374 temu_spwRmapCRCNextCode(uint8_t InCRC, uint8_t InByte);
375 
376 /*!
377  * Calculates the CRC over the specified data.
378  */
379 uint8_t
380 temu_spwRmapCRC(const uint8_t *Data, uint32_t DataSize);
381 
382 #define TEMU_SPW_RMAP_INST_CMD 0x40;
383 #define TEMU_SPW_RMAP_INST_WRITE 0x20;
384 #define TEMU_SPW_RMAP_INST_VERIFY 0x10;
385 #define TEMU_SPW_RMAP_INST_ACK 0x8;
386 #define TEMU_SPW_RMAP_INST_INC 0x4;
387 
388 #ifdef __cplusplus
389 }
390 #endif
391 
392 #endif /* ! TEMU_MIL_STD_1553_H */
temu_SpwRmapWriteCmdPacket::Header
temu_SpwRmapDecodedCommandHeader Header
Definition: Spacewire.h:221
TEMU_SPW_BITS_PER_DATA_CHAR
#define TEMU_SPW_BITS_PER_DATA_CHAR
Definition: Spacewire.h:149
temu_spwRmapEncodeRmwHeaderForPacket
uint32_t temu_spwRmapEncodeRmwHeaderForPacket(const temu_SpwRmapDecodedPacket *DCmdPkt, uint8_t *Data, uint32_t AllocatedDataSize, uint8_t Status, uint32_t DataLength)
temu_SpwRmapDecodedWriteReplyHeader::ProtocolId
uint8_t ProtocolId
Definition: Spacewire.h:197
temu_SpwRmapDecodedCommandHeader::TargetLogicalAddr
uint8_t TargetLogicalAddr
Definition: Spacewire.h:173
TEMU_SPW_EOP_BITS
#define TEMU_SPW_EOP_BITS
Definition: Spacewire.h:151
teSPWRMAPPT_Response
@ teSPWRMAPPT_Response
Definition: Spacewire.h:205
teSPWRMAPCT_Read
@ teSPWRMAPCT_Read
Definition: Spacewire.h:211
temu_SpwRmapDecodedPacket::TotalSize
uint32_t TotalSize
Total size of the packet received.
Definition: Spacewire.h:295
temu_SpwRmapRawHeader::Crc
uint32_t Crc
Definition: Spacewire.h:247
temu_SpwPortIface::receive
void(* receive)(void *Device, void *Sender, temu_SpwPacket *Pkt)
Definition: Spacewire.h:78
temu_SpwRmapRmwCmdPacket::Header
temu_SpwRmapDecodedCommandHeader Header
Definition: Spacewire.h:231
temu_SpwPacket::MsgType
temu_SpwPacketType MsgType
Definition: Spacewire.h:41
temu_SpwRmapDecodedCmdField::Inc
uint8_t Inc
Definition: Spacewire.h:290
teSPWLS_ErrorReset
@ teSPWLS_ErrorReset
Definition: Spacewire.h:60
teSPWRMAPDO_NoError
@ teSPWRMAPDO_NoError
Definition: Spacewire.h:316
temu_SpwRmapDecodedWriteReplyHeader::InitiatorLogicalAddr
uint8_t InitiatorLogicalAddr
Definition: Spacewire.h:196
temu_SpwRmapRmwCmdPacket::DataCrc
uint8_t DataCrc
Data crc. Valid only if AvailableDataLength > Header.DataLength.
Definition: Spacewire.h:241
temu_SpwRmapDecodedCommandHeader::InitiatorLogicalAddr
uint8_t InitiatorLogicalAddr
Definition: Spacewire.h:179
temu_SpwPortIface::connect
void(* connect)(void *Device, temu_SpwPortIfaceRef Dest)
Definition: Spacewire.h:95
teSPWRMAPCT_Write
@ teSPWRMAPCT_Write
Definition: Spacewire.h:212
temu_SpwPacket::Flags
uint8_t Flags
Definition: Spacewire.h:47
temu_SpwRmapDecodedCommandHeader::Key
uint8_t Key
Definition: Spacewire.h:176
teSPWLS_Run
@ teSPWLS_Run
Definition: Spacewire.h:65
temu_SpwRmapDecodedWriteReplyHeader::TransactionId
uint16_t TransactionId
Definition: Spacewire.h:201
temu_spwRmapCRCNextCode
uint8_t temu_spwRmapCRCNextCode(uint8_t InCRC, uint8_t InByte)
temu_SpwRmapDecodedWriteReplyHeader::Status
uint8_t Status
Definition: Spacewire.h:199
teSPWRMAPDP_Invalid
@ teSPWRMAPDP_Invalid
Definition: Spacewire.h:275
temu_spwLsmInit
void temu_spwLsmInit(temu_SpwLinkState *StatePtr)
temu_SpwRmapDecodedCommandHeader::ReplyAddresses
uint8_t ReplyAddresses[12]
Definition: Spacewire.h:177
teSPWRMAPCT_Rmw
@ teSPWRMAPCT_Rmw
Definition: Spacewire.h:213
temu_SpwRmapDecodedPacket::RawHeader
temu_SpwRmapRawHeader RawHeader
Raw header data access.
Definition: Spacewire.h:301
temu_spwRmapEncodeReadReplyHeaderForPacket
uint32_t temu_spwRmapEncodeReadReplyHeaderForPacket(const temu_SpwRmapDecodedPacket *DCmdPkt, uint8_t *Data, uint32_t AllocatedDataSize, uint8_t Status, uint32_t DataLength)
teSPWLS_Ready
@ teSPWLS_Ready
Definition: Spacewire.h:62
temu_SpwRmapRawHeader::Length
uint32_t Length
Definition: Spacewire.h:246
temu_SpwRmapDecodedRmwReply::AvailableDataLength
uint32_t AvailableDataLength
The amount of data available.
Definition: Spacewire.h:269
temu_SpwRmapDecodedReadReplyHeader::ProtocolId
uint8_t ProtocolId
Definition: Spacewire.h:187
temu_SpwPortIface::disconnect
void(* disconnect)(void *Device)
Definition: Spacewire.h:100
temu_spwRmapCRC
uint8_t temu_spwRmapCRC(const uint8_t *Data, uint32_t DataSize)
teSPWRMAPDP_ReadReply
@ teSPWRMAPDP_ReadReply
Definition: Spacewire.h:279
temu_SpwRmapDecodedReadReply::DataCrc
uint8_t DataCrc
Data crc. Valid only if AvailableDataLength > Header.DataLength.
Definition: Spacewire.h:257
temu_SpwRmapDecodedPacket::CmdField
temu_SpwRmapDecodedCmdField CmdField
The command field, bits [5,4,3,2] in instruction.
Definition: Spacewire.h:299
temu_SpwRmapDecodedReadReply::AvailableDataLength
uint32_t AvailableDataLength
The amount of data available.
Definition: Spacewire.h:255
temu_SpwRmapWriteCmdPacket::Data
const uint8_t * Data
Pointer to the first data char.
Definition: Spacewire.h:223
teSPWRMAPDO_HeaderIncomplete
@ teSPWRMAPDO_HeaderIncomplete
Definition: Spacewire.h:317
temu_SpwRmapRmwCmdPacket::Data
const uint8_t * Data
Pointer to the first data char.
Definition: Spacewire.h:235
temu_SpwRmapRmwCmdPacket::AccessSize
uint8_t AccessSize
Size of the access.
Definition: Spacewire.h:233
temu_SpwRmapDecodedReadReplyHeader::InitiatorLogicalAddr
uint8_t InitiatorLogicalAddr
Definition: Spacewire.h:186
temu_SpwRmapDecodedCommandHeader::TransactionId
uint16_t TransactionId
Definition: Spacewire.h:180
temu_spwRmapHeaderReplySize
uint32_t temu_spwRmapHeaderReplySize(const temu_SpwRmapDecodedPacket *DCmdPkt)
temu_SpwRmapDecodedReadReply::Header
temu_SpwRmapDecodedReadReplyHeader Header
Definition: Spacewire.h:251
teSPWRMAPPT_Invalid
@ teSPWRMAPPT_Invalid
Definition: Spacewire.h:207
temu_SpwRmapDecodedReadReplyHeader::TransactionId
uint16_t TransactionId
Definition: Spacewire.h:191
temu_SpwPortIface
struct temu_SpwPortIface temu_SpwPortIface
Definition: Spacewire.h:55
temu_spwRmapDecodeBuffer
temu_SpwRmapDecodingOutcome temu_spwRmapDecodeBuffer(const temu_Buff *PktDataBuffer, temu_SpwRmapDecodedPacket *PktDecoded)
temu_spwRmapDecodePacket
temu_SpwRmapDecodingOutcome temu_spwRmapDecodePacket(const temu_SpwPacket *Pkt, temu_SpwRmapDecodedPacket *PktDecoded)
temu_SpwRmapDecodedWriteReplyHeader::Instruction
uint8_t Instruction
Definition: Spacewire.h:198
temu_SpwRmapRmwCmdPacket::AvailableDataLength
uint32_t AvailableDataLength
The amount of data available.
Definition: Spacewire.h:239
temu_SpwRmapDecodedReadReplyHeader::DataLength
uint32_t DataLength
Definition: Spacewire.h:192
teSPWRMAPDP_RmwReply
@ teSPWRMAPDP_RmwReply
Definition: Spacewire.h:281
teSPWRMAPDP_ReadCmd
@ teSPWRMAPDP_ReadCmd
Definition: Spacewire.h:276
teSPWLS_ErrorWait
@ teSPWLS_ErrorWait
Definition: Spacewire.h:61
temu_SpwRmapDecodedCommandHeader::Address
uint64_t Address
Definition: Spacewire.h:181
temu_SpwRmapDecodedCommandHeader::DataLength
uint32_t DataLength
Definition: Spacewire.h:182
temu_SpwRmapDecodedReadReplyHeader::Status
uint8_t Status
Definition: Spacewire.h:189
temu_SpwRmapDecodedRmwReply::Data
const uint8_t * Data
Pointer to the first data char.
Definition: Spacewire.h:267
teSPWLS_Started
@ teSPWLS_Started
Definition: Spacewire.h:63
temu_SpwRmapDecodedCmdField::Verify
uint8_t Verify
Definition: Spacewire.h:288
temu_SpwPacket
Definition: Spacewire.h:40
teSPWRMAPDP_WriteCmd
@ teSPWRMAPDP_WriteCmd
Definition: Spacewire.h:277
temu_SpwRmapDecodedCommandHeader::ProtocolId
uint8_t ProtocolId
Definition: Spacewire.h:174
temu_SpwPacket::PktData
temu_Buff PktData
Definition: Spacewire.h:42
temu_SpwRmapDecodedCmdField::Value
uint8_t Value
Definition: Spacewire.h:286
TEMU_SPW_BITS_PER_CTRL_CHAR
#define TEMU_SPW_BITS_PER_CTRL_CHAR
Definition: Spacewire.h:150
temu_SpwRmapRmwCmdPacket::Mask
const uint8_t * Mask
Pointer to the first mask char.
Definition: Spacewire.h:237
temu_SpwRmapWriteCmdPacket::DataCrc
uint8_t DataCrc
Data crc. Valid only if AvailableDataLength > Header.DataLength.
Definition: Spacewire.h:227
temu_SpwRmapDecodedReadReply::Data
const uint8_t * Data
Pointer to the first data char.
Definition: Spacewire.h:253
temu_SpwRmapDecodedCmdField::Write
uint8_t Write
Definition: Spacewire.h:287
temu_SpwRmapDecodedCmdField::CmdType
temu_SpwRmapCommandType CmdType
Definition: Spacewire.h:285
temu_SpwRmapWriteCmdPacket::AvailableDataLength
uint32_t AvailableDataLength
The amount of data available.
Definition: Spacewire.h:225
temu_SpwRmapDecodedPacket::PacketType
temu_SpwRmapPacketType PacketType
The packet type as identified by bits [7,6] in instruction.
Definition: Spacewire.h:297
temu_SpwRmapDecodedCommandHeader::Instruction
uint8_t Instruction
Definition: Spacewire.h:175
teSPWLS_Connecting
@ teSPWLS_Connecting
Definition: Spacewire.h:64
temu_SpwRmapDecodedReadReplyHeader::TargetLogicalAddr
uint8_t TargetLogicalAddr
Definition: Spacewire.h:190
teSPWRMAPDP_WriteReply
@ teSPWRMAPDP_WriteReply
Definition: Spacewire.h:280
temu_SpwRmapReadCmdPacket::Header
temu_SpwRmapDecodedCommandHeader Header
Definition: Spacewire.h:217
teSPWRMAPDP_RmwCmd
@ teSPWRMAPDP_RmwCmd
Definition: Spacewire.h:278
temu_spwLsmUpdate
uint8_t temu_spwLsmUpdate(temu_SpwLinkState *StatePtr, uint8_t AS, uint8_t LS, uint8_t LD, uint8_t PortConnect, temu_SpwLinkState otherSideLinkState)
temu_SpwRmapDecodedCommandHeader::ReplyAddressesNum
uint8_t ReplyAddressesNum
Definition: Spacewire.h:178
temu_SpwRmapDecodedWriteReply::Header
temu_SpwRmapDecodedWriteReplyHeader Header
Definition: Spacewire.h:261
temu_SpwRmapDecodedCmdField::Ack
uint8_t Ack
Definition: Spacewire.h:289
temu_SpwRmapDecodedWriteReplyHeader::TargetLogicalAddr
uint8_t TargetLogicalAddr
Definition: Spacewire.h:200
temu_SpwRmapRawHeader::Data
const uint8_t * Data
Definition: Spacewire.h:245
teSMT_Err
@ teSMT_Err
Definition: Spacewire.h:35
teSPWRMAPPT_Command
@ teSPWRMAPPT_Command
Definition: Spacewire.h:206
temu_SpwPortIface::signalLinkStateChange
void(* signalLinkStateChange)(void *Device, temu_SpwLinkState LinkState)
Definition: Spacewire.h:84
teSPWRMAPDO_InvalidPacketType
@ teSPWRMAPDO_InvalidPacketType
Definition: Spacewire.h:318
temu_SpwRmapDecodedRmwReply::Header
temu_SpwRmapDecodedReadReplyHeader Header
Definition: Spacewire.h:265
teSMT_Time
@ teSMT_Time
Definition: Spacewire.h:36
teSMT_Data
@ teSMT_Data
Definition: Spacewire.h:34
temu_spwLinkStateToStr
const char * temu_spwLinkStateToStr(uint8_t linkState)
temu_SpwRmapDecodedRmwReply::DataCrc
uint8_t DataCrc
Data crc. Valid only if AvailableDataLength > Header.DataLength.
Definition: Spacewire.h:271
temu_SpwRmapDecodedReadReplyHeader::Instruction
uint8_t Instruction
Definition: Spacewire.h:188
temu_spwRmapEncodeWriteReplyHeaderForPacket
uint32_t temu_spwRmapEncodeWriteReplyHeaderForPacket(const temu_SpwRmapDecodedPacket *DCmdPkt, uint8_t *Data, uint32_t AllocatedDataSize, uint8_t Status)
temu_SpwRmapDecodedPacket::DecodedPacketType
temu_SpwRmapDecodedPacketType DecodedPacketType
Definition: Spacewire.h:304