This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Component Design

Component Design

Module Detailled Design

Component Documentation

1 - AR350A_ImcArbn_FDD

Inter-Micro Communication Arbitration

FDD #AR350A

.

1. High Level Description 4

2. Function I/O 5

2.1. Input Description 5

2.2. Output Description 5

2.3. Sub-Function Data Flow 6

2.3.1. Imc Arbitration Transmit side data flow 6

2.3.2. Imc Arbitration Receive side data flow 6

2.3.3. Rolling Counter Handling 7

3. Design Rationale and Assumptions 14

4. Sub-Functions 15

4.1. Sub-Function: ImcArbnInit1 15

4.1.1. Hardware Related Design 15

4.1.2. Software Related Design 15

4.2. Sub-Function: ImcArbnTx 16

4.2.1. Hardware Related Design 16

4.2.2. Software Related Design 16

4.3. Sub-Function: ImcArbnPer1 19

4.3.1. Hardware Related Design 19

4.3.2. Software Related Design 19

4.4. Sub-Function: ImcArbnPer2 19

4.4.1. Hardware Related Design 19

4.4.2. Software Related Design 20

4.5. Sub-Function: ImcArbnPer3 20

4.5.1. Hardware Related Design 20

4.5.2. Software Related Design 20

4.6. Sub-Function: ImcArbnRx 21

4.6.1. Hardware Related Design 21

4.6.2. Software Related Design 21

4.7. Sub-Function: ImcArbnPer4 25

4.7.1. Hardware Related Design 25

4.7.2. Software Related Design 25

4.8. Sub-Function: ImcArbnPer5 26

4.8.1. Hardware Related Design 26

4.8.2. Software Related Design 26

4.9. Sub-Function: ImcArbnPer6 27

4.9.1. Hardware Related Design 27

4.9.2. Software Related Design 27

4.10. Sub-Function: SetRxSigGroup 29

4.10.1. Hardware Related Design 29

4.10.2. Software Related Design 29

4.11. Sub-Function: GetTxSigGroup 31

4.11.1. Hardware Related Design 31

4.11.2. Software Related Design 31

4.12. Sub-Function: GetTxRateGroup 33

4.12.1. Hardware Related Design 33

4.12.2. Software Related Design 33

4.13. Sub-Function: GetSigImcDataExtdSts_<DATA_TYPE> 35

4.13.1. Hardware Related Design 35

4.13.2. Software Related Design 35

4.14. Sub-Function: GetSigImcData_<DATA_TYPE> 37

4.14.1. Hardware Related Design 37

4.14.2. Software Related Design 37

4.15. Sub-Function: RxFrmVldChk 38

4.15.1. Hardware Related Design 38

4.15.2. Software Related Design 38

4.16. Sub-Function: ImcChResyncHndlg 42

4.16.1. Hardware Related Design 42

4.16.2. Software Related Design 42

4.17. Sub-Function: CreatSigGroupData 43

4.17.1. Hardware Related Design 43

4.17.2. Software Related Design 43

4.18. Sub-Function: DecodSigGroupData 44

4.18.1. Hardware Related Design 44

4.18.2. Software Related Design 44

4.19. Sub-Function: GetBitMask 46

4.19.1. Hardware Related Design 46

4.19.2. Software Related Design 46

4.20. Sub-Function: GetImcFltParamByte 47

4.20.1. Hardware Related Design 47

4.20.2. Software Related Design 47

4.21. Sub-Function: VldtRollgCntr 49

4.21.1. Hardware Related Design 49

4.21.2. Software Related Design 49

4.22. Sub-Function: VldtRollgCntrAlg 51

4.22.1. Hardware Related Design 51

4.22.2. Software Related Design 51

4.23. Sub-Function: RollgCntrSeqChk 54

4.23.1. Hardware Related Design 54

4.23.2. Software Related Design 54

4.24. Sub-Function: NoDataHndlg 55

4.24.1. Hardware Related Design 55

4.24.2. Software Related Design 55

4.25. Sub-Function: EvlSigGroupNeverRxdMissSts 57

4.25.1. Hardware Related Design 57

4.25.2. Software Related Design 57

4.26. Sub-Function: OvrdSigStsDurgStrtUp 59

4.26.1. Hardware Related Design 59

4.26.2. Software Related Design 59

4.27. Sub-Function: GetImcSigSts 60

4.27.1. Hardware Related Design 60

4.27.2. Software Related Design 60

4.28. Sub-Function: NoDataRxd 62

4.28.1. Hardware Related Design 62

4.28.2. Software Related Design 62

5. Timing / Execution Constraints 63

5.1. Rationale / Comments 63

5.2. Rates and State Execution 63

6. Serial Communications Interfaces 63

7. Additional Information 63

7.1. Imc Arbitration – Configuration 63

7.1.1. Hardware Related Design 63

7.1.2. Software Related Design 63

7.2. Imc Signal Mapping for Receiving FDDs 69

7.2.1. Hardware Related Design 69

7.2.2. Software Related Design 69

7.3. Enumerations - Signal Status, Extended Signal Status and Signal Source 69

7.3.1. Hardware Related Design 69

7.3.2. Software Related Design 69

8. Revision Record & Change Approval 70

High Level Description

The Inter-Micro Communication (IMC) Arbitration prepares data for transmission to a complimentary ECU through two redundant communication paths. On the receive side, the Arbitration reads data from the primary source and determines the data validity. A validity fault on primary source prompts the IMC Arbitration component to evaluate the same signal from the secondary source. Faulty signals from the primary source will be replaced with signals from the secondary source, as long as they are valid. If both data sources are invalid the IMC Arbitration outputs the signal status based on never received, missing and invalid conditions.


Function I/O

Input Description

Inputs for this component are provided by IMC signal configurations that are defined based on program requirements. Refer Section 5.23 for more details.

Input NameDescription
<Signal1>…<Signal#>All RTE signals coming from any periodic that are required to be read by IMC Arbitration scheduled runnables. The list of signals can change from program to program based on program dataflow requirements.

Output Description

Refer Data Dictionary for details.


Sub-Function Data Flow

Imc Arbitration Transmit side data flow

Imc Arbitration Receive side data flow


Rolling Counter Handling

General Description:

Rolling counters are used to ascertain sequence of every Signal Group reception via IMC channels.

Rolling counters are embedded in the start byte with length of 5 bits in every frame on both channels. This sequence is generated for each Rate Group separately with range of 0 to 31. Roll over will happen once the Rolling counter reaches 31.

All Signal Groups defined under a Rate Group will have same value of Rolling Counter in a given cycle of transmission.

On the receiving side Rolling counter evaluation poses following challenges:

  1. Underlying protocols of Primary and Secondary sources have different data handling methods and hence, at any instant, the data received from any of these channels will be different.

  2. Underlying protocols of Primary and Secondary sources have different handling in Software which in turn impacts reception hence, at any instant, the data processed will be different.

  3. Corruption in the channel level causes loss in messages and hence loss in synchronization.

Rolling counter algorithm addresses all these challenges and determines a robust approach to handle these.

Rolling Counter Algorithm description:

The following are addressed by this algorithm:

  1. Validation of the data sequence of Signal Group based on Rolling counter from Primary and Secondary sources

  2. Data Sequence validation from IMC channels which are of same or different characteristics.

  3. Resynchronization of the Rolling counter check during data corruption in the channels.

  4. Resynchronization of the Rolling counter check when the Rolling counter reference changes ( Roll-over cases)

  5. Indicates if a Rolling counter fault needs to be reported.

Further details are indicated in the following generic flowchart.

Variables used in the flowchart are,

  1. DataValid: This is a flag which indicates if valid Data is received from the Communication channel.

  2. GoodDataSource:This indicates which Communication channel ( Primary or Secondary) has Valid data

  3. MessageSkipCounter: This is a counter which indicates the number of missed messages in the form of No data or invalid data.

  4. RollCounterError: Indicates if a rolling counter fault need to be reported

  5. CounterThreshold:This is a value related to the typical amount of latency in data transmission in the communication channel.

  6. ChannelSwitchDelay:This is a value related to the dynamics of the redundant communication channels. This indicates the typical delay in a message reception between the communication channels at any instant.

  7. PreviousRolling Counter:This is the value of the rolling counter of the previously stored valid message.

  8. RollCounterResyncCounterPrimary: This is a counter which indicates the number of times data is missed because of only Rolling Counter issue on primary channel.

  9. RollCounterResyncCounterSecondary: This is a counter which indicates the number of times data is missed because of only Rolling Counter issue on Secondary channel.

  10. ResyncThreshold: This is the number of consecutive Rolling counter issues after which it could be assumed that either of the MCUs have lot synchronization of rolling counter, and hence a resync has to happen.

  11. RollCounterPrimaryResync – Previous rolling counter value received during resync period on Primary channel

  12. RollCounterSecondaryResync – Previous rolling counter value received during resync period on Secondary channel

  13. PrimaryResyncActive – Indicates whether Resync is active on Primary channel

  14. SecondaryResyncActive – Indicates whether Resync is active on Secondary channel.

In short, the Rolling counter algorithm behaves as follows,

  1. Data is considered valid in the following cases,

    1. For consecutive messages from same Comm. channel, if the new Rolling counter falls within the range

