Table of Contents Previous Chapter ACIS

19.0 Telemetry Packet Formatting Classes (36-53216 A)

19.1 Purpose

The purpose of the telemetry formatting classes are to format the contents of telemetry packets intended for transfer out of the instrument. This section describes the telemetry format class designs. The details of the telemetry packet formats are shown in Section TBD.

19.2 Uses

  1. Format Startup Message Packets

  2. Format Command Echo Packets

  3. Format Software Housekeeping Packets

  4. Format Memory Dump and Execution Result Packets

  5. Format DEA Housekeeping Packets

  6. Format Science and Bias Map Packets

19.3 Organization

All telemetry format classes are a subclass of Protocols::TlmForm and packet transfers are managed by the Telemetry Manager (see Section 18.0). Given the large number of telemetry format classes, this section is broken into three subsections: non-science telemetry packet formats, parameter dump formats and science telemetry packet formats.

19.3.1 Non-Science Telemetry Format Relationships

Figure 80 illustrates the overall relationships used by those TlmForm subclasses that do not directly format science telemetry. In the diagram, each format class is shown using a TlmAllocator instance. The label on each association indicates from which TlmAllocator instance a particular format class allocates its telemetry packets (NOTE: Although there are two TlmAllocator's drawn, this is for cosmetic reasons. There is actually only one TlmAllocator class definition).

FIGURE 80. Non-Science Telemetry Format Classes


Protocols::TlmForm - This class is provided by the Protocols class category, and is responsible for providing the common functionality and interface definitions for all telemetry format classes. See Section 18.0 for a detailed description of this class.

Protocols::TlmAllocator - This class is provided by the Protocols class category, and is responsible for allocating and releasing telemetry packet buffers from a telemetry pool. Each pool of telemetry buffers is managed by one allocator instance. After startup, all interactions with instances of this class are made via the TlmForm member functions. The classes described in this section use the global instances of TlmAllocator to inform their respective parent TlmForm which allocator to use to obtain telemetry packets of a particular type. If more than one class uses the same allocator, they compete for buffers from the managed pool. Class instances which use different instances do not compete for buffers (they do, however, compete for telemetry transfer time). See Section 18.0 for more detail.

TfCmdResponse - This abstract class is a subclass of TlmForm, which formats all telemetry packets which are in direct response to a command. This class provides the common functions to write the command identifier of the initiating command packet, setCmdId(), and write the timestamp associated with the response, setTimestamp().

TfSwHouse - This class is a subclass of TlmForm and is responsible for accumulating software housekeeping statistics directly into the telemetry packet's buffer, accumulateStat(), and for requesting and initializing the telemetry packet buffer, setupBuffer(). All instances of this class use the telemetry allocator instance, swHouseAllocator, to obtain telemetry packet buffers.

TfStartup - This class is a subclass of TlmForm and is responsible for formatting the startup telemetry packet message. This class provides functions to store the software version code, setVersion(), (TBD: Patch Version?), the initial ACIS timer tick counter (given an idle telemetry stream, this can be loosely correlated to the telemetry frame number, and subsequently to the spacecraft clock), setTimestamp(), the reason for the instrument reset (including the last sent fatal error message code and value), setBootMode(), and the results of the initial system integrity checks, set(Patch,Blocks,SysConfig)ValidFlag(). All instances of this class obtain their telemetry packet buffers from the startupAllocator instance.

TfDeaHouse - This class is a subclass of TlmForm and is responsible for formatting the contents of a DEA Housekeeping telemetry packet buffer. This class provides functions to inquire as to the maximum number of entries the buffer can hold, getMaxEntryCount(), set the parameter block identifier and timer tick counter into the packet header, setIdInfo(), and add housekeeping entries to the body of the packet, addEntry(). All instances of this class obtain their telemetry packet buffers from the deaHouseAllocator instance.

TfCmdEcho - This class is a subclass of TlmForm and is responsible for forming an echo of a command packet in a telemetry packet buffer. This class provides a function to copy a command packet into a command echo telemetry packet buffer, copyCmd(), and to set the command execution result code, setResult(). All instances of this class obtain their telemetry packet buffers from the cmdLogAllocator instance.

TfReadPram - This class is a subclass of TfCmdResponse, and is responsible for managing the telemetry packet contents of a dump of one of the DEA CCD Controller's Program RAM (PRAM). This class provides a function to obtain the start of the data buffer to use for the copied PRAM words, and the maximum length of this buffer, getReadBuffer(). It also provides functions to store the DEA CCD Controller Board identifier, the starting index of the read, and the number of PRAM words read (setBoardId(), setIndex() and setReadCount() respectively). All instances of this class obtain their telemetry buffers from the memServerAllocator instance. This TlmAllocator instance also supplies the following classes with telemetry buffers: TfReadSram, TfExecBep, TfExecFep, TfReadBep, TfReadFep.

TfReadSram - This class is a subclass of TfCmdResponse, and is responsible for managing the telemetry packet contents of a dump of one of the DEA CCD Controller's Sequencer RAM (SRAM). This class provides identical capabilities to the TfReadPram class, except that its function work using SRAM data units instead of PRAM units. All instances of this class obtain their telemetry buffers from the memServerAllocator instance. This TlmAllocator instance also supplies the following classes with telemetry buffers: TfReadPram, TfExecBep, TfExecFep, TfReadBep, TfReadFep.

TfExecBep - This class is a subclass of TfCmdResponse, and is responsible formatting the telemetry response to an "Execute Back End Memory" command (see Section TBD). This class provides a function, setReturnValue(), to store the return value of the subroutine called by the execute command. All instances of this class obtain their telemetry buffers from the memServerAllocator instance. This TlmAllocator instance also supplies the following classes with telemetry buffers: TfReadSram, TfReadPram, TfExecFep, TfReadBep, TfReadFep.

TfExecFep - This class is a subclass of TfCmdResponse, and is responsible for formatting the telemetry response to an "Execute Front End Memory" command (see Section TBD). In addition to providing the setReturnValue() function (see TfExecBep), this class also provides a function to store the Front End Processor identifier into the telemetry packet buffer, setFepId(). All instances of this class obtain their telemetry buffers from the memServerAllocator instance. This TlmAllocator instance also supplies the following classes with telemetry buffers: TfReadSram, TfReadPram, TfExecBep, TfReadBep, TfReadFep.

TfReadBep -This class is a subclass of TfCmdResponse, and is responsible for managing the telemetry packet contents of a dump of the Back End Processor's memory. This class provides a function to obtain the start of the data buffer to use for the copied words, and the maximum length of this buffer, getReadBuffer(). It also provides functions to store the starting address of the read, and the number of words read (setMemAddr() and setReadCount() respectively). All instances of this class obtain their telemetry buffers from the memServerAllocator instance. This TlmAllocator instance also supplies the following classes with telemetry buffers: TfReadSram, TfReadPram, TfExecBep, TfExecFep, TfReadFep.

TfReadFep -This class is a subclass of TfCmdResponse, and is responsible for managing the telemetry packet contents of a dump of one of the Front End Processors' memory. This class provides the same set of functions as TfReadBep and adds one additional function to store the Front End Processor Identifier, setFepId(). This TlmAllocator instance also supplies the following classes with telemetry buffers: TfReadSram, TfReadPram, TfExecBep, TfExecFep, TfReadBep.

19.3.2 Parameter Dump Telemetry Format Relationships

Figure 81 illustrates the relationships between telemetry packet format classes involved in building parameter blocks during the setup phase of a Science or DEA Housekeeping run (see Sections TBD and TBD). All of the science parameter dumps use the scienceAllocator TlmAllocator instance to obtain their respective telemetry packet buffers. The DEA Housekeeping parameter dump counts on the deaHouseAllocator to supply its telemetry packet buffers.

FIGURE 81. Parameter Dump Telemetry Format Classes


TfDump - This class is a subclass of TlmForm and is responsible for storing information in the header area common to all parameter block dump classes. This class provides a function to set the Parameter Block Identifier, setBlockId(). It also provides a protected function, used by its subclasses to perform a word-by-word copy of a parameter block into the body of the telemetry packet buffer, storeBlock().

TfDumpTe - This class is a subclass of TfDump and is responsible for storing a Timed Exposure Parameter block into the body the telemetry packet buffer. This class provides the function copyBlock() to perform the copy. This class uses the TlmAllocator instance scienceAllocator, which is shared will all other science telemetry packet classes except the bias map dump.

TfDumpCc -This class is a subclass of TfDump and is responsible for storing a Continuous Clocking Parameter block into the body the telemetry packet buffer. This class provides the function copyBlock() to perform the copy. This class uses the TlmAllocator instance scienceAllocator, which is shared will all other science telemetry packet classes except the bias map dump.

TfDump2dWin -This class is a subclass of TfDump and is responsible for storing a 2-D Window List Parameter block into the body the telemetry packet buffer. This class provides the function copyBlock() to perform the copy. This class uses the TlmAllocator instance scienceAllocator, which is shared will all other science telemetry packet classes except the bias map dump.

TfDump1dWin -This class is a subclass of TfDump and is responsible for storing a 1-D Window List Parameter block into the body the telemetry packet buffer. This class provides the function copyBlock() to perform the copy. This class uses the TlmAllocator instance scienceAllocator, which is shared will all other science telemetry packet classes except the bias map dump.

TfDumpDeaHouse -This class is a subclass of TfDump and is responsible for storing a DEA Housekeeping Parameter block into the body the telemetry packet buffer. This class provides the function copyBlock() to perform the copy. This class uses the TlmAllocator instance scienceAllocator, which is shared will all other science telemetry packet classes except the bias map dump.

19.3.3 Science Telemetry Format Relationships

Figure 82 illustrates the relationships between telemetry packet format classes which produce science telemetry. All of these classes, except for the bias map data packets use the scienceAllocator TlmAllocator instance to obtain their respective telemetry packet buffers. The bias map data uses the biasAllocator instance.

Some of the abbreviations used to build the science packet format class names are as follows:

Tf - Telemetry Format (TlmForm)
Sci - Science Format
Exp - Exposure
Er - Exposure Record
Da - Data
Te - Timed Exposure
Cc - Continuous Clocking

FIGURE 82. Science Telemetry Format Classes


TfSciExpRecord - This class is a subclass of TlmForm and is responsible for storing information common to all types of Science Exposure Record telemetry packets. This class provides a function to store the parameter block identifier, the microsecond timestamp, latched at the start of the science run, the identifier of the CCD producing the exposure, and the exposure number into the telemetry packet buffer, setExposureInfo(). All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciData - This class is a subclass of TlmForm and is responsible for storing information common to all types of Science Data telemetry packets. This class provides a function to store the identifier of the CCD producing the data, and the data packet sequence number for the exposure, setDataInfo(). All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciReport - This class is a subclass of TlmForm and is responsible for storing post-science run information, such as a summary of the number of telemetered exposures, the number of bias map parity errors encountered during the run, flags indicating which, if any, of the Front End Processors encountered errors, etc. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciBias - This class is a subclass of TlmForm and is responsible for storing bias map information into a telemetry packet buffer. The detailed capabilities of this class are TBD, but will include the ability to pack bias map pixels into the telemetry packet buffer's data area (packBiasMap()). If a compression table is specified, this class uses the passed instance of the HuffmanTable class to compress the bias map into the buffer. If no compression table is passed, the bias map is not compressed. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, biasAllocator (not shown).

TfSciErTeRaw - This class is a subclass of TfSciExpRecord and is responsible for forming the body of a Timed Exposure Raw Mode Exposure Record telemetry packet. The detailed capabilities of this class are TBD, but will include the ability to store the number of pixels telemetered from the exposure (setPixelCount()). If a compression table is specified, this class uses the passed instance of the HuffmanTable class to compress the raw pixels into the buffer. If no compression table is passed, the pixels are not compressed. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErTeHist - This class is a subclass of TfSciExpRecord and is responsible for forming the body of a Timed Exposure Histogram Exposure Record telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErEvent - This class is a subclass of TfSciExpRecord and is responsible for forming the body of all types of event-based Exposure Record telemetry packets. The detailed capabilities of this class are TBD, but will include the ability to store the number of events produced, store the overclock levels used for the exposure, store a count of the number of pixels which exceeded a threshold, store the number of parity errors in the bias map encountered since the start of the run, and store the various event discard counters (see Figure 82). All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErTeEvent - This class is a subclass of TfSciErEvent and is responsible for forming the body of all Timed Exposure event-based Exposure Record telemetry packets. The detailed capabilities of this class are TBD.

TfSciErCcEvent - This class is a subclass of TfSciErEvent and is responsible for forming the body of all Continuous Clocking event-based Exposure Record telemetry packets. The detailed capabilities of this class are TBD.

TfSciErTeFaint - This class is a subclass of TfSciErTeEvent and is responsible for forming the body of a Timed Exposure Faint Mode Exposure Record telemetry packet. The detailed capabilities of this class, beyond those of its parent class, are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErTeFaintBias - This class is a subclass of TfSciErTeEvent and is responsible for forming the body of a Timed Exposure Faint with Bias Mode Exposure Record telemetry packet. The detailed capabilities of this class are TBD, but in addition to the functions provided by its parent, will include the ability to write the Bias Offset level used for the science run into the telemetry packet buffer (setBiasOffset()). All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErTeGraded - This class is a subclass of TfSciErTeEvent and is responsible for forming the body of a Timed Exposure Graded Mode Exposure Record telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErCcRaw - This class is a subclass of TfSciExpRecord and is responsible for forming the body of a Continuous Clocking Raw Mode Exposure Record telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErCcFaint - This class is a subclass of TfSciErCcEvent and is responsible for forming the body of a Continuous Clocking Faint Mode Exposure Record telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErCcFaintBias - This class is a subclass of TfSciErCcEvent and is responsible for forming the body of a Continuous Clocking Faint Bias Mode Exposure Record telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciErCcGraded - This class is a subclass of TfSciErCcEvent and is responsible for forming the body of a Continuous Clocking Graded Mode Exposure Record telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaTeRaw - This class is a subclass of TfSciData and is responsible for forming the contents of a Timed Exposure Raw Mode Data telemetry packet. The detailed capabilities of this class are TBD, but will include the ability to pack raw pixel data into the telemetry packet buffer (packData()). All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaTeHist - This class is a subclass of TfSciData and is responsible for forming the contents of a Timed Exposure Histogram Mode Data telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaTeFaint - This class is a subclass of TfSciData and is responsible for forming the contents of a Timed Exposure Faint Mode Data telemetry packet. The detailed capabilities of this class are TBD, but will include the ability to pack Faint-Mode events and bias map parity error indicators into the telemetry packet buffer (packEvents()). All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaTeFaintBias - This class is a subclass of TfSciData and is responsible for forming the contents of a Timed Exposure Faint with Bias Mode Data telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaTeGraded - This class is a subclass of TfSciData and is responsible for forming the contents of a Timed Exposure Graded Mode Data telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaCcRaw - This class is a subclass of TfSciData and is responsible for forming the contents of a Continuous Clocking Raw Mode Data telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaCcFaint - This class is a subclass of TfSciData and is responsible for forming the contents of a Continuous Clocking Faint Mode Data telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaCcFaintBias - This class is a subclass of TfSciData and is responsible for forming the contents of a Continuous Clocking Faint with Bias Mode Data telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

TfSciDaCcGraded - This class is a subclass of TfSciData and is responsible for forming the contents of a Continuous Clocking Graded Mode Data telemetry packet. The detailed capabilities of this class are TBD. All instances of this class obtain their telemetry packet buffers from the TlmAllocator instance, scienceAllocator (not shown).

19.4 Scenarios

19.4.1 Use 1: Format Startup Message Packets

Figure 83 illustrates the sequence of events involved in forming and sending the startup telemetry packet. This scenario re-iterates some of the behaviors described in Section 18.0.

FIGURE 83. Forming and sending a Startup Message


  1. The startup unit initializes the ACIS software, performs initial integrity checks of all persistent data structures, starts the executive, constructs all global class instances, and constructs a local TfStartup instance, startupForm (steps not shown). It then asks the form to obtain a telemetry packet buffer from its pool, using startupForm.requestBuffer().

  2. startupForm.requestBuffer(), inherited from TlmForm, invokes its allocator's allocator->requestPkt() function, which returns a TlmPkt instance, packet.

  3. startup tells startupForm to set the software version code, the reason for the re-boot, the various results of its earlier integrity checks, and the value of the Back End's timer tick counter (setVersion(), setBootReason(), setPatchValidFlag(), setSysConfigValidFlag(), setBlocksValidFlag(), setTimestamp(), respectively).

  4. When asked to store these data elements, startupForm uses TlmForm::getBufferInfo() to obtain the address and length of the data portion of the packet. It then stores the value into the packet's data buffer.

  5. When invoked, TlmForm::getBufferInfo() uses the packet's getDataAddress() and getMaxDataLength() functions to obtain the address and length of the telemetry packet's data buffer.

  6. Once a value is stored, startupForm uses TlmForm::setLength() to set the total packet length. TlmForm::setLength() uses the packet's setDataLength() to record the total length of the data portion of the telemetry packet (not shown).

  7. Once all of the fields have been set, startup tells startupForm to post the packet for transfer, using TlmForm::post().

  8. TlmForm::post() in-turn, passes a pointer to the packet to the telemetry manager, using tlmManager.post(). At this point, the packet is placed into the telemetry queue, awaiting transfer out of the instrument. Once the packet has been transferred, the telemetry manager releases the packet back to its allocator, startupAllocator (sequence not shown).

  9. Once the packet has been posted, startup is free to release the form (~TlmForm) (since it is a local, this is done by leaving the scope which declared the instance).

19.4.2 Use 2: Format Command Echo Packets

Figure 84 illustrate the overall sequences used to echo command packets.

FIGURE 84. Command Echo formatting


  1. The cmdLog (see Section TBD) is asked to open an entry. It asks its local echoForm to obtain a telemetry buffer, using echoForm.requestBuffer() (inherited from TlmForm).

  2. echoForm.requestBuffer() then asks cmdLogAllocator for a telemetry packet buffer, using the non-blocking allocator->requestPkt(). If the call returns a buffer, the scenario proceeds, otherwise, a dropped echo is reported to software housekeeping (not shown), and the cmdLog aborts its attempt to echo the command.

  3. Once a packet has been obtained, cmdLog instructs echoForm to copy the command packet into the telemetry packet buffer, using echoForm.copyCmd(), passing a pointer to the packet to be echoed.

  4. copyCmd() calls cmdPkt.getBufferAddress() and cmdPkt.getPacketLength() to get the pointer and total length of the command packet to be echoed. It then uses TlmForm::getBufferInfo() to get the destination address and length (not shown), and copies the command packet contents into the telemetry buffer. It then calls TlmForm::setLength() to inform the telemetry packet of the amount of data copied (also not shown).

  5. Later, after the command has been executed, the cmdLog is told to close the entry. It stores the passed command result code into the telemetry packet buffer using echoForm.setResult().

  6. cmdLog tells echoForm to post the formed telemetry packet to telemetry, using the inherited TlmForm::post()

  7. TlmForm::post() then passes a pointer to the telemetry packet buffer to tlmManager.post() to be queued for transfer out of the instrument, and zeros the local packet pointer.

19.4.3 Use 3: Format Software Housekeeping Packets

Figure 85 illustrates the overall scenario for logging statistics into software housekeeping packet buffers, and the steps used to post a housekeeping packet for transfer out of the instrument. This scheme relies on the client, the Software Housekeeper, maintaining two instances of TfSwHouse, referenced via pointers. When a transfer is requested, one form is used to acquire a telemetry buffer, and setup the buffer, while the other form is used to continue to accumulate asynchronous statistics reports. Once the new buffer is setup, the client starts acquiring values into the new buffer, while the second is posted for transfer out of the instrument.

FIGURE 85. Software Housekeeping format and posting


  1. Initially, curForm has a telemetry buffer, and nxtForm does not. All housekeeping reports are forwarded by swHousekeeper to curForm, which increments the corresponding statistic slot and stores the associated value directly into the telemetry buffer, using curform->accumulateStat().

  2. When the swHousekeeper wants to send the current housekeeping log, it invokes nxtForm->setupBuffer() to attempt to obtain a telemetry packet buffer.

  3. setupBuffer() calls its inherited function, TlmForm::requestBuffer() (not shown), which then calls the swHouseAllocator to attempt to obtain a buffer using, allocator->requestPkt(). If no buffers are available, setupBuffer() fails, and the housekeeper reports the occurrence to curForm, and the scenario stops.

  4. If a buffer is acquired, nxtForm calls its inherited function, TlmForm::getBufferInfo() to obtain the address and space available for use for the statistics. It then calls TlmForm::setLength() to establish the length of the housekeeping header and statistics entry array portion of the packet.

  5. Once nxtForm is setup, swHousekeeper uses the form to accumulate any new statistics, nxtForm->accumulateStat().

  6. At this point, new statistics reports are no longer being sent to curForm, and the swHousekeeper tells curForm to send its telemetry packet, using TlmForm::post().

  7. TlmForm::post() then passes the telemetry packet pointer to tlmManager.post() to be queued for transfer out of the instrument. TlmForm::post() then zeros curForm's telemetry packet pointer. At this point, nxtForm has a telemetry buffer, and curForm does not, and all software housekeeping reports are accumulated into nxtForm's telemetry packet buffer.

19.4.4 Use 4: Format Memory Dump and Execution Result Packets

Figure 86 illustrates the use of the memory dump and execution result telemetry formats. The diagram illustrates the use of the TfReadPram and TfExecFep classes. The use of the remaining memory server classes, TfReadBep, TfReadFep, TfReadSram, TfExecBep, are similar and are not explicitly described.

FIGURE 86. Memory Dump and Execution Form Use


  1. The memoryServer receives a request to read and telemeter a portion of one of the CCD Controller's PRAM and enters a loop which terminates once the entire request has been satisfied. At the top of the loop, the memoryServer constructs an instance of TfReadPram, called readForm, and calls readForm.waitForBuffer().

  2. readForm.waitForBuffer() goes to memServerAllocator to obtain a buffer, using allocator->waitForPkt().

  3. The memoryServer then calls readForm.getReadBuffer() to obtain a pointer to an array of PRAM data slots, and a count of the maximum number of data words the packet can hold.

  4. readForm.getReadBuffer() uses TfCmdResponse::getBufferInfo() to obtain the data area of the packet (after packet header and command response headers).

  5. Once the memoryServer has the destination buffer, it acquires and fills the buffer with PRAM data words. The memoryServer then stores the packet's header information, by calling readForm's setBoardId(), setIndex(), setCmdId(), and setTimestamp(). It informs the packet how many PRAM words were actually written, using readForm.setReadCount(). Except for setReadCount(), each of these TfReadPram functions write their respective data directly into the telemetry buffer. setReadCount(), however, adds in its own header size to the reported value, and then uses TfCmdResponse::setLength() (not shown) to establish the length of its portion of the packet.

  6. The memoryServer then invokes readForm's inherited TlmForm::post() to transfer packet information out of the instrument

  7. TlmForm::post() passes the telemetry packet pointer to tlmManger.post(), and zeros the local copy.

  8. The memoryServer then invokes the destructor (~TlmForm()) as it iterates or exits its loop.

  9. Later, the memoryServer is asked to execute a subroutine in one of the Front End Processor memories, and telemeter the result. The memoryServer declares an instance of TfExecFep called executeForm, and calls its waitForBuffer() function, inherited from TlmForm.

  10. TlmForm::waitForBuffer() invokes the memServerAllocator to get a buffer, using allocator->waitForPkt().

  11. The memoryServer then invokes executeForm's setFepId(), setCmdId(), and setTimestamp(), to write the specified information into the telemetry buffer.

  12. The memoryServer executes the specified subroutine on the indicated Front End Processor, and retrieves the value returned by the called function (not shown). It then stores the return value into the telemetry packet buffer using executeForm.setReturnValue().

  13. The memoryServer posts the telemetry packet for transfer using executeForm.post() (inherited from TlmForm).

  14. TlmForm::post() passes tlmManager.post() the pointer to the telemetry packet, and zeros its local copy.

  15. The memoryServer then destroys executeForm (~TlmForm()) by leaving the scope which declared the form.

19.4.5 Use 5: Format DEA Housekeeping Packets

The DEA Housekeeper periodically acquires and telemeters a set of DEA housekeeping values. Figure 87 illustrates the use of DEA Housekeeping formats to accumulate and send one set of DEA Housekeeping information.

FIGURE 87. DEA Housekeeping format and posting


  1. The deaHousekeeper starts its data acquisition, constructs a fresh instance of a TfDeaHouse form, called deaHouseForm, and asks it to request a telemetry buffer, using deaHouseForm.requestBuffer(). If it fails, the housekeeper logs the occurrence in software housekeeping (not shown) and tries again later, at the start of its next phase.

  2. deaHouseForm.requestBuffer() uses deaHouseAllocator.requestPkt() to acquire its telemetry packet buffer.

  3. The deaHousekeeper queries the form for its maximum number of supported entries, using deaHouseForm.getMaxEntryCount().

  4. getMaxEntryCount() uses the inherited function TlmForm::getBufferInfo() to determine the amount of space available in the telemetry packet for housekeeping entries (minus any header space used by TfDeaHouse itself).

  5. deaHousekeeper stores the parameter block identifier used for the run, and the current Back End Processor timer tick counter, into the telemetry packet buffer using deaHouseForm.setIdInfo().

  6. deaHousekeeper then queries the DEA subsystems for a piece of housekeeping information specified by the selected DEA Housekeeping Parameter block, and appends it data in the telemetry packet buffer using deaHouseForm.addEntry(). It continues to do this for each housekeeping entry in the DEA Housekeeping Parameter block, or until the maximum number of supported entries is reached in the telemetry packet.

  7. As each entry is added to the telemetry packet, deaHouseForm informs the packet of the added data using the inherited TlmForm::setLength().

  8. Once all of the housekeeping values have been acquired and stored, the deaHousekeeper calls deaHouseForm.post() to post the packet for transfer out of the instrument.

  9. post() then passes tlmManager.post() the pointer to the telemetry packet, and zeros its local copy.

19.4.6 Use 6: Format Science Packets

Figure 88 illustrates prototype uses of the Science Telemetry forms. The scenario illustrates the use of Timed Exposure Faint Mode exposures and data, concurrently with the sending of the bias map. Steps 1 - 11 illustrate the overall scenario for exposure data from one CCD. Steps 12 - 17 illustrate the steps used by the Bias Thief to form and send Bias Map telemetry packets.

FIGURE 88. Timed Exposure Faint Mode telemetry formats with Bias Map


  1. The current science mode, smTimedExp, receives a new exposure's worth of Faint Mode events from one of the Front End's processing CCD images. smTimedExp constructs a science data timed exposure faint mode form (TfSciDaTeFaint) instance, sciDaTeFaintForm, and asks the form to acquire a telemetry packet buffer, using sciDaTeFaintForm.waitForBuffer().

  2. waitForBuffer() calls scienceAllocator.waitForPkt() to wait for and allocate a telemetry packet buffer. If waitForPkt()'s time-out expires, the science mode performs any needed housekeeping operations, and then retries until one becomes available.

  3. Once a buffer has been allocated, smTimedExp stores the CCD identifier and data packet sequence number into the telemetry buffer using sciDaTeFaintForm.setDataInfo().

  4. smTimedExp then calls sciDaTeFaintForm.packEvents()to pack the received events into the telemetry buffer. As new events from the CCD exposure arrive, the mode continues to call sciDaTeFaintForm.packEvents() until the telemetry buffer fills.

  5. Once the telemetry buffer becomes full, or once all of the exposure data from the CCD have been packed, smTimedExp calls the inherited function TlmForm::post()) to transfer the packet to telemetry.

  6. TlmForm::post() passes tlmManager.post() the pointer to the telemetry buffer, which then queues the packet for transfer out of the instrument. TlmForm::post() then zeros the local copy of the telemetry packet pointer, and the form can be destroyed. If there are more events from the CCD exposure to process, smTimedExp constructs a new form, and asks the form to wait for a new buffer. Once a buffer has been obtained, the scenario proceeds from step 3. (NOTE: The construction/destruction of the form is not completely necessary and is left as an option to the mode).

  7. Once all events from a CCD exposure have been packed and posted to telemetry, smTimedExp constructs a Timed Exposure Faint Mode Record form, sciErTeFaintForm, and asks the form to wait for and allocate a telemetry buffer, sciErTeFaintForm.waitForBuffer().

  8. As in step 2, waitForBuffer() calls scienceAllocator.waitForPkt() to wait for and allocate a telemetry packet buffer. If the call times-out, the science mode performs any needed housekeeping operations, and then retries until one becomes available.

  9. Once a buffer has been allocated, smTimedExp stores the CCD identifier, science run starting timestamp, the parameter block identifier, and the exposure number into the telemetry packet buffer using sciErTeFaintForm.setExposureInfo(). It also stores the overclock levels used by the completed exposure, using sciErTeFaintForm.setOverclockLevel().

  10. smTimedExp then sends the packet using the inherited function, TlmForm::post().

  11. As in step 6, TlmForm::post() invokes tlmManager.post() and zeros its local telemetry packet pointer.

  12. Meanwhile, the biasThief is attempting to telemeter the bias maps being used by each of the active Front End Processors. As science processing periodically yields control to the biasThief, the biasThief constructs a TfSciBias instance, sciBiasForm, and asks it to wait for a telemetry buffer from its own pool, using sciBiasForm.waitForBuffer() (inherited from TlmForm).

  13. waitForBuffer() attempts to obtain a buffer using the bias thief's packet allocator, biasAllocator.waitForPkt(). If the wait times out, the bias thief performs any needed housekeeping, and then retries until it successfully obtains a buffer.

  14. Once sciBiasForm gets a telemetry packet buffer, the biasThief calls sciBiasForm.packBiasMap(), passing a reference to the region of the FEP's bias map to send (including row/column information), and a pointer to the Huffman Compression table to use, compressionTable.

  15. sciBiasForm.packBiasMap() then uses the passed table to compress the pixel bias directly from the FEP's shared-memory bias map area, into the telemetry packet buffer, using compressionTable->packData(). (NOTE: If the passed compressionTable pointer is 0, sciBiasForm just packs the data into the telemetry buffer without compression.

  16. Once the telemetry packet buffer is full, the biasThief posts the packet for transfer, using sciBiasForm.post().

  17. sciBiasForm.post() then passes the packet buffer pointer to tlmManager.post() for transfer out of the instrument. sciBiasForm.post() then zeros its local telemetry packet pointer. The biasThief then repeats from step 12 until the remaining bias map information is packed and sent.

