ACIS Software Detailed Design Specification
MIT Center for Space Research
Table of Contents
ACIS Science Instrument Software Detailed Design Specification (CodeTo)
1.0 Introduction (36-53201 01)
1.1 Purpose
1.2 Scope
1.3 References
2.0 Assumptions and Conventions
2.1 Audience
2.2 Portability
2.3 Implementation Language
2.4 Compiler Selection
2.5 Graphic Notation
2.6 Typographic and Naming Conventions
2.6.1 Class Category Names
2.6.2 Class Names
2.6.3 Function Names
2.6.4 Variable Names
2.6.5 Enumeration Tags
2.6.6 Preprocessor Definitions
2.6.7 Directory and File Names
2.7 Global Data Types
2.7.1 Bit and Byte Ordering
2.7.2 Integer, Pointer and Enumeration Data Types
2.7.3 Boolean Data Type
2.8 Global Units
2.8.1 ACIS Timestamp Units
2.8.2 Timer Tick Units
2.9 In-line Assembler
2.10 Nomenclature
2.10.1 Classes and Objects
2.10.2 Class Instance Lifetimes
2.10.3 Class and Function Concurrency
3.0 Architecture (36-53203 01+)
3.1 Purpose
3.2 Overall Approach
3.3 BEP Class Categories and Category Relationships
3.4 BEP Global System Objects
3.5 FEP Software Architecture
3.6 Functional Overview
3.6.1 Command Reception and Execution
3.6.2 Telemetry Production
3.6.3 Memory Dumps
3.6.4 Software Housekeeping
3.6.5 DEA Housekeeping
3.6.6 Science Runs
4.0 Interfaces (36-53204 02-)
4.1 R3000 Core Processor Interfaces
4.1.1 Instruction Set
4.1.2 System Co-processor (C0)
4.1.2.1 Status Register (C0_SR)
4.1.2.2 Cause Register (C0_CAUSE)
4.1.2.3 Exception Program Counter (C0_EPC)
4.1.2.4 Bad Virtual Address Register (C0_BVADDR)
4.2 Mongoose Hardware Interface
4.2.1 Microboot Control Word (0xbffffffc)
4.2.2 Command/Status Interface (CSI) Registers (0xb4c00000)
4.2.3 Configuration Register
4.2.4 Instruction Cache Access
4.2.5 Extended Interrupts
4.2.5.1 Extended Mask Register
4.2.5.2 Extended Cause Register
4.2.6 DMA Controller
4.2.7 Watchdog Timer
4.2.8 General Purpose Timer
4.3 Back End Processor Hardware Interfaces
4.3.1 Memory Map Overview
4.3.2 Control Register (0xA0180000)
4.3.3 Status Register (0xA0180004)
4.3.4 Pulse Register (0xA0180008)
4.3.5 Command FIFO and Uplink Controller (0xA0180014)
4.3.6 Downlink Transfer Controller
4.3.6.1 DTC Start Address Register (0xA0180018)
4.3.6.2 DTC End Address Register (0xA018001C)
4.3.6.3 DTC Address Count Register (0xA0180020)
4.3.7 DEA Command Register (0xA0180010)
4.3.8 DEA Status Register (0xA018000C)
4.3.9 S/C Counter - Latched Count (0xA0180024)
4.3.10 S/C Counter - Running Count(0xA0180028)
4.3.11 FEP Shared Memory Interface (0xA8000000)
4.3.12 BEP to FEP Command Registers
4.3.13 Interrupts
4.4 Front End Processor Hardware Interfaces
4.4.1 Memory Map Overview
4.4.2 Control Register (0xA0400000)
4.4.3 Status Register (0xA0400004)
4.4.4 Pulse Register (0xA0400008)
4.4.5 FEP Image Buffer (0xA0800000
4.4.6 FEP Pixel Bias Map (0xA0C00000)
4.4.7 FEP Pixel Bias Parity Plane
4.4.8 FEP Threshold Plane
4.4.9 Bulk Memory Segment Allocation Register (0xA0400008)
4.4.10 BEPtoFEP Command Register (0xA040000C)
4.4.11 Latched Timestamp Register (0xA0400020)
4.4.12 Running Timestamp (0xA04000014)
4.4.13 Image Control Register (0xA0401000)
4.4.14 Image Status Register (0xA0401004)
4.4.15 Image Pulse Register (0xA0401004)
4.4.16 FEP Threshold Registers (0xA0401010)
4.4.17 StartCnt Registers (0xA0401020)
4.4.18 Image Start Address (0xA0401030)
4.4.19 CCD Start Address (0xA0401034)
4.4.20 CCD Num Rows (0xA0401038)
4.4.21 CCD Select (0xA040103C)
4.4.22 Interrupts
4.5 Nucleus Real-Time Executive Functions and Formats
4.5.1 Configuration and Startup
4.5.1.1 Task Setup
4.5.1.2 Memory Pool Setup
4.5.1.3 Queue Setup
4.5.1.4 Event Group Setup
4.5.1.5 Semaphore Setup
4.5.2 Task Management Functions
4.5.2.1 NU_Change_Priority()
4.5.2.2 NU_Change_Time_Slice()
4.5.2.3 NU_Control_Interrupts()
4.5.2.4 NU_Current_Task_Id()
4.5.2.5 NU_Disable_Preemption()
4.5.2.6 NU_Enable_Preemption()
4.5.2.7 NU_Relinquish()
4.5.2.8 NU_Reset()
4.5.2.9 NU_Retrieve_Task_Status()
4.5.2.10 NU_Sleep()
4.5.2.11 NU_Start()
4.5.2.12 NU_Stop()
4.5.3 Event Management Functions
4.5.3.1 NU_Set_Events()
4.5.3.2 NU_Wait_For_Events()
4.5.4 Resource Management Functions
4.5.4.1 NU_Release_Resource()
4.5.4.2 NU_Request_Resource()
4.5.4.3 NU_Retrieve_Resource_Status()
4.5.5 Queue Management Functions
4.5.5.1 NU_Force_Item_In_Front()
4.5.5.2 NU_Retrieve_Item()
4.5.5.3 NU_Retrieve_Item_Multi()
4.5.5.4 NU_Retrieve_Queue_Status()
4.5.5.5 NU_Send_Item()
4.5.6 Memory Partition Functions
4.5.6.1 NU_Alloc_Partition()
4.5.6.2 NU_Available_Partitions()
4.5.6.3 NU_Dealloc_Partition()
4.5.7 Time Management Functions
4.5.7.1 NU_Read_Time()
4.5.7.2 NU_Set_Time()
4.5.8 Low-level Functions
4.5.8.1 INP_Initialize()
4.5.8.2 SKD_Interrupt_Context_Save()
4.5.8.3 SKD_Interrupt_Context_Restore()
4.5.8.4 CLD_Timer_Interrupt()
4.6 Command Packet Formats
4.7 Telemetry Packet Formats
4.8 DEA Command and Status Formats
4.8.1 Command Format
4.8.2 Status Format
4.8.3 DEA Boards and Devices
4.8.3.1 Board Register Memory Map
4.8.3.2 Digital-to-Analog Converters
4.8.3.3 Housekeeping Query Command and Status Formats
4.8.3.4 PRAM Format
4.8.3.5 SRAM Format
4.9 BEP to FEP Communication Protocol
4.9.1 Shared Memory Interface
4.9.2 FEP Boot Procedure
4.9.3 BEP to FEP Command Mailbox
4.9.4 BEP to FEP Command and Reply Formats
4.9.5 FEP to BEP Science Data Ring-Buffer
0.0.1 FEP to BEP Request Mailbox
0.0.2 FEP to BEP Request and Response Formats
0.0.3 BEP/FEP Exposure Handshake Protocol
4.10 FEP to BEP Science Protocols and Formats (36-53204.03 B-)
4.10.1 Purpose
4.10.2 Uses
4.10.3 Organization
4.10.3.1
Ring Buffer Records
4.10.3.2
Exposure Start Record
4.10.3.3
Exposure End Record
4.10.3.4
3x3 Event Record
4.10.3.5
1x3 Event Record
4.10.3.6
Raw Mode Pixel Record
4.10.3.7
Histogram Mode Record
4.10.3.8
Error Record
4.10.4 BEP-FEP Mailbox Messages
4.10.4.1
Start Bias Calibration
4.10.4.2
Start a Timed Exposure
4.10.4.3
Start a Continuously Clocked Exposure
4.10.4.4
Terminate the Current Mode
4.10.4.5
Load a Parameter Block
4.10.4.6
Suspend FEP Operations
4.10.4.7
Resume FEP Operations
4.10.4.8
Command a FEP to return its status
5.0 Mongoose and Back End Registers (36-53205 A)
5.1 Purpose
5.2 Uses
5.3 Organization
5.4 Class Instances and Register Bit-field Definitions
5.4.1 Class Instances
5.4.2 Register Bit-field Definitions
5.5 Scenarios
5.5.1 Mongoose Class Scenarios
5.5.1.1 Use 1:: Read the R3000 System Coprocessor Registers
5.5.1.2 Use 2:: Write the R3000 Status Register
5.5.1.3 Use 3:: Memory-map access to Mongoose Registers
5.5.1.4 Use 4:: Set and clear bits in Configuration Register
5.5.1.5 Use 5:: Set the DMA mode value
5.5.1.6 Use 6:: Set and clear bits in Extended Interrupt Mask
5.5.1.7 Use 7:: Clear latched extended interrupts
5.5.1.8 Use 8:: Test addresses against cache boundaries
5.5.1.9 Use 9:: Copy to and from I-cache
5.5.2 BepReg Class Scenarios
5.5.2.1 Use 10:: Set and clear bits in BEP Control Register
5.5.2.2 Use 11:: Write LEDs
5.5.2.3 Use 12:: Read BEP Status Register
5.5.2.4 Use 13:: Pulse bits in BEP Pulse Register
5.5.2.5 Use 14:: Memory-map access to BEP Registers
5.6 Class Mongoose
5.6.1 clrCfgBits()
5.6.2 clrXCauseBits()
5.6.3 clrXMaskBits()
5.6.4 getBadVaddrReg()
5.6.5 getCauseReg()
5.6.6 getEpcReg()
5.6.7 getStatusReg()
5.6.8 getXCauseReg()
5.6.9 icacheRead()
5.6.10 icacheWrite()
5.6.11 isDcache()
5.6.12 isIcache()
5.6.13 isUncached()
5.6.14 setCfgBits()
5.6.15 setDmaMode()
5.6.16 setStatusReg()
5.6.17 setXMaskBits()
5.7 Class BepReg
5.7.1 clrControl()
5.7.2 cmdFifoReg()
5.7.3 ctlReg()
5.7.4 dtcAddrCntReg()
5.7.5 dtcEndReg()
5.7.6 dtcStartReg()
5.7.7 deaCmdReg()
5.7.8 deaStatReg()
5.7.9 getStatus()
5.7.10 pulseReg()
5.7.11 pulse()
5.7.12 scCntLatTimeReg()
5.7.13 scCntRunTimeReg()
5.7.14 setControl()
5.7.15 showLeds()
5.7.16 statReg()
6.0 Interrupt Control Classes (36-53206 01)
6.1 Purpose
6.2 Uses
6.3 Organization
6.4 R3000 and Mongoose Interrupt Description
6.4.1 R3000 Interrupt Status and Cause Registers
6.4.2 Mongoose Extended Interrupt Mask and Cause Registers
6.4.3 Low-level Interrupt Processing
6.4.4 Interrupt Priorities
6.5 Scenarios
6.5.1 Use 1::Dispatch Control to Device on Hardware Interrupt
6.5.2 Use 2:: Provide Interrupt Disable/Restore for Critical Code Sections
6.5.3 Use 2:: Pass Control to Client Code during Interrupt Processing
6.6 Class IntrDevice
6.6.1 handleInterrupt()
6.6.2 installCallback()
6.6.3 invokeCallback()
6.7 Class DevCallback
6.7.1 invoke()
6.8 Class IntrController
6.8.1 disableInts()
6.8.2 dispatchInterrupt()
6.8.3 enableInts()
6.8.4 restoreInts()
6.9 Class IntrGuard
6.9.1 IntrGuard()
6.9.2 ~IntrGuard()
7.0 Mongoose Devices (36-53207 A)
7.1 Purpose
7.2 Uses
7.3 Organization
7.4 DMA Transfer Types and Restrictions
7.5 Scenarios
7.5.1 Use 1: Initiate DMA Transfers
7.5.2 Use 2: Stop DMA Transfers
7.5.3 Use 3: Handle DMA Interrupts
7.5.4 Use 4: Manage the General Purpose Timer
7.5.5 Use 5: Prevent hardware resets by setting Watchdog Timer count
7.5.6 Use 6: Force a hardware reset using the Watchdog Timer
7.6 Class Dma
7.6.1 getStatus()
7.6.2 handleInterrupt()
7.6.3 startTransfer()
7.6.4 stopTransfer()
7.7 Class Timer
7.7.1 handleInterrupt()
7.7.2 start()
7.8 Class Watchdog
7.8.1 forceReset()
7.8.2 handleInterrupt()
7.8.3 initialize()
7.8.4 touch()
8.0 Command Device (36-53208 A)
8.1 Purpose
8.2 Uses
8.3 Organization
8.4 Command Logic Description
8.5 Scenarios
8.5.1 Use 1: Disable and reset command logic and FIFO
8.5.2 Use 2: Obtain the state of the Command FIFO
8.5.3 Use 3: Enable command reception
8.5.4 Use 4: Read Command FIFO
8.5.5 Use 5: Access Command FIFO Address
8.5.6 Use 6: Handle command interrupts
8.6 Class CmdDevice
8.6.1 disableReceiver()
8.6.2 enableReceiver()
8.6.3 getErrStatus()
8.6.4 getFifoAddress()
8.6.5 handleInterrupt()
8.6.6 isFifoEmpty()
8.6.7 readFifo()
8.6.8 resetReceiver()
9.0 Telemetry Device (36-53209 A)
9.1 Purpose
9.2 Uses
9.3 Organization
9.4 Downlink Transfer Controller Description
9.5 Scenarios
9.5.1 Use 1: Initiate Downlink Transfers from Uncached Memory
9.5.2 Use 2: Determine if a transfer is in-progress
9.5.3 Use 3: Reset the downlink logic
9.5.4 Use 4: Handle downlink interrupts
9.6 Class TlmDevice
9.6.1 handleInterrupt()
9.6.2 isBusy()
9.6.3 reset()
9.6.4 startTransfer()
10.0 FEP Devices and FEP Interrupt Device (36-53210 A)
10.1 Purpose
10.2 Uses
10.3 Organization
10.4 BEP to FEP Hardware Interface Overview
10.4.1 Power Control
10.4.2 FEP to BEP Interrupt
10.4.3 Shared Memory
10.4.4 FEP Reset Control and Watchdog Timer
10.5 Scenarios
10.5.1 Use1: Handle the interrupt caused by one or more of the active FEPs
10.5.2 Use 2: Manage the reset lines of each FEP
10.5.3 Use 3: Map FEP shared memory addresses into BEP address space
10.5.4 Use 4: Enable and disable power to each of the FEPs
10.5.5 Use 5: Select CCD to process
10.6 Class FepIntrDevice
10.6.1 getFepCauseMask()
10.6.2 handleInterrupt()
10.7 Class FepDevice
10.7.1 FepDevice()
10.7.2 clrControl()
10.7.3 getControl()
10.7.4 hasPower()
10.7.5 holdReset()
10.7.6 isReset()
10.7.7 mapAddress()
10.7.8 powerOff()
10.7.9 powerOn()
10.7.10 releaseReset()
10.7.11 selectCcd()
10.7.12 setControl()
11.0 Detector Electronics Assembly Device (36-53211 A)
11.1 Purpose
11.2 Uses
11.3 Organization
11.4 Scenarios
11.4.1 Use 1: Send a command to the DEA
11.4.2 Use 2: Read a response from the DEA
11.4.3 Use 3: Read the latched timestamp
11.5 Class DeaDevice
11.5.1 isCmdPortReady()
11.5.2 isReplyReady()
11.5.3 readReply()
11.5.4 readTimestamp()
11.5.5 sendCmd()
12.0 Radiation Monitor Device (36-53237 01)
12.1 Purpose
12.2 Uses
12.3 Organization
12.4 Scenarios
12.4.1 Use 1: Provide current state of the radiation monitor flag
12.4.2 Use 2: Handle interrupts from radiation monitor
12.5 Class RadDevice
12.5.1 isAsserted()
12.5.2 handleInterrupt()
13.0 Boot BEP (36-53231 02)
13.1 Purpose
13.2 Uses
13.3 Organization
13.3.1 Command Types
13.3.2 Boot Procedure
13.4 Scenario - Boot from Uplink Command
13.5 Scenario Boot from ROM
13.6 Discrete Telemetry Status
14.0 System Startup and Patch Management (36-53242 01)
14.1 Purpose
14.2 Uses
14.3 Organization
14.4 Startup and Patch List Design Issues
14.4.1 Patch List Memory Map and Organization
14.4.2 Bulk ROM Memory Map and Organization
14.4.3 Executive Configuration
14.4.4 Global Constructors
14.5 Scenarios
14.5.1 Use 1: Load code and data from the bulk ROM into the BEP
14.5.2 Use 2: Initialize processor registers and startup stack
14.5.3 Use 3: Copy interrupt vector code into I-cache
14.5.4 Use 4: Apply installed patches
14.5.5 Use 5: Declare all global objects
14.5.6 Use 6: Initialize and launch the real-time executive
14.6 Class System Startup
14.6.1 asm_loadFromRom()
14.6.2 asm_startup()
14.6.3 main()
14.6.4 setup_rtx()
14.6.5 startup()
14.7 Class PatchList
14.7.1 addPatch()
14.7.2 applyPatches()
14.7.3 computeChecksum()
14.7.4 findPatch()
14.7.5 isValid()
14.7.6 removePatch()
14.7.7 updateChecksum()
15.0 Real-Time Executive (36-53212 A)
15.1 Purpose
15.2 Uses
15.3 Organization
15.4 Interrupt Support and Task Event Definitions
15.4.1 Preemptive Context Switching
15.4.2 Task Notification Event Definitions
15.5 Scenarios
15.5.1 Use 1: Launch Multiple Tasks
15.5.2 Use 2: Notify tasks
15.5.3 Use 3: Broadcast events
15.5.4 Use 4: Lock resources
15.5.5 Use 5: Maintain queues
15.5.6 Use 6: Acquire and release memory
15.5.7 Use 7: Provide current time
15.5.8 Use 8: Verify task health
15.6 Class TaskManager
15.6.1 TaskManager()
15.6.2 addTask()
15.6.3 broadcast()
15.6.4 forbidPreempt()
15.6.5 goInvokeTask()
15.6.6 nextTask()
15.6.7 permitPreempt()
15.6.8 queryCurrentTask()
15.7 Class Task
15.7.1 Task()
15.7.2 getTaskId()
15.7.3 goTaskEntry()
15.7.4 notify()
15.7.5 requestEvent()
15.7.6 sleep()
15.7.7 waitForEvent()
15.7.8 yield()
15.8 Class SystemClock
15.8.1 currentTime()
15.9 Class TimerCallback
15.9.1 invoke()
15.10 Class TaskMonitor
15.10.1 TaskMonitor()
15.10.2 goTaskEntry()
15.10.3 respond()
15.11 Class Semaphore
15.11.1 Semaphore()
15.11.2 release()
15.11.3 request()
15.11.4 retrieveStatus()
15.11.5 waitFor()
15.12 Class Queue
15.12.1 Queue()
15.12.2 dequeue()
15.12.3 enqueue()
15.12.4 howMany()
15.12.5 waitForItem()
15.13 Class MemoryPool
15.13.1 MemoryPool()
15.13.2 allocate()
15.13.3 available()
15.13.4 deallocate()
15.13.5 waitForBuffer()
16.0 Command Management Classes (36-53213 A+)
16.1 Purpose
16.2 Uses
16.3 Organization
16.4 Command Processing Assumptions and Restrictions
16.4.1 Packet Format
16.4.2 Processing Time
16.4.3 Delays between groups of packets
16.5 Scenarios
16.5.1 Use 1::Read, execute, and echo commands
16.5.2 Use 2:: Recover from command errors
16.6 Class CmdManager
16.6.1 CmdManager()
16.6.2 goTaskEntry()
16.6.3 handleCommand()
16.6.4 handleError()
16.6.5 setHandler()
16.7 Class CmdPkt
16.7.1 getBufferAddress()
16.7.2 getDataAddress()
16.7.3 getDataLength()
16.7.4 getOpcode()
16.7.5 getPacketId()
16.7.6 getPacketLength()
16.7.7 isValid()
16.8 Class CmdHandler
16.8.1 processCmd()
16.9 Class CmdEcho
16.9.1 closeEntry()
16.9.2 openEntry()
17.0 Command Packet Handler Classes (36-53214 A)
17.1 Purpose
17.2 Uses
17.3 Organization
17.3.1 Parameter Block Command Handler
17.3.2 Memory Server Command Handlers
17.3.3 Science Run and DEA Housekeeping Command Handlers
17.3.4 Patch Command Handlers
17.3.5 System Configuration Command Handlers
17.4 Command Packet Handling Restrictions
17.4.1 Handling Restrictions
17.4.2 Command Handler Object Map
17.5 Scenarios
17.5.1 Use 1:: Load Parameter Blocks
17.5.1.1 Handler Object Construction
17.5.1.2 Execution of Load Parameter Block Commands
17.5.2 Use 2:: Initiate Memory Dumps, Loads and Execution
17.5.3 Use 3:: Start and Stop Science and DEA Housekeeping Runs
17.5.3.1 Handler Object Construction
17.5.3.2 Execution of Start and Stop Science Commands
17.5.3.3 Execution of Start and Stop DEA Housekeeping Commands
17.5.4 Use 4:: Load and Remove Patches
17.5.5 Use 5:: Modify and Dump System Configuration Settings
17.6 Class ChAddBadCol
17.6.1 ChAddBadCol()
17.6.2 processCmd()
17.7 Class ChAddBadPixel
17.7.1 processCmd()
17.8 Class ChAddPatch
17.8.1 processCmd()
17.9 Class ChChangeSysEntry
17.9.1 processCmd()
17.10 Class ChDumpBadCol
17.10.1 ChDumpBadCol()
17.10.2 processCmd()
17.11 Class ChDumpBadPixels
17.11.1 processCmd()
17.12 Class ChDumpSysConfig
17.12.1 processCmd()
17.13 Class ChExecBep
17.13.1 processCmd()
17.14 Class ChExecFep
17.14.1 processCmd()
17.15 Class ChLoadBlk
17.15.1 ChLoadBlk()
17.15.2 processCmd()
17.16 Class ChReadBep
17.16.1 processCmd()
17.17 Class ChReadFep
17.17.1 processCmd()
17.18 Class ChReadPram
17.18.1 processCmd()
17.19 Class ChReadSram
17.19.1 processCmd()
17.20 Class ChRemoveBadCol
17.20.1 ChRemoveBadCol()
17.20.2 processCmd()
17.21 Class ChRemoveBadPixel
17.21.1 processCmd()
17.22 Class ChRemovePatch
17.22.1 processCmd()
17.23 Class ChStartDeaRun
17.23.1 processCmd()
17.24 Class ChStartSciRun
17.24.1 ChStartSciRun()
17.24.2 processCmd()
17.25 Class ChStopDeaRun
17.25.1 processCmd()
17.26 Class ChStopSciRun
17.26.1 ChStopSciRun()
17.26.2 processCmd()
17.27 Class ChWriteBep
17.27.1 processCmd()
17.28 Class ChWriteFep
17.28.1 processCmd()
17.29 Class ChWritePram
17.29.1 processCmd()
17.30 Class ChWriteSram
17.30.1 processCmd()
18.0 Telemetry Management Classes (36-53215 A+)
18.1 Purpose
18.2 Uses
18.3 Organization
18.4 Telemetry Processing Assumptions and Restrictions
18.4.1 Transfer buffers and packet formats
18.4.2 Packet Formats
18.4.2.1 Packet Header
18.4.2.2 Packet Formats
18.4.3 Transfer Turn-around Time
18.5 Scenarios
18.5.1 Use 1:: Allocate telemetry buffers and control structures
18.5.2 Use 2:: Manage ordered transfer of telemetry data to hardware
18.5.3 Use 3:: Transmission of fatal error messages
18.6 Class TlmManager
18.6.1 TlmManager()
18.6.2 post()
18.6.3 sendPanic()
18.6.4 serviceDevice()
18.7 Class TlmQueue
18.7.1 TlmQueue()
18.7.2 enqueuePkt()
18.7.3 requestPkt()
18.7.4 waitForPkt()
18.8 Class TlmPkt
18.8.1 TlmPkt()
18.8.2 getBufferAddress()
18.8.3 getBufferLength()
18.8.4 setPacketLength()
18.8.5 setFormatTag()
18.8.6 prepareForXfr()
18.8.7 release()
18.8.8 setSequence()
18.9 Class TlmAllocator
18.9.1 TlmAllocator()
18.9.2 releasePkt()
18.9.3 requestPkt()
18.9.4 waitForPkt()
18.10 Class TlmPool
18.10.1 TlmPool()
18.10.2 allocatePkt()
18.11 Class TlmForm
18.11.1 TlmForm()
18.11.2 ~TlmForm()
18.11.3 appendField()
18.11.4 getBufLength()
18.11.5 getBufPtr()
18.11.6 getWordCount()
18.11.7 hasBuffer()
18.11.8 post()
18.11.9 putField()
18.11.10 requestBuffer()
18.11.11 waitForBuffer()
18.12 Class TlmCallback
18.12.1 invoke()
18.13 Class TlmFatal
18.13.1 TlmFatal()
18.13.2 sendMessage()
19.0 Telemetry Packet Formatting Classes (36-53216 A)
19.1 Purpose
19.2 Uses
19.3 Organization
19.3.1 Non-Science Telemetry Format Relationships
19.3.2 Parameter Dump Telemetry Format Relationships
19.3.3 Science Telemetry Format Relationships
19.4 Scenarios
19.4.1 Use 1: Format Startup Message Packets
19.4.2 Use 2: Format Command Echo Packets
19.4.3 Use 3: Format Software Housekeeping Packets
19.4.4 Use 4: Format Memory Dump and Execution Result Packets
19.4.5 Use 5: Format DEA Housekeeping Packets
19.4.6 Use 6: Format Science Packets
19.5 Class TfCmdEcho
19.5.1 copyCmd()
19.5.2 setResult()
19.6 Class TfCmdResponse
19.6.1 TfCmdResponse()
19.6.2 getBufferInfo()
19.6.3 setCmdId()
19.6.4 setTimestamp()
19.6.5 setLength()
19.7 Class TfDeaHouse
19.7.1 addEntry()
19.7.2 getMaxEntryCount()
19.7.3 setIdInfo()
19.8 Class TfDump
19.8.1 TfDump()
19.8.2 setBlockId()
19.8.3 storeBlock()
19.9 Class TfDump1dWin
19.9.1 copyBlock()
19.10 Class TfDump2dWin
19.10.1 copyBlock()
19.11 Class TfDumpCc
19.11.1 copyBlock()
19.12 Class TfDumpDeaHouse
19.12.1 copyBlock()
19.13 Class TfDumpTe
19.13.1 copyBlock()
19.14 Class TfExecBep
19.14.1 setReturnValue()
19.15 Class TfExecFep
19.15.1 setFepId()
19.15.2 setReturnValue()
19.16 Class TfReadBep
19.16.1 getReadBuffer()
19.16.2 setMemAddr()
19.16.3 setReadLength()
19.17 Class TfReadFep
19.17.1 getReadBuffer()
19.17.2 setFepId()
19.17.3 setMemAddr()
19.17.4 setReadLength()
19.18 Class TfReadPram
19.18.1 getReadBuffer()
19.18.2 setBoardId()
19.18.3 setIndex()
19.18.4 setReadCount()
19.19 Class TfReadSram
19.19.1 getReadBuffer()
19.19.2 setBoardId()
19.19.3 setIndex()
19.19.4 setReadCount()
19.20 Class TfSciBias
19.20.1 packBiasMap()
19.21 Class TfSciDaCcFaint
19.22 Class TfSciDaCcFaintBias
19.23 Class TfSciDaCcGraded
19.24 Class TfSciDaCcRaw
19.25 Class TfSciDaTeFaint
19.25.1 packEvents()
19.26 Class TfSciDaTeFaintBias
19.27 Class TfSciDaTeGraded
19.28 Class TfSciDaTeHist
19.29 Class TfSciDaTeRaw
19.29.1 packData()
19.30 Class TfSciData
19.30.1 TfSciData()
19.30.2 setDataInfo()
19.31 Class TfSciErCcEvent
19.32 Class TfSciErCcFaint
19.33 Class TfSciErCcFaintBias
19.34 Class TfSciErCcGraded
19.35 Class TfSciErCcRaw
19.36 Class TfSciErEvent
19.36.1 setAboveThresholdCnt()
19.36.2 setBiasParityErrorCnt()
19.36.3 setEventCnt()
19.36.4 setDiscardGradeCnt()
19.36.5 setDiscardPhCnt()
19.36.6 setDiscardWinCnt()
19.36.7 setOverclockLevels()
19.37 Class TfSciErTeEvent
19.38 Class TfSciErTeFaint
19.39 Class TfSciErTeFaintBias
19.39.1 setBiasOffset()
19.40 Class TfSciErTeGraded
19.41 Class TfSciErTeHist
19.42 Class TfSciErTeRaw
19.42.1 setPixelCount()
19.43 Class TfSciExpRecord
19.43.1 TfSciExpRecord()
19.43.2 setExposureInfo()
19.44 Class TfSciReport
19.45 Class TfStartup
19.45.1 setBlocksValidFlag()
19.45.2 setBootReason()
19.45.3 setPatchValidFlag()
19.45.4 setSysConfigValidFlag()
19.45.5 setTimestamp()
19.45.6 setVersion()
19.46 Class TfSwHouse
19.46.1 accumulateStat()
19.46.2 setupBuffer()
20.0 Parameter Block Management (36-53229 01)
20.1 Purpose
20.2 Uses
20.3 Organization
20.4 Parameter Block Storage
20.5 Scenarios
20.5.1 Use 1: Store parameter blocks
20.5.2 Use 2: Perform integrity checks
20.5.3 Use 3: Supply parameter blocks when needed
20.6 Class PblockList
20.6.1 PblockList()
20.6.2 checkBlocks()
20.6.3 getBlock()
20.6.4 releaseLock()
20.6.5 replaceBlock()
20.6.6 waitForLock()
20.7 Class Pblock
20.7.1 checkCrc()
20.7.2 copyToBuffer()
20.7.3 getSlotId()
20.7.4 getWordCnt()
20.7.5 loadFromCmdPkt()
20.7.6 loadFromIcache()
20.7.7 storeToIcache()
21.0 IPCL Code-Generator (36-53232.01 01)
21.1 Purpose
21.2 Uses
21.3 Organization
21.4 IP&CL Structures Database
21.4.1 File format
21.4.2 Entry Format
21.5 Script Structure
21.5.1 ipcl_gen.pl
21.5.2 ipcl_reader.pl
21.5.3 ipcl_writer.pl
22.0 Command/Parameter Reader Templates (36-53232.02 01)
22.1 Purpose
22.2 Uses
22.3 Organization
22.4 Reader Design Issues
22.4.1 Assumptions
22.4.2 Field Access Functions
22.4.3 Array Word Count Functions
22.5 Class CmdPkt_[IPCL_Record_Name]
22.5.1 get_CountOf_[IPCL_Field_Name]()
22.5.2 get_[IPCL_Field_Name]()
22.5.3 get_[IPCL_Indexed_Field_Name]()
22.6 Class Pb_[IPCL_Record_Name]
22.6.1 get_CountOf_[IPCL_Field_Name]()
22.6.2 get_[IPCL_Field_Name]()
22.6.3 get_[IPCL_Indexed_Field_Name]()
23.0 Telemetry Writer Templates (36-53232.03 01)
23.1 Purpose
23.2 Uses
23.3 Organization
23.4 Writer Design Issues
23.4.1 Assumptions
23.4.2 Put Field Access Functions
23.4.3 Append Field Access Functions
23.5 Class Tf_[IPCL_Record_Name]
23.5.1 append_[IPCL_Field_Name]()
23.5.2 hasData()
23.5.3 isFull()
23.5.4 put_[IPCL_Field_Name]()
23.5.5 put_[IPCL_Indexed_Field_Name]()
23.5.6 setEmpty()
24.0 Huffman Table Data Compression (36-53233 01+)
24.1 Purpose
24.2 Uses
24.3 Organization
24.4 The Huffman Table
24.4.1 Optimizing the Flight Table
24.5 Scenarios
24.5.1 Operational Overview
24.5.2 Use 1: Loading a Huffman Table from I-Cache into D-Cache
24.5.3 Use 2: Converting a Set of Values to Packed Huffman Codes.
24.5.4 Use 3: A method of packing uncompressed data values
24.5.5 Use 4: Appending Additional Codes to a Buffer
24.6 Class HuffmanTable
24.6.1 HuffmanTable()
24.6.2 loadTable()
24.6.3 packData()
24.6.4 reset()
25.0 Front End Processor Management Classes (36-53217 B+)
25.1 Purpose
25.2 Uses
25.3 Organization
25.4 Miscellaneous Items
25.4.1 FepManager Auxiliary Service Routine task
25.4.2 FEP Mailboxes and Ring-buffers
25.5 Scenarios
25.5.1 Use 1: Power off a FEP
25.5.2 Use 2: Reset, load, and run a program on a Front End Processor
25.5.3 Use 3: Read FEP Memory
25.5.4 Use 4: Write FEP Memory
25.5.5 Use 5: Execute FEP Subroutine
25.5.6 Use 6: Configure a FEP for a science run
25.5.7 Use 7: Start bias calibrations
25.5.8 Use 8 and 9: Start data processing and consume data
25.5.9 Use 10: Stop bias or data processing
25.5.10 Use 11: Disable FEP
25.6 Class FepManager
25.6.1 FepManager()
25.6.2 checkMonitor()
25.6.3 checkReset()
25.6.4 configureFep()
25.6.5 disableFep()
25.6.6 executeMemory()
25.6.7 goTaskEntry()
25.6.8 invokeBiasProcess()
25.6.9 invokeDataProcess()
25.6.10 loadRunProgram()
25.6.11 loadSections()
25.6.12 powerOff()
25.6.13 pollBiasComplete()
25.6.14 pollDataReady()
25.6.15 queryFepStatus()
25.6.16 readMemory()
25.6.17 readRecord()
25.6.18 registerClient()
25.6.19 terminateProcess()
25.6.20 writeMemory()
25.7 Class FepIoManager
25.7.1 FepIoManager()
25.7.2 getMaxCmdArgs()
25.7.3 hasData()
25.7.4 issueCmd()
25.7.5 readRecord()
25.7.6 setBiasMapInfo()
25.7.7 setIoAddresses()
25.7.8 waitForLock()
25.7.9 waitForReply()
25.7.10 writeBiasValue()
26.0 DEA Management Class (36-53218 01)
26.1 Purpose
26.2 Uses
26.3 Organization
26.4 DEA Manager Design Issues
26.4.1 Command Timing
26.5 Scenarios
26.5.1 Use 1: Load Program or Sequencer RAM
26.5.2 Use 2: Read Program or Sequencer RAM
26.5.3 Use 3: Start the CCD-controller sequencers
26.5.4 Use 4: Stop the CCD-controller sequencers
26.5.5 Use 5: Set DEA Register
26.5.6 Use 6: Read DEA Register
26.5.7 Use 7: Enable and disable power to a single DEA board
26.6 Class DeaManager
26.6.1 DeaManager()
26.6.2 getStatus()
26.6.3 hasPower()
26.6.4 invokeSequencer()
26.6.5 loadRam()
26.6.6 loadSequencers()
26.6.7 powerOff()
26.6.8 powerOn()
26.6.9 queryDea()
26.6.10 readData()
26.6.11 readPram()
26.6.12 readRam()
26.6.13 readSram()
26.6.14 selectBoard()
26.6.15 selectBroadcast()
26.6.16 sendCommand()
26.6.17 setAddress()
26.6.18 setRegister()
26.6.19 stopSequencer()
26.6.20 waitForPort()
26.6.21 waitForStatus()
26.6.22 writeData()
26.6.23 writePram()
26.6.24 writeSram()
27.0 Memory Server (36-53219 A)
27.1 Purpose
27.2 Uses
27.3 Organization
27.4 Scenarios
27.4.1 Operational Overview
27.4.2 Use 1:: Provides rapid acceptance of client requests through public routines
27.4.3 Use 2:: Waits responding to client requests and monitors' query
27.4.4 Use 3:: Read memory of the BEP, FEP, PRAM, and SRAM
27.4.4.1 Read Back End Processor memory
27.4.4.2 Read Front End Processor memory
27.4.4.3 Read from DEA Sequencer RAM
27.4.4.4 Read DEA Program RAM
27.4.5 Use 4:: Write memory of the BEP, FEP, PRAM, and SRAM
27.4.5.1 Write data to Back End Processor memory
27.4.5.2 Write data to Front End Processor memory
27.4.5.3 Write data to DEA Sequencer RAM
27.4.5.4 Write data to DEA Program RAM
27.4.6 Use 5:: Execute appropriate BEP or FEP memory
27.4.6.1 Execute code in Back End Processor memory
27.4.6.2 Execute code in Front End Processor memory
27.4.6.3 Execute code in memory - Caveat
27.5 Class MemoryServer
27.5.1 MemoryServer()
27.5.2 crossIBound()
27.5.3 exeBep()
27.5.4 executeBep()
27.5.5 exeFep()
27.5.6 executeFep()
27.5.7 goTaskEntry()
27.5.8 getSemaphore()
27.5.9 readBep()
27.5.10 readFep()
27.5.11 readPram()
27.5.12 readSram()
27.5.13 rdBep()
27.5.14 rdFep()
27.5.15 rdPram()
27.5.16 rdSram()
27.5.17 waitGetPacket()
27.5.18 writeBep()
27.5.19 writeFep()
27.5.20 writePram()
27.5.21 writeSram()
27.5.22 wrtBep()
27.5.23 wrtFep()
27.5.24 wrtPram()
27.5.25 wrtSram()
28.0 Software Housekeeper (36-53220 01)
28.1 Purpose
28.2 Uses
28.3 Organization
28.4 Scenarios
28.4.1 Operational Overview
28.4.2 Use 1::A method of acquiring reported statistical values
28.4.3 Use 2:: A system for periodically delivering the accumulated statistics
28.5 Class SwHousekeeper
28.5.1 SwHousekeeper()
28.5.2 goTaskEntry()
28.5.3 intervalWait()
28.5.4 report()
29.0 Fatal Error
29.1 Purpose
29.2 Uses
29.3 Organization
29.4 Scenarios
29.4.1 Use 1: Deliver Panic Message
29.4.2 Use 2: Handle Watchdog
29.5 Class Fatal Error
29.5.1 report()
30.0 System Configuration Classes (36-53238 01)
30.1 Purpose
30.2 Uses
30.3 Organization
30.4 Scenarios
30.4.1 Overall SystemConfiguration task operation
30.4.2 Use 1: Update settings within the system's table
30.4.3 Use 2: Update DEA and FEP power selections
30.4.4 Use 3: Load updated settings into the DEA hardware
30.4.5 Use 4: Power off the DEA if the radiation monitor is asserted
30.4.6 Use 5: Re-enable DEA power once the radiation monitor de-asserts
30.5 Class SysConfigTable
30.5.1 changeEntry()
30.5.2 getDeaPowerEnable()
30.5.3 getDeaSetting()
30.5.4 getFepPowerEnable()
30.5.5 getSetting()
30.5.6 getTableInfo()
30.6 Class SystemConfiguration
30.6.1 SystemConfiguration()
30.6.2 checkMonitors()
30.6.3 enableScience()
30.6.4 goTaskEntry()
30.6.5 isRadiationOn()
30.6.6 powerOffDea()
30.6.7 radiationAsserted()
30.6.8 reloadSettings()
30.6.9 updateDeaPower()
30.6.10 updateFepPower()
30.6.11 updateSettings()
30.7 Class RadCallback
30.7.1 invoke()
31.0 DEA Housekeeper (36-53221 02)
31.1 Purpose
31.2 Uses
31.3 Organization
31.4 Scenario
31.4.1 Use 1:: Start DEA Housekeeping
31.4.2 Use 2:: Acquiring DEA Housekeeping Data
31.4.3 Use 3:: Stop DEA Housekeeping
31.5 Class DeaHousekeeper
31.5.1 DeaHousekeeper()
31.5.2 goTaskEntry()
31.5.3 startRun()
31.5.4 stopRun()
31.5.5 doHousekeeping()
31.5.6 waitForCommand()
31.5.7 waitForInterval()
31.5.8 waitGetPacket()
32.0 Bad Pixel and Column Map Classes (36-53240 01)
32.1 Purpose
32.2 Uses
32.3 Organization
32.4 Memory Layouts
32.4.1 I-cache Memory Map
32.4.2 Bad Pixel Entry Format
32.4.3 Bad Column Entry Format
32.5 Scenarios
32.5.1 Use 1: Append a bad pixel entry to the end of a map
32.5.2 Use 2: Remove all entries from a map
32.5.3 Use 3: Retrieve an entry from a map
32.5.4 Use 4: Retrieve the address and length of a map
32.6 Class BadPixelMap
32.6.1 BadPixelMap()
32.6.2 addPixel()
32.6.3 getAddress()
32.6.4 getCount()
32.6.5 getMapInfo()
32.6.6 getPixel()
32.6.7 removeAll()
32.6.8 setCount()
32.7 Class BadColumnMap
32.7.1 BadColumnMap()
32.7.2 addColumn()
32.7.3 getAddress()
32.7.4 getColumn()
32.7.5 getCount()
32.7.6 getMapInfo()
32.7.7 removeAll()
32.7.8 setCount()
33.0 Science Management Classes (36-53222 B)
33.1 Purpose
33.2 Uses
33.3 Organization
33.4 Science Manager Behavior
33.5 Scenarios
33.5.1 Use 1: Perform a science or bias run
33.5.2 Use 2: Setup for a science or bias run
33.5.3 Use 3: Dump of parameters
33.5.4 Use 4: Perform bias computation
33.5.5 Use 5: Acquire and process CCD data
33.6 Class ScienceManager
33.6.1 ScienceManager()
33.6.2 goTaskEntry()
33.6.3 inhibit()
33.6.4 isIdle()
33.6.5 startRun()
33.6.6 stopRun()
33.7 Class ScienceMode
33.7.1 ScienceMode()
33.7.2 activateParameters
33.7.3 assignFepProcess()
33.7.4 checkBlock()
33.7.5 computeBias()
33.7.6 distributeRunInfo()
33.7.7 dumpParameters()
33.7.8 getBlockIds()
33.7.9 getFepRequestType()
33.7.10 loadBadMaps()
33.7.11 processData()
33.7.12 readProcessRecords()
33.7.13 requestStop()
33.7.14 requiresBias()
33.7.15 setup()
33.7.16 setupDea()
33.7.17 setupFep()
33.7.18 setupProcess()
33.7.19 stageParameters
33.7.20 terminate()
33.7.21 useBiasThief()
33.7.22 waitForBias()
33.7.23 waitForData()
33.7.24 waitForEvent()
33.7.25 waitForPkt()
33.8 Class ProcessMode
33.8.1 ProcessMode()
33.8.2 getCcdId()
33.8.3 getFepId()
33.8.4 getGeometry()
33.8.5 getMode()
33.8.6 getRunIdInfo()
33.8.7 getTimeBias()
33.8.8 getTimeData()
33.8.9 processRecord()
33.8.10 setCcdId()
33.8.11 setFepId()
33.8.12 setGeometry()
33.8.13 setMode()
33.8.14 setRunIdInfo()
33.8.15 setTimeBias()
33.8.16 setTimeData()
33.8.17 waitForPkt()
34.0 Timed Exposure PRAM Builder Class (36-53234 01)
34.1 Purpose
34.2 Uses
34.3 Organization
34.4 PRAM Builder Design Issues
34.4.1 CCD Organization
34.4.2 Timed Exposure Clocking Sequence
34.4.3 SRAM Primitives
34.4.4 PRAM Headers and Couplets
34.4.5 Clocking Algorithm
34.4.6 Parallel Transfers with Multiple CCDs
34.5 Class PramTe
34.5.1 blockEnd()
34.5.2 blockStart()
34.5.3 build()
34.5.4 configure()
34.5.5 emitBlockHeader()
34.5.6 emitBranchBlock()
34.5.7 emitCouplet()
34.5.8 emitDiscardOr()
34.5.9 emitExposure()
34.5.10 emitFlushImage()
34.5.11 emitFrameToOr()
34.5.12 emitImageToFrame()
34.5.13 emitIntegrate()
34.5.14 emitOutputPixel()
34.5.15 emitOverclockPixel()
34.5.16 emitSumOr()
34.5.17 emitSumOverclock()
34.5.18 emitTransferFrame()
34.5.19 generateSequence()
34.5.20 setPramBlock()
35.0 Continuous Clocking PRAM Builder Class (36-53235 01)
35.1 Purpose
35.2 Uses
35.3 Organization
35.4 PRAM Builder Design Issues
35.4.1 CCD Organization
35.4.2 Continuous Clocking Sequence
35.4.3 SRAM Primitives
35.4.4 PRAM Headers and Couplets
35.4.5 Clocking Algorithm
35.4.6 Parallel Transfers with Multiple CCDs
35.5 Class PramCc
35.5.1 blockEnd()
35.5.2 blockStart()
35.5.3 build()
35.5.4 configure()
35.5.5 emitBlockHeader()
35.5.6 emitBranchBlock()
35.5.7 emitCouplet()
35.5.8 emitDataSet()
35.5.9 emitDiscardOr()
35.5.10 emitImageToFrame()
35.5.11 emitSummedPixel()
35.5.12 generateSequence()
35.5.13 setPramBlock()
36.0 Science Data Processing Classes (36-53228 B)
36.1 Purpose
36.2 Uses
36.3 Organization
36.3.1 Process Mode Base Classes
36.3.2 Process Mode Leaf Classes
36.3.3 CCD Data Representation Classes
36.3.4 Science Mode and Processing Mode Classes
36.4 Scenarios
36.4.1 Use 1: Timed Exposure Raw Mode Data Processing
36.4.2 Use 2: Timed Exposure Histogram Mode Data Processing
36.4.3 Use 3: Timed Exposure Faint Mode 3x3 Event Data Processing
36.4.4 Use 4: Timed Exposure Faint Mode 3x3 with Bias Data Processing
36.4.5 Use 5: Timed Exposure Graded Mode Data Processing
36.4.6 Use 6: Continuous Clocking Raw Mode Data Processing
36.4.7 Use 7: Continuous Clocking Faint Mode 1x3 Event Data Processing
36.4.8 Use 8: Continuous Clocking Graded Mode Data Processing
36.5 Class EventExposure
36.5.1 copyExpEnd()
36.5.2 copyExpStart()
36.5.3 getExposureNumber()
36.5.4 getGeometry()
36.5.5 getOverclockBase()
36.5.6 getOverclockDelta()
36.5.7 getQuadrant()
36.5.8 getSplitThreshhold()
36.5.9 getThresholdCnt()
36.5.10 mapPosition()
36.5.11 setGeometry()
36.5.12 setSplitThreshold()
36.6 Class PhHistogram
36.6.1 copyHeader()
36.6.2 getExposureCount()
36.6.3 getExposureEnd()
36.6.4 getExposureStart()
36.6.5 getOverclockMax()
36.6.6 getOverclockMean()
36.6.7 getOverclockMin()
36.6.8 getOverclockVariance()
36.7 Class PixelRow
36.7.1 acceptRegion()
36.7.2 attachData()
36.7.3 discardRegion()
36.7.4 flagRegion()
36.7.5 getNextSendRegion()
36.7.6 getOverclockPtr()
36.7.7 getPixelPtr()
36.7.8 getRange()
36.7.9 setup()
36.8 Class PixelEvent
36.8.1 correctPixelPh()
36.8.2 getCcdPosition()
36.8.3 getGrade()
36.8.4 getPulseHeight()
36.8.5 setup()
36.9 Class Pixel1x3
36.9.1 attachData()
36.9.2 computePhGrade()
36.9.3 getBias()
36.9.4 getPixel()
36.10 Class Pixel3x3
36.10.1 attachData()
36.10.2 computePhGrade()
36.10.3 getBias()
36.10.4 getPixel()
36.10.5 gradeCornerPixel()
36.10.6 gradeEdgePixel()
36.11 Class Filter
36.11.1 accept()
36.11.2 getAcceptCnt()
36.11.3 getDiscardCnt()
36.11.4 reject()
36.11.5 resetCounters()
36.12 Class FilterWindow
36.12.1 addWindow()
36.12.2 resetWindows()
36.12.3 filterEvent()
36.12.4 filterRow()
36.13 Class FilterGrade
36.13.1 allow()
36.13.2 disableAll()
36.13.3 filterEvent()
36.14 Class FilterPh
36.14.1 filterEvent()
36.14.2 setLimits()
36.15 Class PmEvent
36.15.1 digestBiasError()
36.15.2 filterEvent()
36.15.3 finishExposure()
36.15.4 incEventCnt()
36.15.5 processRecord()
36.15.6 setGradeFilter()
36.15.7 setPhFilter()
36.15.8 setWindowFilter()
36.15.9 setupExposureRecord()
36.16 Class PmHist
36.16.1 finishExposure()
36.16.2 getQuadMode()
36.16.3 processRecord()
36.16.4 setQuadMode()
36.17 Class PmRaw
36.17.1 accumulateRawRecord()
36.17.2 filterRow()
36.17.3 finishExposure()
36.17.4 getCompression()
36.17.5 getOverclockCnt()
36.17.6 getRawRecord()
36.17.7 packRow()
36.17.8 processRecord()
36.17.9 setCompression()
36.17.10 setOverclockCnt()
36.17.11 setWindowFilter()
36.18 Class PmTeHist
36.18.1 finishExposure()
36.18.2 finishQuadrant()
36.18.3 isEndOfHistogram()
36.18.4 processRecord()
36.18.5 sendBins()
36.18.6 setupDataPkt()
36.19 Class PmTeRaw
36.19.1 digestRawRecord()
36.19.2 finishExposure()
36.19.3 processRecord()
36.19.4 setupDataPkt()
36.20 Class PmTeFaint3x3
36.20.1 finishExposure()
36.20.2 processRecord()
36.20.3 sendEvent()
36.21 Class PmTeFaintBias3x3
36.21.1 finishExposure()
36.21.2 processRecord()
36.21.3 sendEvent()
36.22 Class PmTeGraded
36.22.1 finishExposure()
36.22.2 processRecord()
36.22.3 sendEvent()
36.23 Class PmCcRaw
36.23.1 digestRawRecord()
36.23.2 finishExposure()
36.23.3 processRecord()
36.23.4 setupDataPkt()
36.24 Class PmCcFaint1x3
36.24.1 finishExposure()
36.24.2 processRecord()
36.24.3 sendEvent()
36.25 Class PmCcGraded
36.25.1 finishExposure()
36.25.2 processRecord()
36.25.3 sendEvent()
36.26 Class SmTimedExposure
36.26.1 activateParameters()
36.26.2 checkBlock()
36.26.3 dumpParameters()
36.26.4 getBlockIds()
36.26.5 getFepRequest()
36.26.6 loadBadMaps()
36.26.7 requiresBias()
36.26.8 setupDea()
36.26.9 setupEventProcess()
36.26.10 setupFaint3x3()
36.26.11 setupFaintBias3x3()
36.26.12 setupFep()
36.26.13 setupFepBlock()
36.26.14 setupGradeFilter()
36.26.15 setupGraded()
36.26.16 setupHist()
36.26.17 setupPhFilter()
36.26.18 setupProcess()
36.26.19 setupRaw()
36.26.20 setupWindowFilter()
36.26.21 stageParameters()
36.26.22 terminate()
36.26.23 useBiasThief()
36.27 Class SmContClocking
36.27.1 activateParameters()
36.27.2 checkBlock()
36.27.3 dumpParameters()
36.27.4 getBlockIds()
36.27.5 getFepRequest()
36.27.6 loadBadMaps()
36.27.7 requiresBias()
36.27.8 setupDea()
36.27.9 setupEventProcess()
36.27.10 setupFaint1x3()
36.27.11 setupFep()
36.27.12 setupFepBlock()
36.27.13 setupGradeFilter()
36.27.14 setupGraded()
36.27.15 setupPhFilter()
36.27.16 setupProcess()
36.27.17 setupRaw()
36.27.18 setupWindowFilter()
36.27.19 stageParameters()
36.27.20 terminate()
36.27.21 useBiasThief()
37.0 Bias Thief Class (36-53239 01)
37.1 Purpose
37.2 Uses
37.3 Organization
37.4 Scenarios
37.4.1 Use 1: Select which type of bias maps are to be sent
37.4.2 Use 2: Specify the bias map parameters for each Front End Processor
37.4.3 Use 3: Start transmission of the pixel bias maps
37.4.4 Use 4: Abort transmission of the pixel bias maps
37.5 Class BiasThief
37.5.1 BiasThief()
37.5.2 abort()
37.5.3 biasReady()
37.5.4 checkMonitor()
37.5.5 getBuffer()
37.5.6 goTaskEntry()
37.5.7 selectMode()
37.5.8 setFepInfo()
37.5.9 setupTeForm()
37.5.10 trickleCcBias()
37.5.11 trickleTeBias()
FIOsendRequest()
FIOreadReply()
FEP to BEP
38.0 FEP IO Library (36-53223 B)
38.1 Purpose
38.2 Uses
38.3 Organization
38.4 Scenarios
38.4.1 Use 1: Transfer data from the FEP to the BEP
38.4.2 Use 2: Handle communications between the FEP and BEP
38.4.3 Use 3: Manage the FEP DMA
38.4.4 Use 4: Provide read/write/execute access to internal FEP memory
38.4.5 Use 5: Reset WatchdogTimer
38.5 BEP - FEP Communication Protocol
38.5.1 Mailbox Structure
38.5.2 BEP to FEP
38.5.2.1 Diagnostic Command Formats
38.5.2.1.1 Read I-Cache
38.5.2.1.2 Write I-cache
38.5.2.1.3 Read Memory
38.5.2.1.4 Write Memory
38.5.2.1.5 Execute Memory
38.6
Specification
38.6.1 FIOgetBiasMapPtr()
38.6.2 FIOgetBiasConfig()
38.6.3 FIOsetBiasConfig()
38.6.4 FIOgetBiasParityPlanePtr()
38.6.5 FIOgetCcdRowStart()
38.6.6 FIOsetCcdRowStart()
38.6.7 FIOgetImageMapPtr()
38.6.8 FIOgetImageMapRowIndex()
38.6.9 FIOgetImageMapRowLength()
38.6.10 FIOsetImageMapRowLength()
38.6.11 FIOgetImageMapRowStart()
38.6.12 FIOsetImageMapRowStart()
38.6.13 FIOgetStartCntReg()
38.6.14 FIOsetStartCntReg()
38.6.15 FIOgetOverclockBufPtr()
38.6.16 FIOgetThresholdRegister()
38.6.17 FIOsetThresholdRegister()
38.6.18 FIOgetThresholdXings()
38.6.19 FIOgetTPlanePtr()
38.6.20 FIOappendBlock()
38.6.21 FIOdmaDone()
38.6.22 FIOdmaTransfer()
38.6.23 FIOgetExpInfo()
38.6.24 FIOgetNextCmd()
38.6.25 FIOinit()
38.6.26 FIOtouchWatchdog()
38.6.27 FIOwriteCmdReply()
38.6.28 fioClearBitCtrlReg()
38.6.29 fioClearBitImCtrlReg()
38.6.30 fioGetCmd()
38.6.31 fioGetStatusReg()
38.6.32 fioGetImStatusReg()
38.6.33 fioPollMBox()
38.6.34 fioRbStatus()
38.6.35 fioReadIcache()
38.6.36 fioReadMem()
38.6.37 fioSetBitCtrlReg()
38.6.38 fioSetBitImCtrlReg()
38.6.39 fioSetSegAllocReg()
38.6.40 fioWriteIcache()
38.6.41 fioWriteMem()
38.6.42 fioWritePulseReg()
38.6.43 fioWriteImPulseReg()
39.0 Boot FEP (36-53230 01)
39.1 Purpose
39.2 Uses
39.3 Organization
39.4 Scenario
39.4.1 Pre-Boot Tasks
39.4.2 Boot the FEP
39.4.3 Monitor the Watchdog and Fulfill BEP Commands
39.5 Specification
39.5.1 bootServerFep()
39.5.2 startUpFep()
40.0 FEP Command Controller (36-53236 02)
40.1 Purpose
40.2 Uses
40.3 Organization
40.4
Global Variables
40.5 Scenarios
40.5.1 Use 1: Respond to a BEP science command from IDLE status
40.5.2 Use 2: Respond to one BEP command while executing another
40.6 Specification
40.6.1
fepCtl()
40.6.2
fepAckCmd()
40.6.3
fepAppendRingBuf()
40.6.4
fepBias()
40.6.5
fepCreateFidPix()
40.6.6
fepEnableNextFrame()
40.6.7
fepHandleCmd()
40.6.8
fepInit()
40.6.9
fepLoadParm()
40.6.10
fepNackCmd()
40.6.11
fepSetAddrMode()
41.0 FEP Timed Exposure Modes (36-53224 02)
41.1 Purpose
41.2 Uses
41.3 Organization
41.4 Global Variables
41.5 Scenarios
41.5.1 Use 1: Report 3x3 Events
41.5.2 Use 2: Report 5x5 Events
41.5.3 Use 3: Report Raw Pixels
41.5.4 Use 4: Report Raw Pixel Histograms.
41.6 Specification
41.6.1
fepSciTimed()
41.6.2
FEPsciTimedInit()
41.6.3
FEPsciTimedEvent()
41.6.4
FEPtestEvenPixel()
41.6.5
FEPtestOddPixel()
41.6.6
FEPsciPixTest
41.6.7
FEPappend5x5()
41.6.8
FEPsciTimedFixBias()
41.6.9
FEPsciTimedError()
41.6.10
FEPsciTimedRaw()
41.6.11
FEPsciTimedHist()
42.0 FEP Timed Exposure Bias Calibration (36-53226 02)
42.1 Purpose
42.2 Uses
42.3 Organization
42.4 Global Variables
42.5 Scenarios
42.5.1 Use 1: Calculate Bias using a Whole-Frame Algorithm
42.5.2 Use 2: Calculate Bias using a Strip Algorithm
42.5.2.1 The Iterated Mean Algorithm
42.5.2.2 The Fractile Algorithm
42.6 Specification
42.6.1
fepTimedBias()
42.6.2
FEPtimedBiasExec()
42.6.3 FEPtimedBiasInit()
42.6.4
FEPtimedBiasParity()
42.6.5
FEPtimedBias1Copy()
42.6.6
FEPtimedBias1Cond()
42.6.7
FEPtimedBias1Mean()
42.6.8
FEPtimedBias1Median()
42.6.9
FEPtimedBias1ZapEvent()
42.6.10
FEPtimedBias2Proc()
42.6.11
mean()
42.6.12
fractile()
43.0 FEP Continuously Clocked Modes (36-53225 01)
43.1 Purpose
43.2 Uses
43.3 Organization
43.4 Global Variables
43.5 Scenarios
43.5.1 Use 1: Report 1x3 Events
43.5.2 Use 2: Report Raw Pixels
43.6 Specification
43.6.1
fepSciCClk()
43.6.2
FEPsciCClkInit()
43.6.3
FEPsciCClkEvent()
43.6.4
FEPsciCClkEvenPixel()
43.6.5
FEPsciCClkOddPixel()
43.6.6
FEPsciCClkPixTest
43.6.7
FEPsciCClkFixBias()
43.6.8
FEPsciCClkError()
43.6.9
FEPsciCClkRaw()
44.0 FEP Continuously Clocked Bias Calibration (36-53227 02)
44.1 Purpose
44.2 Uses
44.3 Organization
44.4
Global Variables
44.5 Scenario
44.6 Algorithms
44.6.1 The Iterated Mean Algorithm
44.6.2 The Fractile Algorithm
44.6.3 Use 1: Calculate a Continuously-Clocked Bias Map
44.7 Specification
44.7.1
fepCClkBias()
44.7.2
FEPCClkBiasExec()
44.7.3
FEPCClkBiasInit()
44.7.4
FEPCClkBiasProc()
Appendix A - FEP Timing Budget
Appendix B - TBD List