(ExpectedRollCntrValue – LowerLimit) <= CurrentRolling Counter <= (ExpectedRollCntrValue + CounterThreshold)

Where ExpectedRollCntrValue = PreviousRolling Counter + MessageSkipCounter + 1,

LowerLimit = CounterThreshold if it is lesser than MessageSkipCounter else, LowerLimit = MessageSkipCounter

  1. For consecutive messages from different Comm. channel, if the new RL falls within a range specified by

(ExpectedRollCntrValue – LowerLimit) <= CurrentRolling Counter <= (ExpectedRollCntrValue + (CounterThreshold + ChannelSwitchDelay))

Where ExpectedRollCntrValue = PreviousRolling Counter + MessageSkipCounter + 1,

LowerLimit = CounterThreshold + ChannelSwitchDelay if it is lesser than MessageSkipCounter else, LowerLimit = MessageSkipCounter

  1. Rolling Counter error will not be set in the following cases,

    1. For consecutive messages from same Comm. channel, if the new Rolling counter falls within the range

(ExpectedRollCntrValue – CounterThreshold) <= CurrentRolling Counter <= (ExpectedRollCntrValue + CounterThreshold)

Where ExpectedRollCntrValue = PreviousRolling Counter + MessageSkipCounter + 1

  1. For consecutive messages from different Comm. channel, if the new RL falls within a range specified by

(ExpectedRollCntrValue – (CounterThreshold + ChannelSwitchDelay)) <= CurrentRolling Counter <= (ExpectedRollCntrValue + (CounterThreshold + ChannelSwitchDelay))

Where ExpectedRollCntrValue = PreviousRolling Counter + MessageSkipCounter + 1

  1. On every skip of message (includes missing, CRC error and No data) MessageSkipCounter is incremented. The next rolling counter is expected to have a value bigger than the previous rolling counter value by this counter amount. Any active resynchronization will be cleared as next rolling counter value will not be just next to currently stored value.

  2. If consecutive ResyncThreshold amount of rolling counter issues occur (cases when old or invalid CurrentRollingCounter detected) in a channel, then it is assumed that either of the MCUs have lot synchronization of rolling counter on the particular channel, and hence a resynchronization is triggered.

  3. Following pseudo code explains resynchronization logic on Primary channel. Same is applicable for Secondary channel as well. This logic will start run when old or invalid CurrentRollingCounter detected in a channel. Note that at any point of time, Resync will be active for only one channel.

If((Channel == Primary) && (SecondaryResyncActive == FALSE)) /* Secondary Resync not active */

{

If(RollCounterPrimaryResync == 0xFF) /* First time Rolling counter fault detected */

{

RollCounterResyncCounterPrimary ++ /* Update Resync counter */

RollCounterPrimaryResync = CurrentRollingCounter /* Update current rolling counter */

PrimaryResyncActive = TRUE /*Activate primary resync */

}

Else

{

If(CurrentRollingCounter == (RollCounterPrimaryResync+1) /* Check new rolling counter is just next to current previous rolling counter */

{

RollCounterResyncCounterPrimary ++ /* Good to proceed resync. Increment Resync counter to reach threshold. */

RollCounterPrimaryResync = CurrentRollingCounter /* Update Rolling counter */

}

Else /* Rolling counter is not next value. Abort Resync. Try again */

{

RollCounterResyncCounterPrimary = 0

RollCounterPrimaryResync = 0xFF

PrimaryResyncActive = FALSE

}

}

}

When RollCounterResyncCounterPrimary reaches ResyncThreshold, Rolling counter and data will be declared as valid.

  1. For rolling counter evaluation within the same Comm. Channel, a latency value of CounterThreshold is used. For rolling counter evaluation within different Comm. Channel, an additional latency value of ChannelSwitchDelay is used.

Following flow-charts indicates overall rolling counter handling.

Rolling counter algorithm spreads across following functions:

  1. ImcArbnInit1 – Initialization of Signal Group Resync Rolling counter buffer and Signal Group data source buffer

  2. ImcArbnRx – Resync and Skip counter handling during no data situation.

  3. RxFrmVldChk - Resync and Skip counter handling

  4. VldtRollgCntr – Validate rolling counter

  5. VldtRollgCntrAlg – Rolling counter algorithm implementation

  6. RollgCntrSeqChk – Valid Rolling counter interval checking

  7. NoDataHndlg – Rolling counter handling when No data received on both channels

  8. ImcChResyncHndlg – Resync logic

Design Rationale and Assumptions

  1. Imc Arbitration Receive function designed based on the assumption that first byte and last byte in a valid Signal Group is always a non-zero value.

  2. Signal Group data received by IMC Arbitration component considered as valid if CRC and rolling counters found to be good. This means, IMC Arbitration component is not designed to evaluate quality of individual signals packed in a Signal Group. The signal status provided by this component is just mere expression of quality of reception. It is assumed that evaluation of quality of Signal would be carried-out by respective sending/receiving components.

  3. Imc Arbitration component doesn’t use fault threshold tracking mechanism implemented by Diagnostics Manager due to the fact that this component is currently assigned with one NTC (NTC 0x3F) for logging all frame faults and these faults are detected across three Rx periodics (ImcArbnPer4, ImcArbnPer5 and ImcArbnPer6). Diag Manager offers tracking mechanism only for a single periodic. This component keeps track of faulty frames using PIM variables and logs/clears the NTC in 100ms Rx periodic (ImcArbnPer6).

  4. Imc Arbitration component doesn’t care about availability of data bandwidth to transmit /receive all configured Signal Groups. It allows the user to configure up to 255 Signal Groups. Assumption is that optimal use of IMC channels would be ensured during system design.

  5. Imc Arbitration component doesn’t care about channel type of primary source or secondary source. This component should work independent of type of channel as long as the frame format of a Signal Group followed.

  6. Imc Arbitration Tx functionality provides interfaces to get transmit data for individual Signal Group or all signal groups configured under given Rate Group. It is up to the primary and secondary source Tx layers to decide how they would like to get the Tx data from IMC Arbitration component, considering all relevant requirements.

  7. It is mandatory to transmit all Signal Groups on primary source channel. Transmission of particular Signal Group on secondary source channel is optional and that need to be specified during configuration.

  8. Tx / Rx processing for particular Rate Group will happen only if it has minimum one Signal Group. Otherwise, evaluation of Tx / Rx processing of said Rate Group will be skipped.

  9. This component provides Signal status definition in two versions: basic and extended. While basic signal status indicates No Data, Valid and Invalid cases, extended signal status provides status of startup, Signal Group never received, Signal Group missing, Signal Group availability on only one channel or on both channels. Following table indicates relation between these two status:

  1. Signal Status IMCARBNRXEXTDSTS_STRTG / IMCARBNRXSTS_NODATA returned to IMC Signal users until initial start-up time completion even if integrity of received signal data found to be good. This is to ensure that the availability of properly calculated values in RTE by the components which are transmitting signals via IMC.

  2. Data consistency across the component is ensured by exclusive area access. Following are the places where exclusive area access provided:

    1. Reading from / Writing into Tx Buffer

    2. Reading from / Writing into Rx buffer

    3. Writing to Received signal data buffer, Status buffer and Signal source buffers.

  3. This component provides two server runnables to copy data buffer during transmission: one for Rate Group level (provides all Signal Groups configured under given Rate Group) and another for Signal Group level (provides all Signals configured under given Signal Group). It is up to the respective channel drivers to decide which one to be invoked depending on buffer handling scheme.

  4. Primary and Secondary source receive data buffers are defined with same size even though, transmission of Signal Groups on Secondary source is optional. It is done to avoid complex logics in buffer handling. For e.g if SignalGroupA is configured to be PrimaryOnly, then there is no need to allocate buffer space in the Secondary source buffer for SignalGroupA. But, the design allocates buffer SignalGroupA as well in the Secondary source buffer to keep common buffer definition and access logic.

  5. The server runnables defined in this component designed based on the assumption that it will be invoked only from the tasks which runs at the rate of 2ms or greater than that.

Sub-Functions

Sub-Function: ImcArbnInit1

None

ImcArbnInit1
Function scopeGlobal, Init function
DescriptionInitialized Signal Group and Signal related buffers. Gets start time of the component and saves it in a PIM
ParametersNone
Return valueNone
Affected static and global variablesReads / Writes to following variables in functions
SigGroupNeverRxd
PrimSrcRollgCntrResync
SecdrySrcRollgCntrResync
RxdSigDataExtdSts
RxdSigDataSrc
SigGroupDataSrc
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessAccesses following configuration data
IMCARBN_TOTALNROFSIG_CNT_U16
IMCARBN_TOTALNROFSIGGROUP_CNT_U08
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
Init Task

Sub-Function: ImcArbnTx

None

ImcArbnTx
Function scopeLocal
Description1) This function collects signal data for all Signal Groups configured in the ImcArbn_SigGroupConfig_Rec for given Rate Group and packs each signal to the specified start bit in each Signal Group as defined in the configuration.
2) A Pattern Identification flag, Rolling Counter, Signal Group ID, CRC, Compliment Pattern ID and Compliment Rolling Counter are added for each Signal Group.
3) The resulting signal group is put into a transmit data buffer for for the GetTxSigGroup or GetTxRateGroup client calls to access.
ParametersRequires following parameters
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
Return valueNone
Affected static and global variablesWrites to following variables
TxBuf
RollgCntr
Affected inter-runnable variableNone
Exclusive area accessNeeded to update Transmit data buffer
Configuration accessAccesses following configuration data
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
Calibration data accessNone
Called local functionsCalls following local function
CreatSigGroupData
External Interface callCalls following external function in the sub-functions
Crc_CalculateCRC8
Called byCalled by following functions only when atleast one Signal Group is configured for particular Rate Group
e.g if no Signal Group configured for 100ms Rate Group then this function will not get called from ImcArbnPer3
ImcArbrPer1
ImcArbrPer2
ImcArbrPer3

