GLAST/LAT > DAQ and FSW > FSW > Doxygen Index > ITC / V3-5-2
Constituent: itc     Tag: mv2304
#include "PBS/TASK.h"
#include "CPU_DB/CPU_DB_pubdefs.h"
#include "MSG/MSG_pubdefs.h"
Include dependency graph for ITC_pubdefs.h:
This graph shows which files directly or indirectly include this file:
Data Structures | |
struct | _ITC_CommandCount |
Structure to hold per task command count information. More... | |
struct | _ITC_CommandItem |
Structure to define a command item in a command list. More... | |
struct | _ITC_CommandList |
Structure to define a list of command definitions. More... | |
struct | _ITC_ApidDef |
Structure to define a member of the APID list. More... | |
Defines | |
#define | ITC_L_NODES (8) |
Maximum number of nodes supported. | |
#define | ITC_L_ALLCPUS (6) |
Number of "intelligent" nodes (including spacecraft). | |
#define | ITC_L_LATCPUS (5) |
Number of "intelligent" nodes (not including spacecraft). | |
#define | ITC_K_APPS ( 0) |
Base of application task numbers. | |
#define | ITC_K_LITES (22) |
Base of lightweight task numbers. | |
#define | ITC_K_SVCS (24) |
Base of service task numbers. | |
#define | ITC_L_APPS (22) |
Number of application tasks (maximum). | |
#define | ITC_L_LITES ( 2) |
Number of lightweight tasks (maximum). | |
#define | ITC_L_SVCS ( 8) |
Number of service tasks (maximum). | |
#define | ITC_L_TASKS (ITC_L_APPS + ITC_L_LITES + ITC_L_SVCS) |
Total number of tasks. | |
#define | ITC_K_USERQS (1) |
Base of user queues numbers. | |
#define | ITC_L_USERQS (6) |
Length of user queue numbers. | |
#define | ITC_L_QUEUES (8) |
Maximum number of queues supported per task. | |
#define | ITC_K_DISPS (1) |
Base of dispatch protocol range. | |
#define | ITC_L_DISPS (3) |
Length of dispatch protocol range. | |
#define | ITC_K_PROTS (2) |
Base of hardware protocol range. | |
#define | ITC_L_PROTS (2) |
Length of hardware protocol range. | |
#define | ITC_L_LEVELS (3) |
Maximum number of response levels. | |
#define | ITC_L_CLASSES (2) |
Maximum number of command classes. | |
#define | ITC_L_ACTIONS (2) |
Maximum number of actions a task can perform on a command. | |
Typedefs | |
typedef _ITC_Queue | ITC_Queue |
Typedef/forward reference for struct _ITC_Queue. | |
typedef _ITC_QueueItem | ITC_QueueItem |
Typedef for struct _ITC_QueueItem. | |
typedef _ITC_Task | ITC_Task |
Typedef/forward reference for struct _ITC_Task. | |
typedef enum _ITC_NodeID | ITC_NodeID |
Typedef for enum _ITC_NodeID. | |
typedef enum _ITC_NodeMask | ITC_NodeMask |
Typedef for enum _ITC_NodeMask. | |
typedef enum _ITC_TaskID | ITC_TaskID |
Typedef for enum _ITC_TaskID. | |
typedef enum _ITC_QueueID | ITC_QueueID |
Typedef for enum _ITC_QueueID. | |
typedef enum _ITC_QueueMask | ITC_QueueMask |
Typedef for enum _ITC_QueueMask. | |
typedef enum _ITC_DispID | ITC_DispID |
Typedef for enum _ITC_DispID. | |
typedef enum _ITC_ProtID | ITC_ProtID |
Typedef for enum _ITC_ProtID. | |
typedef enum _ITC_CmdLevel | ITC_CmdLevel |
Typedef for enum _ITC_CmdLevel. | |
typedef enum _ITC_CmdClass | ITC_CmdClass |
Typedef for enum _ITC_CmdClass. | |
typedef enum _ITC_CmdAction | ITC_CmdAction |
Typedef for enum _ITC_CmdAction. | |
typedef void | ITC_cb_Completion (ITC_QueueItem *qitem, unsigned int status, void *prm0, void *prm1, void *prm2, unsigned int tx) |
Signature for an ITC processing completion routine (often a "free"). | |
typedef void * | ITC_cb_Memory (void *prm, unsigned int siz, ITC_cb_Completion **rtn, void **cb0, void **cb1, void **cb2) |
Signature for an ITC memory allocation routine. | |
typedef unsigned int | ITC_cb_Processor (void *prm, const ITC_QueueItem *qitem, void *pay, unsigned int len) |
Signature for an ITC packet processing routine. | |
typedef void | ITC_cb_Meta (void *prm) |
Signature for a user routine called during start/stop operations. | |
typedef _ITC_CommandCount | ITC_CommandCount |
Typedef for struct _ITC_CommandCount. | |
typedef _ITC_CommandItem | ITC_CommandItem |
Typedef for struct _ITC_CommandItem. | |
typedef _ITC_CommandList | ITC_CommandList |
Typedef for struct _ITC_CommandList. | |
typedef _ITC_ApidDef | ITC_ApidDef |
Typedef for struct _ITC_ApidDef. | |
Enumerations | |
enum | _ITC_NodeID { ITC_NID_NONE = -1, ITC_NID_SIU = 0, ITC_NID_EPU0 = 1, ITC_NID_EPU1 = 2, ITC_NID_EPU2 = 3, ITC_NID_EPU3 = 4, ITC_NID_SC = 5, ITC_NID_SDI = 6, ITC_NID_BCST = 7 } |
Enumeration of ITC nodes. More... | |
enum | _ITC_NodeMask { ITC_NIM_SIU = (1 << ITC_NID_SIU ), ITC_NIM_EPU0 = (1 << ITC_NID_EPU0 ), ITC_NIM_EPU1 = (1 << ITC_NID_EPU1 ), ITC_NIM_EPU2 = (1 << ITC_NID_EPU2 ), ITC_NIM_EPU3 = (1 << ITC_NID_EPU3 ), ITC_NIM_SC = (1 << ITC_NID_SC ), ITC_NIM_SDI = (1 << ITC_NID_SDI ), ITC_NIM_BCST = (1 << ITC_NID_BCST ) } |
enum | _ITC_TaskID { ITC_TID_NONE = -1, ITC_TID_ANON = 0, ITC_TID_LCM = CPU_DB_TID_LCM, ITC_TID_LFS = CPU_DB_TID_LFS, ITC_TID_LFS_M = CPU_DB_TID_LFS_M, ITC_TID_LFS_S = CPU_DB_TID_LFS_S, ITC_TID_LHK_M = CPU_DB_TID_LHK_M, ITC_TID_LHK_S = CPU_DB_TID_LHK_S, ITC_TID_LIM = CPU_DB_TID_LIM, ITC_TID_LIM_M = CPU_DB_TID_LIM_M, ITC_TID_LIM_S = CPU_DB_TID_LIM_S, ITC_TID_LSM_M = CPU_DB_TID_LSM_M, ITC_TID_LSM_S = CPU_DB_TID_LSM_S, ITC_TID_LSW = CPU_DB_TID_LSW, ITC_TID_LSW_M = CPU_DB_TID_LSW_M, ITC_TID_LSW_S = CPU_DB_TID_LSW_S, ITC_TID_LCI = CPU_DB_TID_LCI, ITC_TID_LCI_M = CPU_DB_TID_LCI_M, ITC_TID_LCI_S = CPU_DB_TID_LCI_S, ITC_TID_LMC = CPU_DB_TID_LMC, ITC_TID_LPA_M = CPU_DB_TID_LPA_M, ITC_TID_LPA_S = CPU_DB_TID_LPA_S, ITC_TID_LRA = CPU_DB_TID_LRA, ITC_TID_LTC = CPU_DB_TID_LTC, ITC_TID_GRB = CPU_DB_TID_GRB, ITC_TID_ICT = 20, ITC_LID_CRXC = CPU_DB_TID_CRXC, ITC_LID_CRXT = CPU_DB_TID_CRXT, ITC_SID_LRX = CPU_DB_TID_LRX, ITC_SID_LTX0 = CPU_DB_TID_LTX0, ITC_SID_LTX1 = CPU_DB_TID_LTX1, ITC_SID_LTX2 = CPU_DB_TID_LTX2, ITC_SID_LTX3 = CPU_DB_TID_LTX3, ITC_SID_CTX = CPU_DB_TID_CTX, ITC_SID_STX = CPU_DB_TID_STX, ITC_SID_BCST = CPU_DB_TID_BCST } |
Enumeration of task identifiers. More... | |
enum | _ITC_QueueID { ITC_QID_NONE = -1, ITC_QID_METAHI = 0, ITC_QID_SYNC = 1, ITC_QID_CMD_X = 2, ITC_QID_CMD = 3, ITC_QID_CTL_X = 4, ITC_QID_CTL = 5, ITC_QID_BULK = 6, ITC_QID_METALO = 7 } |
Enumeration of queue identifiers. More... | |
enum | _ITC_QueueMask { ITC_QIM_METAHI = (1 << ITC_QID_METAHI ), ITC_QIM_SYNC = (1 << ITC_QID_SYNC ), ITC_QIM_CMD_X = (1 << ITC_QID_CMD_X ), ITC_QIM_CMD = (1 << ITC_QID_CMD ), ITC_QIM_CTL_X = (1 << ITC_QID_CTL_X ), ITC_QIM_CTL = (1 << ITC_QID_CTL ), ITC_QIM_BULK = (1 << ITC_QID_BULK ), ITC_QIM_METALO = (1 << ITC_QID_METALO ), ITC_QIM_USER } |
Enumeration of queues as elements in a mask. More... | |
enum | _ITC_DispID { ITC_DID_NONE = -1, ITC_DID_RAW = 1, ITC_DID_CMD = 2, ITC_DID_APID = 3 } |
Enumeration of dispatch protocols. More... | |
enum | _ITC_ProtID { ITC_PID_NONE = -1, ITC_PID_NOACK = 2, ITC_PID_ACK = 3 } |
Enumeration of hardware protocols (across LCB fabric). More... | |
enum | _ITC_CmdLevel { ITC_LVL_UNKNOWN = -1, ITC_LVL_ALL = 0, ITC_LVL_ERROR = 1, ITC_LVL_NONE = 2 } |
Enumeration of states for spacecraft command acknowledgement. More... | |
enum | _ITC_CmdClass { ITC_CMD_NORMAL = 0, ITC_CMD_BROADCAST = 1 } |
Enumeration of spacecraft command classes. More... | |
enum | _ITC_CmdAction { ITC_ACT_EXECUTE = 0, ITC_ACT_FORWARD = 1 } |
Enumeration of task action types (in response to spacecraft command). More... | |
Functions | |
unsigned int | ITC_addQueue (ITC_Task *task, ITC_QueueID qid) |
Add a queue to a task. | |
unsigned int | ITC_attachApid (ITC_Task *task, ITC_QueueID qid, const ITC_ApidDef *def, void *prm) |
Attach an APID definition to a queue. | |
unsigned int | ITC_attachCmdConfirm (ITC_Task *task, ITC_cb_Memory *rtn, void *prm) |
Attach a command confirmation memory allocator to a task. | |
unsigned int | ITC_attachCommand (ITC_Task *task, ITC_QueueID qid, const ITC_CommandList *lst, void *prm) |
Attach a command list to a queue (only one per queue). | |
unsigned int | ITC_attachMemory (ITC_Task *task, ITC_QueueID qid, ITC_cb_Memory *rtn, void *prm) |
Attach a memory manager description to a queue. | |
unsigned int | ITC_attachRaw (ITC_Task *task, ITC_QueueID qid, ITC_cb_Processor *rtn, void *prm) |
Attach a raw processor to a queue (only one per queue). | |
unsigned int | ITC_bind (ITC_QueueItem *qitem, void *qipay, unsigned int qilen, ITC_NodeID dnid, ITC_TaskID dtid, ITC_QueueID dqid, ITC_DispID did, ITC_ProtID pid, ITC_cb_Completion *rtn, void *prm0, void *prm1, void *prm2) |
Bind a queue item descriptor. | |
void | ITC_complete (const ITC_QueueItem *qitem, unsigned int status) |
Call back the user provided completion routine (often a free). | |
unsigned int | ITC_convertTaskLite (ITC_Task *task) |
Convert a task to a lightweight ITC task. | |
unsigned int | ITC_copyCounts (void *dst, ITC_TaskID tid) |
Copy a command counts block to the provided destination. | |
unsigned int | ITC_createTask (ITC_Task **task, ITC_TaskID tid) |
Create a task level container for queues. | |
unsigned int | ITC_deleteTask (ITC_Task *task) |
Delete a task container. | |
unsigned int | ITC_detachApid (const ITC_ApidDef *def) |
Detach an APID definition from a queue. | |
unsigned int | ITC_detachCmdConfirm (ITC_Task *task) |
Detach a command confirmation memory allocator from a task. | |
unsigned int | ITC_detachCommand (ITC_Task *task, ITC_QueueID qid) |
Detach a command list from a queue. | |
unsigned int | ITC_detachMemory (ITC_Task *task, ITC_QueueID qid) |
Detach a memory control description from a queue. | |
unsigned int | ITC_detachRaw (ITC_Task *task, ITC_QueueID qid) |
Detach a raw processor from a queue. | |
unsigned int | ITC_disableQueues (unsigned int iqm) |
Disable a set of ITC queues. | |
unsigned int | ITC_enableQueues (unsigned int iqm) |
Enable a set of ITC queues. | |
unsigned int | ITC_forward (const ITC_QueueItem *qitem, ITC_NodeID dnid, ITC_TaskID dtid, ITC_QueueID dqid, ITC_DispID did, ITC_ProtID pid) |
Forward a queue item to another destination. | |
ITC_NodeID | ITC_getNodeID (void) |
Return the node ID of the current node. | |
ITC_DispID | ITC_getPacketDispID (const ITC_QueueItem *qitem) |
Return ITC dispatch protocol for given queue item. | |
ITC_NodeID | ITC_getPacketDstNodeID (const ITC_QueueItem *qitem) |
Return destination node ID for given queue item. | |
ITC_QueueID | ITC_getPacketDstQueueID (const ITC_QueueItem *qitem) |
Return destination queue ID for given queue item. | |
ITC_TaskID | ITC_getPacketDstTaskID (const ITC_QueueItem *qitem) |
Return destination task ID for given queue item. | |
unsigned int | ITC_getPacketLen (const ITC_QueueItem *qitem) |
Return payload length for queue item. | |
void * | ITC_getPacketPay (const ITC_QueueItem *qitem) |
Return pointer to packet payload for queue item. | |
ITC_ProtID | ITC_getPacketProtID (const ITC_QueueItem *qitem) |
Return ITC hardware protocol for given queue item. | |
ITC_NodeID | ITC_getPacketSrcNodeID (const ITC_QueueItem *qitem) |
Return source node ID for given queue item. | |
ITC_TaskID | ITC_getPacketSrcTaskID (const ITC_QueueItem *qitem) |
Return source task ID for given queue item. | |
ITC_QueueID | ITC_getQueueID (ITC_Queue *queue) |
Return queue ID for given queue. | |
ITC_Task * | ITC_getTaskHandle (ITC_TaskID tid) |
Return the task handle for a given task ID. | |
ITC_TaskID | ITC_getTaskID (void) |
Return task ID of current task. | |
unsigned int | ITC_initialize (ITC_NodeID nid) |
Initialize the ITC control block. | |
unsigned int | ITC_removeQueue (ITC_Task *task, ITC_QueueID qid) |
Remove a queue from a task. | |
unsigned int | ITC_revertTaskLite (ITC_Task *task) |
Revert a lightweight ITC task to a regular task. | |
void | ITC_rollback (const ITC_QueueItem *qitem, unsigned int status) |
Call back the user provided completion routine (often a free). | |
unsigned int | ITC_send (ITC_QueueItem *qitem) |
Send a queue item to a destination queue. | |
unsigned int | ITC_setCmdConfirm (ITC_TaskID tid, ITC_CmdClass scb, ITC_CmdAction fwd, ITC_CmdLevel new, ITC_CmdLevel *old) |
Set the command confirmation level for a task. | |
unsigned int | ITC_setMsgResponse (ITC_TaskID tid, MSG_Level new) |
Set the message response level of a task. | |
unsigned int | ITC_setNodeID (ITC_NodeID new) |
Set the node ID of the current node. | |
ITC_ProtID | ITC_setPacketProtID (ITC_QueueItem *qitem, ITC_ProtID pid) |
Set the source task ID for the given queue item. | |
unsigned int | ITC_sizeofCounts (void) |
Return size of a command counting structure. | |
unsigned int | ITC_sizeofQueueItem (void) |
return the size of a queue item header (bytes) | |
unsigned int | ITC_startTask (ITC_Task *task, const TASK_attr *attr, ITC_cb_Meta *rtn, void *prm) |
Fork the specified ITC task (non-blocking version). | |
unsigned int | ITC_startTaskW (ITC_Task *task, const TASK_attr *attr, ITC_cb_Meta *rtn, void *prm) |
Fork the specified ITC task (blocking version). | |
unsigned int | ITC_stopTask (ITC_Task *task, ITC_cb_Meta *rtn, void *prm) |
Stop an ITC task. | |
unsigned int | ITC_shutdown (void) |
Shut down the ITC system. |
CVS $Id: ITC_pubdefs.h,v 1.22 2006/05/24 22:57:18 apw Exp $
|
Enumeration of task action types (in response to spacecraft command).
|
|
Enumeration of spacecraft command classes.
|
|
Enumeration of states for spacecraft command acknowledgement.
|
|
Enumeration of dispatch protocols.
|
|
Enumeration of ITC nodes.
|
|
|
|
Enumeration of hardware protocols (across LCB fabric).
|
|
|
Enumeration of queues as elements in a mask.
|
|
Enumeration of task identifiers.
|
|
Add a queue to a task.
|
|
Attach an APID definition to a queue.
|
|
Attach a command confirmation memory allocator to a task.
Any (ITC compliant) memory manager will do, but this memory manager application has the characteristics of "single write/single reader" with all deallocations being done in the exact order of allocations. In other words it's tailor made for a ring buffer. If a ring buffer is used (better yet, a managed ring buffer as provided in the IMM package), a buffer size of 1 kByte with a 256 byte overflow area should suffice (most command confirmations are of order 110-120 bytes (minimum 98, maximum 150), so this is sufficient buffering to hold ~8 command confirmations. |
|
Attach a command list to a queue (only one per queue).
|
|
Attach a memory manager description to a queue.
|
|
Attach a raw processor to a queue (only one per queue).
|
|
Bind a queue item descriptor.
|
|
Call back the user provided completion routine (often a free).
|
|
Convert a task to a lightweight ITC task.
|
|
Copy a command counts block to the provided destination.
|
|
Create a task level container for queues.
|
|
Delete a task container.
|
|
Detach an APID definition from a queue.
|
|
Detach a command confirmation memory allocator from a task.
|
|
Detach a command list from a queue.
|
|
Detach a memory control description from a queue.
|
|
Detach a raw processor from a queue.
|
|
Disable a set of ITC queues.
|
|
Enable a set of ITC queues.
|
|
Forward a queue item to another destination.
|
|
Return the node ID of the current node.
|
|
Return ITC dispatch protocol for given queue item.
|
|
Return destination node ID for given queue item.
|
|
Return destination queue ID for given queue item.
|
|
Return destination task ID for given queue item.
|
|
Return payload length for queue item.
|
|
Return pointer to packet payload for queue item.
|
|
Return ITC hardware protocol for given queue item.
|
|
Return source node ID for given queue item.
|
|
Return source task ID for given queue item.
|
|
Return queue ID for given queue.
|
|
Return the task handle for a given task ID.
|
|
Return task ID of current task.
|
|
Initialize the ITC control block.
|
|
Remove a queue from a task.
|
|
Revert a lightweight ITC task to a regular task.
|
|
Call back the user provided completion routine (often a free).
|
|
Send a queue item to a destination queue.
|
|
Set the command confirmation level for a task.
scb ). The second element of the matrix is whether the task is acting as a forwarding agent (parameter fwd ). Thus the call ITC_setCmdReponse( tid, ITC_CMD_NORMAL, ITC_ACT_FORWARD, ITC_LVL_ERROR, &old ); would mean "for task tid , set the command confirmation level to ITC_LVL_ERROR when forwarding non-broadcast spacecraft commands". |
|
Set the message response level of a task.
|
|
Set the node ID of the current node.
|
|
Set the source task ID for the given queue item.
|
|
Shut down the ITC system.
|
|
Return size of a command counting structure.
|
|
return the size of a queue item header (bytes) ITC_sizeofQueueItem()returns the size of a queue item header (in bytes). |
|
Fork the specified ITC task (non-blocking version).
|
|
Fork the specified ITC task (blocking version).
|
|
Stop an ITC task.
|