19.5 Class TfCmdEcho

Documentation:
This class formats command echo telemetry packets.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Public Uses:

CmdPkt

Implementation Uses:

TlmAllocator cmdLogAllocator

Public Interface:

Operations:

copyCmd()
setResult()
Concurrency:
Guarded
Persistence:
Transient

19.5.1 copyCmd()

Public member of:
TfCmdEcho
Return Class:
void

Arguments:

const CmdPkt* cmdpkt
Documentation:
This function copies the contents of the passed command packet, cmdpkt, into the telemetry buffer.
Concurrency:
Guarded

19.5.2 setResult()

Public member of:
TfCmdEcho
Return Class:
void

Arguments:

CmdResult result
Documentation:
This function copies the command execution result code, result, into the telemetry buffer.
Concurrency:
Guarded

19.6 Class TfCmdResponse

Documentation:
This is an abstract class which is responsible for formatting the command identifier portion of all telemetry packets which are in direct response to a command.
Export Control:
Public
Cardinality:
0

Hierarchy:

Superclasses:

TlmForm

Public Interface:

Operations:

TfCmdResponse()
setCmdId()
setTimestamp()

Protected Interface:

Operations:

getBufferInfo()
setLength()
Concurrency:
Guarded
Persistence:
Transient

19.6.1 TfCmdResponse()