Sub-Function: ImcArbnPer1

None

ImcArbrPer1
Function scope2ms Periodic, Global
DescriptionFrames transmit data for all Signal Groups configured under 2ms Rate Group and stores in the Transmit data buffer.
ParametersNone
Return valueNone
Affected static and global variablesWrites to following variables
TxBuf
RollgCntr
Affected inter-runnable variableNone
Exclusive area accessNeeded to update Transmit data buffer
Configuration accessAccesses following configuration data
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
Calibration data accessNone
Called local functionsCalls following function only when number of Signal Groups configured under the 2ms Rate Group is NOT zero (IMCARBN_NROF2MILLISECRATEGROUP_CNT_U08 != 0)
ImcArbnTx
External Interface callCalls following external function
Crc_CalculateCRC8
Called by2ms Task

Sub-Function: ImcArbnPer2

None

ImcArbrPer2
Function scope10ms Periodic, Global
DescriptionFrames transmit data for all Signal Groups configured under 10ms Rate Group and stores in the Transmit data buffer.
ParametersNone
Return valueNone
Affected static and global variablesWrites to following variables
TxBuf
RollgCntr
Affected inter-runnable variableNone
Exclusive area accessNeeded to update Transmit data buffer
Configuration accessAccesses following configuration data
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
Calibration data accessNone
Called local functionsCalls following function only when number of Signal Groups configured under the 10ms Rate Group is NOT zero (IMCARBN_NROF10MILLISECRATEGROUP_CNT_U08 != 0)
ImcArbnTx
External Interface callCalls following external function in the sub-functions
Crc_CalculateCRC8
Called by10ms Task

Sub-Function: ImcArbnPer3

None

ImcArbrPer3
Function scope100ms Periodic, Global
DescriptionFrames transmit data for all Signal Groups configured under 100ms Rate Group and stores in the Transmit data buffer.
ParametersNone
Return valueNone
Affected static and global variablesWrites to following variables
TxBuf
RollgCntr
Affected inter-runnable variableNone
Exclusive area accessNeeded to update Transmit data buffer
Configuration accessAccesses following configuration data
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
Calibration data accessNone
Called local functionsCalls following function only when number of Signal Groups configured under the 100ms Rate Group is NOT zero (IMCARBN_NROF100MILLISECRATEGROUP_CNT_U08 != 0)
ImcArbnTx
External Interface callCalls following external function in the sub-functions
Crc_CalculateCRC8
Called by100ms Task

Sub-Function: ImcArbnRx

None

ImcArbnRx
Function scopeLocal
Description1) This sub-function receives signal groups from two Imc Channels: Primary Source and Secondary Source. It first validates the data from the primary source and if there is any fault found with the Signal Group data, it will switch to the secondary source for that signal.
2) If the Signal Group data has been sourced from primary source, it checks availability of the Signal Group data received via secondary source. If the signal group is available in secondary source buffer, then it sets respective signals defined under signal group to IMCARBNRXEXTDSTS_DATAVLDWITHBACKUP. Otherwise it sets the Signal status to IMCARBNRXEXTDSTS_DATAVLDWITHNOBACKUP.
3) If the signal group data received on primary source found to be invalid, then it switches to secondary source data buffer and evaluates it. If valid, the signal status is set to IMCARBNRXEXTDSTS_DATAVLDWITHNOBACKUP. Otherwise set to IMCARBNRXEXTDSTS_DATAINVLD.
4) If the Signal Group is not received in any of the channels, then it evaluates missing and never received conditions and sets signal status to any of the following depends on the conditions: IMCARBNRXEXTDSTS_NEVERRXD, IMCARBNRXEXTDSTS_MISS, IMCARBNRXEXTDSTS_PREVDATA
5) If initial start-up timer is not complete, then signal status is set to IMCARBNRXEXTDSTS_STRTG irrespective of above evaluations.
6) There are a total of two Rx buffers are defined as input to this function: one for primary source, another one for secondary source.
7) There are three buffers (Signal Data, Signal Status, Signal Source) defined to serve signal data requests from the components which uses signals received via IMC Arbitration component. This function puts processed values into these buffers.
8) PIM variables are used to track frame faults and log NTC based on threshold.
9) Following validation steps are carried out to declare received Signal Group data as valid / invalid:
a)No Data Received check
b)CRC Check
c) Rolling counter check
ParametersRequires following parameters
FrmFltCntr - Pointer to the frame fault counters for the given Rate Group where frame faults to be accounted.
Type: Ary2D_u8_2_2*
Valid Range: 0x00000001 to 0xFFFFFFFF
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
IniTiOutChkCmpl - Initial time-out completion status
Type: boolean
TRUE – Time-out completed
FALSE – Time-out not completed
Return valuevoid
Affected static and global variablesRead and Write to following variables in sub-functions
SigGroupMissCntr
SigGroupNeverRxd
RxdSigData
RxdSigDataExtdSts
PrevRollgCntrRxd
PrimSrcRxBuf
SecdrySrcRxBuf
RxdSigDataSrc
SigGroupSkipCntr
PrimSrcResyncCntr
SecdrySrcResyncCntr
ResyncOnPrimActv
ResyncOnSecdryActv
SigGroupDataSrc
PrimSrcRollgCntrResync
SecdrySrcRollgCntrResync
FrmFltCntr2MilliSec
FrmFltCntr10MilliSec
FrmFltCntr100MilliSec
Affected inter-runnable variableReads following interunnable variable
IniTiOutChkCmpl
Exclusive area accessNeeded to read received Signal Group data buffers and to write Imc Signal data, Signal Status and Signal source buffers.
Configuration accessAccesses following configuration data in the sub-functions call
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
MISSSIGGROUPTIOUT_CNT_U08
Calibration data accessAccesses following calibration value in the sub-functions call
ImcArbnFrmFltThd
Called local functionsCalls following local function
RxFrmVldChk
DecodSigGroupData
NoDataHndlg
OvrdSigStsDurgStrtUp
NoDataRxd
External Interface callCalls following external function
Crc_CalculateCRC8
Called byCalled by following functions only when atleast one Signal Group is configured for particular Rate Group
e.g if no Signal Group configured for 100ms Rate Group then this function will not get called from ImcArbnPer6.
ImcArbrPer4
ImcArbrPer5
ImcArbrPer6

Sub-Function: ImcArbnPer4

None

ImcArbrPer4
Function scope2ms Periodic, Global
DescriptionProcesses received Signal Group data via IMC Channels for all Signal Groups configured under 2ms Rate Group and stores validated Signal data, Signal Status and Signal source in respective buffers.
ParametersNone
Return valueNone
Affected static and global variablesRead and Write to following variables in sub-functions
SigGroupMissCntr
SigGroupNeverRxd
RxdSigData
RxdSigDataExtdSts
PrevRollgCntrRxd
PrimSrcRxBuf
SecdrySrcRxBuf
FrmFltCntr2MilliSec
RxdSigDataSrc
SigGroupSkipCntr
PrimSrcResyncCntr
SecdrySrcResyncCntr
ResyncOnPrimActv
ResyncOnSecdryActv
SigGroupDataSrc
PrimSrcRollgCntrResync
SecdrySrcRollgCntrResync
Affected inter-runnable variableReads following inter-runnable variable
IniTiOutChkCmpl
Exclusive area accessNeeded to read received Signal Group data buffers and write to Imc Signal data, Signal Status and Signal source buffers
Configuration accessAccesses following configuration data in the sub-functions call
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
MISSSIGGROUPTIOUT_CNT_U08
Calibration data accessAccesses following calibration value in the sub-functions call
ImcArbnFrmFltThd
Called local functionsCalls following function only when number of Signal Groups configured under the 2ms Rate Group is NOT zero (IMCARBN_NROF2MILLISECRATEGROUP_CNT_U08 != 0)
ImcArbnRx
External Interface callCalls following external function
Crc_CalculateCRC8
Called by2ms Task

Sub-Function: ImcArbnPer5

None

