|
TEMU
2
The Terma Emulator
|
#include "temu-c/Support/Objsys.h"#include "temu-c/Support/Buffer.h"#include <assert.h>#include <stdbool.h>#include <stdint.h>Go to the source code of this file.
Data Structures | |
| struct | temu_SpwPacket |
| struct | temu_SpwPortIface |
| struct | temu_SpwRmapDecodedCommandHeader |
| struct | temu_SpwRmapDecodedReadReplyHeader |
| struct | temu_SpwRmapDecodedWriteReplyHeader |
| struct | temu_SpwRmapReadCmdPacket |
| struct | temu_SpwRmapWriteCmdPacket |
| struct | temu_SpwRmapRmwCmdPacket |
| struct | temu_SpwRmapRawHeader |
| struct | temu_SpwRmapDecodedReadReply |
| struct | temu_SpwRmapDecodedWriteReply |
| struct | temu_SpwRmapDecodedRmwReply |
| struct | temu_SpwRmapDecodedCmdField |
| struct | temu_SpwRmapDecodedPacket |
Macros | |
| #define | TEMU_SPW_FLAG_RMAP_HCRC_ERROR 0x01 |
| #define | TEMU_SPW_FLAG_RMAP_DCRC_ERROR 0x02 |
| #define | TEMU_SPW_PORT_IFACE_TYPE "SpwPortIface" |
| #define | TEMU_SPW_BITS_PER_DATA_CHAR 10 |
| #define | TEMU_SPW_BITS_PER_CTRL_CHAR 4 |
| #define | TEMU_SPW_EOP_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
| #define | TEMU_SPW_FCT_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
| #define | TEMU_SPW_EEP_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
| #define | TEMU_SPW_ESC_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
| #define | TEMU_SPW_PROT_EXT 0 |
| #define | TEMU_SPW_PROT_RMAP 1 |
| #define | TEMU_SPW_PROT_CCSDSPKT 2 |
| #define | TEMU_SPW_PROT_GOES_R 238 |
| #define | TEMU_SPW_PROT_STUP 239 |
| #define | TEMU_SPW_LOGICAL_ADDRESS_DEFAULT 0xfe |
| #define | TEMU_SPW_RMAP_INST_CMD 0x40; |
| #define | TEMU_SPW_RMAP_INST_WRITE 0x20; |
| #define | TEMU_SPW_RMAP_INST_VERIFY 0x10; |
| #define | TEMU_SPW_RMAP_INST_ACK 0x8; |
| #define | TEMU_SPW_RMAP_INST_INC 0x4; |
Typedefs | |
| typedef struct temu_SpwPacket | temu_SpwPacket |
| typedef struct temu_SpwPortIface | temu_SpwPortIface |
Enumerations | |
| enum | temu_SpwPacketType { teSMT_Data = 1, teSMT_Err = 2, teSMT_Time = 3 } |
| enum | temu_SpwLinkState { teSPWLS_ErrorReset = 0, teSPWLS_ErrorWait = 1, teSPWLS_Ready = 2, teSPWLS_Started = 3, teSPWLS_Connecting = 4, teSPWLS_Run = 5 } |
| enum | temu_SpwRmapPacketType { teSPWRMAPPT_Response = 0, teSPWRMAPPT_Command = 1, teSPWRMAPPT_Invalid = 2 } |
| enum | temu_SpwRmapCommandType { teSPWRMAPCT_Read = 0, teSPWRMAPCT_Write = 1, teSPWRMAPCT_Rmw = 2 } |
| enum | temu_SpwRmapDecodedPacketType { teSPWRMAPDP_Invalid = 0, teSPWRMAPDP_ReadCmd = 1, teSPWRMAPDP_WriteCmd = 2, teSPWRMAPDP_RmwCmd = 3, teSPWRMAPDP_ReadReply = 4, teSPWRMAPDP_WriteReply = 5, teSPWRMAPDP_RmwReply = 6 } |
| enum | temu_SpwRmapDecodingOutcome { teSPWRMAPDO_NoError = 0, teSPWRMAPDO_HeaderIncomplete = 1, teSPWRMAPDO_InvalidPacketType = 2 } |
Functions | |
| TEMU_IFACE_REFERENCE_TYPE (temu_SpwPort) | |
| void | temu_spwLsmInit (temu_SpwLinkState *StatePtr) |
| uint8_t | temu_spwLsmUpdate (temu_SpwLinkState *StatePtr, uint8_t AS, uint8_t LS, uint8_t LD, uint8_t PortConnect, temu_SpwLinkState otherSideLinkState) |
| const char * | temu_spwLinkStateToStr (uint8_t linkState) |
| temu_SpwRmapDecodingOutcome | temu_spwRmapDecodePacket (const temu_SpwPacket *Pkt, temu_SpwRmapDecodedPacket *PktDecoded) |
| temu_SpwRmapDecodingOutcome | temu_spwRmapDecodeBuffer (const temu_Buff *PktDataBuffer, temu_SpwRmapDecodedPacket *PktDecoded) |
| uint32_t | temu_spwRmapHeaderReplySize (const temu_SpwRmapDecodedPacket *DCmdPkt) |
| uint32_t | temu_spwRmapEncodeReadReplyHeaderForPacket (const temu_SpwRmapDecodedPacket *DCmdPkt, uint8_t *Data, uint32_t AllocatedDataSize, uint8_t Status, uint32_t DataLength) |
| uint32_t | temu_spwRmapEncodeRmwHeaderForPacket (const temu_SpwRmapDecodedPacket *DCmdPkt, uint8_t *Data, uint32_t AllocatedDataSize, uint8_t Status, uint32_t DataLength) |
| uint32_t | temu_spwRmapEncodeWriteReplyHeaderForPacket (const temu_SpwRmapDecodedPacket *DCmdPkt, uint8_t *Data, uint32_t AllocatedDataSize, uint8_t Status) |
| uint8_t | temu_spwRmapCRCNextCode (uint8_t InCRC, uint8_t InByte) |
| uint8_t | temu_spwRmapCRC (const uint8_t *Data, uint32_t DataSize) |
| #define TEMU_SPW_BITS_PER_CTRL_CHAR 4 |
Definition at line 150 of file Spacewire.h.
| #define TEMU_SPW_BITS_PER_DATA_CHAR 10 |
Definition at line 149 of file Spacewire.h.
| #define TEMU_SPW_EEP_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
Definition at line 153 of file Spacewire.h.
| #define TEMU_SPW_EOP_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
Definition at line 151 of file Spacewire.h.
| #define TEMU_SPW_ESC_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
Definition at line 154 of file Spacewire.h.
| #define TEMU_SPW_FCT_BITS TEMU_SPW_BITS_PER_CTRL_CHAR |
Definition at line 152 of file Spacewire.h.
| #define TEMU_SPW_FLAG_RMAP_DCRC_ERROR 0x02 |
Definition at line 51 of file Spacewire.h.
| #define TEMU_SPW_FLAG_RMAP_HCRC_ERROR 0x01 |
Definition at line 50 of file Spacewire.h.
| #define TEMU_SPW_LOGICAL_ADDRESS_DEFAULT 0xfe |
Definition at line 170 of file Spacewire.h.
| #define TEMU_SPW_PORT_IFACE_TYPE "SpwPortIface" |
Definition at line 53 of file Spacewire.h.
| #define TEMU_SPW_PROT_CCSDSPKT 2 |
Definition at line 165 of file Spacewire.h.
| #define TEMU_SPW_PROT_EXT 0 |
Definition at line 163 of file Spacewire.h.
| #define TEMU_SPW_PROT_GOES_R 238 |
Definition at line 166 of file Spacewire.h.
| #define TEMU_SPW_PROT_RMAP 1 |
Definition at line 164 of file Spacewire.h.
| #define TEMU_SPW_PROT_STUP 239 |
Definition at line 167 of file Spacewire.h.
| #define TEMU_SPW_RMAP_INST_ACK 0x8; |
Definition at line 385 of file Spacewire.h.
| #define TEMU_SPW_RMAP_INST_CMD 0x40; |
Definition at line 382 of file Spacewire.h.
| #define TEMU_SPW_RMAP_INST_INC 0x4; |
Definition at line 386 of file Spacewire.h.
| #define TEMU_SPW_RMAP_INST_VERIFY 0x10; |
Definition at line 384 of file Spacewire.h.
| #define TEMU_SPW_RMAP_INST_WRITE 0x20; |
Definition at line 383 of file Spacewire.h.
| typedef struct temu_SpwPacket temu_SpwPacket |
| typedef struct temu_SpwPortIface temu_SpwPortIface |
Definition at line 55 of file Spacewire.h.
| enum temu_SpwLinkState |
| Enumerator | |
|---|---|
| teSPWLS_ErrorReset | |
| teSPWLS_ErrorWait | |
| teSPWLS_Ready | |
| teSPWLS_Started | |
| teSPWLS_Connecting | |
| teSPWLS_Run | |
Definition at line 59 of file Spacewire.h.
| enum temu_SpwPacketType |
This is the spacewire device modelling API. It provides an interface to be used for implementing routers, spacewire controllers and devices.
The spacewire device interface is EXPERIMENTAL at the moment.
| Enumerator | |
|---|---|
| teSMT_Data | |
| teSMT_Err | |
| teSMT_Time | |
Definition at line 33 of file Spacewire.h.
| Enumerator | |
|---|---|
| teSPWRMAPCT_Read | |
| teSPWRMAPCT_Write | |
| teSPWRMAPCT_Rmw | |
Definition at line 210 of file Spacewire.h.
| Enumerator | |
|---|---|
| teSPWRMAPDP_Invalid | |
| teSPWRMAPDP_ReadCmd | |
| teSPWRMAPDP_WriteCmd | |
| teSPWRMAPDP_RmwCmd | |
| teSPWRMAPDP_ReadReply | |
| teSPWRMAPDP_WriteReply | |
| teSPWRMAPDP_RmwReply | |
Definition at line 274 of file Spacewire.h.
| Enumerator | |
|---|---|
| teSPWRMAPDO_NoError | |
| teSPWRMAPDO_HeaderIncomplete | |
| teSPWRMAPDO_InvalidPacketType | |
Definition at line 315 of file Spacewire.h.
| Enumerator | |
|---|---|
| teSPWRMAPPT_Response | |
| teSPWRMAPPT_Command | |
| teSPWRMAPPT_Invalid | |
Definition at line 204 of file Spacewire.h.
| TEMU_IFACE_REFERENCE_TYPE | ( | temu_SpwPort | ) |
| const char* temu_spwLinkStateToStr | ( | uint8_t | linkState | ) |
Returns the string name for the link state.
| void temu_spwLsmInit | ( | temu_SpwLinkState * | StatePtr | ) |
Initialize the link state.
| uint8_t temu_spwLsmUpdate | ( | temu_SpwLinkState * | StatePtr, |
| uint8_t | AS, | ||
| uint8_t | LS, | ||
| uint8_t | LD, | ||
| uint8_t | PortConnect, | ||
| temu_SpwLinkState | otherSideLinkState | ||
| ) |
Updates the link state.
| uint8_t temu_spwRmapCRC | ( | const uint8_t * | Data, |
| uint32_t | DataSize | ||
| ) |
Calculates the CRC over the specified data.
| uint8_t temu_spwRmapCRCNextCode | ( | uint8_t | InCRC, |
| uint8_t | InByte | ||
| ) |
Provided the previous calculated crc and a the current byte returns the next CRC value.
| temu_SpwRmapDecodingOutcome temu_spwRmapDecodeBuffer | ( | const temu_Buff * | PktDataBuffer, |
| temu_SpwRmapDecodedPacket * | PktDecoded | ||
| ) |
Provided a buffer containing a SpaceWire Rmap packet attempts to decode it.
| temu_SpwRmapDecodingOutcome temu_spwRmapDecodePacket | ( | const temu_SpwPacket * | Pkt, |
| temu_SpwRmapDecodedPacket * | PktDecoded | ||
| ) |
Provided a SpaceWire Rmap packet attempts to decode it.
| uint32_t temu_spwRmapEncodeReadReplyHeaderForPacket | ( | const temu_SpwRmapDecodedPacket * | DCmdPkt, |
| uint8_t * | Data, | ||
| uint32_t | AllocatedDataSize, | ||
| uint8_t | Status, | ||
| uint32_t | DataLength | ||
| ) |
Encodes the reply for a read command.
| uint32_t temu_spwRmapEncodeRmwHeaderForPacket | ( | const temu_SpwRmapDecodedPacket * | DCmdPkt, |
| uint8_t * | Data, | ||
| uint32_t | AllocatedDataSize, | ||
| uint8_t | Status, | ||
| uint32_t | DataLength | ||
| ) |
Encodes the reply for a rmw command.
| uint32_t temu_spwRmapEncodeWriteReplyHeaderForPacket | ( | const temu_SpwRmapDecodedPacket * | DCmdPkt, |
| uint8_t * | Data, | ||
| uint32_t | AllocatedDataSize, | ||
| uint8_t | Status | ||
| ) |
Encodes the reply for a write command.
| uint32_t temu_spwRmapHeaderReplySize | ( | const temu_SpwRmapDecodedPacket * | DCmdPkt | ) |
Returns the total packet-size required to reply to the command.