Public member of:
TfCmdResponse

Arguments:

TlmAllocator* allocator
TlmFormatTag format
Documentation:
This constructor initializes its parent, TlmForm, passing up a pointer to packet buffer manager, allocator, and the telemetry format tag to use for this instance, format.
Concurrency:
Guarded

19.6.2 getBufferInfo()

Protected member of:
TfCmdResponse
Return Class:
void

Arguments:

unsigned*& bufaddr
unsigned& bufcnt
Documentation:
This function supplies the buffer address, written into bufaddr, and maximum data length, written to bufcnt, of a telemetry packet, available for use by subclasses of this type of packet. The actual used length is set by setLength().
Concurrency:
Guarded

19.6.3 setCmdId()

Public member of:
TfCmdResponse
Return Class:
void

Arguments:

unsigned cmdid
Documentation:
This function sets the command identifier, cmdid, in the telemetry packet buffer.
Concurrency:
Guarded

19.6.4 setTimestamp()

Public member of:
TfCmdResponse
Return Class:
void

Arguments:

unsigned tickcnt
Documentation:
This function stores the BEP timer tick counter, tickcnt, into the telemetry packet buffer.
Concurrency:
Guarded

19.6.5 setLength()

Protected member of:
TfCmdResponse
Return Class:
void

Arguments:

