@@ -10,6 +10,7 @@ ISOTP_HANDLER::ISOTP_HANDLER()
10
10
sendPartialMessages = false ;
11
11
lastSenderBus = 0 ;
12
12
lastSenderID = 0 ;
13
+ padByte = (char )0xAA ;
13
14
14
15
modelFrames = MainWindow::getReference ()->getCANFrameModel ()->getListReference ();
15
16
@@ -21,6 +22,11 @@ ISOTP_HANDLER::~ISOTP_HANDLER()
21
22
disconnect (&frameTimer, SIGNAL (timeout ()), this , SLOT (frameTimerTick ()));
22
23
}
23
24
25
+ void ISOTP_HANDLER::setPadByte (char newpad)
26
+ {
27
+ padByte = newpad;
28
+ }
29
+
24
30
void ISOTP_HANDLER::setExtendedAddressing (bool mode)
25
31
{
26
32
useExtendedAddressing = mode;
@@ -67,7 +73,7 @@ void ISOTP_HANDLER::sendISOTPFrame(int bus, int ID, QByteArray data)
67
73
68
74
if (data.length () < 8 )
69
75
{
70
- QByteArray bytes (8 ,0 );
76
+ QByteArray bytes (8 , padByte );
71
77
bytes.resize (8 );
72
78
bytes[0 ] = data.length ();
73
79
for (int i = 0 ; i < data.length (); i++) bytes[i + 1 ] = data[i];
@@ -76,7 +82,7 @@ void ISOTP_HANDLER::sendISOTPFrame(int bus, int ID, QByteArray data)
76
82
}
77
83
else // need to send a multi-part ISO_TP message - Respects timing and frame number based flow control
78
84
{
79
- QByteArray bytes (8 , 0 );
85
+ QByteArray bytes (8 , padByte );
80
86
bytes[0 ] = 0x10 + (data.length () / 256 );
81
87
bytes[1 ] = data.length () & 0xFF ;
82
88
for (int i = 0 ; i < 6 ; i++) bytes[2 + i] = data[currByte++];
@@ -89,7 +95,7 @@ void ISOTP_HANDLER::sendISOTPFrame(int bus, int ID, QByteArray data)
89
95
frameTimer.start ();
90
96
while (currByte < data.length ())
91
97
{
92
- for (int b = 0 ; b < 8 ; b++) bytes[b] = 0x00 ;
98
+ for (int b = 0 ; b < 8 ; b++) bytes[b] = padByte ;
93
99
bytes[0 ] = 0x20 + sequence; // Consecutive Frame starts from 0x20 + 1 (2: Frame type, 1: Sequence number)
94
100
sequence = (sequence + 1 ) & 0xF ;
95
101
int bytesToGo = data.length () - currByte;
0 commit comments