AUTOSAR SWS FunctionInhibitionManager
AUTOSAR SWS FunctionInhibitionManager
AUTOSAR CP R20-11
AUTOSAR
2010-02-02 3.1.4 • Legal disclaimer revised
Administration
Disclaimer
This work (specification and/or software implementation) and the material contained in
it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR and the
companies that have contributed to it shall not be liable for any use of the work.
The material contained in this work is protected by copyright and other types of intel-
lectual property rights. The commercial exploitation of the material contained in this
work requires a license to such intellectual property rights.
This work may be utilized or reproduced without any modification, in any form or by
any means, for informational purposes only. For any other purpose, no part of the work
may be utilized or reproduced, in any form or by any means, without permission in
writing from the publisher.
The work has been developed for automotive applications only. It has neither been
developed, nor tested for non-automotive applications.
The word AUTOSAR and the AUTOSAR logo are registered trademarks.
Table of Contents
1 Introduction and functional overview 9
3 Related documentation 11
3.1 Input documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Related standards and norms . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Related specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Constraints and assumptions 13
4.1 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Applicability to car domains . . . . . . . . . . . . . . . . . . . . . . . . 13
5 Dependencies on other modules 14
5.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1.1 Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6 Requirements traceability 16
7 Functional specification 20
7.1 Background & Rationale . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2.1 FiM core variables . . . . . . . . . . . . . . . . . . . . . . . . 20
7.2.1.1 Definition of ’Diagnostic Event’ . . . . . . . . . . . . 20
7.2.1.2 Definition of ’Monitor Status’ . . . . . . . . . . . . . . 20
7.2.1.3 Definition of ’Monitored Component’ . . . . . . . . . 20
7.2.1.4 Definition of ’Summarized Event’ . . . . . . . . . . . 21
7.2.1.5 Definition of ’Function Identifier’ . . . . . . . . . . . . 21
7.2.1.6 Definition of ’Function Identifier permission state’ . . 23
7.2.2 FiM core functionalities . . . . . . . . . . . . . . . . . . . . . 23
7.2.2.1 Initialization . . . . . . . . . . . . . . . . . . . . . . . 23
7.2.2.2 FiM Data Structure . . . . . . . . . . . . . . . . . . . 24
7.2.2.3 Interaction between Dem and Function Inhibition
Manager (FiM) . . . . . . . . . . . . . . . . . . . . . 25
7.2.2.4 Interaction between SW-Components and Function
Inhibition Manager (FiM) . . . . . . . . . . . . . . . . 28
7.2.2.5 Application example for FiM usage . . . . . . . . . . 28
7.2.3 OBD-Functionality . . . . . . . . . . . . . . . . . . . . . . . . 29
7.2.3.1 In-Use-Monitor Performance Ratio (IUMPR) Support 29
7.3 Error classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.3.1 Development Errors . . . . . . . . . . . . . . . . . . . . . . . 30
7.3.2 Runtime Errors . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.3.3 Transient Faults . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.3.4 Production Errors . . . . . . . . . . . . . . . . . . . . . . . . 30
7.3.5 Extended Production Errors . . . . . . . . . . . . . . . . . . . 30
4
Abbreviation / Acronym: Description:
Xxx_ Placeholder for an API provider
3 Related documentation
4.1 Limitations
Timing constrains have to be considered for the whole system. Note that the process
and response times strongly depend on the implementation of the FiM module. Hence,
if there are explicit needs for faster responses of the FiM than the cycle (time slice of
the task) these needs have to be considered by the FiM implementation specifically by
the affected application. Special measures have to be implemented by the FiM which
are not explicitly specified in this AUTOSAR document, since here, the implementation
is - on purpose - not prescribed.
[SWS_Fim_00043] dThe FiM shall compute the permission of a FID independently of
the state of other FIDs.c(SRS_Fim_04706)
Interdependencies between FIDs are not supported by the FiM. That means an FID
does not influence another FID.
5.1 Requirements
There are three sources of requirements for this specification:
• The requirements for the functionality of the FiM service are specified in [4]. In
order to model the VFB view of the Service, the chapter on AUTOSAR Services
of the VFB specification [5] has to be considered as an additional requirement.
• For the formal description of the SW-C attributes [6] gives the requirements.
On each ECU, typically one instance of the FiM Service and several Atomic Software
Component instances using this Service are employed. The Atomic Software Compo-
nents are named "clients" further on in this document.
Additionally, there are parts of the basic software, which either control the FiM Manager
(e.g. the ECUState Manager for initialization and shutdown) or need to query the FiM
for execution permission themselves.
6 Requirements traceability
7 Functional specification
7.2 Requirements
A ’monitor status’ is the status calculated by the Dem according to the reported values
of monitor functions. Possible values are defined by Dem_MonitorStatusType.
See AUTOSAR_SWS_DiagnosticEventManager document for further details [3].
The Fim implements the calculation of function permissions. Object to those calcula-
tions are SW-Components or logical units, which receive the information "Permission
granted" / "permission denied".
To address those components, these have to be configured in FIM and a Function
Identifier is assigned to address them via interfaces.
[SWS_Fim_00002] dThe configuration process shall guarantee that FunctionIds are
unique per FiM. Two distinct functionalities with different dependencies on events shall
never have the same FunctionId (see also [SWS_Fim_00007]).c(SRS_Fim_04701)
[SWS_Fim_00003] dThe FiM module’s environment shall use the FunctionId to directly
point to the associated functionality information (permission status etc.)c(SRS_Fim_-
04701)
The flow of information starts with the API call of the Dem providing changes of the
event information. This information is processed and dependencies to FIDs are eval-
uated. Finally, the permission state of the FIDs is accessed via API through the RTE
(Figure 7.1).
Figure 7.1: Logical information flow to determine FID permission states for an imple-
mentation with permission state stored in RAM
The permission state of each FID is calculated based on the EventIds assigned to a
specific FID. Afterwards, the calculated permission states of each FID (e.g. FID_K) are
"and-ed" to determine the resulting permission state. This implies an implementation
where the FiM stores the permission state of the FIDs in RAM.
Alternatively, the FiM can poll the monitor status to re-calculate the permission state.
The polling is triggered either by a functionality requesting its permission state (SW-C
or BSW) or in a cyclic task. In this case, there is no increased process effort within the
FiM at changes of any event.
7.2.2.1 Initialization
[SWS_Fim_00018] dIf Dem events status information is used, the FiM module shall
compute the permission states for all FIDs at its initialization based on all restored
monitor status information (not only events stored in the fault memory) of the Dem.c
(SRS_BSW_00416, SRS_Fim_04712)
The FiM is designed that it requires Dem monitor states during initialization. Therefore
the Dem needs to ensure that at the point in time the FiM is initialized, the Dem is
ready to provide monitor states via Dem_GetMonitorState. The Fim is not able to
detect a not initialized Dem due to possible disabled events and will always behave as
described in [SWS_Fim_00097].
[SWS_Fim_00102] dThe initialization of Dem and Fim shall always follow the below
order :
step 0) Dem_PreInit
step 1) Non-volatile memory data has to be available.
step 2) FiM_Init (setting up internal variables); after FiM_Init, the Fim is not yet
ready to be used.
step 3) Dem_Init: do the internal DEM initialization and use FiM_DemInit to finally
initialize the FIMc()
Note: From step 3 onwards, the Dem and Fim are finally initialized and ready to be
used.
[SWS_Fim_00104] dIf FiM_GetFunctionPermission is called before the FiM is
initialized, the FiM shall return E_NOT_OK.(FiM_DemInit).c(SRS_BSW_00406)
[SWS_Fim_00013] dThe configuration process of the FiM shall create data structures
within the FiM module to store the inhibit relations (EventID - FID - applicable mask).c
(SRS_BSW_00344, SRS_BSW_00345, SRS_Fim_04706)
A configurable number of EventIds and inhibition masks are assigned to one FID. The
number of EventIds and inhibit masks per FID have to match so that for each configured
event, a corresponding inhibit mask exists.
The inhibition mask contains the inhibition conditions for a FID provided that the as-
sociated EventIds have a certain status (Dem_EventStatusExtendedType). These
masks define which states of an event the FID is sensitive to. However, the mask does
not only address certain bits according to the Dem_EventStatusExtendedType, it
rather selects an algorithm to calculate the boolean inhibition condition from the Dem_-
EventStatusExtendedType.
The implementation of the FiM data structure cannot be prescribed. A possible im-
plementation of the inhibit matrix could be a block of calibration values for each inhibit
source (=EventId). That means for each EventId a list of FIDs and masks is available
that shall be inhibited by this EventId. A possible FiM structure consisting of such a
configuration and a FID status array is exemplarily shown in Figure 2.
There is an inhibition mask assigned to every FID and both are assigned to a particular
EventId. If this event has a certain state, the inhibition of the FID becomes active if the
event state matches the configured mask.
[SWS_Fim_00008] dThe FiM module shall provide the possibility to modify the inhibit
conditions by post-built configuration.c(SRS_Fim_04706)
Depending on the implementation, it might not be possible to:
• Add new events.
• Extend the number of inhibited FID’s per event.
• Extend the specified configuration parameters concerning number of events,
number of FIDs and number of links.
On being informed about a monitor status change, the Fim uses the Api Dem_Get-
MonitorStatus to recalculate the function inhibitions.
1. Note: From the function point of view, synchronous update of inhibit / release condi-
tions can be made either within or outside of FiM_MainFunction API.
As mentioned in chapter 4.1, the implementation of the FiM highly depends on require-
ments (e.g. timing requirements) derived from applications. If an application requires
fast reaction times the FiM has to provide FID information sufficiently fast to allow trig-
gering limp-home functionality.
The API FiM_DemTriggerOnMonitorStatus is only relevant if a status variable per
FID is stored. In an alternative implementation when no status is stored and the per-
mission status is calculated every time when queried, the API FiM_DemTriggerOn-
MonitorStatus is without effect.
As an example of implementation, Figure 3 shows the calculation of a single Event
Id-FID link. On the left hand side, the monitor status is reported by the Dem as
Dem_EventStatusExtendedType. This status is compared to the mask configured for
the EventId associated with the FID.
An inhibition counter is assigned to each FID. The inhibition counter contains the num-
ber of currently inhibiting EventIds.
If the calculation is performed cyclically (monitor status is read through Dem_Get-
MonitorStatus), the inhibition counter shall be incremented if the status and the
mask match; otherwise, the inhibition counter is not updated. This is applicable for
FiM_GetFunctionPermission (if the permission state has to be computed upon
the query) and FiM_MainFunction APIs.
In the trigger on monitor status change, the stored currently inhibiting EventIds (inhibi-
tion counter) shall be used for the computation for the permission state. If there is an
monitor status change reported by FiM_DemTriggerOnMonitorStatus, then the
following shall be performed:
a. If the change in status for the EventId results in a released state (mask does not
match with the monitor status), then the inhibition counter has to be decremented.
b. If the change in status for the EventId results in an inhibited state (mask matches
with the monitor status), then the inhibition counter has to be incremented.
If the inhibition counter is > 0, then the FID permission state shall be set to FALSE,
otherwise the FID permission state shall be set to TRUE.
[SWS_Fim_00012] dThe FiM module shall calculate the inhibit status based on the
actual status of the inhibit source and the calibrated mask which exists for each inhibit
source (ref. 10.2.7). The FiM module shall inhibit the FID if the Monitor status is equal
to the calibrated mask (=Defect, Tested, NotTested). The inhibition is deactivated if the
mask of the event does not match anymore the calibrated value.c(SRS_Fim_04702)
Optionally, the tested status can be used for inhibiting. Depending on the inhibition
condition, the inhibition can be active if the event has status "Tested" or "NotTested". If
no tested value is selected, the tested status is not relevant.
The available combinations of status flags are assigned to a predefined value which
has verbal representation like "Tested", "Not_Tested" or Last_Failed".
[SWS_Fim_00098] dThe Function Inhibition Manager shall use the FID - DemCom-
ponentId - inhibition configuration to determine the permission state for the configured
FID.
Upon changes of the FAILED status of a DemComponent, the function status shall be
recalculated. Whenever the component status is FAILED (ComponentFailedStatus
= TRUE), the FID is inhibited.c()
[SWS_Fim_00099] dIf the FIM is configured for cyclically polling the status, the FIM
shall use the API Dem_GetComponentFailed to get the current FAILED status of a
component.c()
[SWS_Fim_00100] dIf the FIM is configured for being triggered on eventStatus (Fi
MCyclicEventEvaluation), the FIM shall accept the status changed information of a
DemComponent by providing the function FiM_DemTriggerOnComponentStatus.c
()
[SWS_Fim_00016] dThe configuration engineer shall provide at compile time the in-
hibit conditions for each FID required for handling the dependencies of functionalities
and events in the FiM module.c(SRS_Fim_04706)
Note, that modifications by calibration shall be possible. The configuration mechanism
of the FiM using SW-component template contents shall consider these requirements.
First, the FID needs to be introduced and allocated. Furthermore, for each FID a list of
events plus associated mask causing the inhibition of the FID shall be provided by the
SW-component. Chapter 10 introduces how the SW-component template considers
these configuration requirements.
During the configuration process, the data structures are built up. Depending on the
implementation this could, e.g. be a mapping of an event onto all affected FIDs or
alternatively vice versa, a mapping of a FID onto all events affecting it.
Controlling implies that within the implemented functionality, the permission of a FID is
queried via AUTOSAR service.
[SWS_Fim_00020] dThe FiM module shall ensure an immediate control of functionality
by synchronously responding to an incoming permission query. The FiM module shall
realize this behavior either by storing the permission state as a status variable or by
evaluation of the event states upon permission query.c(SRS_Fim_04713)
[SWS_Fim_00105] dIf a function (FID) is set to not available using the interface
FiM_SetFunctionAvailable, its permission state FiM_GetFunctionPermis-
sion shall always return FALSEc(SRS_Fim_04723)
• The configuration of the FiM actually establishes the relationship between the
EventId and the assigned FunctionId(s)
7.2.3 OBD-Functionality
In order to track the behavior of diagnostic functions in every day usage, in particular
the capability to find malfunctions, the regulations require the tracking of this perfor-
mance in relation to a standardized driving profile. This is called "In-Use Monitor Per-
formance Ratio" (IUMPR) defined as the number of times a fault could have been found
(=numerator) divided by the number of times the standardized driving profile has been
fulfilled (=denominator). The relevant data recording is allocated in the Dem based on
FIDs and EventIDs.
Thus, based on the FiM configuration of the referenced FIDs it can be evaluated
whether a Ratio Id specific data record needs to be stopped. In particular, IUMPR
tracking shall be stopped as long as the entry remains visible in service $07.
The Dem may use the FiM configuration for its IUMPR calculation or by call of FiM_-
GetFunctionPermission of a dedicated FID.
Note: The FiM does not provide special OBDII functionality but uses already existing
mechanisms for OBDII.
[SWS_Fim_00076] d
Type of error Related error code Error value
API function called before the FiM module has FIM_E_UNINIT 0x01
been full initialized or after the FiM module has
been shut down
FiM_GetFunctionPermission called with wrong FID FIM_E_FID_OUT_OF_RANGE 0x02
Dem calls FiM with invalid EventId FIM_E_EVENTID_OUT_OF_RANGE 0x03
API is invoked with NULL Pointer. FIM_E_PARAM_POINTER 0x04
Invalid configuration set selection FIM_E_INIT_FAILED 0x05
c()
8 API specification
c()
8.2.1 FiM_ConfigType
[SWS_Fim_00092] d
Name FiM_ConfigType
Kind Structure
Elements –
Type –
Comment implementation specific
Description This type defines a data structure for the post build parameters of the FIM. At initialization the FIM
gets a pointer to a structure of this type to get access to its configuration data, which is necessary
for initializsation.
Available via FiM.h
c(SRS_BSW_00404, SRS_BSW_00405)
8.3.1.1 FiM_Init
[SWS_Fim_00077] d
Service Name FiM_Init
Syntax void FiM_Init (
const FiM_ConfigType* FiMConfigPtr
)
8.3.2.1 FiM_GetFunctionPermission
[SWS_Fim_00011] d
[SWS_Fim_00106] d
c(SRS_Fim_04723)
8.3.3.1 FiM_DemTriggerOnMonitorStatus
[SWS_Fim_00021] d
Service Name FiM_DemTriggerOnMonitorStatus
Syntax void FiM_DemTriggerOnMonitorStatus (
Dem_EventIdType EventId
)
[SWS_Fim_00057] dIf development error detection for the module FiM is enabled: the
function FiM_DemTriggerOnMonitorStatus shall perform a plausibility check on
the EventId. If the requested EventId is not existing in the Dem configuration, the
function shall raise the development error FIM_E_EVENTID_OUT_OF_RANGE.c(SRS_-
BSW_00406)
[SWS_Fim_00058] dIf development error detection for the module FiM is enabled: The
function FiM_DemTriggerOnMonitorStatus shall check for complete initialization
of the FiM. If the function detects that the initialization is not complete, it shall raise a
development error.c(SRS_BSW_00406)
[SWS_Fim_00101] d
Service Name FiM_DemTriggerOnComponentStatus
Syntax void FiM_DemTriggerOnComponentStatus (
Dem_ComponentIdType ComponentId,
boolean ComponentFailedStatus
)
c()
8.3.3.3 FiM_DemInit
[SWS_Fim_00006] d
Service Name FiM_DemInit
Syntax void FiM_DemInit (
void
)
4
Sync/Async Synchronous
Reentrancy Non Reentrant
Parameters (in) None
Parameters (inout) None
Parameters (out) None
Return value None
Description This service re-initializes the FIM.
Available via FiM_Dem.h
c(SRS_BSW_00310, SRS_BSW_00358)
[SWS_Fim_00069] dThe function FiM_DemInit shall compute the permission state
for all FIDs.c()
[SWS_Fim_00082] dThe function FiM_DemInit shall access the EventId states via
the function Dem_GetMonitorStatus and the component information via Dem_Get-
ComponentFailed.c()
8.3.3.4 FiM_GetVersionInfo
[SWS_Fim_00078] d
Service Name FiM_GetVersionInfo
Syntax void FiM_GetVersionInfo (
Std_VersionInfoType* versioninfo
)
c()
This chapter lists all functions provided by the FiM module and used by lower layer
modules.
No callback notification is specified.
This chapter lists all functions provided by the FiM module and called directly by the
Basic Software Module Scheduler.
8.3.5.1 FiM_MainFunction
[SWS_Fim_00060] d
Service Name FiM_MainFunction
Syntax void FiM_MainFunction (
void
)
c(SRS_BSW_00373)
The evaluation of permission states can be performed either on event change or cycli-
cally.
[SWS_Fim_00070] dIf FiM module polls monitor status (as defined in configuration
parameter FiMEventUpdateTriggeredByDem = FALSE) and decides to do it in a
cyclic manner, FiM_MainFunction shall be used to calculate the permission states
of all EventIds using their inhibition masks. The API Dem_GetMonitorStatus shall
be used to get status information of EventIds.c()
[SWS_Fim_00097] dIf Dem_GetMonitorStatus returns E_NOT_OK, the FIM shall
not consider this event in its inhibition mask calculationc()
[SWS_Fim_00067] dThe FiM shall perform the evaluation of actual EventIds status in-
formation cyclically for all the EventIds using the inhibition mask and then calculate the
corresponding FID permission states. FiM shall access the monitor status information
using the API Dem_GetMonitorStatus if Dem and FiM are implemented as sepa-
rate modules. FiM shall access the monitor status structure of Dem if Dem and FiM
are implemented as a bundle.c()
This chapter lists all functions the module FiM requires from other modules.
This chapter defines all interfaces, which are required to fulfill the core functionality of
the module.
[SWS_Fim_00079] d
API Function Header File Description
Dem_GetMonitorStatus Dem.h Gets the current monitor status for an event.
SchM_ActMainFunction_FiM <none> Invokes the SchM_ActMainFunction function to
trigger the activation of a corresponding main
processing function.
SchM_CancelMainFunction_FiM <none> Invokes the SchM_CancelMainFunction function to
trigger the cancellation of the requested activation of
a corresponding main processing function.
c()
This chapter defines all interfaces, which are required to fulfill an optional functionality
of the module.
[SWS_Fim_00080] d
API Function Header File Description
Det_ReportError Det.h Service to report development errors.
c()
8.4.1 Client-Server-Interfaces
8.4.1.1 FiM_FunctionInhibition
Using the concepts of the SW-C template, the interface is defined as follows:
[SWS_Fim_00090] d
Name FunctionInhibition
Comment The SW Components can use this service to query for the permission to execute a certain
functionality represented by a FID.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetFunctionPermission
Comment Get the permission state of the respective FID.
Variation –
Parameters Permission
Type boolean
Direction OUT
Comment The permission of the requested FID.
TRUE: FID has permission to run
FALSE: FID has no permission to run, i.e. shall not be executed
Variation –
Possible Errors E_OK
E_NOT_OK
c(SRS_Fim_04700)
8.4.1.2 FiM_ControlFunctionAvailable
Using the concepts of the SW-C template, the interface is defined as follows:
[SWS_Fim_00107] d
Name ControlFunctionAvailable
Comment SW Components can use this service to set the availability of a function.
IsService true
Variation ({ecuc(FiM/FiMGeneral/FiMAvailabilitySupport)} == True)
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetFunctionAvailable
Comment Sets the availability of a function.
Variation –
Availability
Type boolean
Direction IN
5
4
Comment The permission of the requested FID:
TRUE: Function is available.
FALSE: Function is not available.
Variation –
Possible Errors E_OK
E_NOT_OK
c(SRS_Fim_04723)
8.4.2.1 FiM_FunctionIdType
[SWS_Fim_00027] d
Name FiM_FunctionIdType
Kind Type
Derived from Basetype Variation
uint16 platform depended
uint8 platform depended
Range 0..255, 0..65535 – Identifier of functionality
Configurable, size depends on
System complexity. Remark: Not
all numbers are valid. The FIM
data generation tool shall only
assign valid values.
Description Type for the FunctionID
Variation –
Available via Rte_FiM_Type.h
8.4.3 Ports
[SWS_Fim_00094] d
Name Func_{Name}
Kind ProvidedPort Interface FunctionInhibition
Description A client can query the FiM for execution permission for a specific function. The FIDs which
represent the functions are not directly used by the client SW-C. Instead, the mechanism of
"port-defined argument values" is used and every FID is mapped to a separate port that is
responsible for the data exchange via RTE.
Port Defined Type FiM_FunctionIdType
Argument Value(s)
5
4
Value {ecuc(FiM/FiMConfigSet/FiMFID/FiMFunctionId.value)}
Variation Name = {ecuc(FiM/FiMConfigSet/FiMFID.SHORT-NAME)}
c(SRS_Fim_04700)
[SWS_Fim_00108] d
Name Control_{Name}
Kind ProvidedPort Interface ControlFunctionAvailable
Description A client can set the availability for a specific function.
Port Defined Type FiM_FunctionIdType
Argument Value(s)
Value {ecuc(FiM/FiMConfigSet/FiMFID/FiMFunctionId.value)}
Variation ({ecuc(FiM/FiMGeneral/FiMAvailabilitySupport)} == True)
Name = {ecuc(FiM/FiMConfigSet/FiMFID.SHORT-NAME)}
c(SRS_Fim_04723)
The InternalBehavior of the FiM Service is only seen by the local RTE. Additionally to
the definition of the function identifiers as port defined arguments, the InternalBehavior
has to specify the operation invoked runnables:
RunnableEntity GetFunctionPermission
symbol "FiMGetFunctionPermission"
canbeInvokedConcurrently = TRUE
9 Sequence diagrams
Dem_PreInit()
NvM_ReadAll()
FiM_Init(const FiM_ConfigType*)
FiM_GetFunctionPermission(Std_ReturnType,
FiM_FunctionIdType, boolean**)
E_NOT_OK()
Dem_Init(const Dem_ConfigType*)
FiM_DemInit()
Dem_GetMonitorStatus(Std_ReturnType,
Dem_EventIdType, Dem_MonitorStatusType**)
Calculate
Permission
Status()
FiM_DemInit()
Dem_Init()
FiM_GetFunctionPermission(Std_ReturnType,
FiM_FunctionIdType, boolean**)
E_OK()
9.2 FiM_DemTriggerOnMonitorStatus
The sequence diagram below illustrates how the Dem informs the FiM about the
change of a certain monitor status by calling FiM_DemTriggerOnMonitorStatus.
Furthermore, it indicates how the FID is affected by requesting permission status using
FiM_GetFunctionPermission.
FiM_DemTriggerOnMonitorStatus(Dem_EventIdType)
FiM_DemTriggerOnMonitorStatus()
Dem_GetMonitorStatus(Std_ReturnType, Dem_EventIdType,
Dem_MonitorStatusType**)
Dem_GetMonitorStatus()
FiM_GetFunctionPermission(Std_ReturnType,
FiM_FunctionIdType, boolean**)
Fim_GetFunctionPermission()
10 Configuration specification
In general, this chapter defines configuration parameters and their clustering into con-
tainers. In order to support the specification, Chapter 10.1 describes fundamentals.
It also specifies a template (table) you shall use for the parameter specification. We
intend to leave Chapter 10.1 in the specification to guarantee comprehension.
Chapter 10.2 specifies the structure (containers) and the parameters of the module Fi
M.
Chapter 10.3 specifies published information of the module FiM.
10.2.1 FiM
AUTOSARParameterDefinition:
EcucDefinitionCollection
+module
+parameter
FiMFunctionId:
EcucIntegerParamDef
max = 65535
min = 0
upperMultiplicity = 1
+container lowerMultiplicity = 1
symbolicNameValue = true
FiMInhibitionConfiguration:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
FiMSummaryEvent:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
10.2.2 FiMGeneral
Multiplicity 1
Type EcucBooleanParamDef
Default Value false
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
TRUE: the DEM informs FIM about changes of monitor status, FALSE:
the FIM polls monitor status from the DEM module either cyclically or
on demand.
Multiplicity 1
Type EcucBooleanParamDef
Default Value
Post-Build Variant false
Value
Please note: This configuration value shall be equal to the value in the
Basic Software Scheduler configuration of the RTE module.
Its applicable for post build configuration versions only and may be
used to allocate the maximum size of memory to store and execute the
configuration.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 1 .. 65535
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
Its applicable for post build configuration versions only and may be
used to allocate the maximum size of memory to store and execute the
configuration.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 1 .. 65535
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
Its applicable for post build configuration versions only and may be
used to allocate the maximum size of memory to store and execute the
configuration.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 1 .. 65535
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
Its applicable for post build configuration versions only and may be
used to allocate the maximum size of memory to store and execute the
configuration.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 1 .. 65535
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
No Included Containers
FiM: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
+container
FiMGeneral: FiMVersionInfoApi:
EcucParamConfContainerDef EcucBooleanParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1
defaultValue = false
FiMEventUpdateTriggeredByDem:
EcucBooleanParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1 FiMMainFunctionPeriod: EcucFloatParamDef
+parameter min = 0
upperMultiplicity = 1
lowerMultiplicity = 1
max = INF
FiMDevErrorDetect:
EcucBooleanParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1
defaultValue = false FiMAvailabilitySupport: EcucBooleanParamDef
+parameter upperMultiplicity = 1
lowerMultiplicity = 1
defaultValue = false
FiMMaxSummaryEvents:
EcucIntegerParamDef
+parameter
max = 65535
min = 0
upperMultiplicity = 1
lowerMultiplicity = 1 FiMMaxSumEventsPerFidInhibitionConfiguration:
EcucIntegerParamDef
+parameter
max = 65535
min = 1
FiMMaxFiMInhibitionConfigurations: upperMultiplicity = 1
EcucIntegerParamDef lowerMultiplicity = 0
+parameter
max = 65535
min = 1
upperMultiplicity = 1
lowerMultiplicity = 0 FiMMaxEventsPerFidInhibitionConfiguration:
EcucIntegerParamDef
+parameter
max = 65535
min = 1
FiMMaxInputEventsPerSummaryEvents: upperMultiplicity = 1
EcucIntegerParamDef lowerMultiplicity = 0
+parameter
max = 65535
min = 1
upperMultiplicity = 1
lowerMultiplicity = 0
10.2.3 FiMConfigSet
Included Containers
Container Name Multiplicity Scope / Dependency
FiMFID 1..* This container includes symbolic names of all FIDs.
FiMInhibition 1..* This container includes all configuration parameters
Configuration concerning the relationship between event and FID.
FiMSummaryEvent 0..* The summarized EventId definition record consists of a
summarized event ID and specific Dem Events.
10.2.4 FiMFID
No Included Containers
10.2.5 FiMInhibitionConfiguration
No Included Containers
FiMConfigSet:
EcucParamConfContainerDef
FiMFunctionId:
+subContainer FiMFID: EcucIntegerParamDef
EcucParamConfContainerDef
+parameter max = 65535
lowerMultiplicity = 1 min = 0
upperMultiplicity = * upperMultiplicity = 1
lowerMultiplicity = 1
symbolicNameValue = true
+destination
+subContainer
FiMInhibitionConfiguration: FiMInhFunctionIdRef:
EcucParamConfContainerDef EcucReferenceDef
+reference
lowerMultiplicity = 1 lowerMultiplicity = 1
upperMultiplicity = * upperMultiplicity = 1
+subContainer
FiMInhSumRef: FiMSummaryEvent:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = *
+literal FIM_NOT_TESTED:
EcucEnumerationLiteralDef
+literal FIM_TESTED_AND_FAILED:
EcucEnumerationLiteralDef
+parameter
FiMInhComponentRef:
DemEventId:
+reference EcucReferenceDef
EcucIntegerParamDef
lowerMultiplicity = 0
max = 65535
upperMultiplicity = *
min = 1
symbolicNameValue = true
+destination
DemComponent:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
10.2.6 FiMSummaryEvent
This record means that a particular FID that has to be disabled in case
of summarized event (defined above) is to be disabled in any of the
specific events. A possible solution could be assigning events as
summarized events along with a list of specific events. During the
configuration process the summarized event substitutes the referenced
single events.
No Included Containers
FiMConfigSet:
EcucParamConfContainerDef
+subContainer
+parameter
DemEventId:
EcucIntegerParamDef
max = 65535
min = 1
symbolicNameValue = true