unsigned wordcnt
Documentation:
This function sets the number of data words, wordcnt, written by the subclass to the telemetry packet buffer. The maximum available is obtained using getBufferInfo().
Concurrency:
Guarded

19.7 Class TfDeaHouse

Documentation:
This class formats DEA Housekeeping telemetry packets.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Implementation Uses:

TlmAllocator deaHouseAllocator

Public Interface:

Operations:

addEntry()
getMaxEntryCount()
setIdInfo()

Private Interface:

Has-A Relationships:


unsigned nxtentry:: This is the index of the next DEA Housekeeping entry slot available for use.
Concurrency:
Guarded
Persistence:
Transient

19.7.1 addEntry()

Public member of:
TfDeaHouse
Return Class:
Boolean

Arguments:

DeaHouseId entryid
unsigned value
Documentation:
This function appends a DEA Housekeeping Identifier/Value pair, entryid and value respectively, to the end of the telemetry packet. This function returns BoolTrue if the value was added, and BoolFalse if the telemetry packet is full. NOTE: This type of telemetry packet is not bit-packed.
Concurrency:
Guarded

19.7.2 getMaxEntryCount()

Public member of:
TfDeaHouse
Return Class:
unsigned
Documentation:
This function returns the maximum number of DEA Housekeeping Identifier/Value pairs which can be contained within a DEA Housekeeping packet.
Concurrency:
Guarded

