Autosar CP Sws Canstatemanager
Autosar CP Sws Canstatemanager
AUTOSAR CP R23-11
• Editorial changes
AUTOSAR
• ComTxModeTimePeriodFactor replaced
2022-11-24 R22-11 Release
with ComTxModeTimePeriod
Management
• Note added for
CanSM_TransceiverModeIndication()
4
• Fixed Change_Baudrate-Statemachine
for NoCom
4
• Introduction of random delays
• Re-Request of ComMode
AUTOSAR
2014-03-31 4.1.3 Release • WakeupValidation to avoid race
Management conditions
• CanSm_TxTimeoutExeption in case of
BusOff
• Added new handling to support partial
networking
4
• Configurable Bus-Off revovery with CAN
TX confirmation instead of time based
AUTOSAR recovery
2009-12-18 4.0.1
Administration • Control of PDU channel modes
completely shifted from CanIf to CanSM
module
• VMM/AMM Concept related changes
(PDU group control shifted to BswM)
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.
Contents
1 Introduction and functional overview 9
3 Related documentation 11
3.1 Input documents & related standards and norms . . . . . . . . . . . . 11
3.2 Related specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Constraints and assumptions 12
4.1 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Applicability to car domains . . . . . . . . . . . . . . . . . . . . . . . . 12
5 Dependencies to other modules 13
5.1 ECU State Manager (EcuM) . . . . . . . . . . . . . . . . . . . . . . . . 13
5.2 BSW Scheduler (SchM, part of RTE) . . . . . . . . . . . . . . . . . . . 13
5.3 Communication Manager (ComM) . . . . . . . . . . . . . . . . . . . . . 14
5.4 CAN Interface (CanIf) . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.5 Diagnostic Event Manager (DEM) . . . . . . . . . . . . . . . . . . . . . 14
5.6 Basic Software Mode Manager (BswM) . . . . . . . . . . . . . . . . . . 14
5.7 CAN Network Management (CanNm) . . . . . . . . . . . . . . . . . . . 14
5.8 Default Error Tracer (DET) . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.9 File structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.9.1 Code file structure . . . . . . . . . . . . . . . . . . . . . . . . 15
5.9.2 Header file structure . . . . . . . . . . . . . . . . . . . . . . . 15
5.9.3 Version check . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6 Requirements Tracing 16
7 Functional specification 39
7.1 General requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2 State machine for each CAN network . . . . . . . . . . . . . . . . . . . 42
7.2.1 Trigger: PowerOn . . . . . . . . . . . . . . . . . . . . . . . . 42
7.2.2 Trigger: CanSM_Init . . . . . . . . . . . . . . . . . . . . . . . 42
7.2.3 Trigger: CanSM_DeInit . . . . . . . . . . . . . . . . . . . . . 42
7.2.4 Trigger: T_START_WAKEUP_SOURCE . . . . . . . . . . . . 43
7.2.5 Trigger: T_STOP_WAKEUP_SOURCE . . . . . . . . . . . . 43
7.2.6 Trigger: T_FULL_COM_MODE_REQUEST . . . . . . . . . . 43
7.2.7 Trigger: T_SILENT_COM_MODE_REQUEST . . . . . . . . 43
7.2.8 Trigger: T_NO_COM_MODE_REQUEST . . . . . . . . . . . 43
7.2.9 Trigger: T_BUS_OFF . . . . . . . . . . . . . . . . . . . . . . 44
7.2.10 Guarding condition: G_FULL_COM_MODE_REQUESTED . 44
7.2.11 Guarding condition: G_SILENT_COM_MODE_REQUESTED 44
7.2.12 Effect: E_PRE_NOCOM . . . . . . . . . . . . . . . . . . . . 44
7.2.13 Effect: E_NOCOM . . . . . . . . . . . . . . . . . . . . . . . . 45
7.2.14 Effect: E_FULL_COM . . . . . . . . . . . . . . . . . . . . . . 45
Table 2.1: Acronyms and abbreviations used in the scope of this Document
3 Related documentation
[1] Glossary
AUTOSAR_FO_TR_Glossary
[2] General Specification of Basic Software Modules
AUTOSAR_CP_SWS_BSWGeneral
[3] Specification of ECU State Manager
AUTOSAR_CP_SWS_ECUStateManager
[4] Specification of RTE Software
AUTOSAR_CP_SWS_RTE
[5] Specification of Communication Manager
AUTOSAR_CP_SWS_COMManager
[6] Specification of CAN Interface
AUTOSAR_CP_SWS_CANInterface
[7] Specification of Diagnostic Event Manager
AUTOSAR_CP_SWS_DiagnosticEventManager
[8] Specification of Basic Software Mode Manager
AUTOSAR_CP_SWS_BSWModeManager
[9] Specification of CAN Network Management
AUTOSAR_CP_SWS_CANNetworkManagement
[10] Specification of Default Error Tracer
AUTOSAR_CP_SWS_DefaultErrorTracer
[11] Specification of CAN Transceiver Driver
AUTOSAR_CP_SWS_CANTransceiverDriver
[12] General Requirements on Basic Software Modules
AUTOSAR_CP_SRS_BSWGeneral
4.1 Limitations
The CanSM module can be used for CAN communication only. Its task is to operate
with the CanIf module to control one or multiple underlying CAN Controllers and CAN
Transceiver Drivers. Other protocols than CAN (i.e. LIN or FlexRay) are not supported.
«realize» «mandatory»
«realize»
«realize»
«use» «realize»
ComM_BusSM_ModeIndication «optional»
CanSM_EcuMWakeUpValidation
Dem_SetEventStatus
«module»
CanSM
CanSM_TxTimeoutException
CanSM_Cbk
«module» «module»
CanIf CanNm
configuration (refer to [10, Specification of Default Error Tracer] for a detailed specifi-
cation of this module).
For details refer to the chapter 5.1.6 "Code file structure" in [2, SWS BSW General].
[SWS_CanSM_00008] dThe header file CanSM.h shall export CanSM module spe-
cific types and the APIs CanSM_GetVersionInfo and CanSM_Init.c(SRS_BSW_-
00447)
For details refer to the chapter 5.1.8 "Version Check" in [2, SWS BSW General].
6 Requirements Tracing
The following tables reference the requirements specified in <CITA-
TIONS_OF_CONTRIBUTED_DOCUMENTS> and links to the fulfillment of these.
Please note that if column “Satisfied by” is empty for a specific requirement this means
that this requirement is not fulfilled by this document.
Requirement Description Satisfied by
[SRS_BSW_00003] All software modules shall provide [SWS_CanSM_00024] [SWS_CanSM_00374]
version and identification information
[SRS_BSW_00004] All Basic SW Modules shall perform a [SWS_CanSM_00652]
pre-processor check of the versions
of all imported include files
[SRS_BSW_00005] Modules of the µC Abstraction Layer [SWS_CanSM_00652]
(MCAL) may not have hard coded
horizontal interfaces
[SRS_BSW_00006] The source code of software modules [SWS_CanSM_00652]
above the µC Abstraction Layer
(MCAL) shall not be processor and
compiler dependent.
[SRS_BSW_00007] All Basic SW Modules written in C [SWS_CanSM_00652]
language shall conform to the MISRA
C 2012 Standard.
[SRS_BSW_00009] All Basic SW Modules shall be [SWS_CanSM_00652]
documented according to a common
standard.
[SRS_BSW_00010] The memory consumption of all Basic [SWS_CanSM_00652]
SW Modules shall be documented for
a defined configuration for all
supported platforms.
[SRS_BSW_00101] The Basic Software Module shall be [SWS_CanSM_00023]
able to initialize variables and
hardware in a separate initialization
function
[SRS_BSW_00159] All modules of the AUTOSAR Basic [SWS_CanSM_00652]
Software shall support a tool based
configuration
[SRS_BSW_00160] Configuration files of AUTOSAR [SWS_CanSM_00652]
Basic SW module shall be readable
for human beings
[SRS_BSW_00161] The AUTOSAR Basic Software shall [SWS_CanSM_00652]
provide a microcontroller abstraction
layer which provides a standardized
interface to higher software layers
[SRS_BSW_00162] The AUTOSAR Basic Software shall [SWS_CanSM_00652]
provide a hardware abstraction layer
[SRS_BSW_00164] The Implementation of interrupt [SWS_CanSM_00652]
service routines shall be done by the
Operating System, complex drivers or
modules
[SRS_BSW_00167] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall provide configuration
rules and constraints to enable
plausibility checks
[SRS_BSW_00168] SW components shall be tested by a [SWS_CanSM_00652]
function defined in a common API in
the Basis-SW
5
4
Requirement Description Satisfied by
[SRS_BSW_00170] The AUTOSAR SW Components [SWS_CanSM_00652]
shall provide information about their
dependency from faults, signal
qualities, driver demands
[SRS_BSW_00172] The scheduling strategy that is built [SWS_CanSM_00652]
inside the Basic Software Modules
shall be compatible with the strategy
used in the system
[SRS_BSW_00300] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall be identified by an
unambiguous name
[SRS_BSW_00301] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall only import the
necessary information
[SRS_BSW_00302] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall only export information
needed by other modules
[SRS_BSW_00305] Data types naming convention [SWS_CanSM_00652]
[SRS_BSW_00306] AUTOSAR Basic Software Modules [SWS_CanSM_00652]
shall be compiler and platform
independent
[SRS_BSW_00307] Global variables naming convention [SWS_CanSM_00652]
[SRS_BSW_00308] AUTOSAR Basic Software Modules [SWS_CanSM_00652]
shall not define global data in their
header files, but in the C file
[SRS_BSW_00309] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall indicate all global data
with read-only purposes by explicitly
assigning the const keyword
[SRS_BSW_00310] API naming convention [SWS_CanSM_00652]
[SRS_BSW_00312] Shared code shall be reentrant [SWS_CanSM_00652]
[SRS_BSW_00314] All internal driver modules shall [SWS_CanSM_00652]
separate the interrupt frame definition
from the service routine
[SRS_BSW_00318] Each AUTOSAR Basic Software [SWS_CanSM_00652]
Module file shall provide version
numbers in the header file
[SRS_BSW_00321] The version numbers of AUTOSAR [SWS_CanSM_00652]
Basic Software Modules shall be
enumerated according specific rules
[SRS_BSW_00323] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall check passed API
parameters for validity
[SRS_BSW_00325] The runtime of interrupt service [SWS_CanSM_00652]
routines and functions that are
running in interrupt context shall be
kept short
[SRS_BSW_00327] Error values naming convention [SWS_CanSM_00652]
[SRS_BSW_00328] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall avoid the duplication of
code
[SRS_BSW_00330] It shall be allowed to use macros [SWS_CanSM_00652]
instead of functions where source
code is used and runtime is critical
5
4
Requirement Description Satisfied by
[SRS_BSW_00331] All Basic Software Modules shall [SWS_CanSM_00652]
strictly separate error and status
information
[SRS_BSW_00333] For each callback function it shall be [SWS_CanSM_00064] [SWS_CanSM_00189]
specified if it is called from interrupt [SWS_CanSM_00190] [SWS_CanSM_00235]
context or not
[SRS_BSW_00334] All Basic Software Modules shall [SWS_CanSM_00652]
provide an XML file that contains the
meta data
[SRS_BSW_00335] Status values naming convention [SWS_CanSM_00652]
[SRS_BSW_00336] Basic SW module shall be able to [SWS_CanSM_00652] [SWS_CanSM_91001]
shutdown
[SRS_BSW_00337] Classification of development errors [SWS_CanSM_00654]
[SRS_BSW_00339] Reporting of production relevant error [SWS_CanSM_00652]
status
[SRS_BSW_00341] Module documentation shall contains [SWS_CanSM_00652]
all needed informations
[SRS_BSW_00342] It shall be possible to create an [SWS_CanSM_00652]
AUTOSAR ECU out of modules
provided as source code and
modules provided as object code,
even mixed
[SRS_BSW_00343] The unit of time for specification and [SWS_CanSM_00652]
configuration of Basic SW modules
shall be preferably in physical time
unit
[SRS_BSW_00346] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall provide at least a basic
set of module files
[SRS_BSW_00347] A Naming seperation of different [SWS_CanSM_00652]
instances of BSW drivers shall be in
place
[SRS_BSW_00348] All AUTOSAR standard types and [SWS_CanSM_00652]
constants shall be placed and
organized in a standard type header
file
[SRS_BSW_00350] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall allow the enabling/
disabling of detection and reporting of
development errors.
[SRS_BSW_00353] All integer type definitions of target [SWS_CanSM_00652]
and compiler specific scope shall be
placed and organized in a single type
header
[SRS_BSW_00357] For success/failure of an API call a [SWS_CanSM_00652]
standard return type shall be defined
[SRS_BSW_00358] The return type of init() functions [SWS_CanSM_00023]
implemented by AUTOSAR Basic
Software Modules shall be void
[SRS_BSW_00359] All AUTOSAR Basic Software [SWS_CanSM_00064] [SWS_CanSM_00189]
Modules callback functions shall [SWS_CanSM_00190] [SWS_CanSM_00235]
avoid return types other than void if
possible
[SRS_BSW_00360] AUTOSAR Basic Software Modules [SWS_CanSM_00652] [SWS_CanSM_00652]
callback functions are allowed to
have parameters
5
4
Requirement Description Satisfied by
[SRS_BSW_00369] All AUTOSAR Basic Software [SWS_CanSM_00652] [SWS_CanSM_00660]
Modules shall not return specific
development error codes via the API
[SRS_BSW_00373] The main processing function of each [SWS_CanSM_00652]
AUTOSAR Basic Software Module
shall be named according the defined
convention
[SRS_BSW_00374] All Basic Software Modules shall [SWS_CanSM_00652]
provide a readable module vendor
identification
[SRS_BSW_00375] Basic Software Modules shall report [SWS_CanSM_00652]
wake-up reasons
[SRS_BSW_00377] A Basic Software Module can return [SWS_CanSM_00652]
a module specific types
[SRS_BSW_00378] AUTOSAR shall provide a boolean [SWS_CanSM_00652]
type
[SRS_BSW_00379] All software modules shall provide a [SWS_CanSM_00652]
module identifier in the header file
and in the module XML description
file.
[SRS_BSW_00380] Configuration parameters being [SWS_CanSM_00652]
stored in memory shall be placed into
separate c-files
[SRS_BSW_00383] The Basic Software Module [SWS_CanSM_00652]
specifications shall specify which
other configuration files from other
modules they use at least in the
description
[SRS_BSW_00384] The Basic Software Module [SWS_CanSM_00652]
specifications shall specify at least in
the description which other modules
they require
[SRS_BSW_00385] List possible error notifications [SWS_CanSM_00652]
[SRS_BSW_00386] The BSW shall specify the [SWS_CanSM_00652]
configuration and conditions for
detecting an error
[SRS_BSW_00388] Containers shall be used to group [SWS_CanSM_00652]
configuration parameters that are
defined for the same object
[SRS_BSW_00389] Containers shall have names [SWS_CanSM_00652]
[SRS_BSW_00390] Parameter content shall be unique [SWS_CanSM_00652]
within the module
[SRS_BSW_00392] Parameters shall have a type [SWS_CanSM_00652]
[SRS_BSW_00393] Parameters shall have a range [SWS_CanSM_00652]
[SRS_BSW_00394] The Basic Software Module [SWS_CanSM_00652]
specifications shall specify the scope
of the configuration parameters
[SRS_BSW_00395] The Basic Software Module [SWS_CanSM_00652]
specifications shall list all
configuration parameter
dependencies
5
4
Requirement Description Satisfied by
[SRS_BSW_00396] The Basic Software Module [SWS_CanSM_00652]
specifications shall specify the
supported configuration classes for
changing values and multiplicities for
each parameter/container
[SRS_BSW_00397] The configuration parameters in [SWS_CanSM_00652]
pre-compile time are fixed before
compilation starts
[SRS_BSW_00398] The link-time configuration is [SWS_CanSM_00652]
achieved on object code basis in the
stage after compiling and before
linking
[SRS_BSW_00399] Parameter-sets shall be located in a [SWS_CanSM_00652]
separate segment and shall be
loaded after the code
[SRS_BSW_00400] Parameter shall be selected from [SWS_CanSM_00023] [SWS_CanSM_00597]
multiple sets of parameters after code [SWS_CanSM_00652]
has been loaded and started
[SRS_BSW_00401] Documentation of multiple instances [SWS_CanSM_00652]
of configuration parameters shall be
available
[SRS_BSW_00402] Each module shall provide version [SWS_CanSM_00652]
information
[SRS_BSW_00404] BSW Modules shall support [SWS_CanSM_00023]
post-build configuration
[SRS_BSW_00405] BSW Modules shall support multiple [SWS_CanSM_00023]
configuration sets
[SRS_BSW_00406] A static status variable denoting if a [SWS_CanSM_00023] [SWS_CanSM_00184]
BSW module is initialized shall be
initialized with value 0 before any
APIs of the BSW module is called
[SRS_BSW_00407] Each BSW module shall provide a [SWS_CanSM_00024] [SWS_CanSM_00374]
function to read out the version
information of a dedicated module
implementation
[SRS_BSW_00408] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules configuration parameters
shall be named according to a
specific naming rule
[SRS_BSW_00409] All production code error ID symbols [SWS_CanSM_00652]
are defined by the Dem module and
shall be retrieved by the other BSW
modules from Dem configuration
[SRS_BSW_00410] Compiler switches shall have defined [SWS_CanSM_00652]
values
[SRS_BSW_00411] All AUTOSAR Basic Software [SWS_CanSM_00652]
Modules shall apply a naming rule for
enabling/disabling the existence of
the API
[SRS_BSW_00413] An index-based accessing of the [SWS_CanSM_00652]
instances of BSW modules shall be
done
[SRS_BSW_00414] Init functions shall have a pointer to a [SWS_CanSM_00023]
configuration structure as single
parameter
5
4
Requirement Description Satisfied by
[SRS_BSW_00415] Interfaces which are provided [SWS_CanSM_00652]
exclusively for one module shall be
separated into a dedicated header file
[SRS_BSW_00416] The sequence of modules to be [SWS_CanSM_00652]
initialized shall be configurable
[SRS_BSW_00417] Software which is not part of the [SWS_CanSM_00652]
SW-C shall report error events only
after the Dem is fully operational.
[SRS_BSW_00419] If a pre-compile time configuration [SWS_CanSM_00652]
parameter is implemented as const
it should be placed into a separate
c-file
[SRS_BSW_00422] Pre-de-bouncing of error status [SWS_CanSM_00498] [SWS_CanSM_00522]
information is done within the Dem [SWS_CanSM_00605] [SWS_CanSM_00652]
[SRS_BSW_00423] BSW modules with AUTOSAR [SWS_CanSM_00652]
interfaces shall be describable with
the means of the SW-C Template
[SRS_BSW_00424] BSW module main processing [SWS_CanSM_00065] [SWS_CanSM_00167]
functions shall not be allowed to enter
a wait state
[SRS_BSW_00425] The BSW module description [SWS_CanSM_00065] [SWS_CanSM_00167]
template shall provide means to
model the defined trigger conditions
of schedulable objects
[SRS_BSW_00426] BSW Modules shall ensure data [SWS_CanSM_00652]
consistency of data which is shared
between BSW modules
[SRS_BSW_00427] ISR functions shall be defined and [SWS_CanSM_00652]
documented in the BSW module
description template
[SRS_BSW_00428] A BSW module shall state if its main [SWS_CanSM_00652]
processing function(s) has to be
executed in a specific order or
sequence
[SRS_BSW_00429] Access to OS is restricted [SWS_CanSM_00652]
[SRS_BSW_00432] Modules should have separate main [SWS_CanSM_00652]
processing functions for read/receive
and write/transmit data path
[SRS_BSW_00433] Main processing functions are only [SWS_CanSM_00652]
allowed to be called from task bodies
provided by the BSW Scheduler
[SRS_BSW_00437] Memory mapping shall provide the [SWS_CanSM_00652]
possibility to define RAM segments
which are not to be initialized during
startup
[SRS_BSW_00438] Configuration data shall be defined in [SWS_CanSM_00023] [SWS_CanSM_00597]
a structure [SWS_CanSM_00652]
[SRS_BSW_00439] Enable BSW modules to handle [SWS_CanSM_00652]
interrupts
[SRS_BSW_00440] The callback function invocation by [SWS_CanSM_00652]
the BSW module shall follow the
signature provided by RTE to invoke
servers via Rte_Call API
[SRS_BSW_00441] Naming convention for type, macro [SWS_CanSM_00652]
and function
5
4
Requirement Description Satisfied by
[SRS_BSW_00447] Standardizing Include file structure of [SWS_CanSM_00008]
BSW Modules Implementing Autosar
Service
[SRS_BSW_00448] Module SWS shall not contain [SWS_CanSM_00652]
requirements from other modules
[SRS_BSW_00449] BSW Service APIs used by Autosar [SWS_CanSM_00652]
Application Software shall return a
Std_ReturnType
[SRS_BSW_00450] A Main function of a un-initialized [SWS_CanSM_00652]
module shall return immediately
[SRS_BSW_00451] Hardware registers shall be protected [SWS_CanSM_00652]
if concurrent access to these
registers occur
[SRS_BSW_00452] Classification of runtime errors [SWS_CanSM_00652]
[SRS_BSW_00453] BSW Modules shall be harmonized [SWS_CanSM_00652]
[SRS_BSW_00454] An alternative interface without a [SWS_CanSM_00652]
parameter of category DATA_
REFERENCE shall be available.
[SRS_BSW_00456] A Header file shall be defined in order [SWS_CanSM_00652]
to harmonize BSW Modules
[SRS_BSW_00457] Callback functions of Application [SWS_CanSM_00652]
software components shall be
invoked by the Basis SW
[SRS_BSW_00458] Classification of production errors [SWS_CanSM_00652]
[SRS_BSW_00459] It shall be possible to concurrently [SWS_CanSM_00652]
execute a service offered by a BSW
module in different partitions
[SRS_BSW_00460] Reentrancy Levels [SWS_CanSM_00652]
[SRS_BSW_00461] Modules called by generic modules [SWS_CanSM_00652]
shall satisfy all interfaces requested
by the generic module
[SRS_BSW_00462] All Standardized Autosar Interfaces [SWS_CanSM_00652]
shall have unique requirement Id /
number
[SRS_BSW_00463] Naming convention of callout [SWS_CanSM_00652]
prototypes
[SRS_BSW_00465] It shall not be allowed to name any [SWS_CanSM_00652]
two files so that they only differ by the
cases of their letters
[SRS_BSW_00466] Classification of extended production [SWS_CanSM_00652] [SWS_CanSM_00664]
errors
[SRS_BSW_00467] The init / deinit services shall only be [SWS_CanSM_00652]
called by BswM or EcuM
[SRS_BSW_00469] Fault detection and healing of [SWS_CanSM_00652]
production errors and extended
production errors
[SRS_BSW_00470] Execution frequency of production [SWS_CanSM_00652]
error detection
[SRS_BSW_00471] Do not cause dead-locks on detection [SWS_CanSM_00652]
of production errors - the ability to
heal from previously detected
production errors
[SRS_BSW_00472] Avoid detection of two production [SWS_CanSM_00652]
errors with the same root cause.
5
4
Requirement Description Satisfied by
[SRS_Can_01001] The CAN Interface implementation [SWS_CanSM_00652]
and interface shall be independent
from underlying CAN Controller and
CAN Transceiver
[SRS_Can_01002] The CAN Interface shall be [SWS_CanSM_00652]
responsible for the dispatching of the
received PDUs
[SRS_Can_01003] The appropriate higher [SWS_CanSM_00652]
communication stack shall be notified
by the CAN Interface about an
occurred reception
[SRS_Can_01004] Software filtering shall be [SWS_CanSM_00652]
implemented by the CAN Interface
[SRS_Can_01005] The CAN Interface shall perform a [SWS_CanSM_00652]
check for correct DLC of received
PDUs
[SRS_Can_01006] The CAN Interface shall provide a [SWS_CanSM_00652]
service to enable/disable L-PDU
reception per CAN Controller
[SRS_Can_01007] The CAN Interface shall dispatch the [SWS_CanSM_00652]
transmission request by an upper
layer module to the desired CAN
controller
[SRS_Can_01008] The CAN Interface shall provide a [SWS_CanSM_00652]
transmission request service
[SRS_Can_01009] The CAN Interface shall provide a [SWS_CanSM_00652]
transmission confirmation dispatcher
[SRS_Can_01011] The CAN Interface shall provide a [SWS_CanSM_00652]
transmit buffer
[SRS_Can_01013] The CAN Interface shall provide a [SWS_CanSM_00652]
Tx-L-PDU enable/disable service per
CAN Controller
[SRS_Can_01014] The CAN State Manager shall offer a [SWS_CanSM_00652]
network configuration independent
interface for upper layers
[SRS_Can_01015] The CAN Interface configuration shall [SWS_CanSM_00652]
be able to import information from
CAN communication matrix.
[SRS_Can_01016] The CAN Interface shall have an [SWS_CanSM_00652]
interface to the static configuration
information of the CAN Driver
[SRS_Can_01018] The CAN Interface shall have an [SWS_CanSM_00652]
interface to the static configuration
information of the CAN Driver
[SRS_Can_01020] The TX-Buffer shall be statically [SWS_CanSM_00652]
configurable
[SRS_Can_01021] CAN The CAN Interface shall [SWS_CanSM_00652]
implement an interface for
initialization
[SRS_Can_01022] The CAN Interface shall support the [SWS_CanSM_00652]
selection of configuration sets
[SRS_Can_01023] The CAN Interface shall be initialized [SWS_CanSM_00652]
in a defined way.
[SRS_Can_01027] The CAN Interface shall provide a [SWS_CanSM_00652]
service to change the CAN Controller
mode.
5
4
Requirement Description Satisfied by
[SRS_Can_01028] The CAN Interface shall provide a [SWS_CanSM_00652]
service to query the CAN controller
state
[SRS_Can_01029] The CAN Interface shall report [SWS_CanSM_00652]
bus-off state of a device to an upper
layer
[SRS_Can_01032] The CAN Interface shall report a [SWS_CanSM_00652]
wake-up notification to the ECU State
Manager
[SRS_Can_01033] The CAN Driver shall fulfill the [SWS_CanSM_00652]
general requirements for Basic
Software Modules as specified in
AUTOSAR_SRS_SPAL
[SRS_Can_01034] The CAN Driver shall offer a [SWS_CanSM_00652]
Hardware independent interface.
[SRS_Can_01035] The CAN Driver shall support multiple [SWS_CanSM_00652]
CAN controllers of the same CAN
hardware unit
[SRS_Can_01036] The Can Driver shall support [SWS_CanSM_00652]
Standard Identifier and Extended
Identifier
[SRS_Can_01037] The CAN driver shall allow the static [SWS_CanSM_00652]
configuration of the hardware
reception filter
[SRS_Can_01038] The bit timing of each CAN Controller [SWS_CanSM_00652]
shall be configurable
[SRS_Can_01039] Hardware Object Handles shall be [SWS_CanSM_00652]
provided for the CAN Interface in the
static configuration file.
[SRS_Can_01041] The CAN Driver shall implement an [SWS_CanSM_00652]
interface for initialization
[SRS_Can_01042] The CAN Driver shall support [SWS_CanSM_00652]
dynamic selection of configuration
sets
[SRS_Can_01043] The CAN Driver shall provide a [SWS_CanSM_00652]
service to enable/disable interrupts of
the CAN Controller.
[SRS_Can_01045] The CAN Driver shall offer a [SWS_CanSM_00652]
reception indication service.
[SRS_Can_01049] The CAN Driver shall provide a [SWS_CanSM_00652]
dynamic transmission request service
[SRS_Can_01051] The CAN Driver shall provide a [SWS_CanSM_00652]
transmission confirmation service
[SRS_Can_01053] The CAN Driver shall provide a [SWS_CanSM_00652]
service to change the CAN controller
mode.
[SRS_Can_01054] The CAN Driver shall provide a [SWS_CanSM_00652]
notification for controller wake-up
events
[SRS_Can_01055] CAN Driver shall provide a [SWS_CanSM_00652]
notification for bus-off state
[SRS_Can_01058] shall be configurable whether [SWS_CanSM_00652]
Multiplex Transmission is used
[SRS_Can_01059] The CAN Driver shall guarantee data [SWS_CanSM_00652]
consistency of received L-PDUs
5
4
Requirement Description Satisfied by
[SRS_Can_01060] The CAN driver shall not recover from [SWS_CanSM_00652]
bus-off automatically
[SRS_Can_01061] The CAN Interface shall provide [SWS_CanSM_00652]
dynamic TX Handles
[SRS_Can_01062] Each event for each CAN Controller [SWS_CanSM_00652]
shall be configurable to be detected
by polling or by an interrupt
[SRS_Can_01065] The AUTOSAR CAN Transport Layer [SWS_CanSM_00652]
shall be based on ISO 15765-2 and
15765-4 specifications
[SRS_Can_01066] The AUTOSAR CAN Transport Layer [SWS_CanSM_00652]
shall be statically configurable to
support either single or multiple
connections in an optimizing way
[SRS_Can_01068] The CAN Transport Layer shall [SWS_CanSM_00652]
identify each N-SDU with a unique
identifier.
[SRS_Can_01069] CAN address information and N-SDU [SWS_CanSM_00652]
identifier mapping
[SRS_Can_01071] The CAN Transport Layer shall [SWS_CanSM_00652]
identify each N-PDU (also called
L-SDU) with a unique identifier
[SRS_Can_01073] The CAN Transport Layer shall be [SWS_CanSM_00652]
statically configured to pad unused
bytes of PDU
[SRS_Can_01074] The Transport connection properties [SWS_CanSM_00652]
shall be statically configured
[SRS_Can_01075] The CAN Transport Layer shall [SWS_CanSM_00652]
implement an interface for
initialization
[SRS_Can_01076] The CAN Transport Layer services [SWS_CanSM_00652]
shall not be operational before
initializing the module
[SRS_Can_01078] The AUTOSAR CAN Transport Layer [SWS_CanSM_00652]
shall support the ISO 15765-2
addressing formats
[SRS_Can_01079] The CAN Transport Layer shall be [SWS_CanSM_00652]
compliant with the CAN Interface
module notifications
[SRS_Can_01081] The value of CAN Transport protocol [SWS_CanSM_00652]
timeouts shall be statically
configurable for each connection
[SRS_Can_01082] Error handling [SWS_CanSM_00652]
[SRS_Can_01086] Data padding value of unused bytes [SWS_CanSM_00652]
[SRS_Can_01090] The bus transceiver driver package [SWS_CanSM_00652]
shall offer configuration parameters
that are needed to configure the
driver for a given bus and the
supported notifications
[SRS_Can_01091] The CAN bus transceiver driver shall [SWS_CanSM_00652]
support the configuration for more
than one bus
5
4
Requirement Description Satisfied by
[SRS_Can_01095] The bus transceiver driver shall [SWS_CanSM_00652]
support the compile time
configuration of one notification to an
upper layer for change notification for
"wakeup by bus" events
[SRS_Can_01096] The bus transceiver driver shall [SWS_CanSM_00652]
provide an API to initialize the driver
internally
[SRS_Can_01097] CAN Bus Transceiver driver API shall [SWS_CanSM_00652]
be synchronous
[SRS_Can_01098] The bus transceiver driver shall [SWS_CanSM_00652]
support an API to send the addressed
transceiver into its Standby mode
[SRS_Can_01099] The bus transceiver driver shall [SWS_CanSM_00652]
support an API to send the addressed
transceiver into its Sleep mode
[SRS_Can_01100] The bus transceiver driver shall [SWS_CanSM_00652]
support an API to send the addressed
transceiver into its Normal mode
[SRS_Can_01101] The bus transceiver driver shall [SWS_CanSM_00652]
support an API to read out the current
operation mode of the transceiver of
a specified bus within the ECU
[SRS_Can_01103] The bus transceiver driver shall [SWS_CanSM_00652]
support an API to read out the reason
of the last wakeup of a specified bus
within the ECU
[SRS_Can_01107] The CAN Transceiver Driver shall [SWS_CanSM_00652]
support the situation where a wakeup
by bus occurs during the same time
the transition to standby/sleep is in
progress
[SRS_Can_01108] The bus transceiver driver shall [SWS_CanSM_00652]
support the AUTOSAR ECU state
manager in a way that a safe system
startup and shutdown is possible
[SRS_Can_01109] The bus transceiver driver shall check [SWS_CanSM_00652]
the control communication to the
transceiver and the reaction of the
transceiver for correctness
[SRS_Can_01110] CAN Bus Transceiver driver shall [SWS_CanSM_00652]
handle the transceiver specific timing
requirements internally
[SRS_Can_01111] The CAN Transport Layer shall be the [SWS_CanSM_00652]
interface layer between PDU Router
and CAN Interface for CAN
messages needing transport protocol
functionalities
[SRS_Can_01112] The CAN Transport Layer interface [SWS_CanSM_00652]
shall be independent of its internal
communication configuration
[SRS_Can_01114] Data Consistency of L-PDUs to [SWS_CanSM_00652]
transmit shall be guaranteed
[SRS_Can_01115] The bus transceiver driver shall [SWS_CanSM_00652]
support an API to enable and disable
the wakeup notification for each bus
separately
5
4
Requirement Description Satisfied by
[SRS_Can_01116] The AUTOSAR CAN Transport Layer [SWS_CanSM_00652]
shall be able to manage both normal
and extended modes in parallel
[SRS_Can_01121] CAN Interface shall be the interface [SWS_CanSM_00652]
layer between the underlying CAN
Driver(s) and CAN transceiver
Driver(s) and Upper Layers
[SRS_Can_01122] The CAN driver shall support the [SWS_CanSM_00652]
situation where a wakeup by bus
occurs during the same time the
transition to standby/sleep is in
progress
[SRS_Can_01125] The CAN stack shall ensure not to [SWS_CanSM_00652]
lose messages in receive direction
[SRS_Can_01126] The CAN stack shall be able to [SWS_CanSM_00652]
produce 100% bus load
[SRS_Can_01129] The CAN Interface module shall [SWS_CanSM_00652]
provide a procedural interface to read
out data of single CAN messages by
upper layers (Polling mechanism)
[SRS_Can_01130] Receive Status Interface of CAN [SWS_CanSM_00652]
Interface
[SRS_Can_01131] The CAN Interface module shall [SWS_CanSM_00652]
provide the possibility to have polling
and callback notification mechanism
in parallel
[SRS_Can_01132] The CAN driver shall be able to [SWS_CanSM_00652]
detect notification events message
object specific by CAN-Interrupt and
polling
[SRS_Can_01134] The CAN Driver shall support [SWS_CanSM_00652]
multiplexed transmission
[SRS_Can_01135] It shall be possible to configure one [SWS_CanSM_00652]
or several TX Hardware Objects
[SRS_Can_01136] The CAN Interface module shall [SWS_CanSM_00652]
provide a service to check for
validation of a CAN wake-up event
[SRS_Can_01138] The CAN Bus Transceiver Driver shall [SWS_CanSM_00652]
provide one callback function for
lower layer ICU Driver for wake up by
bus events
[SRS_Can_01139] The CAN Interface and Driver shall [SWS_CanSM_00652]
offer a CAN Controller specific
interface for initialization
[SRS_Can_01140] The CAN Interface shall support both [SWS_CanSM_00652]
Standard (11bit) and Extended (29bit)
Identifiers
[SRS_Can_01141] The CAN Interface shall support both [SWS_CanSM_00652]
Standard (11bit) and Extended (29bit)
Identifiers at same time on one
network
5
4
Requirement Description Satisfied by
[SRS_Can_01142] The CAN State Manager shall offer a [SWS_CanSM_00062] [SWS_CanSM_00065]
network abstract API to upper layer [SWS_CanSM_00167] [SWS_CanSM_00182]
[SWS_CanSM_00183] [SWS_CanSM_00186]
[SWS_CanSM_00187] [SWS_CanSM_00188]
[SWS_CanSM_00266] [SWS_CanSM_00278]
[SWS_CanSM_00282] [SWS_CanSM_00284]
[SWS_CanSM_00360] [SWS_CanSM_00369]
[SWS_CanSM_00370] [SWS_CanSM_00371]
[SWS_CanSM_00372] [SWS_CanSM_00385]
[SWS_CanSM_00399] [SWS_CanSM_00410]
[SWS_CanSM_00422] [SWS_CanSM_00423]
[SWS_CanSM_00425] [SWS_CanSM_00426]
[SWS_CanSM_00427] [SWS_CanSM_00428]
[SWS_CanSM_00429] [SWS_CanSM_00430]
[SWS_CanSM_00431] [SWS_CanSM_00432]
[SWS_CanSM_00433] [SWS_CanSM_00434]
[SWS_CanSM_00436] [SWS_CanSM_00437]
[SWS_CanSM_00438] [SWS_CanSM_00439]
[SWS_CanSM_00440] [SWS_CanSM_00441]
[SWS_CanSM_00442] [SWS_CanSM_00443]
[SWS_CanSM_00444] [SWS_CanSM_00445]
[SWS_CanSM_00446] [SWS_CanSM_00447]
[SWS_CanSM_00448] [SWS_CanSM_00449]
[SWS_CanSM_00450] [SWS_CanSM_00451]
[SWS_CanSM_00452] [SWS_CanSM_00453]
[SWS_CanSM_00454] [SWS_CanSM_00455]
[SWS_CanSM_00456] [SWS_CanSM_00457]
[SWS_CanSM_00458] [SWS_CanSM_00459]
[SWS_CanSM_00460] [SWS_CanSM_00461]
[SWS_CanSM_00462] [SWS_CanSM_00464]
[SWS_CanSM_00465] [SWS_CanSM_00466]
[SWS_CanSM_00467] [SWS_CanSM_00468]
[SWS_CanSM_00469] [SWS_CanSM_00470]
[SWS_CanSM_00471] [SWS_CanSM_00472]
[SWS_CanSM_00473] [SWS_CanSM_00474]
[SWS_CanSM_00475] [SWS_CanSM_00476]
[SWS_CanSM_00477] [SWS_CanSM_00478]
[SWS_CanSM_00479] [SWS_CanSM_00483]
[SWS_CanSM_00484] [SWS_CanSM_00485]
[SWS_CanSM_00486] [SWS_CanSM_00487]
[SWS_CanSM_00488] [SWS_CanSM_00489]
[SWS_CanSM_00490] [SWS_CanSM_00491]
[SWS_CanSM_00492] [SWS_CanSM_00493]
[SWS_CanSM_00494] [SWS_CanSM_00496]
[SWS_CanSM_00497] [SWS_CanSM_00499]
[SWS_CanSM_00500] [SWS_CanSM_00502]
[SWS_CanSM_00503] [SWS_CanSM_00504]
[SWS_CanSM_00505] [SWS_CanSM_00506]
[SWS_CanSM_00507] [SWS_CanSM_00508]
[SWS_CanSM_00509] [SWS_CanSM_00510]
[SWS_CanSM_00511] [SWS_CanSM_00512]
[SWS_CanSM_00514] [SWS_CanSM_00515]
[SWS_CanSM_00517] [SWS_CanSM_00518]
[SWS_CanSM_00521] [SWS_CanSM_00524]
[SWS_CanSM_00525] [SWS_CanSM_00526]
[SWS_CanSM_00527] [SWS_CanSM_00528]
[SWS_CanSM_00529] [SWS_CanSM_00530]
[SWS_CanSM_00531] [SWS_CanSM_00532]
[SWS_CanSM_00533] [SWS_CanSM_00534]
[SWS_CanSM_00535] [SWS_CanSM_00538]
[SWS_CanSM_00540] [SWS_CanSM_00541]
[SWS_CanSM_00542] [SWS_CanSM_00543]
[SWS_CanSM_00550] [SWS_CanSM_00555]
5
4
Requirement Description Satisfied by
4
[SWS_CanSM_00556] [SWS_CanSM_00557]
[SWS_CanSM_00558] [SWS_CanSM_00561]
[SWS_CanSM_00569] [SWS_CanSM_00570]
[SWS_CanSM_00576] [SWS_CanSM_00577]
[SWS_CanSM_00578] [SWS_CanSM_00579]
[SWS_CanSM_00580] [SWS_CanSM_00581]
[SWS_CanSM_00582] [SWS_CanSM_00584]
[SWS_CanSM_00600] [SWS_CanSM_00602]
[SWS_CanSM_00603] [SWS_CanSM_00604]
[SWS_CanSM_00607] [SWS_CanSM_00608]
[SWS_CanSM_00623] [SWS_CanSM_00624]
[SWS_CanSM_00625] [SWS_CanSM_00626]
[SWS_CanSM_00627] [SWS_CanSM_00628]
[SWS_CanSM_00629] [SWS_CanSM_00630]
[SWS_CanSM_00631] [SWS_CanSM_00632]
[SWS_CanSM_00633] [SWS_CanSM_00634]
[SWS_CanSM_00635] [SWS_CanSM_00636]
[SWS_CanSM_00639] [SWS_CanSM_00641]
[SWS_CanSM_00642] [SWS_CanSM_00651]
[SWS_CanSM_00653] [SWS_CanSM_00667]
[SRS_Can_01143] The CAN State Manager shall [SWS_CanSM_00652]
support a configurable BusOff
recovery time
[SRS_Can_01144] The CAN State Manager shall [SWS_CanSM_00600] [SWS_CanSM_00602]
implement an interface for [SWS_CanSM_00603] [SWS_CanSM_00604]
initialization. [SWS_CanSM_00606] [SWS_CanSM_00637]
[SRS_Can_01145] The CAN State Manager shall control [SWS_CanSM_00062] [SWS_CanSM_00065]
the assigned CAN Devices [SWS_CanSM_00167] [SWS_CanSM_00182]
[SWS_CanSM_00183] [SWS_CanSM_00369]
[SWS_CanSM_00370] [SWS_CanSM_00396]
[SWS_CanSM_00397] [SWS_CanSM_00398]
[SWS_CanSM_00399] [SWS_CanSM_00400]
[SWS_CanSM_00401] [SWS_CanSM_00410]
[SWS_CanSM_00411] [SWS_CanSM_00412]
[SWS_CanSM_00413] [SWS_CanSM_00414]
[SWS_CanSM_00415] [SWS_CanSM_00416]
[SWS_CanSM_00417] [SWS_CanSM_00418]
[SWS_CanSM_00419] [SWS_CanSM_00420]
[SWS_CanSM_00421] [SWS_CanSM_00423]
[SWS_CanSM_00425] [SWS_CanSM_00426]
[SWS_CanSM_00427] [SWS_CanSM_00428]
[SWS_CanSM_00429] [SWS_CanSM_00430]
[SWS_CanSM_00431] [SWS_CanSM_00432]
[SWS_CanSM_00433] [SWS_CanSM_00434]
[SWS_CanSM_00436] [SWS_CanSM_00437]
[SWS_CanSM_00438] [SWS_CanSM_00439]
[SWS_CanSM_00440] [SWS_CanSM_00441]
[SWS_CanSM_00442] [SWS_CanSM_00443]
[SWS_CanSM_00444] [SWS_CanSM_00445]
[SWS_CanSM_00446] [SWS_CanSM_00447]
[SWS_CanSM_00448] [SWS_CanSM_00449]
[SWS_CanSM_00450] [SWS_CanSM_00451]
[SWS_CanSM_00452] [SWS_CanSM_00453]
[SWS_CanSM_00454] [SWS_CanSM_00455]
[SWS_CanSM_00456] [SWS_CanSM_00457]
[SWS_CanSM_00458] [SWS_CanSM_00459]
[SWS_CanSM_00460] [SWS_CanSM_00461]
[SWS_CanSM_00462] [SWS_CanSM_00464]
[SWS_CanSM_00465] [SWS_CanSM_00466]
[SWS_CanSM_00467] [SWS_CanSM_00468]
5
4
Requirement Description Satisfied by
4
[SWS_CanSM_00469] [SWS_CanSM_00470]
[SWS_CanSM_00471] [SWS_CanSM_00472]
[SWS_CanSM_00473] [SWS_CanSM_00474]
[SWS_CanSM_00475] [SWS_CanSM_00476]
[SWS_CanSM_00477] [SWS_CanSM_00478]
[SWS_CanSM_00479] [SWS_CanSM_00483]
[SWS_CanSM_00484] [SWS_CanSM_00485]
[SWS_CanSM_00486] [SWS_CanSM_00487]
[SWS_CanSM_00488] [SWS_CanSM_00489]
[SWS_CanSM_00490] [SWS_CanSM_00491]
[SWS_CanSM_00492] [SWS_CanSM_00493]
[SWS_CanSM_00494] [SWS_CanSM_00496]
[SWS_CanSM_00497] [SWS_CanSM_00499]
[SWS_CanSM_00500] [SWS_CanSM_00507]
[SWS_CanSM_00508] [SWS_CanSM_00509]
[SWS_CanSM_00510] [SWS_CanSM_00511]
[SWS_CanSM_00512] [SWS_CanSM_00514]
[SWS_CanSM_00515] [SWS_CanSM_00517]
[SWS_CanSM_00518] [SWS_CanSM_00521]
[SWS_CanSM_00524] [SWS_CanSM_00525]
[SWS_CanSM_00526] [SWS_CanSM_00527]
[SWS_CanSM_00528] [SWS_CanSM_00529]
[SWS_CanSM_00531] [SWS_CanSM_00532]
[SWS_CanSM_00533] [SWS_CanSM_00534]
[SWS_CanSM_00535] [SWS_CanSM_00538]
[SWS_CanSM_00540] [SWS_CanSM_00541]
[SWS_CanSM_00542] [SWS_CanSM_00543]
[SWS_CanSM_00546] [SWS_CanSM_00550]
[SWS_CanSM_00555] [SWS_CanSM_00556]
[SWS_CanSM_00557] [SWS_CanSM_00558]
[SWS_CanSM_00560] [SWS_CanSM_00576]
[SWS_CanSM_00577] [SWS_CanSM_00578]
[SWS_CanSM_00579] [SWS_CanSM_00580]
[SWS_CanSM_00581] [SWS_CanSM_00582]
[SWS_CanSM_00584] [SWS_CanSM_00600]
[SWS_CanSM_00602] [SWS_CanSM_00603]
[SWS_CanSM_00604] [SWS_CanSM_00607]
[SWS_CanSM_00608] [SWS_CanSM_00609]
[SWS_CanSM_00610] [SWS_CanSM_00611]
[SWS_CanSM_00612] [SWS_CanSM_00613]
[SWS_CanSM_00616] [SWS_CanSM_00617]
[SWS_CanSM_00618] [SWS_CanSM_00619]
[SWS_CanSM_00620] [SWS_CanSM_00621]
[SWS_CanSM_00622] [SWS_CanSM_00623]
[SWS_CanSM_00624] [SWS_CanSM_00625]
[SWS_CanSM_00626] [SWS_CanSM_00627]
[SWS_CanSM_00628] [SWS_CanSM_00629]
[SWS_CanSM_00630] [SWS_CanSM_00631]
[SWS_CanSM_00632] [SWS_CanSM_00633]
[SWS_CanSM_00634] [SWS_CanSM_00636]
[SWS_CanSM_00638] [SWS_CanSM_00639]
[SWS_CanSM_00641] [SWS_CanSM_00642]
[SWS_CanSM_00651] [SWS_CanSM_00653]
[SWS_CanSM_00668] [SWS_CanSM_00669]
[SWS_CanSM_00670] [SWS_CanSM_91004]
[SRS_Can_01146] The CAN State Manager shall contain [SWS_CanSM_00600] [SWS_CanSM_00602]
a CAN BusOff recovery algorithm for [SWS_CanSM_00603] [SWS_CanSM_00604]
each used CAN Controller [SWS_CanSM_00606] [SWS_CanSM_00637]
[SRS_Can_01147] The CAN Driver shall not support [SWS_CanSM_00652]
remote frames
5
4
Requirement Description Satisfied by
[SRS_Can_01148] The AUTOSAR CAN Transport Layer [SWS_CanSM_00652]
shall provide a service to enable
dynamic setting of protocol
parameters
[SRS_Can_01149] The CAN Transport Layer shall [SWS_CanSM_00652]
support full-duplex communication for
TP channels
[SRS_Can_01151] The CAN Interface shall provide a [SWS_CanSM_00652]
service to check for a CAN Wake-up
event.
[SRS_Can_01153] The Tx-Filter shall ensure, that the [SWS_CanSM_00652]
first message which is sent on the
bus is a Wakeup Frame (WUF) in the
case of partial networking
[SRS_Can_01154] The bus transceiver driver package [SWS_CanSM_00652]
shall offer configuration parameters
that are required to configure the
driver for partial networking
[SRS_Can_01155] The bus transceiver driver shall [SWS_CanSM_00652]
support the selection of configuration
sets
[SRS_Can_01156] The bus transceiver driver shall [SWS_CanSM_00652]
support wake up events by a Remote
Wake-up Pattern (RWUP) or Remote
Wake-up Frame (RWUF) if partial
networking is supported by the
tranceiver hardware
[SRS_Can_01157] The bus transceiver driver shall [SWS_CanSM_00652]
provide an API for clearing the WUF
bit in the tranceiver hardware
[SRS_Can_01158] The CAN stack shall provide a TX [SWS_CanSM_00435] [SWS_CanSM_00516]
offline active mode for ECU passive [SWS_CanSM_00539] [SWS_CanSM_00644]
mode [SWS_CanSM_00645] [SWS_CanSM_00646]
[SWS_CanSM_00647] [SWS_CanSM_00648]
[SWS_CanSM_00649] [SWS_CanSM_00650]
[SWS_CanSM_00656]
[SRS_Can_01159] The CAN Interface shall provide [SWS_CanSM_00652]
dynamic RX Handles
[SRS_Can_01160] Padding of bytes due to discrete CAN [SWS_CanSM_00652]
FD DLC
[SRS_Can_01161] The CAN Driver shall not support [SWS_CanSM_00652]
remote frames
[SRS_Can_01162] CAN Interface shall support classic [SWS_CanSM_00652]
CAN and CAN FD frames
[SRS_Can_01163] The AUTOSAR CAN Transport Layer [SWS_CanSM_00652]
shall support classic CAN and CAN
FD communication as specified by
ISO 15765-2
[SRS_Can_01164] The CAN State Manager shall [SWS_CanSM_00658] [SWS_CanSM_91001]
implement an interface for
de-initialization.
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
00049] initiate the wake-up and keep awake
physical channels
[SRS_ModeMgm_- The number and names of main [SWS_CanSM_00652]
09001] states and the transitions between
main states shall be standardized.
5
4
Requirement Description Satisfied by
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09009] provide the ability to execute external,
statically-configured code at each
transition between ECU states
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09017] provide an API to query the current
ECU state
[SRS_ModeMgm_- The Watchdog Manager shall support [SWS_CanSM_00652]
09028] multiple watchdog instances
[SRS_ModeMgm_- It shall be possible to limit [SWS_CanSM_00652]
09071] communication modes independently
for each physical channel
[SRS_ModeMgm_- ECU shutdown shall be forced [SWS_CanSM_00652]
09072]
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09078] coordinate multiple communication
requests
[SRS_ModeMgm_- Each physical channel shall be [SWS_CanSM_00652]
09080] controlled by an independent
communication mode
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09081] provide an API allowing collecting
communication requests
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09083] support two communication modes
for each physical channel
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00063] [SWS_CanSM_00652]
09084] provide an API which allows
application to query the current
communication mode
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09085] provide an indication of
communication mode changes
[SRS_ModeMgm_- The Minimum duration of [SWS_CanSM_00652]
09087] communication request after wakeup
shall be configurable
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09089] be able to prevent waking up physical
channels
[SRS_ModeMgm_- Relationship between users and [SWS_CanSM_00652]
09090] physical channels shall be
configurable at pre compile time
[SRS_ModeMgm_- The ECU State Manager module [SWS_CanSM_00652]
09097] shall start a timeout after receiving a
wake-up indication
[SRS_ModeMgm_- Storing the wake-up reasons shall be [SWS_CanSM_00652]
09098] available
[SRS_ModeMgm_- Selection of wake-up sources shall [SWS_CanSM_00652]
09100] be configurable
[SRS_ModeMgm_- An API to query the reset reason [SWS_CanSM_00652]
09101] shall be provided
[SRS_ModeMgm_- API for selecting the sleep mode shall [SWS_CanSM_00652]
09102] be provided
[SRS_ModeMgm_- ECU State Manager shall take over [SWS_CanSM_00652]
09104] control after OS shutdown
5
4
Requirement Description Satisfied by
[SRS_ModeMgm_- The list of entities supervised by the [SWS_CanSM_00652]
09106] Watchdog Manager shall be
configurable at pre-compile time
[SRS_ModeMgm_- The Watchdog Manager shall provide [SWS_CanSM_00652]
09107] an initialization service
[SRS_ModeMgm_- It shall be possible to prohibit the [SWS_CanSM_00652]
09109] disabling of watchdog
[SRS_ModeMgm_- The watchdog Manager shall provide [SWS_CanSM_00652]
09110] a service interface, to select a mode
of the Watchdog Manager
[SRS_ModeMgm_- The Watchdog Manager shall [SWS_CanSM_00652]
09112] cyclically check the periodicity of the
supervised entities
[SRS_ModeMgm_- Initialization of Basic Software [SWS_CanSM_00652]
09113] modules shall be done
[SRS_ModeMgm_- Starting/invoking the shutdown [SWS_CanSM_00652]
09114] process shall be provided
[SRS_ModeMgm_- The ECU State Manager shall include [SWS_CanSM_00652]
09115] a mechanism to evaluate the
condition to stay in the RUN state
[SRS_ModeMgm_- Requesting and releasing the RUN [SWS_CanSM_00652]
09116] state shall be provided
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09118] provide a mechanism to enter a step
by step decreasing power mode
[SRS_ModeMgm_- Several sleep modes shall be [SWS_CanSM_00652]
09119] available
[SRS_ModeMgm_- Configuration of initialization process [SWS_CanSM_00652]
09120] of Basic Software modules shall be
available
[SRS_ModeMgm_- Configuration of users of the ECU [SWS_CanSM_00652]
09122] State Manager
[SRS_ModeMgm_- The Watchdog Manager shall provide [SWS_CanSM_00652]
09125] a service allowing the Update
temporal program flow monitoring
[SRS_ModeMgm_- An API for querying the wake-up [SWS_CanSM_00652]
09126] reason shall be provided
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09127] de-initialize Basic Software modules
where appropriate during the
shutdown process
[SRS_ModeMgm_- Several shutdown targets shall be [SWS_CanSM_00652]
09128] supported
[SRS_ModeMgm_- It shall be possible to assign Network [SWS_CanSM_00652]
09132] Management to physical channels
[SRS_ModeMgm_- It shall be possible to assign physical [SWS_CanSM_00652]
09133] channels to the Communication
Manager
[SRS_ModeMgm_- The ECU State Manager shall be the [SWS_CanSM_00652]
09136] receiver of all wake-up events
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09141] be able to configure the physical
channel wake-up prevention
5
4
Requirement Description Satisfied by
[SRS_ModeMgm_- The Watchdog Manager shall set the [SWS_CanSM_00652]
09143] triggering condition during inactive
monitoring
[SRS_ModeMgm_- Wake-sleep operation shall be [SWS_CanSM_00652]
09145] supported
[SRS_ModeMgm_- Configuration of time triggered [SWS_CanSM_00652]
09146] increased inoperation shall be
provided
[SRS_ModeMgm_- Configuration of de-initialization [SWS_CanSM_00652]
09147] process of Basic Software modules
shall be provided
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09149] provide an API for querying the
requested communication mode
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09155] provide a counter for inhibited
communication requests
[SRS_ModeMgm_- It shall be provided an API to retrieve [SWS_CanSM_00652]
09156] the number of inhibited "Full
Communication" mode requests
[SRS_ModeMgm_- It shall be possible to revoke a [SWS_CanSM_00652]
09157] communication mode limitation,
independently for each physical
channel
[SRS_ModeMgm_- The Watchdog Manager shall support [SWS_CanSM_00652]
09158] Post build time and mode dependent
selectable configuration sets for the
Watchdog Manager
[SRS_ModeMgm_- The Watchdog Manager shall report [SWS_CanSM_00652]
09159] failure of temporal or program flow
monitoring to DEM
[SRS_ModeMgm_- The Watchdog Manager shall provide [SWS_CanSM_00652]
09160] the indication of failed temporal
monitoring
[SRS_ModeMgm_- The Watchdog Manager shall reset [SWS_CanSM_00652]
09161] the triggering condition in the
Watchdog Driver in Case of temporal
failure
[SRS_ModeMgm_- The Watchdog Manager shall be able [SWS_CanSM_00652]
09162] to notify the software of an upcoming
watchdog reset
[SRS_ModeMgm_- It shall be possible to configure a [SWS_CanSM_00652]
09163] delay before provoking a watchdog
reset
[SRS_ModeMgm_- Shutdown synchronization for [SWS_CanSM_00652]
09164] SW-Components shall be supported
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09165] provide services to request and
release the POST-RUN state
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09166] evaluate the condition to stay in the
POST-RUN state
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09168] support users that are connected to
no physical channel
[SRS_ModeMgm_- The Watchdog Manager shall be able [SWS_CanSM_00652]
09169] to immediately reset the MCU
5
4
Requirement Description Satisfied by
[SRS_ModeMgm_- It shall be possible to evaluate the [SWS_CanSM_00652]
09172] current communication mode
[SRS_ModeMgm_- A Run State shall have a minimum [SWS_CanSM_00652]
09173] duration
[SRS_ModeMgm_- The BSW Mode Manager shall [SWS_CanSM_00652]
09174] support the ’disable normal
Communication’
[SRS_ModeMgm_- A configurable Set of Mode [SWS_CanSM_00652]
09175] dependent enabled and concomitant
disabled IPDU groups shall be
supported
[SRS_ModeMgm_- Configurable Sets of Mode [SWS_CanSM_00652]
09176] dependent enabled I-PDU Groups
shall be supported
[SRS_ModeMgm_- The rules of the mode arbitration [SWS_CanSM_00652]
09177] shall be pre-compile and post-build
configurable
[SRS_ModeMgm_- The lists of mode transition specific [SWS_CanSM_00652]
09178] actions shall be pre-compile and
post-build configurable
[SRS_ModeMgm_- The BSW Mode Manager shall [SWS_CanSM_00652]
09179] provide an Interface to allow Mode
Requests of SW-C’s
[SRS_ModeMgm_- The BSW Mode Manager shall [SWS_CanSM_00652]
09180] evaluate the current mode requests
[SRS_ModeMgm_- The BSW Mode Manager shall [SWS_CanSM_00652]
09182] propagate a performed mode change
to all local SW-Cs
[SRS_ModeMgm_- Configurable Mode Activation [SWS_CanSM_00652]
09183] initiated Reset of Signals to Initial
Values shall be supported
[SRS_ModeMgm_- The mode manager shall be able to [SWS_CanSM_00652]
09184] use a COM interface to activate,
respectively deactivate, I-PDU groups
[SRS_ModeMgm_- A persistent Alarm Clock used by [SWS_CanSM_00652]
09185] local SW-Cs shall be provided
[SRS_ModeMgm_- Alarm Clock shall be active while the [SWS_CanSM_00652]
09186] ECU is powered
[SRS_ModeMgm_- In Case of wakeup, all the alarm [SWS_CanSM_00652]
09187] clock shall be canceled
[SRS_ModeMgm_- In Case of startup, all the alarm clock [SWS_CanSM_00652]
09188] shall be canceled
[SRS_ModeMgm_- Consecutive requests shall honor the [SWS_CanSM_00652]
09189] earliest expiring alarm only
[SRS_ModeMgm_- The alarm clock service shall allow [SWS_CanSM_00652]
09190] setting an alarm relative to the
current time using a time resolution of
seconds
[SRS_ModeMgm_- The alarm clock service shall allow [SWS_CanSM_00652]
09194] setting the clock
[SRS_ModeMgm_- The alarm clock service shall allow [SWS_CanSM_00652]
09199] setting an alarm absolute by using an
absolute time with a resolution of
seconds
[SRS_ModeMgm_- ComM shall allow for additional bus [SWS_CanSM_00652]
09207] specific state managers
5
4
Requirement Description Satisfied by
[SRS_ModeMgm_- It shall be possible to configure all the [SWS_CanSM_00652]
09220] transition relations
[SRS_ModeMgm_- The Watchdog Manager shall check [SWS_CanSM_00652]
09221] the correct sequence of code
execution in supervised entities
[SRS_ModeMgm_- The Watchdog Manager shall provide [SWS_CanSM_00652]
09222] a service allowing the Update logical
program flow monitoring
[SRS_ModeMgm_- The Watchdog Manager shall support [SWS_CanSM_00652]
09223] Post build time and mode dependent
selectable configuration of transition
relations
[SRS_ModeMgm_- The Watchdog Manager shall provide [SWS_CanSM_00652]
09225] the indication of failed logical
monitoring
[SRS_ModeMgm_- The Watchdog Manager shall reset [SWS_CanSM_00652]
09226] reset the triggering condition in the
Watchdog Driver in Case of logical
program flow violation
[SRS_ModeMgm_- The BSW Mode Manager shall [SWS_CanSM_00652]
09228] provide an Interface to allow Mode
Requests of BSW Modules
[SRS_ModeMgm_- The mode manager shall be able to [SWS_CanSM_00652]
09229] make generic, configured callouts of
void functions to other BSW modules
[SRS_ModeMgm_- All actions shall only be performed on [SWS_CanSM_00652]
09230] mode change
[SRS_ModeMgm_- The Watchdog Manager shall [SWS_CanSM_00652]
09231] periodically set the triggering
condition in the Watchdog Driver as
long as the monitoring has not failed
[SRS_ModeMgm_- The Watchdog Manager shall provide [SWS_CanSM_00652]
09232] a service to cause a watchdog reset
[SRS_ModeMgm_- The EcuM shall handle the [SWS_CanSM_00652]
09234] initialization of Basic Software
modules
[SRS_ModeMgm_- The ECU State Manager shall offer [SWS_CanSM_00652]
09235] two targets for shutting down the ECU
[SRS_ModeMgm_- There shall be one instance of the [SWS_CanSM_00652]
09236] function EcuM_Init that distinguishes
between the different cores
[SRS_ModeMgm_- RTE_Start shall be called on each [SWS_CanSM_00652]
09237] core.
[SRS_ModeMgm_- State changes shall be ECU global [SWS_CanSM_00652]
09238]
[SRS_ModeMgm_- To shutdown, ShutdownAllCores shall [SWS_CanSM_00652]
09239] be called on the master core after
synchronizing all cores
[SRS_ModeMgm_- ComM shall notify BswM of any PNC [SWS_CanSM_00652]
09240] communication state change
[SRS_ModeMgm_- BswM shall be able to request [SWS_CanSM_00652]
09241] communication modes for existing
CommUsers
5
4
Requirement Description Satisfied by
[SRS_ModeMgm_- The Communication Manager shall [SWS_CanSM_00652]
09243] be able to handle the Partial
Networks on Flexray, CAN and
Ethernet
[SRS_ModeMgm_- The number of supported PNCs shall [SWS_CanSM_00652]
09244] be configurable strictly at pre-compile
time
[SRS_ModeMgm_- Enabling or disabling the Partial [SWS_CanSM_00652]
09245] Network Cluster management in Com
M shall be post-build selectable.
[SRS_ModeMgm_- The communication manager shall [SWS_CanSM_00652]
09246] arbitrate and coordinate requests
from users on physical channel and
users on PNCs
[SRS_ModeMgm_- For each configured PNC an [SWS_CanSM_00652]
09247] independent state machine shall be
instantiated
[SRS_ModeMgm_- it shall be possible to distinguish [SWS_CanSM_00652]
09248] between internal and external PNC
activation requests
[SRS_ModeMgm_- PNC gateway and coordination [SWS_CanSM_00652]
09249] functionality
[SRS_ModeMgm_- PNC activation requests shall be [SWS_CanSM_00652]
09250] exchanged with the Network
Management via a PNC bit vector
[SRS_ModeMgm_- PNC communication state shall be [SWS_CanSM_00598] [SWS_CanSM_00652]
09251] forwarded to the BswM
[SRS_ModeMgm_- The BswM shall be able to set the [SWS_CanSM_00652]
09253] halt mode for each single CPU Core
independently
[SRS_ModeMgm_- Validation and handling of a wakeup [SWS_CanSM_00652]
09254] event shall be done locally
[SRS_ModeMgm_- [SWS_CanSM_00652]
09255]
[SRS_ModeMgm_- PNC Gateway Functionality shall [SWS_CanSM_00652]
09256] consider systems with more than one
gateways connected to the same
network
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09270] provide a service for the selection of
the shutdown target
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09271] provide a service for the retrieval of
the current shutdown target
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09272] provide a service for the retrieval of
the last sleep targets
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09274] provide a service for the retrieval of
the selected reset modality
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09275] provide a service for querying the
time of previous resets
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09276] provide a service allowing the
selection of the boot target
5
4
Requirement Description Satisfied by
[SRS_ModeMgm_- The ECU State Manager shall [SWS_CanSM_00652]
09277] provide an alarm clock service which
shall allow the retrieval of clock
values
Table 6.1: RequirementsTracing
7 Functional specification
This chapter specifies the different functions of the CanSM module in the AUTOSAR
BSW architecture.
An ECU can have different communication networks. Each network has to be identified
with an unique network handle. The ComM module requests communication modes
from the networks. It knows by its configuration, which handle is assigned to what kind
of network. In case of CAN, it uses the CanSM module.
The CanSM module is responsible for the control flow abstraction of CAN networks:
It changes the communication modes of the configured CAN networks depending on
the mode requests from the ComM module.
Therefore the CanSM module uses the API of the CanIf module. The CanIf module
is responsible for the control flow abstraction of the configured CAN Controllers and
CAN Transceivers (the data flow abstraction of the CanIf module is not relevant for
the CanSM module). Any change of the CAN Controller modes and CAN Transceiver
modes will be notified by the CanIf module to the CanSM module. Depending on this
notifications and state of the CAN network state machine, which the CanSM module
shall implement for each configured CAN network, the CanSM module notifies the
ComM and the BswM (ref. to chapter 7.2 for details).
Note:
CanSM module will not notify ComM about its communication mode after initialization,
unless a communication mode has explicitly been requested by ComM.
ExitPoint
CHANGE_BR
T_NO_COM_MODE_REQUEST
/E_PRE_NOCOM
[G_FULL_COM_MODE_REQUESTED]
/E_FULL_COM /E_BR_END_FULL_COM
T_SILENT_COM_MODE_REQUEST
/E_FULL_TO_SILENT_COM
CANSM_BSM_S_PRE_FULLCOM
CANSM_BSM_S_CHANGE_BAUDRATE
ExitPoint To
FULLCOM T_FULL_COM_MODE_REQUEST
/E_SILENT_TO_FULL_COM
ExitPoint
FULL_OR_SILENT_COM
ExitPoint
NO_COM
[G_SILENT_COM_MODE_REQUESTED]
/E_BR_END_SILENT_COM
T_FULL_COM_MODE_REQUEST CANSM_BSM_S_SILENTCOM
T_FULL_COM_MODE_REQUEST
/E_PRE_NOCOM
CANSM_BSM_WUVALIDATION
T_BUS_OFF
CANSM_BSM_S_SILENTCOM_BOR
T_NO_COM_MODE_REQUEST
/E_PRE_NOCOM
T_STOP_WAKEUP_SOURCE
T_NO_COM_MODE_REQUEST
/E_PRE_NO_COM
CANSM_BSM_S_PRE_NOCOM
T_START_WAKEUP_SOURCE
T_START_WAKEUP_SOURCE
CanSM_Init
CANSM_BSM_S_NOCOM
/E_NOCOM
CANSM_BSM_S_NOT_INITIALIZED
PowerOn
CanSM_DeInit
PowerOff
Figure 7.1: CANSM_BSM, state machine diagram for one CAN network
[SWS_CanSM_00266] dThe CanSM module shall store the current network mode
for each configured CAN network internally (ref. to [ECUC_CanSM_00126]).c(SRS_-
Can_01142)
[SWS_CanSM_00284] dThe internally stored network modes of the CanSM module
can have the values COMM_NO_COMMUNICATION, COMM_SILENT_COMMUNICATION,
COMM_FULL_COMMUNICATION.c(SRS_Can_01142)
[SWS_CanSM_00428] dAll effects of the CanSM state machine CANSM_BSM shall be
operated in the context of the CanSM main function (ref. to [SWS_CanSM_00065]).c
(SRS_Can_01142, SRS_Can_01145)
[SWS_CanSM_00278] dIf the CanSM state machine CANSM_BSM is in the state
CANSM_BSM_S_NOT_INITIALIZED, it shall deny network mode requests from the
ComM module (ref. to [SWS_CanSM_00062]).c(SRS_Can_01142)
[SWS_CanSM_00385] dIf CanSM has repeated one of the CanIf API calls CanIf_-
SetControllerMode (ref. to [SWS_CanSM_91002]), CanIf_SetTrcvMode (ref.
to [SWS_CanSM_91002]), CanIf_ClearTrcvWufFlag (ref. [SWS_CanSM_91002])
or CanIf_CheckTrcvWakeFlag (ref. [SWS_CanSM_91002]) more often than
CanSMModeRequestRepetitionMax (ref. to [ECUC_CanSM_00335]) without
getting the return value E_OK or without getting the corresponding mode indi-
cation callbacks CanSM_ControllerModeIndication, CanSM_Transceiver-
ModeIndication, CanSM_ClearTrcvWufFlagIndication or CanSM_Check-
TransceiverWakeFlagIndication, CanSM shall call the function Det_Re-
portRuntimeError (ref. to [SWS_CanSM_91002]) with ErrorId parameter
CANSM_E_MODE_REQUEST_TIMEOUT.c(SRS_Can_01142)
[SWS_CanSM_00422] dIf the CanIf module notifies PN availability for a configured
CAN Transceiver to the CanSM module with the callback function CanSM_ConfirmP-
nAvailability (ref. to [SWS_CanSM_00419]), then the CanSM module shall call
the API CanNm_ConfirmPnAvailability (ref. to [SWS_CanSM_91002]) with the
related CAN network as channel to confirm the PN availability to the CanNm module.c
(SRS_Can_01142)
[SWS_CanSM_00667]{DRAFT} dIf the CanIf module notifies PN availability for
a configured CAN Controller to the CanSM module with the callback function
CanSM_ConfirmCtrlPnAvailability (ref. to [SWS_CanSM_91004]), then the
CanSM module shall call the API CanNm_ConfirmPnAvailability (ref. to
[SWS_CanSM_91002]) with the related CAN network as channel to confirm the PN
availability to the CanNm module.c(SRS_Can_01142)
[SWS_CanSM_00560] dIf no CanSMTransceiverId (ref. to
[ECUC_CanSM_00137]) is configured for a CAN Network, then the CanSM module
shall bypass all specified CanIf_SetTrcvMode (ref. to [SWS_CanSM_91002]) (e.g.
[SWS_CanSM_00446]) calls for the CAN Network and proceed in the different state
transitions as if it has got the supposed CanSM_TransceiverModeIndication
already (e.g. [SWS_CanSM_00448]).c(SRS_Can_01145)
[SWS_CanSM_00635] dThe CanSM module shall store for each configured CAN
network (ref. to [ECUC_CanSM_00126]) the latest communication mode request,
which has been accepted by returning E_OK in the API request CanSM_Request-
ComMode (ref. to [SWS_CanSM_00062], [SWS_CanSM_00182]) and use it as
trigger for the state machine of the related CAN network, [SWS_CanSM_00427],
[SWS_CanSM_00429], [SWS_CanSM_00499], [SWS_CanSM_00542],
[SWS_CanSM_00543], [SWS_CanSM_00425], [SWS_CanSM_00426]).c(SRS_-
Can_01142)
[SWS_CanSM_00638] dThe CanSM module shall store after every successful CAN
controller mode change (ref. to [SWS_CanSM_00396]) or bus-off conditioned change
to CAN_CS_STOPPED (ref. to [SWS_CanSM_00064]), the changed mode internally for
each CAN controller.c(SRS_Can_01145)
[SWS_CanSM_00424] dAfter PowerOn the CanSM state machines shall be in the state
CANSM_BSM_NOT_INITIALIZED.c()
[SWS_CanSM_00423] dIf the CanSM module is requested with the function CanSM_-
Init, this shall trigger the CanSM state machines for all configured CAN Networks
(ref. to [ECUC_CanSM_00126]) with the trigger CanSM_Init.c(SRS_Can_01142,
SRS_Can_01145)
[SWS_CanSM_00658] dIf the CanSM module is requested with the function CanSM_-
DeInit, this shall trigger the CanSM state machines for all configured CAN Networks
(ref. to [ECUC_CanSM_00126]) with the trigger CanSM_DeInit.c(SRS_Can_01164)
Note: Caller of the CanSM_DeInit function has to ensure all CAN networks are in the
state CANSM_NO_COMMUNICATION
stm CANSM_BSM_WUVALIDATION
S_TRCV_NORMAL [G_TRCV_NORMAL_E_OK]
do / DO_SET_TRCV_MODE_NORMAL
EntryPoint
S_TRCV_NORMAL_WAIT
T_TRCV_NORMAL_TIMEOUT
T_TRCV_NORMAL_INDICATED
T_TRCV_NORMAL_INDICATED
S_CC_STOPPED [G_CC_STOPPED_E_OK]
do / DO_SET_CC_MODE_STOPPED
S_CC_STOPPED_WAIT
T_CC_STOPPED_INDICATED
T_CC_STOPPED_TIMEOUT
T_CC_STOPPED_INDICATED
S_CC_STARTED
do / DO_SET_CC_MODE_STARTED
[G_CC_STARTED_E_OK]
T_CC_STARTED_INDICATED
S_CC_STARTED_WAIT
T_CC_STARTED_TIMEOUT
WAIT_WUVALIDATION_LEAVE
T_CC_STARTED_INDICATED
[SWS_CanSM_00629] dIf the CanSM module has got all mode indications (ref.
to [SWS_CanSM_00396]) for the configured CAN controllers of the CAN network
(ref. to [ECUC_CanSM_00141]) after the respective requests to stop the CAN
controllers of the CAN network (ref. to [SWS_CanSM_00627]), this shall trig-
ger the sub state machine CANSM_BSM_WUVALIDATION of the CAN network with
T_CC_STOPPED_INDICATED.c(SRS_Can_01142, SRS_Can_01145)
[SWS_CanSM_00633] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network
(ref. to [ECUC_CanSM_00141]) after the respective requests to start the CAN
controllers of the CAN network (ref. to [SWS_CanSM_00631]), this shall trig-
ger the sub state machine CANSM_BSM_WUVALIDATION of the CAN network with
T_CC_STARTED_INDICATED.c(SRS_Can_01142, SRS_Can_01145)
stm CANSM_BSM_S_PRE_NOCOM
EntryPoint
[CANSM_BSM_G_PN_NOT_SUPPORTED] [CANSM_BSM_G_PN_SUPPORTED]
CANSM_BSM_DeinitPnNotSupported CANSM_BSM_DeinitPnSupported
ExitPoint
stm CANSM_BSM_DeinitPnSupported
CANSM_BSM_DeinitPnSupportedProceed
S_PN_CLEAR_WUF
do / DO_CLEAR_TRCV_WUF
[G_PN_CLEAR_WUF_E_OK]
T_CLEAR_WUF_INDICATED T_CLEAR_WUF_TIMEOUT
S_PN_CLEAR_WUF_WAIT
T_CLEAR_WUF_INDICATED
S_CC_STOPPED
do / DO_SET_CC_MODE_STOPPED
T_CC_STOPPED_INDICATED [G_CC_STOPPED_E_OK]
T_CC_STOPPED_TIMEOUT
S_CC_STOPPED_WAIT
T_CC_STOPPED_INDICATED
S_TRCV_NORMAL
do / DO_SET_TRCV_MODE_NORMAL
S_TRCV_NORMAL_WAIT
T_TRCV_NORMAL_INDICATED
S_TRCV_STANDBY
do / DO_SET_TRCV_MODE_STANDBY
T_TRCV_STANDBY_TIMOUT
T_TRCV_STANDBY_INDICATED [G_TRCV_STANDBY_E_OK]
S_TRCV_STANDBY_WAIT
T_TRCV_STANDBY_INDICATED
S_CC_SLEEP
do / DO_SET_CC_MODE_SLEEP
[G_CC_SLEEP_E_OK] T_CHECK_WFLAG_INDICATED
T_CC_SLEEP_INDICATED
S_CC_SLEEP_WAIT
CANSM_BSM_T_CC_SLEEP_TIMEOUT
T_CC_SLEEP_INDICATED
S_CHECK_WFLAG_IN_NOT_CC_SLEEP
do / DO_CHECK_WFLAG
S_CHECK_WFLAG_IN_CC_SLEEP
do / DO_CHECK_WFLAG
[G_CHECK_WFLAG_E_OK]
T_CHECK_WFLAG_TIMEOUT
[G_CHECK_WFLAG_E_OK]
S_CHECK_WUF_IN_NOT_CC_SLEEP_WAIT
T_CHECK_WFLAG_INDICATED
T_CHECK_WFLAG_TIMEOUT T_CHECK_WFLAG_INDICATED
S_CHECK_WUF_IN_CC_SLEEP_WAIT
Junction
T_CHECK_WFLAG_INDICATED
ExitPoint
[SWS_CanSM_00444] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to stop the CAN con-
trollers of the CAN network (ref. to [SWS_CanSM_00442]), this shall trigger the
sub state machine CANSM_BSM_DeinitPnSupported of the CAN network with
T_CC_STOPPED_INDICATED.c(SRS_Can_01142, SRS_Can_01145)
[SWS_CanSM_00456] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to set the CAN controllers
of the CAN network to sleep mode (ref. to [SWS_CanSM_00453]), this shall trigger
the sub state machine CANSM_BSM_DeinitPnSupported of the CAN network with
T_CC_SLEEP_INDICATED.c(SRS_Can_01142, SRS_Can_01145)
stm CANSM_BSM_DeinitPnNotSupported
CANSM_BSM_DeinitPnNotSupportedProceed
S_CC_STOPPED
do / DO_SET_CC_MODE_STOPPED
[CANSM_BSM_G_CC_STOPPED_E_OK]
T_CC_STOPPED_INDICATED
T_CC_STOPPED_TIMEOUT
S_CC_STOPPED_WAIT
T_CC_STOPPED_INDICATED
S_CC_SLEEP
do / DO_SET_CC_MODE_SLEEP
T_CC_SLEEP_INDICATED
[G_CC_SLEEP_E_OK]
T_CC_SLEEP_TIMEOUT
S_CC_SLEEP_WAIT
T_CC_SLEEP_INDICATED
S_TRCV_NORMAL
do / DO_SET_TRCV_MODE_NORMAL
[G_TRCV_NORMAL_E_OK]
T_TRCV_NORMAL_INDICATED
T_TRCV_NORMAL_TIMEOUT
S_TRCV_NORMAL_WAIT
T_TRCV_NORMAL_INDICATED
S_TRCV_STANDBY
do / DO_SET_TRCV_MODE_STANDBY
[G_TRCV_STANDBY_E_OK]
CANSM_BSM_T_TRCV_STANDBY_TIMOUT
T_TRCV_STANDBY_INDICATED
S_TRCV_STANDBY_WAIT
T_TRCV_STANDBY_INDICATED
ExitPoint
[SWS_CanSM_00466] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to stop the CAN con-
trollers of the CAN network (ref. to [SWS_CanSM_00464]), this shall trigger the
sub state machine CANSM_BSM_DeinitPnNotSupported of the CAN network with
T_CC_STOPPED_INDICATED.c(SRS_Can_01142, SRS_Can_01145)
[SWS_CanSM_00470] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to set the CAN controllers of
the CAN network to sleep mode (ref. to [SWS_CanSM_00468]), this shall trigger the
sub state machine CANSM_BSM_DeinitPnNotSupported of the CAN network with
T_CC_SLEEP_INDICATED.c(SRS_Can_01142, SRS_Can_01145)
stm CANSM_BSM_S_SILENTCOM_BOR
S_RESTART_CC
/E_BUS_OFF
do / DO_SET_CC_MODE_STARTED
EntryPoint
[G_RESTART_CC_E_OK]
T_RESTART_CC_TIMEOUT
T_RESTART_CC_INDICATED /E_TX_OFF
CANSM_BSM_S_RESTART_CC_WAIT
T_RESTART_CC_INDICATED /E_TX_OFF
ExitPoint
7.2.21.3 G_RESTART_CC_E_OK
[SWS_CanSM_00600] dIf CanSM module has got all mode indications (ref.
to [SWS_CanSM_00396]) for the configured CAN controllers of the CAN net-
work (ref. to [ECUC_CanSM_00141]) after the respective requests to start
the CAN controllers of the CAN network (ref. to [SWS_CanSM_00604]), this
shall trigger the sub state CANSM_BSM_S_SILENTCOM_BOR of the CAN network
with T_RESTART_CC_INDICATED.c(SRS_Can_01142, SRS_Can_01145, SRS_-
Can_01144, SRS_Can_01146)
7.2.21.5 T_RESTART_CC_TIMEOUT
The effect E_TX_OFF shall do nothing (default PDU mode after restart of CAN con-
troller is already TX OFF, ref. to CanIf SWS).
stm CANSM_BSM_S_PRE_FULLCOM
S_TRCV_NORMAL [G_TRCV_NORMAL_E_OK]
EntryPoint
do / DO_SET_TRCV_MODE_NORMAL
T_TRCV_NORMAL_TIMEOUT
T_TRCV_NORMAL_INDICATED S_TRCV_NORMAL_WAIT
T_TRCV_NORMAL_INDICATED
S_CC_STOPPED
do / DO_SET_CC_MODE_STOPPED [G_CC_STOPPED_E_OK]
T_CC_STOPPED_TIMEOUT
T_CC_STOPPED_INDICATED
S_CC_STOPPED_WAIT
T_CC_STOPPED_INDICATED
S_CC_STARTED
[G_CC_STARTED_E_OK]
do / DO_SET_CC_MODE_STARTED
T_CC_STARTED_TIMEOUT
S_CC_STARTED_WAIT
T_CC_STARTED_INDICATED
T_CC_STARTED_INDICATED
ExitPoint
To
FULLCOM
[SWS_CanSM_00489] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network
(ref. to [ECUC_CanSM_00141]) after the respective requests to stop the CAN
controllers of the CAN network (ref. to [SWS_CanSM_00487]), this shall trig-
ger the sub state machine CANSM_BSM_S_PRE_FULLCOM of the CAN network with
T_CC_STOPPED_INDICATED.c(SRS_Can_01145, SRS_Can_01142)
[SWS_CanSM_00493] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network
(ref. to [ECUC_CanSM_00141]) after the respective requests to start the CAN
controllers of the CAN network (ref. to [SWS_CanSM_00491]), this shall trig-
ger the sub state machine CANSM_BSM_S_PRE_FULLCOM of the CAN network with
T_CC_STARTED_INDICATED.c(SRS_Can_01145, SRS_Can_01142)
stm CANSM_BSM_S_FULLCOM
S_BUS_OFF_CHECK EntryPoint
[G_BUS_OFF_PASSIVE]
[G_TX_ON] /E_TX_ON /E_BUS_OFF_PASSIVE
T_BUS_OFF /E_BUS_OFF
S_NO_BUS_OFF
T_CHANGE_BR_REQUEST
S_TX_OFF /E_CHANGE_BR_BSWM_MODE
T_TX_TIMEOUT_EXCEPTION
T_RESTART_CC_INDICATED /E_TX_OFF
CANSM_BSM_S_TX_TIMEOUT_EXCEPTION
T_RESTART_CC_INDICATED /E_TX_OFF
CANSM_BSM_S_RESTART_CC_WAIT
ExitPoint TxTimeout
T_BUS_OFF /E_BUS_OFF
T_RESTART_CC_TIMEOUT
[G_RESTART_CC_E_OK]
S_RESTART_CC
do / DO_SET_CC_MODE_STARTED ExitPoint
CHANGE_BR
[SWS_CanSM_00511] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to start the CAN controllers
of the CAN network (ref. to [SWS_CanSM_00509]), this shall trigger the sub state
7.2.23.15 Notes
In the state S_NO_BUS_OFF no state operation is required for the CanSM module.
stm CANSM_BSM_S_TX_TIMEOUT_EXCEPTION
S_TX_TIMEOUT_EXCEPTION_PROCEED
EntryPoint
T_CC_STOPPED_TIMEOUT
S_CC_STOPPED S_CC_STOPPED_WAIT
do / DO_SET_CC_MODE_STOPPED()
[G_CC_STOPPED_E_OK]
T_CC_STOPPED_INDICATED T_CC_STOPPED_INDICATED
S_CC_STARTED
do / DO_SET_CC_MODE_STARTED()
[G_CC_STARTED_E_OK]
T_CC_STARTED_TIMEOUT
T_CC_STARTED_INDICATED
S_CC_STARTED_WAIT
T_CC_STARTED_INDICATED
ExitPoint TxTimeout
[SWS_CanSM_00579] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to stop the CAN controllers
of the CAN network (ref. to [SWS_CanSM_00524]), this shall trigger the sub
state machine CANSM_BSM_S_TX_TIMEOUT_EXCEPTION of the CAN network with
T_CC_STOPPED_INDICATED.c(SRS_Can_01145, SRS_Can_01142)
[SWS_CanSM_00580] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to start the CAN controllers
of the CAN network (ref. to [SWS_CanSM_00582]), this shall trigger the sub
state machine CANSM_BSM_S_TX_TIMEOUT_EXCEPTION of the CAN network with
T_CC_STARTED_INDICATED.c(SRS_Can_01145, SRS_Can_01142)
stm CANSM_BSM_S_CHANGE_BAUDRATE
CANSM_BSM_CHANGE_BR_SYNC
entry / DO_SET_BAUDRATE_DIRECT
EntryPoint
S_CC_STOPPED T_CC_STOPPED_TIMEOUT
S_CC_STOPPED_WAIT
do / DO_SET_CC_MODE_STOPPED [G_CC_STOPPED_E_OK]
T_CC_STOPPED_INDICATED T_CC_STOPPED_INDICATED
/E_CHANGE_BAUDRATE /E_CHANGE_BAUDRATE
S_CC_STARTED
do / DO_SET_CC_MODE_STARTED
T_CC_STARTED_INDICATED T_CC_STARTED_INDICATED
[G_NO_COM_MODE_REQUESTED] [G_NO_COM_MODE_NOT_REQUESTED]
[G_CC_STARTED_E_OK] T_CC_STARTED_TIMEOUT
S_CC_STARTED_WAIT
T_CC_STARTED_INDICATED T_CC_STARTED_INDICATED
[G_NO_COM_MODE_REQUESTED] [G_NO_COM_MODE_NOT_REQUESTED]
ExitPoint
ExitPoint
NO_COM FULL_OR_SILENT_COM
[SWS_CanSM_00526] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to stop the CAN con-
trollers of the CAN network (ref. to [SWS_CanSM_00524]), this shall trigger the
sub state machine CANSM_BSM_S_CHANGE_BAUDRATE of the CAN network with
T_CC_STOPPED_INDICATED.c(SRS_Can_01145, SRS_Can_01142)
[SWS_CanSM_00534] dIf CanSM module has got all mode indications (ref. to
[SWS_CanSM_00396]) for the configured CAN controllers of the CAN network (ref.
to [ECUC_CanSM_00141]) after the respective requests to start the CAN con-
trollers of the CAN network (ref. to [SWS_CanSM_00532]), this shall trigger the
sub state machine CANSM_BSM_S_CHANGE_BAUDRATE of the CAN network with
T_CC_STARTED_INDICATED.c(SRS_Can_01145, SRS_Can_01142)
c(SRS_BSW_00337)
c(SRS_BSW_00466)
7.3.5.1 CANSM_E_BUS_OFF
[SWS_CanSM_00666] d
c()
8 API specification
c()
8.2.1 CanSM_ConfigType
c(SRS_BSW_00400, SRS_BSW_00438)
8.2.2 CanSM_BswMCurrentStateType
c(SRS_ModeMgm_09251)
8.3.1 CanSM_Init
8.3.2 CanSM_DeInit
8.3.3 CanSM_RequestComMode
8.3.4 CanSM_GetCurrentComMode
4
Return value Std_ReturnType E_OK: Service accepted
E_NOT_OK: Service denied
Description This service shall put out the current communication mode of a CAN network.
Available via CanSM.h
c(SRS_ModeMgm_09084)
[SWS_CanSM_00282] dThe CanSM module shall return E_NOT_OK for the API re-
quest CanSM_GetCurrentComMode until the call of the provided API CanSM_Init
(ref. to [SWS_CanSM_00023]).c(SRS_Can_01142)
[SWS_CanSM_00371] dThe function CanSM_GetCurrentComMode shall accept its
request, if the NetworkHandle parameter of the request is a handle contained in the
configuration of the CanSM module (ref. to [ECUC_CanSM_00161]).c(SRS_Can_-
01142)
[SWS_CanSM_00372] dThe function CanSM_GetCurrentComMode shall deny its re-
quest, if the NetworkHandle parameter of the request is not a handle contained in the
configuration of the CanSM module (ref. to [ECUC_CanSM_00161]).c(SRS_Can_-
01142)
[SWS_CanSM_00187] dThe function CanSM_GetCurrentComMode shall call the
function Det_ReportError (ref. to [SWS_CanSM_91003]) with ErrorId param-
eter CANSM_E_INVALID_NETWORK_HANDLE, if it does not accept the network handle
of the request.c(SRS_Can_01142)
[SWS_CanSM_00186] dThe function CanSM_GetCurrentComMode shall put out the
current communication mode for the network handle (ref. to [SWS_CanSM_00266])
to the designated pointer of type ComM_ModeType, if it accepts the request.c(SRS_-
Can_01142)
[SWS_CanSM_00188] dIf the CanSM module is not initialized (ref. to
[SWS_CanSM_00282]), when the function CanSM_GetCurrentComMode is
called, then this function shall call the function Det_ReportError (ref. to
[SWS_CanSM_91003]) with ErrorId parameter CANSM_E_UNINIT.c(SRS_-
Can_01142)
[SWS_CanSM_00360] dThe function CanSM_GetCurrentComMode shall report the
development error CANSM_E_PARAM_POINTER to the DET, if the user of this function
hands over a NULL-pointer as ComM_ModePtr.c(SRS_Can_01142)
8.3.5 CanSM_StartWakeupSource
c(SRS_Can_01145)
[SWS_CanSM_00611] dThe API function CanSM_StartWakeupSource shall return
E_NOT_OK, if the CanSM module is not initialized yet with CanSM_Init (ref. to
[SWS_CanSM_00023]).c(SRS_Can_01145)
[SWS_CanSM_00617] dThe function CanSM_StartWakeupSource shall call the
function Det_ReportError (ref. to [SWS_CanSM_91003]) with ErrorId param-
eter CANSM_E_UNINIT, if the CanSM module is not initialized yet with CanSM_Init
(ref. to [SWS_CanSM_00023]).c(SRS_Can_01145)
[SWS_CanSM_00612] dThe function CanSM_StartWakeupSource shall return
E_NOT_OK, if the CanSM module is initialized and the network parameter of the re-
quest is not a handle contained in the configuration of the CanSM module (ref. to
[ECUC_CanSM_00161]).c(SRS_Can_01145)
[SWS_CanSM_00613] dThe function CanSM_StartWakeupSource shall call the
function Det_ReportError (ref. to [SWS_CanSM_91003]) with ErrorId pa-
rameter CANSM_E_INVALID_NETWORK_HANDLE, if the CanSM module is initialized
and the requested handle is invalid concerning the CanSM configuration (ref. to
[ECUC_CanSM_00161]).c(SRS_Can_01145)
[SWS_CanSM_00616] dThe function CanSM_StartWakeupSource shall return
E_OK and it shall be considered as trigger (ref. to [SWS_CanSM_00607]) for the state
machine of the related network, if the CanSM module is initialized and the requested
handle is valid concerning the CanSM configuration (ref. to [ECUC_CanSM_00161]).c
(SRS_Can_01145)
8.3.6 CanSM_StopWakeupSource
c(SRS_Can_01145)
[SWS_CanSM_00618] dThe API function CanSM_StopWakeupSource shall return
E_NOT_OK, if the CanSM module is not initialized yet with CanSM_Init (ref. to
[SWS_CanSM_00023]).c(SRS_Can_01145)
[SWS_CanSM_00619] dThe function CanSM_StopWakeupSource shall call the func-
tion Det_ReportError (ref. to [SWS_CanSM_91003]) with ErrorId parameter
CANSM_E_UNINIT, if the CanSM module is not initialized yet with CanSM_Init (ref.
to [SWS_CanSM_00023]).c(SRS_Can_01145)
[SWS_CanSM_00620] dThe function CanSM_StopWakeupSource shall return
E_NOT_OK, if the CanSM module is initialized and the network parameter of the re-
quest is not a handle contained in the configuration of the CanSM module (ref. to
[ECUC_CanSM_00161]).c(SRS_Can_01145)
[SWS_CanSM_00621] dThe function CanSM_StopWakeupSource shall call the
function Det_ReportError (ref. to [SWS_CanSM_91003]) with ErrorId pa-
rameter CANSM_E_INVALID_NETWORK_HANDLE, if the CanSM module is initialized
and the requested handle is invalid concerning the CanSM configuration (ref. to
[ECUC_CanSM_00161]).c(SRS_Can_01145)
[SWS_CanSM_00622] dThe function CanSM_StopWakeupSource shall return E_OK
and it shall be considered as trigger (ref. to [SWS_CanSM_00608]) for the state ma-
chine of the related network, if the CanSM module is initialized and the requested
handle is valid concerning the CanSM configuration (ref. to [ECUC_CanSM_00161]).c
(SRS_Can_01145)
8.3.7 Optional
8.3.7.1 CanSM_GetVersionInfo
c(SRS_BSW_00407, SRS_BSW_00003)
[SWS_CanSM_00374] dThe function CanSM_GetVersionInfo shall report the de-
velopment error CANSM_E_PARAM_POINTER to the DET, if the user of this func-
tion hands over a NULL-pointer as VersionInfo.c(SRS_BSW_00407, SRS_BSW_-
00003)
8.3.7.2 CanSM_SetBaudrate
4
Description This service shall start an asynchronous process to change the baud rate for the configured
CAN controllers of a certain CAN network. Depending on necessary baud rate modifications
the controllers might have to reset.
Available via CanSM.h
c(SRS_Can_01142)
[SWS_CanSM_00569] dThe CanSM module shall provide the API function CanSM_-
SetBaudrate, if the CanSMSetBaudrateApi parameter is configured with the value
TRUE.c(SRS_Can_01142)
[SWS_CanSM_00570] dThe CanSM module shall not provide the API function
CanSM_SetBaudrate, if the CanSMSetBaudrateApi is configured with the value
FALSE.c(SRS_Can_01142)
[SWS_CanSM_00502] dThe CanSM module shall deny the CanSM_SetBaudrate
API request, if the NetworkHandle parameter does not match to the configured Net-
work handles of the CanSM module (ref. to [ECUC_CanSM_00161]).c(SRS_Can_-
01142)
[SWS_CanSM_00504] dThe function CanSM_SetBaudrate shall call the function
Det_ReportError (ref. to [SWS_CanSM_91003]) with ErrorId parameter
CANSM_E_INVALID_NETWORK_HANDLE, if it does not accept the network handle of
the request.c(SRS_Can_01142)
[SWS_CanSM_00505] dThe function CanSM_SetBaudrate shall deny its re-
quest, if the requested CAN network is not in the communication mode
COMM_FULL_COMMUNICATION.c(SRS_Can_01142)
[SWS_CanSM_00530] dThe CanSM module shall deny the CanSM_SetBaudrate
API request, if the CanSM module is not initialized.c(SRS_Can_01142)
[SWS_CanSM_00506] dIf the function CanSM_SetBaudrate is called and the
CanSM module is not initialized, then this function shall call the function Det_Re-
portError (ref. to [SWS_CanSM_91003]) with ErrorId parameter CANSM_E_-
UNINIT.c(SRS_Can_01142)
[SWS_CanSM_00503] dIIf no condition is present to deny the CanSM_SetBau-
drate request according to [SWS_CanSM_00502] and [SWS_CanSM_00505],
[SWS_CanSM_00530], then the CanSM module shall return E_OK and operate the
process for the requested baud rate change as specified with [SWS_CanSM_00507].c
(SRS_Can_01142)
8.3.7.3 CanSM_SetEcuPassive
c(SRS_Can_01158)
[SWS_CanSM_00645] dThe CanSM module shall provide the API function CanSM_-
SetEcuPassive, if the CanSMTxOfflineActiveSupport parameter is configured
with the value TRUE.c(SRS_Can_01158)
8.4.1 CanSM_ControllerBusOff
4
Description This callback function notifies the CanSM about a bus-off event on a certain CAN controller,
which needs to be considered with the specified bus-off recovery handling for the impacted
CAN network.
Available via CanSM_CanIf.h
c(SRS_BSW_00359, SRS_BSW_00333)
[SWS_CanSM_00189] dIf the function CanSM_ControllerBusOff gets a Con-
troller, which is not configured as CanSMControllerId in the configuration
of the CanSM module, it shall call the function Det_ReportError (ref. to
[SWS_CanSM_91003]) with ErrorId parameter CANSM_E_PARAM_CONTROLLER.c
(SRS_BSW_00359, SRS_BSW_00333)
[SWS_CanSM_00190] dIf the CanSM module is not initialized, when the function
CanSM_ControllerBusOff is called, then the function CanSM_ControllerBu-
sOff shall call the function Det_ReportError (ref. to [SWS_CanSM_91003]) with
ErrorId parameter CANSM_E_UNINIT.c(SRS_BSW_00359, SRS_BSW_00333)
[SWS_CanSM_00235] dIf the CanSM module is initialized and the input parameter
Controller is one of the CAN controllers configured with the parameter CanSMCon-
trollerId, this bus-off event shall be considered by the CAN Network state machine
(ref. to [SWS_CanSM_00500]).c(SRS_BSW_00359, SRS_BSW_00333)
Additional remarks:
1.) The call context is either on interrupt level (interrupt mode) or on task level (polling
mode).
2.) Reentrancy is necessary for multiple CAN controller usage.
8.4.2 CanSM_ControllerModeIndication
4
Description This callback shall notify the CanSM module about a CAN controller mode change.
Available via CanSM_CanIf.h
c(SRS_Can_01145)
[SWS_CanSM_00397] dIf the function CanSM_ControllerModeIndication gets
a ControllerId, which is not configured as CanSMControllerId in the config-
uration of the CanSM module, it shall call the function Det_ReportError (ref. to
[SWS_CanSM_91003]) with ErrorId parameter CANSM_E_PARAM_CONTROLLER.c
(SRS_Can_01145)
[SWS_CanSM_00398] dIf the CanSM module is not initialized, when the func-
tion CanSM_ControllerModeIndication is called, then the function CanSM_-
ControllerModeIndication shall call the function Det_ReportError (ref. to
[SWS_CanSM_91003]) with ErrorId parameter CANSM_E_UNINIT.c(SRS_Can_-
01145)
8.4.3 CanSM_TransceiverModeIndication
[SWS_CanSM_00401] dIf the CanSM module is not initialized, when the func-
tion CanSM_TransceiverModeIndication is called, then the function CanSM_-
TransceiverModeIndication shall call the function Det_ReportError (ref. to
[SWS_CanSM_91003]) with ErrorId parameter CANSM_E_UNINIT.c(SRS_Can_-
01145)
8.4.4 CanSM_TxTimeoutException
c(SRS_Can_01142, SRS_Can_01145)
[SWS_CanSM_00411] dThe function CanSM_TxTimeoutException shall report
CANSM_E_UNINIT to the DET, if the CanSM module is not initialized yet.c(SRS_Can_-
01145)
[SWS_CanSM_00412] dIf the function CanSM_TxTimeoutException is referenced
with a Channel, which is not configured as CanSMNetworkHandle in the CanSM con-
figuration, it shall report CANSM_E_INVALID_NETWORK_HANDLE to the DET.c(SRS_-
Can_01145)
Remarks: Reentrancy is necessary for different Channels.
8.4.5 CanSM_ClearTrcvWufFlagIndication
c(SRS_Can_01145)
[SWS_CanSM_00414] dThe function CanSM_ClearTrcvWufFlagIndication
shall report CANSM_E_UNINIT to the DET, if the CanSM module is not initialized yet.c
(SRS_Can_01145)
[SWS_CanSM_00415] dIf the function CanSM_ClearTrcvWufFlagIndication
gets a TransceiverId, which is not configured (ref. to [ECUC_CanSM_00137]) in
the configuration of the CanSM module, it shall call the function Det_ReportEr-
ror (ref. to [SWS_CanSM_91003]) with ErrorId parameter CANSM_E_PARAM_-
TRANSCEIVER.c(SRS_Can_01145)
8.4.6 CanSM_CheckTransceiverWakeFlagIndication
4
Description This callback function indicates the CanIf_CheckTrcvWakeFlag API process end for the notified
CAN Transceiver.
Available via CanSM_CanIf.h
c(SRS_Can_01145)
[SWS_CanSM_00417] dThe function CanSM_CheckTransceiverWakeFlagIndi-
cation shall report CANSM_E_UNINIT to the DET, if the CanSM module is not initial-
ized yet.c(SRS_Can_01145)
[SWS_CanSM_00418] dIf the function CanSM_CheckTransceiverWake-
FlagIndication gets a TransceiverId, which is not configured (ref. to
[ECUC_CanSM_00137]) in the configuration of the CanSM module, it shall call the
function Det_ReportError (ref. to [SWS_CanSM_91003]) with ErrorId parameter
CANSM_E_PARAM_TRANSCEIVER.c(SRS_Can_01145)
8.4.7 CanSM_ConfirmPnAvailability
c(SRS_Can_01145)
[SWS_CanSM_00546] dThe function CanSM_ConfirmPnAvailability shall notify
the Can_Nm module (ref. to [SWS_CanSM_00422]), if it is called with a configured
Transceiver as input parameter (ref. to [ECUC_CanSM_00137]).c(SRS_Can_01145)
[SWS_CanSM_00420] dThe function CanSM_ConfirmPnAvailability shall report
CANSM_E_UNINIT to the DET, if the CanSM module is not initialized yet.c(SRS_Can_-
01145)
[SWS_CanSM_00421] dIf the function CanSM_ConfirmPnAvailability gets a
TransceiverId, which is not configured (ref. to [ECUC_CanSM_00137]) in the con-
figuration of the CanSM module, it shall call the function Det_ReportError (ref. to
8.4.8 CanSM_ConfirmCtrlPnAvailability
c(SRS_Can_01145)
[SWS_CanSM_00668]{DRAFT} dThe function CanSM_ConfirmCtrlPnAvailabil-
ity shall notify the CanNm module (ref. to [SWS_CanSM_00667]), if it is called with
a configured Controller as input parameter (ref. to [ECUC_CanSM_00141]).c(SRS_-
Can_01145)
[SWS_CanSM_00669]{DRAFT} dThe function CanSM_ConfirmCtrlPnAvailabil-
ity shall report CANSM_E_UNINIT to the DET, if the CanSM module is not initialized
yet.c(SRS_Can_01145)
[SWS_CanSM_00670]{DRAFT} dIf the function CanSM_ConfirmCtrlPnAvail-
ability gets a ControllerId, which is not configured (ref. to [ECUC_CanSM_00141])
in the configuration of the CanSM module, it shall call the function Det_ReportEr-
ror (ref. to [SWS_CanSM_91003]) with ErrorId parameter CANSM_E_PARAM_CON-
TROLLER.c(SRS_Can_01145)
8.5.1 CanSM_MainFunction
This chapter defines all interfaces, which are required to fulfill the core functionality of
the module.
[SWS_CanSM_91002] Definition of mandatory interfaces in module CanSM d
API Function Header File Description
BswM_CanSM_CurrentState BswM_CanSM.h Function called by CanSM to indicate its current
state.
CanIf_CheckTrcvWakeFlag CanIf.h Requests the CanIf module to check the Wake flag
of the designated CAN transceiver.
CanIf_ClearTrcvWufFlag CanIf.h Requests the CanIf module to clear the WUF flag of
the designated CAN transceiver.
CanIf_GetPduMode CanIf.h This service reports the current mode of a
requested PDU channel.
CanIf_GetTxConfirmationState CanIf.h This service reports, if any TX confirmation has
been done for the whole CAN controller since the
last CAN controller start.
CanIf_SetControllerMode CanIf.h This service calls the corresponding CAN Driver
service for changing of the CAN controller mode.
CanIf_SetPduMode CanIf.h This service sets the requested mode at the L-PDUs
of a predefined logical PDU channel.
5
4
API Function Header File Description
CanIf_SetTrcvMode CanIf.h This service changes the operation mode of the
tansceiver TransceiverId, via calling the
corresponding CAN Transceiver Driver service.
CanNm_ConfirmPnAvailability CanNm.h Enables the PN filter functionality on the indicated
NM channel. Availability: The API is only available if
CanNmGlobalPnSupport is TRUE.
ComM_BusSM_ModeIndication ComM.h Indication of the actual bus mode by the
corresponding Bus State Manager. ComM shall
propagate the indicated state to the users with
means of the RTE and BswM.
Dem_SetEventStatus Dem.h Called by SW-Cs or BSW modules to report monitor
status information to the Dem. BSW modules calling
Dem_SetEventStatus can safely ignore the return
value. This API will be available only if ({Dem/Dem
ConfigSet/DemEventParameter/DemEvent
ReportingType} == STANDARD_REPORTING)
Det_ReportRuntimeError Det.h Service to report runtime errors. If a callout has
been configured then this callout shall be called.
c()
Although the CanIf module provides more requestable PDU modes, the CanSM mod-
ule only uses the parameters CANIF_ONLINE, CANIF_TX_OFFLINE_ACTIVE and
CANIF_TX_OFFLINE for the call of the API CanIf_SetPduMode.
The CANIF_OFFLINE mode is assumed automatically by CanIf and needs not to be
set by CanSM.
This chapter defines all interfaces, which are required to fulfill an optional functionality
of the module.
[SWS_CanSM_91003] Definition of optional interfaces in module CanSM d
API Function Header File Description
CanIf_SetBaudrate CanIf.h This service shall set the baud rate configuration of
the CAN controller. Depending on necessary baud
rate modifications the controller might have to reset.
Det_ReportError Det.h Service to report development errors.
c()
In this chapter all interfaces are listed where the target functions could be configured.
The target function is usually a callback function. The names of these kind of interfaces
is not fixed because they are configurable.
8.6.3.1 <User_GetBusOffDelay>
c(SRS_Can_01144, SRS_Can_01146)
9 Sequence diagrams
All interactions of the CanSM module with the depending modules CanIf, ComM, Bsw
M, Dem and CanNm are specified in the state machine diagrams (ref. to Figure 7-1-
Figure 7-10). Therefore the CanSM SWS provides only some exemplary sequences
for the use case to start and to stop the CAN controller(s) of a CAN network.
Remark: For the special use case of CAN network deinitialization with partial network
support please refer to chapter 9 of [11, Specification of CAN Transceiver Driver].
loop CanSm_StartCanControllerLoop1
CanSM_ControllerModeIndication(ControllerId,
ControllerMode:=CAN_CS_STARTED)
:E_OK
loop CanSm_StartCanControllerLoop2
CanIf_SetControllerMode(Std_ReturnType, uint8,
Can_ControllerStateType)
:E_OK
loop CanSm_StartCanControllerLoop3
[Wait for CAN_CS_STARTED indication for all CAN controllers of the CAN network]
CanSM_ControllerModeIndication(ControllerId,
ControllerMode:=CAN_CS_STARTED)
loop CanSm_StopCanControllerLoop1
CanSM_ControllerModeIndication(ControllerId, ControllerMode:=CAN_CS_STOPPED)
:E_OK
loop CanSm_StopCanControllerLoop2
:E_OK
loop CanSm_StopCanControllerLoop3
[Wait for CAN_CS_STOPPED indication for all CAN controllers of the CAN network]
CanSM_ControllerModeIndication(ControllerId, ControllerMode:=CAN_CS_STOPPED)
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
CanSM.
Chapter 10.3 specifies published information of the module CanSM.
10.2.1 CanSM
Included Containers
Container Name Multiplicity Scope / Dependency
CanSMConfiguration 1 This container contains the global parameters of the CanSM and
sub containers, which are for the CAN network specific
configuration.
CanSMGeneral 1 Container for general pre-compile parameters of the CanSM
module
10.2.2 CanSMConfiguration
Included Containers
Container Name Multiplicity Scope / Dependency
CanSMManagerNetwork 1..* This container contains the CAN network specific parameters of
each CAN network
10.2.3 CanSMGeneral
4
Multiplicity 0..1
Type EcucStringParamDef
Default value –
Regular Expression –
Post-Build Variant Multiplicity false
Post-Build Variant Value false
Multiplicity Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Value Configuration Class Pre-compile time X All Variants
Link time –
Post-build time –
Scope / Dependency scope: local
4
Post-build time –
Scope / Dependency scope: local
No Included Containers
10.2.4 CanSMManagerNetwork
No Included Containers
4
Post-Build Variant Value true
Value Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time X VARIANT-LINK-TIME
Post-build time X VARIANT-POST-BUILD
Scope / Dependency scope: local
4
Default value –
Post-Build Variant Value true
Value Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time X VARIANT-LINK-TIME
Post-build time X VARIANT-POST-BUILD
Scope / Dependency scope: local
dependency: CANSM_BOR_TX_CONFIRMATION_POLLING disabled
4
Post-Build Variant Value true
Value Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time X VARIANT-LINK-TIME
Post-build time X VARIANT-POST-BUILD
Scope / Dependency scope: local
dependency: ComM
Included Containers
Container Name Multiplicity Scope / Dependency
CanSMController 1..* This container contains the controller IDs assigned to a CAN
network.
CanSMDemEventParameterRefs 0..1 Container for the references to DemEventParameter elements
which shall be invoked using the API Dem_SetEventStatus in
case the corresponding error occurs. The EventId is taken from
the referenced DemEventParameter’s DemEventId symbolic
value. The standardized errors are provided in this container and
can be extended by vendor-specific error references.
10.2.5 CanSMDemEventParameterRefs
No Included Containers