Skip to content

Commit 98844ea

Browse files
committed
Handle 0x02/0xF4 group reading response
1 parent 1d33f70 commit 98844ea

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

kwp1281_tool/firmware/kwp1281.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,24 @@ kwp_result_t kwp_read_group(uint8_t group)
484484
uint8_t block_title = kwp_rx_buf[2];
485485
if (block_title == KWP_ACK) { return KWP_SUCCESS; }
486486

487+
// some modules like 043906022E don't return the group reading in
488+
// an 0xE7 block. when such modules receive a 0x29 group reading
489+
// request, they first send a 0x02 block with header data that
490+
// describes the data that will follow. each successive 0x29
491+
// group reading is then answered with an 0xF4 data block.
492+
if (block_title == KWP_R_GROUP_READ_HEADER) {
493+
result = kwp_send_group_reading_block(group);
494+
if (result != KWP_SUCCESS) { return result; }
495+
496+
result = kwp_receive_block();
497+
if (result != KWP_SUCCESS) { return result; }
498+
499+
block_title = kwp_rx_buf[2];
500+
if (block_title != KWP_R_GROUP_READ_DATA) { return KWP_UNEXPECTED; }
501+
}
502+
503+
if (block_title == KWP_R_GROUP_READ_DATA) { return KWP_SUCCESS; }
504+
487505
/*
488506
* Handle 0xE7 measurements or string response
489507
*/

kwp1281_tool/firmware/kwp1281.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ uint8_t kwp_component_2[16]; // " 0001"
9595
// Premium 4 5
9696
#define KWP_READ_IDENT 0x00 /* Read Identification X X */
9797
#define KWP_READ_RAM 0x01 /* Read RAM X X */
98+
#define KWP_R_GROUP_READ_HEADER 0x02 /* Response to Group Reading: Header */
9899
#define KWP_READ_ROM_EEPROM 0x03 /* Read ROM or EEPROM *1 *1 */
99100
#define KWP_OUTPUT_TESTS 0x04 /* Actuator/Output Tests X X */
100101
#define KWP_CLEAR_FAULTS 0x05 /* Clear Faults X X */
@@ -115,6 +116,7 @@ uint8_t kwp_component_2[16]; // " 0001"
115116
#define KWP_SECURITY_ACCESS 0xD7 /* Security Access Request *3 *3 */
116117
#define KWP_R_GROUP_READING 0xE7 /* Response to Group Reading X X */
117118
#define KWP_SAFE_CODE 0xF0 /* Request or Response to R/W SAFE Code X */
119+
#define KWP_R_GROUP_READ_DATA 0xF4 /* Response to Group Reading: Data */
118120
#define KWP_R_OUTPUT_TEST 0xF5 /* Response to Actuator/Output Tests X X */
119121
#define KWP_R_ASCII_DATA 0xF6 /* Response with ASCII Data/ID code X X */
120122
#define KWP_R_WRITE_EEPROM 0xF9 /* Response to Write EEPROM X */

0 commit comments

Comments
 (0)