19.7.3 setIdInfo()

Public member of:
TfDeaHouse
Return Class:
void

Arguments:

unsigned blockid
unsigned tickcount
Documentation:
This function sets the parameter block id, blockid, used to configure the DEA housekeeping run, and the BEP's tick counter, tickcount, at about the time the acquisition for this packet started.
Concurrency:
Guarded

19.8 Class TfDump

Documentation:
This class is responsible for forming the common portion of parameter dump telemetry packet buffers.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Public Interface:

Operations:

TfDump()
setBlockId()

Protected Interface:

Operations:

storeBlock()
Concurrency:
Guarded
Persistence:
Transient

19.8.1 TfDump()

Public member of:
TfDump

Arguments:

TlmAllocator* allocator
TlmFormatTag format
Documentation:
This constructor associates the parameter dump class with the telemetry buffer manager, allocator, and the telemetry format tag, format.
Concurrency:
Guarded

19.8.2 setBlockId()

Public member of:
TfDump
Return Class:
void

Arguments:

unsigned blockid
Documentation:
This function stores the parameter block identifier, blockid, in the telemetry buffer header.
Concurrency:
Guarded

19.8.3 storeBlock()

Protected member of:
TfDump
Return Class:
void

Arguments:

const unsigned* srcaddr
unsigned wordcnt
Documentation:
This function provides a common function used by subclasses to copy a parameter block into the body of the telemetry packet buffer. srcaddr is the address of the parameter block, specified in terms of an array of 32-bit words. wordcnt is the number of 32-bit words to copy into the telemetry packet buffer.
Postconditions:
The number of 32-bit words must fit entirely within the available packet buffer space.
Concurrency:
Guarded

19.9 Class TfDump1dWin

Documentation:
This class is responsible for forming the body of a 1-D Window List Parameter Block telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfDump

Implementation Uses:

TlmAllocator scienceAllocator

Public Interface:

Operations:

copyBlock()
Concurrency:
Guarded
Persistence:
Transient

19.9.1 copyBlock()

Public member of:
TfDump1dWin
Return Class:
void

Arguments:

const Pb1dWindow& pblock
Documentation:
This function copies the parameter block, referenced by pblock, into the telemetry packet buffer. This function uses TfDump::storeBlock() to perform the actual copy.
Concurrency:
Guarded

