GLAST/LAT > DAQ and FSW > FSW > Doxygen Index > CTDB / V5-4-0

Constituent: vsbc_bc_test_sumt     Tag: mv2304


Interface   Data Structures   File List   Data Fields   Globals  

VSBC_bc.h File Reference

Summit 1553 Bus Controller Driver for VSC. More...

#include "CTDB/CO1553_bc.h"
#include "PBS/TOC.h"
#include "PBS/TASK.h"
#include "MSG/MSG_pubdefs.h"

Include dependency graph for VSBC_bc.h:

Include dependency graph

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Data Structures

struct  _VSBC_BC_Bus_Cmd
struct  _VSBC_BC_Bus_Config
struct  _VSBC_BC_Bus_Frame
struct  _VSBC_BC_Callback_Config
struct  _VSBC_BC_Pkt_Config
struct  _VSBC_BC_Task_Config

Device Control Functions

unsigned int VSBC_bcSizeof (void)
 Get the size of a bus controller driver descriptor.

VSBC_BCVSBC_bcGet (void)
 Get a pointer to the bus controller driver static descriptor.

unsigned int VSBC_bcInit (VSBC_BC *bc, const VSBC_BC_Bus_Config *busConfig, const VSBC_BC_Pkt_Config *pktConfig, const VSBC_BC_Callback_Config *cbConfig, const VSBC_BC_Task_Config *taskConfig)
 Intialize a bus controller driver and 1553 device hardware.

unsigned int VSBC_bcStart (VSBC_BC *bc)
 Start the bus controller processing 1553 bus commands.

unsigned int VSBC_bcStop (VSBC_BC *bc)
unsigned int VSBC_bcExit (VSBC_BC *bc)
 Shutdown a bus controller driver and 1553 device hardware.

unsigned int VSBC_bcSyncCmdSet (VSBC_BC *bc, VSBC_BC_Sync_Cmd_Handler *syncHandler, void *syncArg)
 Change the sync telecommand application callback.

unsigned int VSBC_bcSyncCmdGet (VSBC_BC *bc, VSBC_BC_Sync_Cmd_Handler **syncHandler, void **syncArg)
 Get current sync telecommand application callback information.

unsigned int VSBC_bcBusSwitch (VSBC_BC *bc, VSBC_BC_Bus_Side side)
 Switch primary bus side.


Packet Queue Functions

unsigned int VSBC_bcPktTelemRecv (VSBC_BC *bc, void **pkt, const TOC *timeout)
 Receive a CCSDS telemetry packet.

unsigned int VSBC_bcPktTelemFree (VSBC_BC *bc, void *pkt)
 Free a CCSDS telemtry packet.

unsigned int VSBC_bcPktCmdTxRecv (VSBC_BC *bc, void **pkt, const TOC *timeout)
 Receive a CCSDS telecommand transmit packet.

unsigned int VSBC_bcPktCmdTxFree (VSBC_BC *bc, void *pkt)
 Free a CCSDS telecommand transmit packet.

unsigned int VSBC_bcPktCmdRxSend (VSBC_BC *bc, void *pkt, VSBC_BC_Pkt_Free *freeHandler, void *freeArg, const TOC *timeout)
 Send a CCSDS telecommand receive packet.


Defines

#define VSBC_BC_NUM_BUS_CMD   32
#define VSBC_BC_NUM_BUS_FRAME   25

Typedefs

typedef _VSBC_BC VSBC_BC
typedef enum _VSBC_BC_Subaddr VSBC_BC_Subaddr
typedef enum _VSBC_BC_Bus_Flags VSBC_BC_Bus_Flags
typedef enum _VSBC_BC_Bus_Side VSBC_BC_Bus_Side
typedef _VSBC_BC_Bus_Cmd VSBC_BC_Bus_Cmd
typedef _VSBC_BC_Bus_Frame VSBC_BC_Bus_Frame
typedef _VSBC_BC_Bus_Config VSBC_BC_Bus_Config
typedef _VSBC_BC_Pkt_Config VSBC_BC_Pkt_Config
typedef _VSBC_BC_Task_Config VSBC_BC_Task_Config
typedef void VSBC_BC_Pkt_Free (void *pkt, void *arg)
typedef unsigned int VSBC_BC_Sync_Cmd_Handler (VSBC_BC_Subaddr subAddr, void *buf, void *arg)
typedef _VSBC_BC_Callback_Config VSBC_BC_Callback_Config

Enumerations

enum  _VSBC_BC_Subaddr {
  VSBC_BC_SUBADDR_CMD_RX = 0x0001,
  VSBC_BC_SUBADDR_CMD_TX = 0x0002,
  VSBC_BC_SUBADDR_TELEM_DATA = 0x0004,
  VSBC_BC_SUBADDR_TELEM_END = 0x0008,
  VSBC_BC_SUBADDR_CMD_TT = 0x0010,
  VSBC_BC_SUBADDR_CMD_ANC = 0x0020,
  VSBC_BC_SUBADDR_CMD_ATT = 0x0040
}
enum  _VSBC_BC_Bus_Flags {
  VSBC_BC_BUS_FLAG_SKIP = 0x0001,
  VSBC_BC_BUS_FLAG_BCAST = 0x0002
}
enum  _VSBC_BC_Bus_Side {
  VSBC_BC_BUS_SIDE_A = 0,
  VSBC_BC_BUS_SIDE_B = 1
}