ImcArbrPer5
Function scope10ms Periodic, Global
DescriptionProcesses received Signal Group data via IMC Channels for all Signal Groups configured under 10ms Rate Group and stores validated Signal data, Signal Status and Signal source in respective buffers.
ParametersNone
Return valueNone
Affected static and global variablesRead and Write to following variables in sub-functions
SigGroupMissCntr
SigGroupNeverRxd
RxdSigData
RxdSigDataExtdSts
PrevRollgCntrRxd
PrimSrcRxBuf
SecdrySrcRxBuf
FrmFltCntr10MilliSec
RxdSigDataSrc
SigGroupSkipCntr
PrimSrcResyncCntr
SecdrySrcResyncCntr
ResyncOnPrimActv
ResyncOnSecdryActv
SigGroupDataSrc
PrimSrcRollgCntrResync
SecdrySrcRollgCntrResync
Affected inter-runnable variableReads following inter-runnable variable
IniTiOutChkCmpl
Exclusive area accessNeeded to read received Signal Group data buffers and write to Imc Signal data, Signal Status and Signal source buffers
Configuration accessAccesses following configuration data in the sub-functions call
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
MISSSIGGROUPTIOUT_CNT_U08
Calibration data accessAccesses following calibration value in the sub-functions call
ImcArbnFrmFltThd
Called local functionsCalls following function only when number of Signal Groups configured under the 10ms Rate Group is NOT zero (IMCARBN_NROF10MILLISECRATEGROUP_CNT_U08 != 0)
ImcArbnRx
External Interface callCalls following external function
Crc_CalculateCRC8
Called by10ms Task

Sub-Function: ImcArbnPer6

None

ImcArbrPer6
Function scope100ms Periodic, Global
Description1. Evaluates initial start-up time out and sets IniTiOutChkCmpl flag once start-up exceeded ECU initialization timeout ImcArbnEcuIninTiOutThd. IniTiOutChkCmpl would be used across all Rx periodics to set signal status IMCARBNRXEXTDSTS_STRTG.
2. Processes received Signal Group data via IMC Channels for all Signal Groups configured under 100ms Rate Group and stores validated Signal data, Signal Status and Signal source in respective buffers.
3. Logs NTCNR_0X03F if any of Frame Fault counters exceeds ImcArbnFrmFltThd.
ParametersNone
Return valueNone
Affected static and global variablesRead and Write to following variables in sub-functions
Read and Write to following variables in sub-functions
SigGroupMissCntr
SigGroupNeverRxd
RxdSigData
RxdSigDataExtdSts
PrevRollgCntrRxd
PrimSrcRxBuf
SecdrySrcRxBuf
FrmFltCntr100MilliSec
RxdSigDataSrc
SigGroupSkipCntr
PrimSrcResyncCntr
SecdrySrcResyncCntr
ResyncOnPrimActv
ResyncOnSecdryActv
SigGroupDataSrc
PrimSrcRollgCntrResync
SecdrySrcRollgCntrResync
Affected inter-runnable variableReads /Writes following inter-runnable variable
IniTiOutChkCmpl
Exclusive area accessNeeded to read received Signal Group data buffers and write to Imc Signal data, Signal Status and Signal source buffers
Configuration accessAccesses following configuration data in the sub-functions call
SIGGROUPCONFIG_REC
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
MISSSIGGROUPTIOUT_CNT_U08
Calibration data accessAccesses following calibration value in the sub-functions call
ImcArbnEcuIninTiOutThd
ImcArbnFrmFltThd
Called local functionsCalls following local function
GetImcFltParamByte
Calls following function only when number of Signal Groups configured under the 100ms Rate Group is NOT zero (IMCARBN_NROF100MILLISECRATEGROUP_CNT_U08 != 0)
ImcArbnRx
External Interface callCalls following external function
GetTiSpan100MicroSec32bit
SetNtcSts
Crc_CalculateCRC8
Called by100ms Task

Sub-Function: SetRxSigGroup

None

SetRxSigGroup
Function scopeServer Runnable, Global
DescriptionThis server function is called by primary / secondary source Rx layers to store signal group data that have been received over IMC channels.
ParametersRequires following parameters
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
DataSrc - Imc Channel ID from which the server runnable called
Type: ImcArbnRxDataSrc1
Range:
IMCARBNRXDATASRC_PRIM (0U)
IMCARBNRXDATASRC_SECDRY (1U)
IMCARBNRXDATASRC_NOSRC (2U)
All other values are invalid
Buf - Pointer to the received Signal Group data buffer
Type: Ary1D_u8_8*
Valid Range: 0x00000001 to 0xFFFFFFFF
Return valueReturns following value
ErrCod - Informs the caller about status of the operation
Type: Std_ReturnType
Range: E_OK (0)
E_NOT_OK (1)
Affected static and global variablesWrites to following variables in sub-functions
PrimSrcRxBuf
SecdrySrcRxBuf
SigGroupNeverRxd
Affected inter-runnable variableNone
Exclusive area accessNeeded to write primary and secondary source received data buffers.
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byPrimary and Secondary Source drivers

Sub-Function: GetTxSigGroup

None

GetTxSigGroup
Function scopeServer Runnable, Global
DescriptionThis server function is called by primary / secondary source Tx layers to get signal group data to transmit over IMC channels.
ParametersRequires following parameters
SigGroupId - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
Buf - Pointer to the buffer where transmit data to be copied
Type: uint8*
Valid Range: 0x00000001 to 0xFFFFFFFF
Return valueReturns following value
ErrCod - Informs the caller about status of the operation
Type: Std_ReturnType
Range: E_OK (0)
E_NOT_OK (1)
Affected static and global variablesReads following variable
TxBuf
Affected inter-runnable variableNone
Exclusive area accessNeeded to read from Tx data buffer.
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byPrimary and Secondary Source drivers

Sub-Function: GetTxRateGroup

None

GetTxRateGroup
Function scopeServer Runnable, Global
DescriptionThis server function is called by primary / secondary source Tx layers to get transmit data of all Signal Groups configured under given Rate Group.
ParametersRequires following parameters
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
Buf - Pointer to the buffer where transmit data to be copied
Type: uint8*
Valid Range: 0x00000001 to 0xFFFFFFFF
Return valueReturns following value
ErrCod - Informs the caller about status of the operation
Type: Std_ReturnType
Range: E_OK (0)
E_NOT_OK (1)
Affected static and global variablesReads following variable
TxBuf
Affected inter-runnable variableNone
Exclusive area accessNeeded to read from Tx data buffer.
Configuration accessAccesses following configuration data
RATEGROUPOFFS_CNT_U08
NRSIGGROUPINRATEGROUP_CNT_U08
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byPrimary and Secondary Source drivers

Sub-Function: GetSigImcDataExtdSts_<DATA_TYPE>

None

GetSigImcDataExtdSts_<DATA_TYPE>
Function scopeServer Runnable, Global
Description1) This server function is called by application components to get particular Signal data received over IMC Channels, Extended Signal Status and Signal Source.

2) There are 8 Server runnables defined to get signal data with extended signal status received via Imc channels each of which called based on received signal data type. Place holder <DATA_TYPE> can be any of the following: f32 (float32), u32 (uint32), s32 (sint32), u16 (uint16), s16 (sint16), u08 (uint8), s08 (sint8), logl (boolean).
ParametersRequires following parameters
SigId - IMC Signal Id provided by IMC Arbitration Configuration
Type: uint16
Range:
0 to 65535
Data - Pointer to the signal data buffer where signal data to be copied
Type: uint8*
Valid Range: 0x00000001 to 0xFFFFFFFF
Sts - Pointer to signal status buffer where signal status to be copied
Type: ImcArbnRxSts1*
Valid Range: 0x00000001 to 0xFFFFFFFF
DataSrc - Imc Channel ID from which the signal data received
Type: ImcArbnRxDataSrc1*
Valid Range: 0x00000001 to 0xFFFFFFFF
Return valueReturns following value
ErrCod - Informs the caller about status of the operation
Type: Std_ReturnType
Range: E_OK (0)
E_NOT_OK (1)
Affected static and global variablesReads following variable
RxdSigData
RxdSigDataExtdSts
RxdSigDataSrc
Affected inter-runnable variableNone
Exclusive area accessNeeded to read from Signal data, Signal status and Signal Source buffers
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byApplication components which needs signal data received over IMC Channels

Sub-Function: GetSigImcData_<DATA_TYPE>

None

GetSigImcData_<DATA_TYPE>
Function scopeServer Runnable, Global
Description1) This server function is called by application components to get particular Signal data received over IMC Channels and Signal Status.
2) There are 8 Server runnables defined to get signal data with signal status received via Imc channels each of which called based on received signal data type. Place holder <DATA_TYPE> can be any of the following: f32 (float32), u32 (uint32), s32 (sint32), u16 (uint16), s16 (sint16), u08 (uint8), s08 (sint8), logl (boolean).
ParametersRequires following parameters
SigId - IMC Signal Id provided by IMC Arbitration Configuration
Type: uint16
Range:
0 to 65535
Data - Pointer to the signal data buffer where signal data to be copied
Type: uint8*
Valid Range: 0x00000001 to 0xFFFFFFFF
Sts - Pointer to signal status buffer where signal status to be copied
Type: ImcArbnRxSts1*
Valid Range: 0x00000001 to 0xFFFFFFFF
 DataSrc -
Return valueReturns following value
ErrCod - Informs the caller about status of the operation
Type: Std_ReturnType
Range: E_OK (0)
E_NOT_OK (1)
Affected static and global variablesReads following variable
RxdSigData
RxdSigDataExtdSts
Affected inter-runnable variableNone
Exclusive area accessNeeded to read from Signal data and Signal status buffers
Configuration accessNone
Calibration data accessNone
Called local functionsCalls following local function
GetImcSigSts
External Interface callNone
Called byApplication components which needs signal data received over IMC Channels