19.10 Class TfDump2dWin

Documentation:
This class is responsible for forming the body of a 2-D Window List Parameter Block telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfDump

Implementation Uses:

TlmAllocator scienceAllocator

Public Interface:

Operations:

copyBlock()
Concurrency:
Guarded
Persistence:
Transient

19.10.1 copyBlock()

Public member of:
TfDump2dWin
Return Class:
void

Arguments:

const Pb2dWindow& pblock
Documentation:
This function copies the parameter block, referenced by pblock, into the telemetry packet buffer. This function uses TfDump::storeBlock() to perform the actual copy.
Concurrency:
Guarded

19.11 Class TfDumpCc

Documentation:
This class is responsible for forming the body of a Continuous Clocking Parameter Block telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfDump

Implementation Uses:

TlmAllocator scienceAllocator

Public Interface:

Operations:

copyBlock()
Concurrency:
Guarded
Persistence:
Transient

19.11.1 copyBlock()

Public member of:
TfDumpCc
Return Class:
void

Arguments:

const PbContClock& pblock
Documentation:
This function copies the parameter block, referenced by pblock, into the telemetry packet buffer. This function uses TfDump::storeBlock() to perform the actual copy.
Concurrency:
Guarded

19.12 Class TfDumpDeaHouse

Documentation:
This class is responsible for forming the body of a DEA Housekeeping Parameter Block telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfDump

Implementation Uses:

TlmAllocator deaHouseAllocator

Public Interface:

Operations:

copyBlock()
Concurrency:
Guarded
Persistence:
Transient

19.12.1 copyBlock()

Public member of:
TfDumpDeaHouse
Return Class:
void

Arguments:

const PbDeaHouse& pblock
Documentation:
This function copies the parameter block, referenced by pblock, into the telemetry packet buffer. This function uses TfDump::storeBlock() to perform the actual copy.
Concurrency:
Guarded

19.13 Class TfDumpTe

Documentation:
This class is responsible for forming the body of a Timed Exposure Parameter Block telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfDump

Implementation Uses:

TlmAllocator scienceAllocator

Public Interface:

Operations:

copyBlock()
Concurrency:
Guarded
Persistence:
Transient

19.13.1 copyBlock()

Public member of:
TfDumpTe
Return Class:
void

Arguments:

const PbTimedExp& pblock
Documentation:
This function copies the parameter block, referenced by pblock, into the telemetry packet buffer. This function uses TfDump::storeBlock() to perform the actual copy.
Concurrency:
Guarded

19.14 Class TfExecBep

Documentation:
This class formats the telemetered response to an "Execute BEP Memory" command.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfCmdResponse

Implementation Uses:

TlmAllocator memServerAllocator

Public Interface:

Operations:

setReturnValue()
Concurrency:
Guarded
Persistence:
Transient

19.14.1 setReturnValue()

Public member of:
TfExecBep
Return Class:
void

Arguments:

unsigned value
Documentation:
This function stores the result of the function call, value, into the telemetry packet buffer.
Concurrency:
Guarded

19.15 Class TfExecFep

Documentation:
This class formats the telemetry response to an "Execute Front End Memory" command.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfCmdResponse

Implementation Uses:

TlmAllocator memServerAllocator

Public Interface:

Operations:

setFepId()
setReturnValue()
Concurrency:
Guarded
Persistence:
Transient

19.15.1 setFepId()

Public member of:
TfExecFep
Return Class:
void

Arguments:

FepId fepid
Documentation:
This function stores the Front End Processor identifier, specified by fepid, into the telemetry packet buffer.
Concurrency:
Guarded

19.15.2 setReturnValue()

Public member of:
TfExecFep
Return Class:
void

Arguments:

unsigned value
Documentation:
This function stores the result of the function call, value, into the telemetry packet buffer.
Concurrency:
Guarded

19.16 Class TfReadBep

Documentation:
This class formats a "Read Back End Memory" telemetry packet, and provides client code with the data buffer to store the read data (or code).
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfCmdResponse

Implementation Uses:

TlmAllocator memServerAllocator

Public Interface:

Operations:

getReadBuffer()
setMemAddr()
setReadLength()
Concurrency:
Guarded
Persistence:
Transient

19.16.1 getReadBuffer()

Public member of:
TfReadBep
Return Class:
void

Arguments:

unsigned*& readbuf
unsigned& readcnt
Documentation:
This function stores the start of the read memory buffer in readbuf, and the maximum number of words that can be stored in readcnt.
Concurrency:
Guarded

19.16.2 setMemAddr()

Public member of:
TfReadBep
Return Class:
void

Arguments:

const unsigned* srcaddr
Documentation:
This function stores the starting memory location, srcaddr, of the data contained within the packet in the telemetry buffer.
Concurrency:
Guarded

19.16.3 setReadLength()

Public member of:
TfReadBep
Return Class:
void

Arguments:

unsigned readcnt
Documentation:
This function sets the packet length based on the number of 32-bit words stored in the packet's read buffer, readcnt.
Concurrency:
Guarded

19.17 Class TfReadFep

Documentation:
This class formats a "Read Front End Memory" telemetry packet, and provides client code with the data buffer to store the read data (or code).
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfCmdResponse

Implementation Uses:

TlmAllocator memServerAllocator

Public Interface:

Operations:

getReadBuffer()
setFepId()
setMemAddr()
setReadLength()
Concurrency:
Guarded
Persistence:
Transient

19.17.1 getReadBuffer()

Public member of:
TfReadFep
Return Class:
void

Arguments:

unsigned*& readbuf
unsigned& readcnt
Documentation:
This function supplies the caller with the address and capacity of the packet's read data buffer. It sets readbuf to the starting address of the buffer to use, and sets readcnt to the maximum number of words that can be stored in that buffer.
Concurrency:
Guarded

19.17.2 setFepId()

Public member of:
TfReadFep
Return Class:
void

Arguments:

FepId fepid
Documentation:
This function stores the Front End Processor identifier, specified by fepid, into the telemetry packet buffer.
Concurrency:
Guarded

19.17.3 setMemAddr()

Public member of:
TfReadFep
Return Class:
void

Arguments:

const unsigned* srcaddr
Documentation:
This function stores the starting memory location, srcaddr, of the data contained within the packet in the telemetry buffer.
Concurrency:
Guarded

19.17.4 setReadLength()

Public member of:
TfReadFep
Return Class:
void

Arguments:

unsigned readcnt
Documentation:
This function sets the packet length based on the number of 32-bit words stored in the packet's read buffer, readcnt.
Concurrency:
Guarded

19.18 Class TfReadPram

Documentation:
This class formats "Read DEA PRAM" telemetry packets, and provides its client with the data buffer address and maximum length.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfCmdResponse

Implementation Uses:

TlmAllocator memServerAllocator

Public Interface:

Operations:

getReadBuffer()
setBoardId()
setIndex()
setReadCount()
Concurrency:
Guarded
Persistence:
Transient

19.18.1 getReadBuffer()

Public member of:
TfReadPram
Return Class:
void

Arguments:

DeaPramWord*& readbuf
unsigned& wordcnt
Documentation:
This function returns the starting address and maximum entry count of the telemetry packet's DEA PRAM word buffer. It writes the starting address to readbuf, and it writes the maximum number of DeaPramWords that can be stored into the buffer to wordcnt.
Concurrency:
Guarded

19.18.2 setBoardId()