Detailed Description

Summit 1553 Bus Controller Driver for VSC.

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 type of packet in one direction. 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.

In addition, the VSBC driver support synchronous delivery of SC broadcast telecommands through user callbacks. The driver treats these reserved telecommand slots as special subaddresses:

Subaddress Direction Description
SC Time Tone (CmdTT) Receive (BC->RT) SITIMETONE telecommands
SC Ancillary Data (CmdAnc)Receive (BC->RT) SIANCILLARY telecommands
SC Attitude Data (CmdAtt) Receive (BC->RT) SIATTITUDE telecommands

The callbacks allow the application to synchronize to the bus schedule.

The Summit BC drivers are supported for different target boards.

Library Board Tags
libvsbc_bc_pmc1553.o Alphi PMC-1553B mv2304 mcp750

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
Telecommand block buffer 128 bytes
BC event service task Stack user parameter


Define Documentation

#define VSBC_BC_NUM_BUS_CMD   32
 

The maximum number of bus commands supported by the #_CO1553_BC_CONFIG configuration structure. This is the number of commands for a 40 msec bus frame.

#define VSBC_BC_NUM_BUS_FRAME   25
 

The number 40 msec bus frames in each bus frame cycle.


Typedef Documentation

VSBC_BC
 

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.

VSBC_BC_Bus_Cmd
 

The typedef for _VSBC_BC_Bus_Cmd.

VSBC_BC_Bus_Config
 

The typedef for _VSBC_BC_Bus_Config.

VSBC_BC_Bus_Flags
 

Configuration bitmask values for the flags member of #_CO1553_BC_Bus_Cmd.

VSBC_BC_Bus_Frame
 

The typedef for #_CO1553_BC_Bus_Frame.

VSBC_BC_Bus_Side
 

The typedef for _VSBC_BC_Bus_Side.

VSBC_BC_Callback_Config
 

The typedef for _VSBC_BC_Callback_Config.

VSBC_BC_Pkt_Config
 

The typedef for _VSBC_BC_Pkt_Config.

VSBC_BC_Pkt_Free
 

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 VSBC_BC_Pkt_Free(void *pkt, void *arg)

Parameters:
pkt A pointer to the packet buffer to release.
arg The user defined argument.

VSBC_BC_Subaddr
 

The typedef for _VSBC_BC_Subaddr.

VSBC_BC_Sync_Cmd_Handler
 

This callback is invoked by the VSBC driver when the upcomming telecommand slot is marked as reserved for SITIMETONE, SIANCILLARY, or SIATTITUDE synchronous SC commands. The user should copy the telecommand packet, with properly formatted CCSDS header, into the buf memory.

        unsigned int VSBC_BC_Sync_Cmd_Handler(VSBC_BC_Subaddr subAddr, void *buf, void *arg)

Parameters:
subAddr A value indicating which type of synchronous command is requested.
buf A driver buffer to accept the telecommand packet contents.
arg A user supplied argument.
Returns:
CTDB_SUCCESS if successful; other code if telecommand packet not inserted.

VSBC_BC_Task_Config
 

The typedef for _VSBC_BC_Task_Config.


Enumeration Type Documentation

enum _VSBC_BC_Bus_Flags
 

Enumeration values:
VSBC_BC_BUS_FLAG_SKIP  The bus command slot is to be skipped, but with delay.
VSBC_BC_BUS_FLAG_BCAST  The bus command should be broadcast.

enum _VSBC_BC_Bus_Side
 

Codes to indicate 1553 bus side A or B as primary.

Enumeration values:
VSBC_BC_BUS_SIDE_B  Use the A side as the primary bus.

enum _VSBC_BC_Subaddr
 

Subaddress ID values.

Enumeration values:
VSBC_BC_SUBADDR_CMD_RX  Input telecommands, queued.
VSBC_BC_SUBADDR_CMD_TX  Output telecommands.
VSBC_BC_SUBADDR_TELEM_DATA  The low-rate telemetry subaddress data (Tx).
VSBC_BC_SUBADDR_TELEM_END  The low-rate telemetry subaddress completion (Rx).
VSBC_BC_SUBADDR_CMD_TT  Synchronous SITIMETONE telecommands.
VSBC_BC_SUBADDR_CMD_ANC  Synchronous SIANCILLARY telecommands.
VSBC_BC_SUBADDR_CMD_ATT  Synchronous SIATTITUDE telecommands.


Generated on Sun Jul 17 01:12:37 2005 by doxygen 1.3.3