Table 144: TransferData Negative Response Example
T = Frame Sent By Tester, N = Frame Sent By Node; shaded region indicates PCI
Frame Type
CAN Id
#1
#2
#3
#4
#5
#6
#7
#8
T(USDT-FF)
$241
$10
$FE
$36
$00
$23
$FF
aa
bb
N(USDT-FC)
$641
$30
$00
$00
---
---
---
---
---
T(USDT-CF)
$241
$21
cc
dd
ee
ff
gg
hh
ii
:
T(USDT-CF)
$241
$2x
xx
yy
zz
---
---
---
---
N (USDT-SF)
$641
$03
$7F
$36
$78
---
---
---
---
:
N (USDT-SF)
$641
$03
$7F
$36
$85
---
---
---
---
--``,,``````,``,,``,,,`,`,`,,-`-`,,`,,`,`,,`---
CameraLoops.com
GM WORLDWIDE ENGINEERING STANDARDS
GMW3110
© Copyright 2010 General Motors All Rights Reserved
February 2010
Page 167 of 336
8.13.6 Node Interface Function.
8.13.6.1 Node Interface Data Dictionary (Table 145).
Table 145: Node Data Dictionary of TransferData Service Pseudo Code
Variable/Meaning
Values
message_data_length
TransferData_Allowed
Reference Common/Global
Pseudo Code Data
Dictionary For Definition Of
These Flags/Variables
C_NumAddrBytes
This is a constant that is used in the pseudo code to handle different length
values in the startingAddress parameter.
Set to number of bytes in
startingAddress parameter
8.13.6.2 Node Interface Pseudo Code.
If a node supports boot software then the operational software only
needs minimum support of this service. This is true for nodes with boot software because a service $34
transitions the program operation back to the boot software (see service $34) and the $34 service is required
before the $36 service is allowed. ECUs with boot software only need to support the Serv_36_Msg_Recvd()
pseudo code in the operational software and the Boot_36_Msg_Recvd() in the boot software. ECUs that do not
have boot software shall support the functionality of the Boot_36_Msg_Recvd() pseudo code in the operational
software.
BEGINFUNCTION Serv_36_Msg_Recvd()
send Negative Response ($7F $36 $22)/* conditions not correct since the $34 service is not active if the ECU
is executing the operational software. */
ENDFUNCTION
BEGINFUNCTION Boot_36_Msg_Recvd()
/* The check below for $Level $80 is only needed if that sub function is supported by the ECU */
IF ( (($Level != $00) AND ($Level != $80)) OR
(message_data_length < (2+C_NumAddrBytes)) OR
(($Level = $00) AND (message_data_length < (3+C_NumAddrBytes ))) ) THEN
send Negative Response ($7F $36 $12) /* invalid format */
ELSE IF (TransferData_Allowed = NO) THEN
send Negative Response ($7F $36 $22)
ELSE IF(($startingAddress is invalid) OR ($startingAddress + (message_data_length - $02 -
C_NumAddrBytes) is invalid)) THEN
send Negative Response ($7F $36 $31) /* Request out of range */
ELSE
SELECT FIRST
WHEN ($Level = $DL)/* $00 Download */
IF (the node cannot process the request within P2
C
) THEN
send Negative Response ($7F $36 $78) /* RequestCorrectlyReceived-ResponsePending */
perform any necessary actions to the data block /*, i.e., program to flash memory etc.*/
ENDIF
IF (errors are detected) THEN
send the appropriate negative response ($7F $36 $22) or ($7F $36 $83) or ($7F $36 $85).
ELSE
send ($76) /* programming of block successfully completed */
ENDIF
--``,,``````,``,,``,,,`,`,`,,-`-`,,`,,`,`,,`---
CameraLoops.com
Do'stlaringiz bilan baham: |