Sub-Function: RxFrmVldChk

None

RxFrmVldChk
Function scopeLocal
DescriptionEvaluates validity of received Signal Group data based on CRC and Rolling counter values and returns status that indicates whether given Signal Group data, rolling counter values are valid or not. In addition to that it tracks CRC and Rolling counter frame faults per Rate Group per fault type (CRC / Rolling counter) using Frame Fault counters. This function also tracks Skip counters and Resync counters for Rolling counter evaluation.
ParametersRequires following parameters
DataBuf - Pointer to the received Signal Group data buffer
Type: uint8*
Valid Range: 0x00000001 to 0xFFFFFFFF
FrmFltCntr - Pointer to the frame fault counters for the given Rate Group where frame faults to be accounted.
Type: Ary2D_u8_2_2*
Valid Range: 0x00000001 to 0xFFFFFFFF
SigGroupDataSrc- Imc Channel ID on which Signal Group data received
Type: ImcArbnRxDataSrc1
Range:
IMCARBNRXDATASRC_PRIM (0U)
IMCARBNRXDATASRC_SECDRY (1U)
IMCARBNRXDATASRC_NOSRC (2U)
All other values are invalid
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
PrimSrcOnlySigGroup - Flag to indicate whether the given Signal Group is only transmitted on Primary Source or No data received on secondary source.
Type: boolean
TRUE – Primary Source only Signal Group or No data received on secondary source
FALSE – Transmtted on both Primary and Secondary sources
IniTiOutChkCmpl - Initial time-out completion status
Type: boolean
TRUE – Time-out completed
FALSE – Time-out not completed
Return valueReturns following value
FrmSts - Informs the caller about validity of Rolling counter and Data
Type: ImcArbnRxRollgCntrSts1
Range:
ROLLGCNTRVLDNEWDATA (0)
ROLLGCNTRVLDOLDDATA (1)
ROLLGCNTRINVLD (2)
Affected static and global variablesRead and Write to following variables in sub-functions
SigGroupSkipCntr
PrimSrcResyncCntr
PrimSrcRollgCntrResync
ResyncOnPrimActv
SecdrySrcResyncCntr
SecdrySrcRollgCntrResync
ResyncOnSecdryActv
FrmFltCntr2MilliSec
FrmFltCntr10MilliSec
FrmFltCntr100MilliSec
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsCalls following local function
Crc_CalculateCRC8
ImcChResyncHndlg
VldtRollgCntr
External Interface callNone
Called byCalled by following functions
ImcArbnRx

Sub-Function: ImcChResyncHndlg

None

ImcChResyncHndlg
Function scopeLocal
DescriptionRuns Resynchronization logic for Primary and Secondary sources
ParametersRequires following parameters
SigGroupDataSrc- Imc Channel ID on which Signal Group data received
Type: ImcArbnRxDataSrc1
Range:
IMCARBNRXDATASRC_PRIM (0U)
IMCARBNRXDATASRC_SECDRY (1U)
IMCARBNRXDATASRC_NOSRC (2U)
All other values are invalid
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
PrsntRollgCntr - Present Rolling counter received for the Signal Group
Type: uint8
Range: 0 to 31
Return valueNone
Affected static and global variablesRead and Write to following variables in sub-functions
PrimSrcResyncCntr
PrimSrcRollgCntrResync
ResyncOnPrimActv
SecdrySrcResyncCntr
SecdrySrcRollgCntrResync
ResyncOnSecdryActv
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
RxFrmVldChk

Sub-Function: CreatSigGroupData

None

CreatSigGroupData
Function scopeLocal
DescriptionCollect Signal data for all signals configured under given Signal Group, combine all into a uint32 data based on configuration and return to the caller.
ParametersRequires following parameters
SigGroup_T_rec - Pointer to the Signal Group configuration data
Type: SigGroupRec1 const *
Valid Range: 0x00000001 to 0xFFFFFFFF
Return valueReturns following value
RetData - Combined four byte data for given Signal Group configuration
Type: uint32
Range:
0x00000000 to 0xFFFFFFFF
Affected static and global variablesNone
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessAccesses following configuration data
SIGGROUPCONFIG_REC
Calibration data accessNone
Called local functionsNone
Called local functionsCalls following local function
Calls Signal access wrapper functions for each signal configured under given Signal Group
External Interface callNone
Called byCalled by following functions
ImcArbnTx

Sub-Function: DecodSigGroupData

None

DecodSigGroupData
Function scopeLocal
DescriptionSplit given uint32 data into Signal data according to the configuration for given Signal Group, store Signal values in Rx Signal Data buffer, updates Signal Status and Signal Source.
ParametersRequires following parameters
SigGroup_T_rec - Pointer to the Signal Group configuration data
Type: SigGroupRec1 const *
Valid Range: 0x00000001 to 0xFFFFFFFF
SigGroupRxData - Combined four bytes received data for given Signal Group configuration
Type: uint32
Range:
0x00000000 to 0xFFFFFFFF
RxSigExtdSts1 - Extended Signal Status
Type: ImcArbnRxExtdSts1
Range:
IMCARBNRXEXTDSTS_NEVERRXD (0U)
IMCARBNRXEXTDSTS_MISS (1U)
IMCARBNRXEXTDSTS_DATAINVLD (2U)
IMCARBNRXEXTDSTS_PREVDATA (3U)
IMCARBNRXEXTDSTS_DATAVLDWITHBACKUP (4U)
IMCARBNRXEXTDSTS_DATAVLDWITHNOBACKUP (5U)
IMCARBNRXEXTDSTS_STRTG (6U)
All other values are invalid
RxDataSrc - Imc Channel ID from which the Signal Group data received
Type: ImcArbnRxDataSrc1
Range:
IMCARBNRXDATASRC_PRIM (0U)
IMCARBNRXDATASRC_SECDRY (1U)
IMCARBNRXDATASRC_NOSRC (2U)
All other values are invalid
Return valueNone
Affected static and global variablesRead and Write to following variables in sub-functions
RxdSigData
RxdSigDataExtdSts
RxdSigDataSrc
Affected inter-runnable variableNone
Exclusive area accessNeeded to write Imc Signal data, Signal Status and Signal source buffers.
Configuration accessAccesses following configuration data
ImcArbn_SigGroupConfig_Rec
Calibration data accessNone
Called local functionsCalls following local function
GetBitMask
External Interface callNone
Called byCalled by following functions
ImcArbrRx

Sub-Function: GetBitMask

None

GetBitMask
Function scopeLocal
DescriptionReturns bitmask for requested number of bits.
ParametersRequires following parameters
NrOfBits - Number of bits required to be set in the return value
Type: uint8
Range:
1 to 32
Return valueReturns following value
BitMask - Bit mask for given number of bits
Type: uint32
Range:
0x00000000 to 0xFFFFFFFF
Affected static and global variablesNone
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
CreatSigGroupData
DecodSigGroupData

Sub-Function: GetImcFltParamByte

None

GetImcFltParamByte
Function scopeLocal
DescriptionEvaluates Frame faults counters and returns IMC Arbitration fault parameter byte to log / clear NTC 0x3F (IMC Arbitration fault). Bits which are corresponding to particular fault that exceeds threshold limit will be set in the return value. Refer below picture for details of bit mapping in the parameter byte
Parametersvoid
Return valueReturns following value
FltBitMask - Bit mask for given number of bits
Type: uint8
Range: Bitmask
PRIMSRCCRCFLT_CNT_U08 (0x01U)
PRIMSRCROLLGCNTRFLT_CNT_U08 (0x02U)
SECDRYSRCCRCFLT_CNT_U08 (0x04U)
SECDRYSRCROLLGCNTRFLT_CNT_U08 (0x08U)
All other bits are unused.
Affected static and global variablesReads following variables
FrmFltCntr2MilliSec
FrmFltCntr10MilliSec
FrmFltCntr100MilliSec
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessAccesses following calibration value in the sub-functions call
ImcArbnFrmFltThd
Called local functionsNone
External Interface callNone
Called byCalled by following functions
ImcArbnPer6

Sub-Function: VldtRollgCntr

None

VldtRollgCntr
Function scopeLocal
DescriptionValidates Rolling Counter
ParametersRequires following parameters
SigGroupDataSrc- Imc Channel ID on which Signal Group data received
Type: ImcArbnRxDataSrc1
Range:
IMCARBNRXDATASRC_PRIM (0U)
IMCARBNRXDATASRC_SECDRY (1U)
IMCARBNRXDATASRC_NOSRC (2U)
All other values are invalid
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
PrsntRollgCntr- Present Rolling counter value received for the given Signal Group
Type: uint8
Range: 0 to 31
Return valueReturns following value
FrmSts - Informs the caller about validity of Rolling counter and Data
Type: ImcArbnRxRollgCntrSts1
Range:
ROLLGCNTRVLDNEWDATA (0)
ROLLGCNTRVLDOLDDATA (1)
ROLLGCNTRINVLD (2)
Affected static and global variablesRead and Write to following variables in sub-functions
PrimSrcResyncCntr
PrimSrcRollgCntrResync
ResyncOnPrimActv
SecdrySrcResyncCntr
SecdrySrcRollgCntrResync
ResyncOnSecdryActv
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsCalls following local function
VldtRollgCntrAlg
External Interface callNone
Called byCalled by following functions
RxFrmVldChk