Public member of:
TfReadPram
Return Class:
void

Arguments:

DeaCcdBdId board
Documentation:
This function sets the DEA CCD Controller Board Identifier, board, whose PRAM contents are being stored in the telemetry packet.
Concurrency:
Guarded

19.18.3 setIndex()

Public member of:
TfReadPram
Return Class:
void

Arguments:

unsigned index
Documentation:
This function sets the PRAM offset, index, of the first PRAM word being stored into this packet.
Concurrency:
Guarded

19.18.4 setReadCount()

Public member of:
TfReadPram
Return Class:
void

Arguments:

unsigned wordcnt
Documentation:
This function stores the number of PRAM words, count, written into the packet, into the telemetry packet buffer.
Concurrency:
Guarded

19.19 Class TfReadSram

Documentation:
This class formats "Read DEA SRAM" telemetry packets, and provides its client with the data buffer address and maximum length.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfCmdResponse

Implementation Uses:

TlmAllocator memServerAllocator

Public Interface:

Operations:

getReadBuffer()
setBoardId()
setIndex()
setReadCount()
Concurrency:
Guarded
Persistence:
Transient

19.19.1 getReadBuffer()

Public member of:
TfReadSram
Return Class:
void

Arguments:

DeaSramWord*& readbuf
unsigned wordcnt
Documentation:
This function returns the starting address and maximum entry count of the telemetry packet's DEA SRAM word buffer. It writes the starting address to readbuf, and it writes the maximum number of DeaSramWords that can be stored into the buffer to wordcnt.
Concurrency:
Guarded

19.19.2 setBoardId()

Public member of:
TfReadSram
Return Class:
void

Arguments:

DeaCcdBdId board
Documentation:
This function sets the DEA CCD Controller Board Identifier, board, whose SRAM contents are being stored in the telemetry packet.
Concurrency:
Guarded

19.19.3 setIndex()

Public member of:
TfReadSram
Return Class:
void

Arguments:

unsigned index
Documentation:
This function sets the SRAM offset, index, of the first SRAM word being stored into this packet.
Concurrency:
Guarded

19.19.4 setReadCount()

Public member of:
TfReadSram
Return Class:
void

Arguments:

unsigned count
Documentation:
This function stores the number of SRAM words, count, written into the packet, into the telemetry packet buffer.
Concurrency:
Guarded

19.20 Class TfSciBias

Documentation:
This class is responsible for packing bias-map data into telemetry packet buffers.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Public Uses:

HuffmanTable

Public Interface:

Operations:

packBiasMap()
Concurrency:
Guarded
Persistence:
Transient

19.20.1 packBiasMap()

Public member of:
TfSciBias
Concurrency:
Guarded

19.21 Class TfSciDaCcFaint

Documentation:
This class formats the body of a Continuous Clocking Faint Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData
Concurrency:
Guarded
Persistence:
Transient

19.22 Class TfSciDaCcFaintBias

Documentation:
This class formats the body of a Continuous Clocking Faint-with-Bias Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData
Concurrency:
Guarded
Persistence:
Transient

19.23 Class TfSciDaCcGraded

Documentation:
This class formats the body of a Continuous Clocking Graded Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData
Concurrency:
Guarded
Persistence:
Transient

19.24 Class TfSciDaCcRaw

Documentation:
This class formats the body of a Continuous Clocking Raw Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData
Concurrency:
Guarded
Persistence:
Transient

19.25 Class TfSciDaTeFaint

Documentation:
This class formats the body of a Timed Exposure Faint Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData

Public Interface:

Operations:

packEvents()
Concurrency:
Guarded
Persistence:
Transient

19.25.1 packEvents()

Public member of:
TfSciDaTeFaint
Concurrency:
Guarded

19.26 Class TfSciDaTeFaintBias

Documentation:
This class formats the body of a Timed Exposure Faint-with-Bias Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData
Concurrency:
Guarded
Persistence:
Transient

19.27 Class TfSciDaTeGraded

Documentation:
This class formats the body of a Timed Exposure Graded Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData
Concurrency:
Guarded
Persistence:
Transient

19.28 Class TfSciDaTeHist

Documentation:
This class formats the body of a Timed Exposure Histogram Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData
Concurrency:
Guarded
Persistence:
Transient

19.29 Class TfSciDaTeRaw

Documentation:
This class formats the body of a Timed Exposure Raw Mode data telemetry packet buffer.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciData

Public Interface:

Operations:

packData()
Concurrency:
Guarded
Persistence:
Transient

19.29.1 packData()

Public member of:
TfSciDaTeRaw
Concurrency:
Guarded

19.30 Class TfSciData

Documentation:
This class is responsible for formatting the common header portion of all science data telemetry packets.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Public Interface:

Operations:

TfSciData()
setDataInfo()
Concurrency:
Guarded
Persistence:
Transient

19.30.1 TfSciData()

Public member of:
TfSciData

Arguments:

TlmFormatTag format
Documentation:
This constructor associates the built instance with the telemetry format, specified by format.
Concurrency:
Guarded

19.30.2 setDataInfo()

Public member of:
TfSciData
Return Class:
void

Arguments:

CcdId ccdid
unsigned dataseq
Documentation:
This function stores the passed information into the common science data packet header area of the telemetry buffer. ccdid identifies which CCD produced the stored data, and dataseq is the sequence number of the science data packet for the current exposure.
Concurrency:
Guarded

19.31 Class TfSciErCcEvent

Documentation:
This class formats exposure records for Continuous Clocking event-based modes telemetry packets.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErEvent
Concurrency:
Guarded
Persistence:
Transient

19.32 Class TfSciErCcFaint

Documentation:
This class formats the exposure record for a Continuous Clocking Faint Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErCcEvent
Concurrency:
Guarded
Persistence:
Transient

19.33 Class TfSciErCcFaintBias

Documentation:
This class formats the exposure record for a Continuous Clocking Faint-with-Bias Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErCcEvent
Concurrency:
Guarded
Persistence:
Transient

19.34 Class TfSciErCcGraded

Documentation:
This class formats the exposure record for a Continuous Clocking Graded Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErCcEvent
Concurrency:
Guarded
Persistence:
Transient

19.35 Class TfSciErCcRaw

Documentation:
This class formats the exposure record for a Continuous Clocking Raw Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciExpRecord
Concurrency:
Guarded
Persistence:
Transient

19.36 Class TfSciErEvent

Documentation:
This class formats the exposure record for a Timed Exposure Faint Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciExpRecord

Public Interface:

Operations:

setAboveThresholdCnt()
setBiasParityErrorCnt()
setDiscardGradeCnt()
setDiscardPhCnt()
setDiscardWinCnt()
setEventCnt()
setOverclockLevels()
Concurrency:
Guarded
Persistence:
Transient

19.36.1 setAboveThresholdCnt()

Public member of:
TfSciErEvent
Documentation:
This function stores the number of pixels detected above threshold during the exposure into the telemetry packet buffer.
Concurrency:
Guarded

19.36.2 setBiasParityErrorCnt()

Public member of:
TfSciErEvent
Documentation:
This function stores the number of parity errors detected since the start of the science run into the telemetry packet buffer.
Concurrency:
Guarded

19.36.3 setEventCnt()

Public member of:
TfSciErEvent
Documentation:
This function stores the events telemetered during the exposure into the telemetry packet buffer.
Concurrency:
Guarded

19.36.4 setDiscardGradeCnt()

Public member of:
TfSciErEvent
Documentation:
This function stores the number of events discarded due to their grade code during the exposure into the telemetry packet buffer.
Concurrency:
Guarded

