GLAST / LAT > DAQ and FSW > FSW > Doxygen Index> CTDB / V5-5-6 > sumt_rt_sib / rad750
#include <vxWorks.h>
#include <wdLib.h>
#include <sysLib.h>
#include <intLib.h>
#include <CTDB/SUMT_rt.h>
#include <CTDB/CO1553_rt.h>
#include <PBS/FPA.h>
#include <PBS/FORK.h>
#include <PBS/WUT.h>
#include <PBS/TOV.h>
#include <MSG/MSG_pubdefs.h>
#include <SUMT_rt_private.h>
#include <SUMT_rt_board.h>
#include <SUMT_private.h>
Functions | |
static WUT_cb_status | SUMT_rtMsgTimeout (SUMT_RT *rt, WUT_tmr *timer) |
void | SUMT_rtIntr (SUMT_RT *rt) |
The driver interrupt handler. | |
void | SUMT_rtMsg (SUMT_RT *rt) |
Process a Summit 1553 bus data message. |
void SUMT_rtIntr | ( | SUMT_RT * | rt | ) |
The driver interrupt handler.
Handles Summit remote terminal device interrupts. The device interrupt status register is read, which clears the interrupt condition on the device side. The interrupt is also cleared at the board level and on the I/O bus. The contents of the interrupt status register are examined to determine which event caused the interrupt.
For telecommand receive and error reports, the response is handled directly here in the interrupt handler. Telecommand receive packets are handled by the CCSDS interface library. Error reports are translated to the appropriate MSG code and signaled.
For telemetry and telecommand transmit events, a descriptor is allocated from the interrupt pool. A status code is saved to the interrupt descriptor indicating that a device event needs servicing. The descriptor is placed on a queue to be handled by SUMT_rtTask() at a later time.
rt | A device descriptor. |
References _SUMT_RT::cmd_rx_data, _SUMT_RT::cmd_rx_desc, _SUMT_RT::cmd_rx_inter, _SUMT_RT::cmd_tx_desc, CO1553_rtCmdRxMsg(), _SUMT_RT_Diag::error_count, _SUMT_RT_Msg::event, _SUMT_RT_Msg::hdr, _SUMT_RT_Diag::intr_count, _SUMT_RT::rt_diag, _SUMT_RT::rt_lock, SUMT_DESC_CONTROL, SUMT_DMAF, SUMT_ILLCMD, SUMT_memCopyIn(), SUMT_MERR, SUMT_REG_COMMAND, SUMT_REG_IRQ_MASK, SUMT_REG_IRQ_PEND, SUMT_REG_STATUS, _SUMT_RT::sumt_regs, SUMT_RT_CTRL_BAC, SUMT_RT_EVENT_SUBADDR, SUMT_RT_SUBADDR_CMD_TX, SUMT_RT_SUBADDR_TELEM_END, SUMT_rtBoardIntrAck(), SUMT_SUBAD, SUMT_WORD_READ, SUMT_WORD_WRITE, SUMT_WRAPF, _SUMT_RT::task_fpa, _SUMT_RT::task_queue, and _SUMT_RT::telem_desc.
Referenced by SUMT_rtBoardIntrConnect(), and SUMT_rtBoardIntrDisconnect().
void SUMT_rtMsg | ( | SUMT_RT * | rt | ) |
Process a Summit 1553 bus data message.
Responds to a Summit device interrupt indicating that a 1553 bus data message has been transferred. The RT descriptor table is polled to find the sub- address, and the appropriate CCSDS interface library function is called to handle the data. The data wrap notification is handled directly here. The CCSDS interface library handles the telemetry and telecommand transmit subaddresses.
rt | A device descriptor. |
References _SUMT_RT::cmd_tx_data, _SUMT_RT::cmd_tx_desc, _SUMT_RT::cmd_tx_inter, _SUMT_RT::cmd_tx_timeout, _SUMT_RT::cmd_tx_timer, CO1553_rtCmdTxMsg(), CO1553_rtTelemMsg(), _SUMT_RT::rt_diag, _SUMT_RT::rt_lock, SUMT_DESC_CONTROL, SUMT_memCopyOut(), SUMT_RT_CTRL_BAC, SUMT_rtMsgTimeout(), SUMT_WORD_READ, SUMT_WORD_WRITE, _SUMT_RT::telem_data, _SUMT_RT::telem_desc, _SUMT_RT::telem_inter, _SUMT_RT::telem_timeout, _SUMT_RT::telem_timer, _SUMT_RT::wrap_rx_desc, and _SUMT_RT::wrap_tx_desc.
Referenced by SUMT_rtTask().
static WUT_cb_status SUMT_rtMsgTimeout | ( | SUMT_RT * | rt, | |
WUT_tmr * | timer | |||
) | [static] |
Handles timeouts for no new messages arriving on a subaddress. An error message is queued.
rt | A device descriptor. | |
timer | The WUT handle for the frame timer. |
References _SUMT_RT_Diag::error_count, _SUMT_RT::rt_diag, and _SUMT_RT::rt_lock.
Referenced by SUMT_rtMsg().