Sub-Function: VldtRollgCntrAlg

None

VldtRollgCntrAlg
Function scopeLocal
DescriptionImplements Rolling counter algorithm
ParametersRequires following parameters
SigGroupDataSrc- Imc Channel ID on which Signal Group data received
Type: ImcArbnRxDataSrc1
Range:
IMCARBNRXDATASRC_PRIM (0U)
IMCARBNRXDATASRC_SECDRY (1U)
IMCARBNRXDATASRC_NOSRC (2U)
All other values are invalid
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
PrsntRollgCntr- Present Rolling counter value received for the given Signal Group
Type: uint8
Range: 0 to 31
Return valueReturns following value
FrmSts - Informs the caller about validity of Rolling counter and Data
Type: ImcArbnRxRollgCntrSts1
Range:
ROLLGCNTRVLDNEWDATA (0)
ROLLGCNTRVLDOLDDATA (1)
ROLLGCNTRINVLD (2)
Affected static and global variablesReads or writes following variables in sub-functions
PrevRollgCntrRxd
SigGroupSkipCntr
SigGroupDataSrc
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsCalls following local function
RollgCntrSeqChk
External Interface callNone
Called byCalled by following functions
VldtRollgCntr

Sub-Function: RollgCntrSeqChk

None

RollgCntrSeqChk
Function scopeLocal
DescriptionChecks whether present rolling counter value received on IMC channel falls within the range lower and upper drift limits from anticipated rolling counter.
ParametersRequires following parameters
PrsntRollgCntr- Present Rolling counter value received for the given Signal Group
Type: uint8
Range: 0 to 31
AntcptdRollCntr - Anticipated Rolling counter value for the given Signal Group
Type: uint8
Range: 0 to 31
UpprDriftLim - Drift limit on the lower from Anticipated Rolling counter
Type: uint8
Range: 0 to 31
LwrDriftLim - Drift limit on the lower side from Anticipated Rolling counter
Type: uint8
Range: 0 to 31
Return valueReturns following value
RollgCntrVld - Returns validity of Rolling counter
Type: boolean
Range:
TRUE - Rolling counter value acceptable
FALSE - Rolling counter value not acceptable
Affected static and global variablesNone
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
VldtRollgCntrAlg

Sub-Function: NoDataHndlg

None

NoDataHndlg
Function scopeLocal
DescriptionHandles No data reception cases for Singal Status, Reset counter, Skip counter and Resync counters
ParametersRequires following parameters
RxSigExtdSts1 - Extended signal Status value
Type: ImcArbnRxExtdSts1
Range:
IMCARBNRXEXTDSTS_NEVERRXD (0U)
IMCARBNRXEXTDSTS_MISS (1U)
IMCARBNRXEXTDSTS_DATAINVLD (2U)
IMCARBNRXEXTDSTS_PREVDATA (3U)
IMCARBNRXEXTDSTS_DATAVLDWITHBACKUP (4U)
IMCARBNRXEXTDSTS_DATAVLDWITHNOBACKUP (5U)
IMCARBNRXEXTDSTS_STRTG (6U)
Other values are invalid
RxDataSrc - Imc Channel ID
Type: ImcArbnRxDataSrc1
Range:
IMCARBNRXDATASRC_PRIM (0U)
IMCARBNRXDATASRC_SECDRY (1U)
IMCARBNRXDATASRC_NOSRC (2U)
All other values are invalid
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
PrimSrcNoDataRxd - No data Received on Primary Source flag
Type: boolean
TRUE – No data received
FALSE – Data received
SecdrySrcNoDataRxd - No data Received on Secondary Source flag
Type: boolean
TRUE – No data received
FALSE – Data received
Return valuevoid
Affected static and global variablesRead and Write to following variables in sub-functions
SigGroupSkipCntr
PrimSrcResyncCntr
SecdrySrcResyncCntr
PrimSrcRollgCntrResync
SecdrySrcRollgCntrResync
ResyncOnPrimActv
ResyncOnSecdryActv
RxdSigDataExtdSts
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsCalls following local function
EvlSigGroupNeverRxdMissSts
External Interface callNone
Called byCalled by following functions
ImcArbnRx

Sub-Function: EvlSigGroupNeverRxdMissSts

None

EvlSigGroupNeverRxdMissSts
Function scopeLocal
DescriptionEvaluates Signal missing / never received cases and updates signals status.
ParametersRequires following parameters
RateGroup - Rate Group Id provided by IMC Arbitration Configuration
Type: uint8
Range:
IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)
IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)
IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)
All other values are invalid
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
Return valueReturns following value
RxSigExtdSts1 - Extended Signal Status
Type: ImcArbnRxExtdSts1
Range:
IMCARBNRXEXTDSTS_NEVERRXD (0U)
IMCARBNRXEXTDSTS_MISS (1U)
IMCARBNRXEXTDSTS_DATAINVLD (2U)
IMCARBNRXEXTDSTS_PREVDATA (3U)
IMCARBNRXEXTDSTS_DATAVLDWITHBACKUP (4U)
IMCARBNRXEXTDSTS_DATAVLDWITHNOBACKUP (5U)
IMCARBNRXEXTDSTS_STRTG (6U)
All other values are invalid
Affected static and global variablesReads / Writes to following variables in functions
SigGroupNeverRxd
SigGroupMissCntr
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessAccesses following configuration data
MISSSIGGROUPTIOUT_CNT_U08
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
ImcArbnRx

Sub-Function: OvrdSigStsDurgStrtUp

None

OvrdSigStsDurgStrtUp
Function scopeLocal
DescriptionSets signal status as STARTING in the Signal Status buffer when initial start-up timer is still running.
ParametersRequires following parameters
SigGroup - Signal Group Id provided by IMC Arbitration Configuration
Type: uint8
Range: 0 to 255
IniTiOutChkCmpl - Initial time-out completion status
Type: boolean
TRUE – Time-out completed
FALSE – Time-out not completed
Return valuevoid
Affected static and global variablesWrites to following variables in functions
RxSigDataExtdSts
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessAccesses following configuration data
SIGGROUPCONFIG_REC
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
ImcArbnRx

Sub-Function: GetImcSigSts

None

GetImcSigSts
Function scopeLocal
DescriptionRemaps Extended signal status value to basic version of Signal Status
ParametersRequires following parameters
SigExtdSts - Extended Signal Status
Type: ImcArbnRxExtdSts1
Range:
IMCARBNRXEXTDSTS_NEVERRXD (0U)
IMCARBNRXEXTDSTS_MISS (1U)
IMCARBNRXEXTDSTS_DATAINVLD (2U)
IMCARBNRXEXTDSTS_PREVDATA (3U)
IMCARBNRXEXTDSTS_DATAVLDWITHBACKUP (4U)
IMCARBNRXEXTDSTS_DATAVLDWITHNOBACKUP (5U)
IMCARBNRXEXTDSTS_STRTG (6U)
All other values are invalid
Return valueReturns following value
RetSts - Remapped basic Signal Status
Type:ImcArbnRxSts1
Range:
IMCARBNRXSTS_NODATA (0U)
IMCARBNRXSTS_VLD (1U)
IMCARBNRXSTS_INVLD (2U)
All other values are invalid
Affected static and global variablesNone
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
GetSigImcData_<DATA_TYPE>

Sub-Function: NoDataRxd

None

NoDataRxd
Function scopeLocal
DescriptionEvaluates no data received condition
ParametersRequires following parameters
StrtByte - Start byte of given Signal Group
Type: uint8
Range: 0 to 255
EndByte - End byte of given Signal Group
Type: uint8
Range: 0 to 255
Return valueReturns following value
RetVal- Indicates whether No data received
Type: boolean
Range:
TRUE - No data received
FALSE - Data Received
Affected static and global variablesNone
Affected inter-runnable variableNone
Exclusive area accessNone
Configuration accessNone
Calibration data accessNone
Called local functionsNone
External Interface callNone
Called byCalled by following functions
ImcArbnRx

Timing / Execution Constraints

Rationale / Comments

• ImcArbnPer1, ImcArbnPer2 and ImcArbnPer3 periodic functions shall be called prior to calling respective primary and secondary signal source transmit layer functions.

• ImcArbnPer4, ImcArbnPer5 and ImcArbnPer6 periodic functions shall be called after calling respective primary and secondary signal source receive layer functions.

