|
53 | 53 | <H2> Scope </H2>
|
54 | 54 |
|
55 | 55 | This document provides a complete specification for the commands and telemetry associated
|
56 |
| - with the CFS Housekeeping (HK) application software. The document is intended primarily |
57 |
| - for users of the software (operations personal, test engineers, and maintenance personnel). |
58 |
| - The last section of the document, the deployment guide section, is intended for mission |
59 |
| - developers when deploying and configuring the FM application software for a mission |
60 |
| - flight software build environment. |
| 56 | + with the CFS Housekeeping (HK) application software. The document is intended primarily |
| 57 | + for users of the software (operations personal, test engineers, and maintenance personnel). |
| 58 | + The last section of the document, the deployment guide section, is intended for mission |
| 59 | + developers when deploying and configuring the FM application software for a mission |
| 60 | + flight software build environment. |
61 | 61 |
|
62 | 62 | \ref cfshkversion
|
63 | 63 |
|
|
121 | 121 | The HK Application is a passive application and is completely packet driven.
|
122 | 122 | There are no timers used to wake up the application. The housekeeping request
|
123 | 123 | commands are not sent to the system apps by HK. A common system design uses the
|
124 |
| - Scheduler (SCH) Application to send the housekeeping |
| 124 | + Scheduler (SCH) Application to send the housekeeping |
125 | 125 | requests to the system apps as well as the send-output-message-x command to HK.
|
126 | 126 |
|
127 |
| - A key component that is part of the HK application is the 'copy table'. The copy |
| 127 | + A key component that is part of the HK application is the 'copy table'. The copy |
128 | 128 | table has a configurable number of entries. Each entry specifies a source (via
|
129 |
| - msgid and offset into the packet), destination (via msgid and offset) and a |
| 129 | + msgid and offset into the packet), destination (via msgid and offset) and a |
130 | 130 | number of bytes to copy.
|
131 | 131 |
|
132 | 132 | <H2> HK Design Overview </H2>
|
133 |
| - |
| 133 | + |
134 | 134 | The HK Application has a single Software Bus pipe and wakes
|
135 | 135 | up only when a message is received on the pipe (named HK_CMD_PIPE). The
|
136 | 136 | HK_CMD_PIPE receives commands and input messages. If the message received
|
|
144 | 144 | than one area in the same output packet. The number of output packets is also
|
145 | 145 | limited only by the the number of entries in the table. The number of entries in
|
146 | 146 | the table is a platform configuration parameter.
|
147 |
| - |
148 |
| - The output messages are sent to the software bus when HK receives the |
149 |
| - 'Send Output Message x' command. Where 'x' is a parameter in the command that |
150 |
| - specifies the message ID of the output message to send. If a piece of data is |
| 147 | + |
| 148 | + The output messages are sent to the software bus when HK receives the |
| 149 | + 'Send Output Message x' command. Where 'x' is a parameter in the command that |
| 150 | + specifies the message ID of the output message to send. If a piece of data is |
151 | 151 | missing in the output message at the time the 'Send Output Message x' command
|
152 | 152 | is received, the HK app will send a debug event (which is filtered by default)
|
153 | 153 | and increment the 'missing data counter' in telemetry.
|
|
158 | 158 |
|
159 | 159 | The operational interface of the HK application consists of two commands, two
|
160 | 160 | tables and a few telemetry points. The following items detail the operational
|
161 |
| - interface. |
| 161 | + interface. |
162 | 162 |
|
163 | 163 | <H2>1. The application version number</H2>
|
164 |
| - |
| 164 | + |
165 | 165 | The application version number is displayed in the initialization event and the
|
166 | 166 | no-op event. Both events are 'informational' type and are unfiltered by default.
|
167 | 167 |
|
168 | 168 | <H2>2. Loading the copy table</H2>
|
169 |
| - |
| 169 | + |
170 | 170 | The copy table is loaded by way of a file. The file must be present when the
|
171 | 171 | application starts up. Otherwise, the app will terminate after initialization.
|
172 | 172 | The location of the file is specified by the platform configuration parameter
|
173 |
| - named #HK_COPY_TABLE_FILENAME. The value of this define specifies the full |
| 173 | + named #HK_COPY_TABLE_FILENAME. The value of this define specifies the full |
174 | 174 | path as well as the filename.
|
175 |
| - |
176 |
| - After initialization, a new copy table may be loaded at any time. The steps to |
| 175 | + |
| 176 | + After initialization, a new copy table may be loaded at any time. The steps to |
177 | 177 | load a new copy table are:
|
178 | 178 | - Transfer the table file to the on-board file system
|
179 | 179 | - Send the #CFE_TBL_LOAD_CC \copybrief CFE_TBL_LOAD_CC
|
180 | 180 | - Send the #CFE_TBL_VALIDATE_CC \copybrief CFE_TBL_VALIDATE_CC
|
181 | 181 | - Send the #CFE_TBL_ACTIVATE_CC \copybrief CFE_TBL_ACTIVATE_CC
|
182 |
| - |
| 182 | + |
183 | 183 | The HK application will clean up the items used for the old table (such as SB
|
184 | 184 | subscriptions) before updating and processing the new table.
|
185 | 185 |
|
186 | 186 | <H2>3. Sending the No-op Command</H2>
|
187 |
| - |
| 187 | + |
188 | 188 | To verify connectivity with the Housekeeping application, the ground may send an
|
189 | 189 | #HK_NOOP_CC \copybrief HK_NOOP_CC
|
190 | 190 |
|
191 |
| - If the packet length field in the |
192 |
| - command is set to the value expected by the HK app, then the command counter will |
| 191 | + If the packet length field in the |
| 192 | + command is set to the value expected by the HK app, then the command counter will |
193 | 193 | increment and a #HK_NOOP_CMD_EID event message
|
194 | 194 | will be sent. This no-op event will show the version number of the HK application.
|
195 |
| - |
| 195 | + |
196 | 196 | <H2>4. Sending the reset counters command</H2>
|
197 |
| - |
198 |
| - The #HK_RESET_CC \copybrief HK_RESET_CC will reset counters in telemetry. |
199 |
| - |
| 197 | + |
| 198 | + The #HK_RESET_COUNTERS_CC \copybrief HK_RESET_COUNTERS_CC will reset counters in telemetry. |
| 199 | + |
200 | 200 | <H2>5. Monitoring the command counter</H2>
|
201 | 201 |
|
202 | 202 | The #HK_HkTlm_Payload_t.CmdCounter will increment only
|
|
208 | 208 | b. Unexpected packet length field for #HK_SEND_COMBINED_PKT_MID command
|
209 | 209 | c. Unexpected packet length field for #HK_SEND_HK_MID command
|
210 | 210 | d. Unexpected packet length field for #HK_NOOP_CC command
|
211 |
| - e. Unexpected packet length field for #HK_RESET_CC command |
| 211 | + e. Unexpected packet length field for #HK_RESET_COUNTERS_CC command |
212 | 212 |
|
213 | 213 | <H2>7. Monitoring the 'Combined Packets Sent" counter</H2>
|
214 | 214 |
|
|
229 | 229 | The #HK_HkTlm_Payload_t.MissingDataCtr will advance
|
230 | 230 | by one count (at most) and send one event (at most) for each
|
231 | 231 | #HK_SEND_COMBINED_PKT_MID.
|
232 |
| - |
| 232 | + |
233 | 233 | The HK app will not zero-out or alter the missing data section(s) in any way.
|
234 | 234 | The missing data values will match the last 'good' section received.
|
235 | 235 |
|
236 | 236 | <H2>9. Using the Memory Pool handle to get mempool stats</H2>
|
237 |
| - |
| 237 | + |
238 | 238 | The HK memory pool is used to allocate the memory needed to store the output
|
239 | 239 | packets. Each time a new copy table is processed, the memory for the output
|
240 | 240 | packets is dynamically allocated from the memory pool. The memory pool handle is
|
|
248 | 248 | \page cfshkdg CFS Housekeeping Deployment Guide
|
249 | 249 |
|
250 | 250 | Follow the general guidelines below for platform deployment of the Housekeeping app.
|
251 |
| - |
| 251 | + |
252 | 252 | There are two message IDs that must be included in the CFS Scheduler Table:
|
253 | 253 | #HK_SEND_HK_MID is sent out at the housekeeping request interval. The housekeeping app must send its
|
254 | 254 | housekeeping data to itself like any other app.
|
255 | 255 | #HK_SEND_COMBINED_PKT_MID is sent out at the desired rate for each combined packet. UP to four
|
256 | 256 | combined packets are available.
|
257 |
| - |
| 257 | + |
258 | 258 | The HK app can build up to four combined packets based on the definitions supplied in the
|
259 |
| - HK copy table. The Scheduler Table uses each telemetry IDs (#HK_COMBINED_PKT1_MID , |
| 259 | + HK copy table. The Scheduler Table uses each telemetry IDs (#HK_COMBINED_PKT1_MID , |
260 | 260 | #HK_COMBINED_PKT2_MID , #HK_COMBINED_PKT3_MID , and #HK_COMBINED_PKT4_MID ) as a valid parameter
|
261 | 261 | in the #HK_SEND_COMBINED_PKT_MID table entries.
|
262 |
| - |
| 262 | + |
263 | 263 | The ES app uses the HK performance ID, #HK_APPMAIN_PERF_ID , to keep track of the performance
|
264 | 264 | of the HK app.
|
265 |
| - |
266 |
| - The platform configuration file hk_platform_cfg.h contains parameters that can be adjusted to |
| 265 | + |
| 266 | + The platform configuration file hk_platform_cfg.h contains parameters that can be adjusted to |
267 | 267 | specific platforms. See \ref cfshkplatformcfg.
|
268 | 268 |
|
269 | 269 | See \ref cfshkmissioncfg for mission configuration parameters.
|
270 | 270 | **/
|
271 | 271 |
|
272 | 272 | /**
|
273 | 273 | \page cfshktbl CFS Housekeeping Table Definitions
|
274 |
| - |
| 274 | + |
275 | 275 | The Housekeeping Application uses two tables. A load-dump table referred to as
|
276 | 276 | the "copy table" and a dump-only table referred to as the "run-time table". Each
|
277 | 277 | table has the same number of entries, defined by the configuration parameter
|
|
281 | 281 | tables were chosen so that checksumming can be executed on the more-static copy
|
282 | 282 | table.
|
283 | 283 |
|
284 |
| - <B>HK Copy Table Validation</B> - The HK copy table currently has an empty validation |
285 |
| - call-back function that always returns success. At the time of development, |
| 284 | + <B>HK Copy Table Validation</B> - The HK copy table currently has an empty validation |
| 285 | + call-back function that always returns success. At the time of development, |
286 | 286 | a validation process that would apply to all projects was not perceived.
|
287 | 287 |
|
288 | 288 | <B>HK Copy Table Entries</B> - Entries follow the concept of:
|
289 |
| - <I>Copy A bytes from input message B, byte-offset C to output message Y, |
| 289 | + <I>Copy A bytes from input message B, byte-offset C to output message Y, |
290 | 290 | byte-offset Z. </I>
|
291 | 291 |
|
292 | 292 | The structure format of a single copy table entry is defined by #hk_copy_table_entry_t.
|
|
309 | 309 | /**
|
310 | 310 | \page cfshkcons CFS Housekeeping Constraints
|
311 | 311 |
|
312 |
| - The Housekeeping Application needs to find a valid table at the location |
| 312 | + The Housekeeping Application needs to find a valid table at the location |
313 | 313 | specified by the configuration parameter #HK_COPY_TABLE_FILENAME in order to
|
314 | 314 | startup. Otherwise the application will send an error event or syslog message
|
315 | 315 | then terminate. See \ref cfshktbl for more detail.
|
|
323 | 323 | \page cfshkfaqs CFS Housekeeping Frequently Asked Questions
|
324 | 324 |
|
325 | 325 | <B> (Q)
|
326 |
| - Does the protocol for collecting telemetry use a single housekeeping request |
| 326 | + Does the protocol for collecting telemetry use a single housekeeping request |
327 | 327 | command for all apps or a unique housekeeping request command for each app?
|
328 | 328 | </B> <BR> <BR> <I>
|
329 |
| - It is unknown to the HK application because HK does not send the |
| 329 | + It is unknown to the HK application because HK does not send the |
330 | 330 | housekeeping request command(s). These commands are usually sent by the
|
331 | 331 | scheduler. However, each CFS application is capable of receiving a unique
|
332 | 332 | housekeeping request command. The message ID of this command is specified in the
|
|
336 | 336 | housekeeping request commands for each app or using a single command for all
|
337 | 337 | apps. In the latter case, all the defines would be set to the same value.
|
338 | 338 | </I>
|
339 |
| - |
| 339 | + |
340 | 340 | <B> (Q)
|
341 | 341 | What is the basic flow of the application?
|
342 | 342 | </B> <BR> <BR> <I>
|
343 |
| - The HK application uses a common application format. When the app starts, |
| 343 | + The HK application uses a common application format. When the app starts, |
344 | 344 | initialization is performed, then the app enters an infinite loop waiting for
|
345 | 345 | commands from the software bus.
|
346 | 346 | </I>
|
347 |
| - |
| 347 | + |
348 | 348 | <B> (Q)
|
349 | 349 | In general, what is done during initialization?
|
350 | 350 | </B> <BR> <BR> <I>
|
|
356 | 356 | variables. If any error is encountered during initialization, the application
|
357 | 357 | will send an event or syslog message, then terminate.
|
358 | 358 | </I>
|
359 |
| - |
| 359 | + |
360 | 360 | <B> (Q)
|
361 |
| - How does the app react if the file to load the copy table (during |
| 361 | + How does the app react if the file to load the copy table (during |
362 | 362 | initialization) is not found?
|
363 | 363 | </B> <BR> <BR> <I>
|
364 | 364 | HK will send an error event or a syslog message, then terminate.
|
365 | 365 | </I>
|
366 |
| - |
| 366 | + |
367 | 367 | <B> (Q)
|
368 |
| - At what frequency is the housekeeping request command sent to the system |
| 368 | + At what frequency is the housekeeping request command sent to the system |
369 | 369 | applications?
|
370 | 370 | </B> <BR> <BR> <I>
|
371 | 371 | The HK application does not send the housekeeping request command to the
|
372 |
| - system applications. The frequency of the housekeeping request commands is |
373 |
| - typically specified in the scheduler table and sent by the scheduler |
| 372 | + system applications. The frequency of the housekeeping request commands is |
| 373 | + typically specified in the scheduler table and sent by the scheduler |
374 | 374 | application.
|
375 | 375 | </I>
|
376 |
| - |
| 376 | + |
377 | 377 | <B> (Q)
|
378 | 378 | What factor controls the input message timing?
|
379 | 379 | </B> <BR> <BR> <I>
|
|
382 | 382 | command(s). The housekeeping request command(s) are not sent by the HK
|
383 | 383 | application. Rather, it is typically sent by the scheduler application.
|
384 | 384 | </I>
|
385 |
| - |
| 385 | + |
386 | 386 | <B> (Q)
|
387 | 387 | What determines the timing of the combined output messages?
|
388 | 388 | </B> <BR> <BR> <I>
|
|
391 | 391 | command periodically. Where 'x' is a parameter in the command that specifies the
|
392 | 392 | message ID of the output message to send.
|
393 | 393 | </I>
|
394 |
| - |
| 394 | + |
395 | 395 | <B> (Q)
|
396 | 396 | How is the format of the combined output messages defined?
|
397 | 397 | </B> <BR> <BR> <I>
|
398 |
| - The output message format is defined by the entries in the copy table. If a |
399 |
| - format change to one or more output messages is needed, a new table must be |
| 398 | + The output message format is defined by the entries in the copy table. If a |
| 399 | + format change to one or more output messages is needed, a new table must be |
400 | 400 | loaded.
|
401 | 401 | </I>
|
402 | 402 | **/
|
0 commit comments