|
| 1 | +cFE Application Developer's Guide |
| 2 | + |
1 | 3 | Table of Contents |
2 | 4 | ================= |
3 | 5 |
|
4 | 6 | * [Table of Contents](#table-of-contents) |
5 | 7 | * [1. Introduction](#1-introduction) |
6 | | - * [1.1 Scope](#11-scope) |
7 | | - * [1.2 Background](#12-background) |
8 | | - * [1.3 Applicable Documents](#13-applicable-documents) |
9 | | - * [1.4 Acronyms](#14-acronyms) |
10 | | - * [1.5 Glossary of Terms](#15-glossary-of-terms) |
| 8 | + * [1.1 Scope](#11-scope) |
| 9 | + * [1.2 Background](#12-background) |
| 10 | + * [1.3 Applicable Documents](#13-applicable-documents) |
| 11 | + * [1.4 Acronyms](#14-acronyms) |
| 12 | + * [1.5 Glossary of Terms](#15-glossary-of-terms) |
11 | 13 | * [2. cFE Application Development Environment](#2-cfe-application-development-environment) |
12 | | - * [2.1 Directory Tree](#21-directory-tree) |
13 | | - * [2.2 Header Files](#22-header-files) |
| 14 | + * [2.1 Directory Tree](#21-directory-tree) |
| 15 | + * [2.2 Header Files](#22-header-files) |
14 | 16 | * [3. cFE Deployment Environment](#3-cfe-deployment-environment) |
15 | | - * [3.1 Assumed On-Board Directory Structure](#31-assumed-on-board-directory-structure) |
| 17 | + * [3.1 Assumed On-Board Directory Structure](#31-assumed-on-board-directory-structure) |
16 | 18 | * [4. cFE Application Architecture](#4-cfe-application-architecture) |
17 | | - * [4.1 Application Model](#41application-model) |
18 | | - * [4.1.1 "Software Only" Application](#411-software-only-application) |
19 | | - * [4.1.2 "Hardware Servicing" Application](#412-hardware-servicing-application) |
20 | | - * [4.1.3 Multi-threaded Applications](#413-multi-threaded-applications) |
21 | | - * [4.2 Best Practices](#42-best-practices) |
22 | | - * [4.2.1 cFS Application Template](#421-cfs-application-template) |
23 | | - * [4.2.2 Avoid "Endian-ness" Dependencies](#422-avoid-endian-ess-dependencies) |
24 | | - * [4.2.3 Avoid Inter-Task Dependencies](#423-avoid-inter-task-dependencies) |
25 | | - * [4.2.4 Consolidate Resource Allocations](#424-consolidate-resource-allocations) |
| 19 | + * [4.1 Application Model](#41application-model) |
| 20 | + * [4.1.1 "Software Only" Application](#411-software-only-application) |
| 21 | + * [4.1.2 "Hardware Servicing" Application](#412-hardware-servicing-application) |
| 22 | + * [4.1.3 Multi-threaded Applications](#413-multi-threaded-applications) |
| 23 | + * [4.2 Best Practices](#42-best-practices) |
| 24 | + * [4.2.1 cFS Application Template](#421-cfs-application-template) |
| 25 | + * [4.2.2 Avoid "Endian-ness" Dependencies](#422-avoid-endian-ess-dependencies) |
| 26 | + * [4.2.3 Avoid Inter-Task Dependencies](#423-avoid-inter-task-dependencies) |
| 27 | + * [4.2.4 Consolidate Resource Allocations](#424-consolidate-resource-allocations) |
26 | 28 | * [5. Executive Services Interface](#5-executive-services-interface) |
27 | | - * [5.1 Application Registration](#51-application-registration) |
28 | | - * [5.2 Application Names and IDs](#52-application-names-and-ids) |
29 | | - * [5.3 Child Task Control](#53-child-task-control) |
30 | | - * [5.4 Application Start-Up Types](#54-application-start-up-types) |
31 | | - * [5.5 Shared Libraries](#55-shared-libraries) |
32 | | - * [5.6 Obtaining OS and Platform Information](#56-obtaining-os-and-platform-information) |
33 | | - * [5.7 OS Queues, Semaphores and Mutexes](#57-os-queues-semaphores-and-mutexes) |
34 | | - * [5.7.1 Queues](#571-queues) |
35 | | - * [5.7.2 Binary Semaphores](#572-binary-semaphores) |
36 | | - * [5.7.2.1 Binary Semaphore Functions](#5721-binary-semaphore-functions) |
37 | | - * [5.7.3 Counting Semaphores](#573-counting-semaphores) |
38 | | - * [5.7.3.1 Counting Semaphore Functions](#5731-counting-semaphore-functions) |
39 | | - * [5.7.4 Mutex Semaphores](#574-mutex-semaphores) |
40 | | - * [5.7.4.1 Mutex Functions](#5741-mutex-functions) |
41 | | - * [5.8 Interrupt Handling](#58-interrupt-handling) |
42 | | - * [5.9 Exceptions](#59-exceptions) |
43 | | - * [5.9.1 Floating Point Processor Exceptions](#591-floating-point-processor-exceptions) |
44 | | - * [5.10 Memory Utilities](#510-memory-utilities) |
45 | | - * [5.10.1 Memory Pool](#5101-memory-pool) |
46 | | - * [5.10.2 Memory Read/Write Functions](#5102-memory-readwrite-functions) |
47 | | - * [5.10.3 Critical Data Store](#5103-critical-data-store) |
48 | | - * [5.10.4 Standard CRC Calculations](#5104-standard-crc-calculations) |
49 | | - * [5.11 File System Functions](#511-file-system-functions) |
50 | | - * [5.11.1 Device Functions](#5111-device-functions) |
51 | | - * [5.11.2 Directory Functions](#5112-directory-functions) |
52 | | - * [5.11.3 File Functions](#5113-file-functions) |
53 | | - * [5.12 System Log](#512-system-log) |
54 | | - * [5.13 Software Performance Analysis](#513-software-performance-analysis) |
| 29 | + * [5.1 Application Registration](#51-application-registration) |
| 30 | + * [5.2 Application Names and IDs](#52-application-names-and-ids) |
| 31 | + * [5.3 Child Task Control](#53-child-task-control) |
| 32 | + * [5.4 Application Start-Up Types](#54-application-start-up-types) |
| 33 | + * [5.5 Shared Libraries](#55-shared-libraries) |
| 34 | + * [5.6 Obtaining OS and Platform Information](#56-obtaining-os-and-platform-information) |
| 35 | + * [5.7 OS Queues, Semaphores and Mutexes](#57-os-queues-semaphores-and-mutexes) |
| 36 | + * [5.7.1 Queues](#571-queues) |
| 37 | + * [5.7.2 Binary Semaphores](#572-binary-semaphores) |
| 38 | + * [5.7.2.1 Binary Semaphore Functions](#5721-binary-semaphore-functions) |
| 39 | + * [5.7.3 Counting Semaphores](#573-counting-semaphores) |
| 40 | + * [5.7.3.1 Counting Semaphore Functions](#5731-counting-semaphore-functions) |
| 41 | + * [5.7.4 Mutex Semaphores](#574-mutex-semaphores) |
| 42 | + * [5.7.4.1 Mutex Functions](#5741-mutex-functions) |
| 43 | + * [5.8 Interrupt Handling](#58-interrupt-handling) |
| 44 | + * [5.9 Exceptions](#59-exceptions) |
| 45 | + * [5.9.1 Floating Point Processor Exceptions](#591-floating-point-processor-exceptions) |
| 46 | + * [5.10 Memory Utilities](#510-memory-utilities) |
| 47 | + * [5.10.1 Memory Pool](#5101-memory-pool) |
| 48 | + * [5.10.2 Memory Read/Write Functions](#5102-memory-readwrite-functions) |
| 49 | + * [5.10.3 Critical Data Store](#5103-critical-data-store) |
| 50 | + * [5.10.4 Standard CRC Calculations](#5104-standard-crc-calculations) |
| 51 | + * [5.11 File System Functions](#511-file-system-functions) |
| 52 | + * [5.11.1 Device Functions](#5111-device-functions) |
| 53 | + * [5.11.2 Directory Functions](#5112-directory-functions) |
| 54 | + * [5.11.3 File Functions](#5113-file-functions) |
| 55 | + * [5.12 System Log](#512-system-log) |
| 56 | + * [5.13 Software Performance Analysis](#513-software-performance-analysis) |
55 | 57 | * [6. Software Bus Interface](#6-software-bus-interface) |
56 | | - * [6.1 Software Bus Terminology](#61-software-bus-terminology) |
57 | | - * [6.1.1 Software Bus Messages](#611-software-bus-messages) |
58 | | - * [6.1.2 Pipes](#612-pipes) |
59 | | - * [6.1.2.1 Software Bus Message Limits and Overflows](#6121-software-bus-message-limits-and-overflows) |
60 | | - * [6.1.3 Routing of Software Bus Messages](#613-routing-of-software-bus-messages) |
61 | | - * [6.1.3.1 Sending Applications](#6131-sending-applications) |
62 | | - * [6.1.3.2 Receiving Applications](#6132-receiving-applications) |
63 | | - * [6.2 Creating Software Bus Pipes](#62-creating-software-bus-pipes) |
64 | | - * [6.2.1 Deleting Software Bus Pipes](#621-deleting-software-bus-pipes) |
65 | | - * [6.3 Software Bus Message Subscription](#63-software-bus-message-subscription) |
66 | | - * [6.4 Unsubscribing from Receiving Software Bus Messages](#64-unsubscribing-from-receiving-software-bus-messages) |
67 | | - * [6.5 Creating Software Bus Messages](#65-creating-software-bus-messages) |
68 | | - * [6.5.1 Software Bus Message Header Types](#651-software-bus-message-header-types) |
69 | | - * [6.5.2 Modifying Software Bus Message Header Information](#652-modifying-software-bus-message-header-information) |
70 | | - * [6.5.2.1 Modifying SB Command Message Header Information](#6521-modifying-sb-command-message-header-information) |
71 | | - * [6.5.2.2 Modifying SB Telemetry Message Header Information](#6522-modifying-sb-telemetry-message-header-information) |
72 | | - * [6.5.3 Reading Software Bus Message Header Information](#653-reading-software-bus-message-header-information) |
73 | | - * [6.6 Sending Software Bus Messages](#66-sending-software-bus-messages) |
74 | | - * [6.7 Receiving Software Bus Messages](#67-receiving-software-bus-messages) |
75 | | - * [6.8 Improving Message Transfer Performance for Large SB Messages](#68-improving-message-transfer-performance-for-large-sb-messages) |
76 | | - * [6.9 Best Practices for using Software Bus](#69-best-practices-for-using-software-bus) |
| 58 | + * [6.1 Software Bus Terminology](#61-software-bus-terminology) |
| 59 | + * [6.1.1 Software Bus Messages](#611-software-bus-messages) |
| 60 | + * [6.1.2 Pipes](#612-pipes) |
| 61 | + * [6.1.2.1 Software Bus Message Limits and Overflows](#6121-software-bus-message-limits-and-overflows) |
| 62 | + * [6.1.3 Routing of Software Bus Messages](#613-routing-of-software-bus-messages) |
| 63 | + * [6.1.3.1 Sending Applications](#6131-sending-applications) |
| 64 | + * [6.1.3.2 Receiving Applications](#6132-receiving-applications) |
| 65 | + * [6.2 Creating Software Bus Pipes](#62-creating-software-bus-pipes) |
| 66 | + * [6.2.1 Deleting Software Bus Pipes](#621-deleting-software-bus-pipes) |
| 67 | + * [6.3 Software Bus Message Subscription](#63-software-bus-message-subscription) |
| 68 | + * [6.4 Unsubscribing from Receiving Software Bus Messages](#64-unsubscribing-from-receiving-software-bus-messages) |
| 69 | + * [6.5 Creating Software Bus Messages](#65-creating-software-bus-messages) |
| 70 | + * [6.5.1 Software Bus Message Header Types](#651-software-bus-message-header-types) |
| 71 | + * [6.5.2 Modifying Software Bus Message Header Information](#652-modifying-software-bus-message-header-information) |
| 72 | + * [6.5.2.1 Modifying SB Command Message Header Information](#6521-modifying-sb-command-message-header-information) |
| 73 | + * [6.5.2.2 Modifying SB Telemetry Message Header Information](#6522-modifying-sb-telemetry-message-header-information) |
| 74 | + * [6.5.3 Reading Software Bus Message Header Information](#653-reading-software-bus-message-header-information) |
| 75 | + * [6.6 Sending Software Bus Messages](#66-sending-software-bus-messages) |
| 76 | + * [6.7 Receiving Software Bus Messages](#67-receiving-software-bus-messages) |
| 77 | + * [6.8 Improving Message Transfer Performance for Large SB Messages](#68-improving-message-transfer-performance-for-large-sb-messages) |
| 78 | + * [6.9 Best Practices for using Software Bus](#69-best-practices-for-using-software-bus) |
77 | 79 | * [7. Event Service Interface](#7-event-service-interface) |
78 | | - * [7.1 Event Messages](#71-event-messages) |
79 | | - * [7.2 Event Types](#72-event-types) |
80 | | - * [7.3 Event Format](#73-event-format) |
81 | | - * [7.4 Event Service Registration](#74-event-service-registration) |
82 | | - * [7.4.1 Binary Filtering Scheme](#741-binary-filtering-scheme) |
83 | | - * [7.5 Sending an Event Message](#75-sending-an-event-message) |
84 | | - * [7.5.1 Event Message Text](#751-event-message-text) |
85 | | - * [7.6 Event Service Un-registration](#76-event-service-un-registration) |
86 | | - * [7.7 Best Practices for using Event Services](#77-best-practices-for-using-event-services) |
| 80 | + * [7.1 Event Messages](#71-event-messages) |
| 81 | + * [7.2 Event Types](#72-event-types) |
| 82 | + * [7.3 Event Format](#73-event-format) |
| 83 | + * [7.4 Event Service Registration](#74-event-service-registration) |
| 84 | + * [7.4.1 Binary Filtering Scheme](#741-binary-filtering-scheme) |
| 85 | + * [7.5 Sending an Event Message](#75-sending-an-event-message) |
| 86 | + * [7.5.1 Event Message Text](#751-event-message-text) |
| 87 | + * [7.6 Event Service Un-registration](#76-event-service-un-registration) |
| 88 | + * [7.7 Best Practices for using Event Services](#77-best-practices-for-using-event-services) |
87 | 89 | * [8. Table Service Interface](#8-table-service-interface) |
88 | | - * [8.1 Table Terminology](#81-table-terminology) |
89 | | - * [8.1.1 Tables](#811-tables) |
90 | | - * [8.1.2 Active vs. Inactive Tables](#812-active-vs-inactive-tables) |
91 | | - * [8.1.3 Single vs. Double Buffered Tables](#813-single-vs-double-buffered-tables) |
92 | | - * [8.1.4 Loading/Activating a Table](#814-loadingactivating-a-table) |
93 | | - * [8.1.5 Dumping a Table](#815-dumping-a-table) |
94 | | - * [8.1.6 Validating a Table](#816-validating-a-table) |
95 | | - * [8.2 Registering Tables](#82-registering-tables) |
96 | | - * [8.3 Accessing Table Data](#83-accessing-table-data) |
97 | | - * [8.3.1 Acquiring Table Data](#831-acquiring-table-data) |
98 | | - * [8.3.2 Releasing Table Data](#832-releasing-table-data) |
99 | | - * [8.4 Managing a Table](#84-managing-a-table) |
100 | | - * [8.4.1 Validating Table Data](#841-validating-table-data) |
101 | | - * [8.4.2 Loading/Updating Table Data](#842-loadingupdating-table-data) |
102 | | - * [8.4.3 Simplifying Table Management](#843-simplifying-table-management) |
103 | | - * [8.5 Typical File Organization for Tables](#85-typical-file-organization-for-tables) |
104 | | - * [8.5.1 Table Files Example](#851-table-files-example) |
105 | | - * [8.6 Building Tables](#86-building-tables) |
106 | | - * [8.7 Best Practices for using Table Services](#87-best-practices-for-using-table-services) |
| 90 | + * [8.1 Table Terminology](#81-table-terminology) |
| 91 | + * [8.1.1 Tables](#811-tables) |
| 92 | + * [8.1.2 Active vs. Inactive Tables](#812-active-vs-inactive-tables) |
| 93 | + * [8.1.3 Single vs. Double Buffered Tables](#813-single-vs-double-buffered-tables) |
| 94 | + * [8.1.4 Loading/Activating a Table](#814-loadingactivating-a-table) |
| 95 | + * [8.1.5 Dumping a Table](#815-dumping-a-table) |
| 96 | + * [8.1.6 Validating a Table](#816-validating-a-table) |
| 97 | + * [8.2 Registering Tables](#82-registering-tables) |
| 98 | + * [8.3 Accessing Table Data](#83-accessing-table-data) |
| 99 | + * [8.3.1 Acquiring Table Data](#831-acquiring-table-data) |
| 100 | + * [8.3.2 Releasing Table Data](#832-releasing-table-data) |
| 101 | + * [8.4 Managing a Table](#84-managing-a-table) |
| 102 | + * [8.4.1 Validating Table Data](#841-validating-table-data) |
| 103 | + * [8.4.2 Loading/Updating Table Data](#842-loadingupdating-table-data) |
| 104 | + * [8.4.3 Simplifying Table Management](#843-simplifying-table-management) |
| 105 | + * [8.5 Typical File Organization for Tables](#85-typical-file-organization-for-tables) |
| 106 | + * [8.5.1 Table Files Example](#851-table-files-example) |
| 107 | + * [8.6 Building Tables](#86-building-tables) |
| 108 | + * [8.7 Best Practices for using Table Services](#87-best-practices-for-using-table-services) |
107 | 109 | * [9. File Service Interface](#9-file-service-interface) |
108 | | - * [9.1 Standard File Header](#91-standard-file-header) |
109 | | - * [9.2 Accessing and Modifying the Standard File Header](#92-accessing-and-modifying-the-standard-file-header) |
110 | | - * [9.3 Other File Service Utility Functions](#93-other-file-service-utility-functions) |
| 110 | + * [9.1 Standard File Header](#91-standard-file-header) |
| 111 | + * [9.2 Accessing and Modifying the Standard File Header](#92-accessing-and-modifying-the-standard-file-header) |
| 112 | + * [9.3 Other File Service Utility Functions](#93-other-file-service-utility-functions) |
111 | 113 | * [10 Time Service Interface](#10-time-service-interface) |
112 | | - * [10.1 Time Formats](#101-time-formats) |
113 | | - * [10.2 Time Values](#102-time-values) |
114 | | - * [10.3 Basic Time Functions](#103-basic-time-functions) |
115 | | - * [10.4 Time Conversion Functions](#104-time-conversion-functions) |
116 | | - * [10.5 Time Manipulation Functions](#105-time-manipulation-functions) |
| 114 | + * [10.1 Time Formats](#101-time-formats) |
| 115 | + * [10.2 Time Values](#102-time-values) |
| 116 | + * [10.3 Basic Time Functions](#103-basic-time-functions) |
| 117 | + * [10.4 Time Conversion Functions](#104-time-conversion-functions) |
| 118 | + * [10.5 Time Manipulation Functions](#105-time-manipulation-functions) |
117 | 119 | * [11 Error Handling](#11-error-handling) |
118 | | - * [11.1 Standard Error Codes](#111-standard-error-codes) |
| 120 | + * [11.1 Standard Error Codes](#111-standard-error-codes) |
119 | 121 |
|
120 | 122 | # 1. Introduction |
121 | 123 |
|
|
0 commit comments