• ImcArbn Receive periodics (ImcArbnPer4, ImcArbnPer5 and ImcArbnPer6) functions shall run prior to the ImcArbn Transmit periodic functions ((ImcArbnPer1, ImcArbnPer2 and ImcArbnPer3).

Rates and State Execution

Sub-FunctionRate (ms)Cold InitWarm InitOperateDisable
ImcArbnPer12ReqReqReqReq
ImcArbnPer210ReqReqReqReq
ImcArbnPer3100ReqReqReqReq
ImcArbnPer42ReqReqReqReq
ImcArbnPer510ReqReqReqReq
ImcArbnPer6100ReqReqReqReq

Serial Communications Interfaces

None

Additional Information

Imc Arbitration – Configuration

None

Imc Signals

A Signal Group is a basic element of communication for the Imc Arbitration component.

Signals that are need to be transmitted by IMC shall be configured under any of the Signal Group based on their transmit rate requirements.

Following are the general design assumptions about the signals that are transmitted by Imc Arbitration:

  1. All IMC signals are accessible via RTE to pack it in a particular Signal Group.

  2. Data type of the signals that are transmitted by Imc Arbitration can be anyone of the following: boolean, uint8, sint8, uint16, sint16, uint32, sint32 and float32. No other types of signals are supported.

This component defines unique LOCAL constants for each of the configured signals as Signal ID. Following format is used to define the Signal ID.

Format:

IMCARBN_<signalname>_CNT_U16

signalname – name of the signal in upper case as defined in Imc Arbitration configuration.

Signal Group (SG)

Following elements forms a Signal Group:

Pattern ID: The pattern identification is used as a start of frame to synchronize data on asynchronous communication protocols such as SCI. As shown in the below figure, the pattern ID is 3 bits (101b).

Rolling Counter: The rolling counter is used to monitor for new data. If the rolling counter has been updated, the data is new. If the rolling counter maintains the same value, the data is old. As shown in the below picture, the Rolling Counter is 5 bits.

Signal Group ID: The message ID is used to identify the received data group. As shown in the below picture the Message Id is 8 bits. All data bytes (0 –3) have the same message ID.

Data Byte 0 – 3: Contains packed data of all signals configured for a given Signal Group.

CRC: The Cyclic Redundancy Check is calculated on the message ID and all of the data bytes. This check ensures the integrity of the information being transmitted. The pattern ID and rolling counter are inherently protected by comparing to the complement, and therefore do not need CRC protection. As shown in the figure 2, the CRC is 8 bits.

Pattern Id compliment and Rolling Counter Compliment: The pattern identification and rolling counter complements are used to identify the end of frame, and also as a basic data reception check. If the start of frame (Pattern ID and Rolling Counter) and this frame XOR’d together equal all ones, then the full frame is assumed to have been captured and can be passed on for rolling counter and CRC checks. As shown in the below picture, the Pattern ID Complement is 3 bits and The Rolling Counter Complement is 5 bits.

This component defines unique global constant for each of the Signal Groups. Following format is used to define the Signal Groups.

Format:

IMCARBN_<SigGroupName>_CNT_U08

SigGroupName – Signal Group name in uppercase as defined during configuration

Rate Group

Imc System supports transmission / reception of Signal Groups at three different rates: 2ms, 10ms and 100ms. Every Signal Group shall be listed under any one of the Rate Group. All Signal Groups that are configured under given Rate Group processed at the same rate. E.g. a Signal Group configured under 2ms rate is processed in a 2ms periodic.

Following global constant values are defined to identify the Rate Groups in the system:

IMCARBN_RATEGROUPID2MILLISEC_CNT_U08 (0U)

IMCARBN_RATEGROUPID10MILLISEC_CNT_U08 (1U)

IMCARBN_RATEGROUPID100MILLISEC_CNT_U08 (2U)

Below picture depicts data organization for Imc Arbitration Tx and Rx frames

Below picture depicts Configuration Description for the component.

Types Definitions for Configuration Data

Description
typedef uint32 (*GetSigVal)(void);Typedef for the function pointer that will read data from the source FDD. Note that the return value is always considered as (NOT type-casted) uint32 in order to reduce complexity in Tx/Rx buffer handling.

typedef struct

{

GetSigVal GetSigValOper;

uint16 SigId_u16;

uint8 DestSize_u08;

uint8 StrtLocn_u08;

}SigPrmRec1;

Structure that defines properties of a signal that need to be communicated across two microcontrollers.

GetSigValOper – Pointer to the wrapper function which returns current value of the signal.

SigId_u16 – Signal Id – Unique ID generated for the signal by Imc Arbitrator. Throughout the system, this would be used to get value of particular signal.

DestSize_u08 – Number of bits used for the signal to pack it in its Signal Group.

StrtLocn_u08 - Position of the signal in its Signal Group.

typedef struct

{

SigPrmRec1 const *SigPrm;

uint8 NrOfSig_u08;

uint8 SigGroupId_u08;

boolean PrimSrcOnlySigGroup_logl;

}SigGroupRec1;

Structure that defines properties of a Signal Group (SG).

SigPrm – Pointer to an array of SigPrm_Rec1 type structures. This holds reference to all signals that are configured under particular Signal Group.

NrOfSig_u08 – Number of signals that are packed into particular Signal Group.

SigGroupId_u08 - Unique ID generated for the Signal Group by Imc Arbitrator. Throughout the system, this would be used to get frame of particular Signal Group.

PrimSrcOnlySigGroup_logl– Indicates whether the Signal Group to be transmitted only on Primary channel.

TRUE – Primary only Tx Group.

FALSE – Both Primary and Secondary Tx Group.

Configuration Structure: SIGGROUPCONFIG_REC

This configuration is an array of structures of type SigGroupRec1 containing all Imc configuration data for each configured Signal Groups which will be generated during build time based on the configuration.

Each array element of this structure corresponds to a Signal Group configured. Positon of each Signal Group in this structure will be based out of Rate Group: First Signal Groups configured under 2ms Rate Group, then Signal Groups configured under 10ms Rate Group and finally Signal Groups configured under 100ms Rate Group.

Sample configuration:

/* General configuration for signal group TestSigGroup1 */

const SigGroupRec1 SIGGROUPCONFIG_REC[IMCARBN_TOTALNROFSIGGROUP_CNT_U08] =

{

{

&TESTSIGGROUP1[0], /* Signal group config structure for TestSigGroup1 signal group */

1U,/* Number of signals configured in the signal group */

IMCARBN_SGTESTSIGGROUP1_CNT_U08, /* Signal Group identifier */

TRUE, /* Primary Only Signal group */

},

{

&ImcArbn_ TESTSIGGROUP2[0], /* Signal group config structure for TestSigGroup2 signal group */

1U,/* Number of signals configured in the signal group */

IMCARBN_SGTESTSIGGROUP2_CNT_U08, /* Signal Group identifier */

FALSE, /* Primary Only Signal group */

},

{

&ImcArbn_ TESTSIGGROUP3[0], /* Signal group config structure for this signal group */

5U,/* Number of signals configured in the signal group */

IMCARBN_SGTESTSIGGROUP3_CNT_U08, /* Signal Group identifier */

FALSE, /* Primary Only Signal group */

},

};

Configuration Structure: <Signal Group Name>

This configuration array of structure of type SigPrmRec1 contains Imc configuration data for individual Signal Groups which will be generated during build time based on the configuration.

Individual elements in this array correspond to properties of each Signal configured under given Signal Group.

Following naming convention will be followed while generating Signal Group structures:

<SIGGROUPNAME>_REC

Sample Configuration:

/* Signal configuration for the signal group TestSigGroup1 */

STATIC const SigPrmRec1 TESTGIGGROUP1_REC[] =

{

{

&GetTestSig1, /* Pointer to the function which provides Signal data */

IMCARBN_TESTSIG1_CNT_U08, /* Signal Id */

8U,/* Number of bits to be used in the Signal Group for this signal */

0U, /* Position of the signal from LSB */

},

{

&GetTestSig2, /* Pointer to the function which provides Signal data */

IMCARBN_TESTSIG2_CNT_U08, /* Signal Id */

8U,/* Number of bits to be used in the Signal Group for this signal */

8U, /* Position of the signal from LSB */

},

{

&GetTestSig3, /* Pointer to the function which provides Signal data */

IMCARBN_TESTSIG3_CNT_U08, /* Signal Id */

16U,/* Number of bits to be used in the Signal Group for this signal */

16U, /* Position of the signal from LSB */

},

};

Signal data access functions: Get<Signal Name>

This component will generate a Signal data access function for every IMC Signal configured in the configuration.

Irrespective of configured Signal data type, this function will return uint32 value.

Prototype:

uint32 GetSignalName> (void) ;

This function will read data for configured Signal from respective application component.

Signals of type uint32 will be returned without any typecasting.

Boolean, uint8, sint8, uint16, sint16 signals will be typecasted to uint32 and typecassted value will be returned.

Float32 signals will be read as uint32 without typecasting and will be returned as uint32 (i.e this means underlying float data format will not be disturbed).

Sample Function 1: TestSig1 is a float signal

/* Wrapper function to get value of TestSig1 */

uint32 GetTestSig1(void)

{

uint32 RetVal_Uls_T_u32;

float32 SigVal_Uls_T_f32;

SigVal_Uls_T_f32 = Rte_Read_TestSig1_Val ();

RetVal_Uls_T_u32 = *((uint32*)&SigVal_Uls_T_f32);

return(RetVal_Uls_T_u32);

}

Sample Function 2: TestSig2 is a boolean signal

/* Wrapper function to get value of TestSig2 */

uint32 GetTestSig2(void)

{

uint32 RetVal_Uls_T_u32;

RetVal_Uls_T_u32 = Rte_Read_TestSig2_Val ();

return(RetVal_Uls_T_u32);

}

Configuration Array: RATEGROUPOFFS_CNT_U08

This configuration array provides offset for accessing for each Rate group configuration data in the configuration structure ImcArbn_SigGroupConfig_Rec. It is defined as follows:

RATEGROUPOFFS_CNT_U08 [IMCARBN_NROFRATEGROUP_CNT_U08] = { 0U, IMCARBN_NROF2MILLISECRATEGROUP_CNT_U08, IMCARBN_NROF2MILLISECRATEGROUP_CNT_U08 + IMCARBN_NROF10MILLISECRATEGROUP_CNT_U08 };

Configuration Array: NRSIGGROUPINRATEGROUP_CNT_U08

This configuration array provides number of Signal group defined for each Rate Group in the configuration structure ImcArbn_SigGroupConfig_Rec. It is defined as follows:

NRSIGGROUPINRATEGROUP_CNT_U08 [IMCARBN_NROFRATEGROUP_CNT_U08] = { IMCARBN_NROF2MILLISECRATEGROUP_CNT_U08, IMCARBN_NROF10MILLISECRATEGROUP_CNT_U08, IMCARBN_NROF100MILLISECRATEGROUP_CNT_U08 };

Configuration Array: MISSSIGGROUPTIOUT_CNT_U08

This configuration array provides missing count value for individual Rate Groups. Count values are corresponding to be number of cycles of respective Rate Groups. It is defined as follows:

MISSSIGGROUPTIOUT_CNT_U08[IMCARBN_NROFRATEGROUP_CNT_U08] = { MISSTHD2MILLISECRATEGROUP_CNT_U08, MISSTHD10MILLISECRATEGROUP_CNT_U08, MISSTHD100MILLISECRATEGROUP_CNT_U08

}

Imc Signal Mapping for Receiving FDDs

None

Since configured Imc Signal names may not match with the signal name which is used in by receiving FDDs, Signal mapping mechanism is provided to resolve mapping between IMC input signals and user of IMC input signals.

FDDs which needs signal from Imc Arbitration component shall use following naming convention for naming Signal ID ( which is an argument for GetSigImcData_xxx):

Format:

IMCARBN_<componentshortname><signalname>_CNT_U16

componentshortname – Short name of the component which is interested in receiving the signal from Imc Arbitration.

signalname – name of the signal as defined by the receiving component.

Note that ownership of this constant is still with Imc Arbitration (hence the “IMCARBN_” prefix).

Imc Arbitration component will generate configurations to map these Signal IDs with its own Signal IDs for each of the Imc signal.

e.g.

IMCARBN_FDD1OPTIONALSIGNAME1_CNT_U16

Enumerations - Signal Status, Extended Signal Status and Signal Source

None

This component uses three RTE enumerations and one local enumeration:

  1. Extended Signal Status (ImcArbnRxExtdSts1): Following table indicates list of values and its meaning.

Extended Signal StatusMeaning
IMCARBNRXEXTDSTS_STRTGInitial Start-up time not completed
IMCARBNRXEXTDSTS_DATAVLDWITHBACKUP / IMCARBNRXEXTDSTS_DATAVLDWITHNOBACKUPValid Data Received
IMCARBNRXEXTDSTS_NEVERRXDMessage never received
IMCARBNRXEXTDSTS_DATAINVLDInvalid - CRC, Rolling Counter
IMCARBNRXEXTDSTS_PREVDATAMessage Missing - Threshold yet to be reached
IMCARBNRXEXTDSTS_MISSMessage Missing - Threshold reached

Extended signal status value would be returned to the caller when the Server Runnable GetSigImcDataExtdSts invoked.

  1. Signal Status (ImcArbnRxSts1): Following table indicates list of values and its meaning.

Signal StatusUse case
IMCARBNRXSTS_NODATAInitial Start-up time not completed
IMCARBNRXSTS_VLDValid Data Received
IMCARBNRXSTS_INVLDMessage never received, Invalid CRC, Invalid Rolling Counter, Message missing

Signal status value would be returned to the caller when the Server Runnable GetSigImcData invoked.

  1. Signal Data Source (ImcArbnRxDataSrc1): Following table indicates list of values and its meaning.

Signal Data SourceMeaning
IMCARBNRXDATASRC_PRIMSignal received on Primary Source
IMCARBNRXDATASRC_SECDRYSignal received on Secondary Source
IMCARBNRXDATASRC_NOSRCSignal is not received on any of the sources.

Signal data source would be returned to the caller when the Server Runnable GetSigImcDataExtdSts invoked.

  1. Rolling counter status (ImcArbnRxRollgCntrSts1): This enum used to indicate status of Rolling counter evaluation:

Signal Data SourceMeaning
ROLLGCNTRVLDNEWDATARolling counter valid with New data
ROLLGCNTRVLDOLDDATARolling counter valid with old data
ROLLGCNTRINVLDRolling counter invalid.

Revision Record & Change Approval

RevDateChange Control #Change Description
115/01/17EA4#9025Initial Version
217/01/17EA4#9025

Updates:

1. Tx flow chart to remove ternary operator in the Rolling counter calculation

2. SetRxSigGroup – Data type for Buf changed from uint8* to Ary1D_u8_8*

2 - ImcArbn Design Peer Review Checklists


Overview

Summary Sheet
Synergy Project
FDD


Sheet 1: Summary Sheet
























Rev 1.28-Jun-15

Peer Review Summary Sheet


























Synergy Project Name:


kzshz2: Intended Use: Identify which component is being reviewed. This should be the Module Short Name from Synergy Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. AR350A_ImcArbn_Design
Revision / Baseline:


kzshz2: Intended Use: Identify which Synergy revision of this component is being reviewed Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. AR350A_ImcArbn_Design_1.1.0

























Change Owner:


kzshz2: Intended Use: Identify the developer who made the change(s) Rationale: A change request may have more than one resolver, this will help identify who made what change. Change owner identification may be required by indusrty standards. Akilan Rathakrishnan
Work CR ID:


EA4#9025





























kzshz2: Intended Use: Intended to identify at a high level to the reviewers which areas of the component have been changed. Rationale: This will be good information to know when ensuring appropriate reviews have been completed. Modified File Types:















































































































































































kzshz2: Intended Use: Identify who where the reviewers, what they reviewed, and if the reviewed changes have been approved to release the code for testing. Comments here should be at a highlevel, the specific comments should be present on the specific review form sheet. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. ADD DR Level Move reviewer and approval to individual checklist form Review Checklist Summary:






















































Reviewed:































YesFDD


Source Code


PolySpace









































Integration Manual


Davinci Files








































































Comments:

Open points of review highlighted in yellow. This includes Requirements & Fault Injection points. These points will be addressed in future changes.



























































































General Guidelines:
- The reviews shall be performed over the portions of the component that were modified as a result of the Change Request.
- New components should include FDD Owner and Integrator as apart of the Group Review Board (Source Code, Integration Manual, and Davinci Files)
- Enter any rework required into the comment field and select No. When the rework is complete, review again using this same review sheet and select Yes. Add date and additional comment stating that the rework is completed.
- To review a component with multiple source code files use the "Add Source" button to create a Source code tab for each source file.
- .h file should be reviewed with the source file as part of the source file.





















Sheet 2: Synergy Project

Peer Review Meeting Log (Component Synergy Project Review)



















































Quality Check Items:




































Rationale is required for all answers of No










New baseline version name from Summary Sheet follows








Yes
Comments:



naming convention





































Project contains necessary subprojects








N/A
Comments:










































Project contains the correct version of subprojects








N/A
Comments:










































Design subproject is correct version








N/A
Comments:











































General Notes / Comments:



























































LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Akilan Rathakrishnan


Review Date :

01/18/17
































Lead Peer Reviewer:


Lucas Wendling


Approved by Reviewer(s):



Yes































Other Reviewer(s):










































































Sheet 3: FDD






















Rev 1.28-Jun-15
Peer Review Meeting Log (FDD Review)


























FDD Name:

AR350A_ImcArbn_FDD
FDD Revision:

2

Data Dictionary

AR350A_ImcArbn_DataDict.m
FDD Revision:

2


























Source File Name:


N/ASource File Revision:





Source File Name:



Source File Revision:





Source File Name:















Source File Revision:






























Quality Check Items:




































Rationale is required for all answers of No










Synergy version matches document








Yes
Comments:













































Change log contains detailed description of changes








Yes
Comments:













































Changes Highlighted (for Unit Tester)








Yes
Comments:

Initial Version










































Diagrams have been included per MDD Guideline








N/A
Comments:











and reviewed






































All Design Exceptions and Limitations are listed








Yes
Comments:



















































Design rationale given for all global








N/A
Comments:











data not communicated through RTE ports, per














Design and Coding Standards rules [N9] and [N10].















































All implementation details that differ from the FDD are








N/A
Comments:











noted and explained in Design Rationale






































All Unit Test Considerations have been described








N/A
Comments:



















































General Notes / Comments:























1) Requirement - need to review SRS level requirements, and create component requirement spec (is this SW group?)

2) Move any requirements that are in the FDD design today to the component requirements specification

3) Discuss and clarify that fault injection is not needed on a signal group basis, it is ok for this to fail all signal groups simultaneous. Also make sure there is no need to inject only on one channel (SCI or CAN)

4) Why is it needed to fault inject both CRC and Data byte fault? Check on if CRC needs to be recalc'd with bad data. No fault injection for inverted data?












LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Akilan Rathakrishnan


Review Date :

01/18/17
































Lead Peer Reviewer:


Lucas Wendling


Approved by Reviewer(s):



Yes































Other Reviewer(s):