19.36.5 setDiscardPhCnt()

Public member of:
TfSciErEvent
Documentation:
This function stores the number of events discarded due to their pulse height during the exposure into the telemetry packet buffer.
Concurrency:
Guarded

19.36.6 setDiscardWinCnt()

Public member of:
TfSciErEvent
Documentation:
This function stores the number of events discarded by the window list filter during the exposure into the telemetry packet buffer.
Concurrency:
Guarded

19.36.7 setOverclockLevels()

Public member of:
TfSciErEvent
Documentation:
This function stores the delta-overclock values used during the exposure into the telemetry packet buffer.
Concurrency:
Guarded

19.37 Class TfSciErTeEvent

Documentation:
This class formats exposure records for Timed Exposure event-based modes telemetry packets.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErEvent
Concurrency:
Guarded
Persistence:
Transient

19.38 Class TfSciErTeFaint

Documentation:
This class formats the exposure record for a Timed Exposure Faint Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErTeEvent
Concurrency:
Guarded
Persistence:
Transient

19.39 Class TfSciErTeFaintBias

Documentation:
This class formats the exposure record for a Timed Exposure Faint-with-Bias Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErTeEvent

Public Interface:

Operations:

setBiasOffset()
Concurrency:
Guarded
Persistence:
Transient

19.39.1 setBiasOffset()

Public member of:
TfSciErTeFaintBias
Concurrency:
Guarded

19.40 Class TfSciErTeGraded

Documentation:
This class formats the exposure record for a Timed Exposure Graded Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciErTeEvent
Concurrency:
Guarded
Persistence:
Transient

19.41 Class TfSciErTeHist

Documentation:
This class formats the exposure record for a Timed Exposure Histogram Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciExpRecord
Concurrency:
Guarded
Persistence:
Transient

19.42 Class TfSciErTeRaw

Documentation:
This class formats the exposure record for a Timed Exposure Raw Mode telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TfSciExpRecord

Public Interface:

Operations:

setPixelCount()
Concurrency:
Guarded
Persistence:
Transient

19.42.1 setPixelCount()

Public member of:
TfSciErTeRaw
Return Class:
void

Arguments:

unsigned pixelcnt
Documentation:
This function stores the number of pixels sent by this exposure's data packet sequence.
Concurrency:
Guarded

19.43 Class TfSciExpRecord

Documentation:
This class formats the common header section of all Science Exposure Record telemetry packets.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Public Interface:

Operations:

TfSciExpRecord()
setExposureInfo()
Concurrency:
Guarded
Persistence:
Transient

19.43.1 TfSciExpRecord()

Public member of:
TfSciExpRecord

Arguments:

TlmFormatTag format
Documentation:
This constructor associates the format tag, format, with the exposure record instance.
Concurrency:
Guarded

19.43.2 setExposureInfo()

Public member of:
TfSciExpRecord
Return Class:
void

Arguments:

unsigned pblock
unsigned starttime
CcdId ccdid
unsigned expnum
Documentation:
This function stores the passed information into the common exposure header portion of the telemetry packet buffer. ccdid refers to the CCD producing the exposure. expnum is the exposure number. pblock is the parameter block identifier used to configure the run, and starttime is the DEA-latched timestamp at the moment the CCD sequencers were started at the beginning of the run.
Concurrency:
Guarded

19.44 Class TfSciReport

Documentation:
This class is responsible for forming the post-science run report telemetry packet.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm
Concurrency:
Guarded
Persistence:
Transient

19.45 Class TfStartup

Documentation:
This class formats Back End Processor system startup message packets.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Implementation Uses:

TlmAllocator startupAllocator

Public Interface:

Operations:

setBlocksValidFlag()
setBootReason()
setPatchValidFlag()
setSysConfigValidFlag()
setTimestamp()
setVersion()
Concurrency:
Guarded
Persistence:
Transient

19.45.1 setBlocksValidFlag()

Public member of:
TfStartup
Return Class:
void

Arguments:

Boolean blockValid
Documentation:
This function sets the "parameter blocks valid" flag in the telemetry packet buffer indicating whether or not the Parameter Block CRCs are intact. blockValid is BoolTrue if the none of the parameter blocks have been corrupted, and BoolFalse if one or more of the blocks have been corrupted.
Concurrency:
Guarded

19.45.2 setBootReason()

Public member of:
TfStartup
Return Class:
void

Arguments:

BootMode bootMode
FatalCode lastFatalCode
unsigned lastFatalValue
Documentation:
This function sets the reason for the reboot, and includes the last sent fatal error message code and argument. bootMode indicates the reset mode, and lastFatalCode and lastFatalValue indicate the last fatal error message sent by the instrument since power-up.
Concurrency:
Guarded

19.45.3 setPatchValidFlag()

Public member of:
TfStartup
Return Class:
void

Arguments:

Boolean patchValid
Documentation:
This function sets the "patch list valid" flag in the telemetry packet buffer, indicating whether or not the PatchList CRC is intact. patchValid is BoolTrue if the list is not corrupted, and BoolFalse if the list was corrupted.
Concurrency:
Guarded

19.45.4 setSysConfigValidFlag()

Public member of:
TfStartup
Return Class:
void

Arguments:

Boolean sysConfigValid
Documentation:
This function sets the "system configuration valid" flag in the telemetry packet buffer, indicating whether or not the System Configuration Parameter Block CRC is intact. sysConfigValid is BoolTrue if the block is not corrupted, and BoolFalse if the block was corrupted.
Concurrency:
Guarded

19.45.5 setTimestamp()

Public member of:
TfStartup
Return Class:
void

Arguments:

unsigned tickcount
Documentation:
This function stores the passed BEP tick counter, tickcount, into the packet buffer.
Concurrency:
Guarded

19.45.6 setVersion()

Public member of:
TfStartup
Return Class:
void

Arguments:

unsigned version
Documentation:
This function writes the software version code, version, into the telemetry packet and sets the telemetry packet buffer length.
Concurrency:
Guarded

19.46 Class TfSwHouse

Documentation:
This class represents a software housekeeping telemetry packet. It is responsible for formatting and accumulating housekeeping information within the packet and for posting the packet to the telemetry manager.
Export Control:
Public
Cardinality:
n

Hierarchy:

Superclasses:

TlmForm

Implementation Uses:

TlmAllocator swHouseAllocator
IntrGuard

Public Interface:

Operations:

accumulateStat()
setupBuffer()

Private Interface:

Has-A Relationships:


const unsigned datalen: This value, set during construction, specifies the total data space needed by the housekeeper for its statistics and header.
Concurrency:
Guarded
Persistence:
Transient

19.46.1 accumulateStat()

Public member of:
TfSwHouse
Return Class:
void

Arguments:

SwStatistic statid
unsigned value
Documentation:
If the form has a packet, this function increments the statistic value associated with statid and overwrites the statistic's information field with value. If the form does not have a packet, the statistic report is ignored.
Concurrency:
Synchronous

19.46.2 setupBuffer()

Public member of:
TfSwHouse
Return Class:
Boolean

Arguments:

unsigned tickcnt
Documentation:
This function attempts to acquire a telemetry packet buffer from its allocator, and if successful, prepares the body of the telemetry buffer to record new software housekeeping information. If a buffer is successfully obtained, it sets the length of the packet, stores tickcnt into the housekeeping header, and returns BoolTrue. Otherwise, it returns BoolFalse.
Concurrency:
Guarded

Table of Contents Next Chapter