=== Framework Definitions

Several definitions are used specially by the F Prime framework.
These are called *framework definitions.*

==== Constant Definitions

The table below lists the framework constant definitions.
Each row in the table has the following meaning:

. The row provides a qualified name _N_ and a set of rules _R_.

. If the model contains a 
<<Definitions_Constant-Definitions,constant definition>> _D_ with 
<<Scoping-of-Names_Names-of-Definitions,qualified name>> _N_,
then _D_ must have the following properties:

.. Each qualified identifier that is a prefix of the
name _N_, but not the name itself, must
<<Scoping-of-Names_Resolution-of-Qualified-Identifiers,refer to>> a
<<Definitions_Module-Definitions,module definition>>.
For example, the definition _D_  may not appear inside a component
or state machine.

.. The definition _D_ must conform to the rules _R_.

The rules use the following terms:

* An *integer constant* is a <<Definitions_Constant-Definitions,constant definition>>
whose <<Types_Underlying-Types,underlying type>> is an
  <<Types_Internal-Types_Integer-Types,integer type>>.

* A *nonnegative integer constant* is an integer constant
  whose value is greater than or equal to zero.

* A *positive integer constant* is an integer constant
  whose value is greater than zero.

* A *string size constant* is an integer constant whose value is a
  valid <<Types_String-Types,string size>>.

|===
|Qualified Name|Rules

|`FW_ASSERT_COUNT_MAX`
|Must be a nonnegative integer constant.

|`FW_CMD_ARG_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_CMD_STRING_MAX_SIZE`
|Must be a string size constant.

|`FW_COM_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_CONTEXT_DONT_CARE`
|Must be an integer constant.

|`FW_FILE_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_FIXED_LENGTH_STRING_SIZE`
|Must be a string size constant.

|`FW_INTERNAL_INTERFACE_STRING_MAX_SIZE`
|Must be a string size constant.

|`FW_LOG_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_LOG_STRING_MAX_SIZE`
|Must be a string size constant.

|`FW_LOG_TEXT_BUFFER_SIZE`
|Must be a positive integer constant.

|`FW_OBJ_SIMPLE_REG_BUFF_SIZE`
|Must be a positive integer constant.

|`FW_OBJ_SIMPLE_REG_ENTRIES`
|Must be a positive integer constant.

|`FW_PARAM_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_PARAM_STRING_MAX_SIZE`
|Must be a string size constant.

|`FW_QUEUE_NAME_BUFFER_SIZE`
|Must be a positive integer constant.

|`FW_QUEUE_SIMPLE_QUEUE_ENTRIES`
|Must be a positive integer constant.

|`FW_SERIALIZE_FALSE_VALUE`
|Must be an integer constant.

|`FW_SERIALIZE_TRUE_VALUE`
|Must be an integer constant.

|`FW_SM_SIGNAL_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_STATEMENT_ARG_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_TASK_NAME_BUFFER_SIZE`
|Must be a positive integer constant.

|`FW_TLM_BUFFER_MAX_SIZE`
|Must be a positive integer constant.

|`FW_TLM_STRING_MAX_SIZE`
|Must be a string size constant.

|`Fw.DpCfg.CONTAINER_USER_DATA_SIZE`
|Must be a positive integer constant.

|===

==== Type Definitions

The table below lists the framework type definitions.
The rows have the same meaning as stated for 
<<Definitions_Framework-Definitions_Constant-Definitions,constant 
definitions>>, except that the qualified names are the names
of <<Definitions_Type-Definitions,type definitions>>.
The rules use the following terms:

* An *integer alias type* is an <<Definitions_Alias-Type-Definitions,alias type 
  definition>> whose <<Types_Underlying-Types,underlying type>> is a
  <<Types_Primitive-Integer-Types,primitive integer type>>.

* A *signed integer alias type* is an integer alias type whose
  underlying type is signed.

* An *unsigned integer alias type* is an integer alias type whose
  underlying type is unsigned.

|===
|Qualified Name|Rules

|`Fw.DpCfg.ProcType`
|Must be an <<Definitions_Enum-Definitions,enum definition>>.

|`Fw.DpState`
|Must be an <<Definitions_Enum-Definitions,enum definition>>.

|`FwAssertArgType`
|Must be an integer alias type.

|`FwChanIdType`
|Must be an integer alias type.

|`FwDpIdType`
|Must be an integer alias type.

|`FwDpPriorityType`
|Must be an integer alias type.

|`FwEnumStoreType`
|Must be an integer alias type.

|`FwEventIdType`
|Must be an integer alias type.

|`FwIndexType`
|Must be a signed integer alias type.

|`FwOpcodeType`
|Must be an integer alias type.

|`FwPacketDescriptorType`
|Must be an integer alias type.

|`FwPrmIdType`
|Must be an integer alias type.

|`FwQueuePriorityType`
|Must be an integer alias type.

|`FwSignedSizeType`
|Must be a signed integer alias type.

|`FwSizeStoreType`
|Must be an integer alias type.

|`FwSizeType`
|Must be an unsigned integer alias type.

|`FwTaskPriorityType`
|Must be an integer alias type.

|`FwTimeBaseStoreType`
|Must be an integer alias type.

|`FwTimeContextStoreType`
|Must be an integer alias type.

|`FwTlmPacketizeIdType`
|Must be an integer alias type.

|`FwTraceIdType`
|Must be an integer alias type.

|===

==== Port Definitions

The F Prime framework provides <<Definitions_Port-Definitions,port definitions>>
with the following qualified names:

* `Fw.CmdReg`

* `Fw.CmdResponse`

* `Fw.Cmd`

* `Fw.DpGet`

* `Fw.DpRequest`

* `Fw.DpResponse`

* `Fw.DpSend`

* `Fw.LogText`

* `Fw.Log`

* `Fw.PrmGet`

* `Fw.PrmSet`

* `Fw.Time`

* `Fw.Tlm`
