GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> CTDB / V5-5-6 > ctdb_bc_test_sumt / rad750
#include <CTDB/CO1553_bc.h>
#include <PBS/TOC.h>
#include <PBS/TASK.h>
#include <MSG/MSG_pubdefs.h>
Classes | |
struct | _SUMT_BC_Bus_Cmd |
struct | _SUMT_BC_Bus_Frame |
struct | _SUMT_BC_Bus_Config |
struct | _SUMT_BC_Pkt_Config |
struct | _SUMT_BC_Task_Config |
Defines | |
#define | SUMT_BC_NUM_BUS_CMD 32 |
#define | SUMT_BC_NUM_BUS_FRAME 5 |
Typedefs | |
typedef struct _SUMT_BC | SUMT_BC |
typedef enum _SUMT_BC_Subaddr | SUMT_BC_Subaddr |
typedef enum _SUMT_BC_Bus_Flags | SUMT_BC_Bus_Flags |
typedef struct _SUMT_BC_Bus_Cmd | SUMT_BC_Bus_Cmd |
typedef struct _SUMT_BC_Bus_Frame | SUMT_BC_Bus_Frame |
typedef struct _SUMT_BC_Bus_Config | SUMT_BC_Bus_Config |
typedef struct _SUMT_BC_Pkt_Config | SUMT_BC_Pkt_Config |
typedef struct _SUMT_BC_Task_Config | SUMT_BC_Task_Config |
typedef void | SUMT_BC_Pkt_Free (void *pkt, void *arg) |
Enumerations | |
enum | _SUMT_BC_Subaddr { SUMT_BC_SUBADDR_CMD_RX = 0x0001, SUMT_BC_SUBADDR_CMD_TX = 0x0002, SUMT_BC_SUBADDR_TELEM_DATA = 0x0004, SUMT_BC_SUBADDR_TELEM_END = 0x0008 } |
enum | _SUMT_BC_Bus_Flags { SUMT_BC_BUS_FLAG_SKIP = 0x0001, SUMT_BC_BUS_FLAG_BCAST = 0x0002 } |
enum | _SUMT_BC_Bus_Side { SUMT_BC_BUS_SIDE_A = 0, SUMT_BC_BUS_SIDE_B = 1 } |
Functions | |
Device Control Functions | |
unsigned int | SUMT_bcSizeof (void) |
Get the size of a bus controller driver descriptor. | |
SUMT_BC * | SUMT_bcGet (void) |
Get a pointer to the bus controller driver static descriptor. | |
unsigned int | SUMT_bcInit (SUMT_BC *bc, const SUMT_BC_Bus_Config *busConfig, const SUMT_BC_Pkt_Config *pktConfig, const SUMT_BC_Task_Config *taskConfig) |
Intialize a bus controller driver and 1553 device hardware. | |
unsigned int | SUMT_bcStart (SUMT_BC *bc) |
Start the bus controller processing 1553 bus commands. | |
unsigned int | SUMT_bcStop (SUMT_BC *bc) |
unsigned int | SUMT_bcExit (SUMT_BC *bc) |
Shutdown a bus controller driver and 1553 device hardware. | |
Packet Queue Functions | |
unsigned int | SUMT_bcPktTelemRecv (SUMT_BC *bc, void **pkt, const TOC *timeout) |
Receive a CCSDS telemetry packet. | |
unsigned int | SUMT_bcPktTelemFree (SUMT_BC *bc, void *pkt) |
Free a CCSDS telemtry packet. | |
unsigned int | SUMT_bcPktCmdTxRecv (SUMT_BC *bc, void **pkt, const TOC *timeout) |
Receive a CCSDS telecommand transmit packet. | |
unsigned int | SUMT_bcPktCmdTxFree (SUMT_BC *bc, void *pkt) |
Free a CCSDS telecommand transmit packet. | |
unsigned int | SUMT_bcPktCmdRxSend (SUMT_BC *bc, void *pkt, SUMT_BC_Pkt_Free *freeHandler, void *freeArg, const TOC *timeout) |
Send a CCSDS telecommand receive packet. | |
Variables | |
enum _SUMT_BC_Bus_Side | SUMT_BC_Bus_Side |
This driver provides a 1553 bus controller interface through a UTMC Summit controller device. The user is provided function to initialize, control, and transfer data on the 1553 bus. The interface for sending data is through CCSDS packet queues.
The driver recognizes a set of subaddress types. Each type can transfer one packet. The recognized subaddress types are shown below,
Subaddress | Direction | Description |
Command Receive (CmdRx) | Receive (BC->RT) | Telecommand input |
Command Transmit(CmdTx) | Transmit (RT->BC) | Telecommand output |
Telemetry (Telem) | Transmit (RT->BC) | Low rate telemetry
|
Each subaddress is provided with queues and callback mechanisms to transfer packets to and from the 1553 bus controller.
The Summit BC drivers are supported for different target boards.
Library | Board | Tags |
libsumt_bc_pmc1553.o | Alphi PMC-1553B | mv2304 mcp750 |
libsumt_bc_sib.o | LAT SIB | rad750 mcp750
|
LAT SIB Board
The Summit driver for the LAT SIB board assumes that the PCI configuration header of the board has been setup by the PCI autoconfig process or something similar. The driver will obtain the PCI MEM address from the SIB/sib constituent function SIB_queury(). The driver will invoke pciIntConnect() to setup the interrupt handler based.
Alphi PMC-1553B Board
The Summit driver for the PMC1553 board assumes that the PCI configuration header of the board has been setup by the PCI autoconfig process or something similar. The driver will obtain the PCI MEM addresses from the config Base Address registers #0, #1, and #3. The driver will call sysPciToLocalAdrs() to map the BAR values into local address space. The driver will invoke pciIntConnect() to setup the interrupt handler based on the value contained in the config Interrupt Line register.
Driver Memory Usage
The Summit driver requires a small amount of memory for internal data objects. The primary memory requirements, however, derive from the packet queue buffers. The Summit remote terminal driver memory requirements are summarized below:
Driver data structures | < 1 KB |
Telecommand packet input queue | queue size * 72 bytes |
Telecommand packet output queue | queue size * 24 bytes |
Telemetry packet input queue | queue size * 850 bytes |
Telemetry block buffer | 960 bytes |
BC event service task Stack | 8192 bytes |
BC event service task queue | 1792 bytes
|
#define SUMT_BC_NUM_BUS_CMD 32 |
The maximum number of bus commands supported by the SUMT_BC_Bus_Config configuration structure. This is the number of commands for a 40 msec bus frame.
#define SUMT_BC_NUM_BUS_FRAME 5 |
The number 40 msec bus frames in each bus frame cycle.
An interrupt mode driver bus controller descriptor. The driver interface functions will take a pointer to an instance of one of these structures as a parameter.
The typedef for _SUMT_BC_Bus_Cmd.
The typedef for _SUMT_BC_Bus_Config.
The typedef for _SUMT_BC_Bus_Flags.
The typedef for _SUMT_BC_Bus_Frame.
The typedef for _SUMT_BC_Pkt_Config.
The definition of a packet buffer memory free callback function. These callbacks are employeed when users are sending packets on a transmit queue. The packet memory is borrowed while the packet is on the queue. When the packet contents have been transmitted, the free handler is called with a user supplied argument.
void SUMT_BC_Pkt_Free(void *pkt, void *arg)
pkt | A pointer to the packet buffer to release. | |
arg | The user defined argument. |
The typedef for _SUMT_BC_Subaddr.
The typedef for _SUMT_BC_Task_Config.
enum _SUMT_BC_Bus_Flags |
Configuration bitmask values for the flags member of SUMT_BC_Bus_Cmd.
enum _SUMT_BC_Bus_Side |
enum _SUMT_BC_Subaddr |
unsigned int SUMT_bcStart | ( | SUMT_BC * | bc | ) |
Start the bus controller processing 1553 bus commands.
Stop the bus controller processing 1553 bus commands.
The typedef for _SUMT_BC_Bus_Side.