File tree Expand file tree Collapse file tree 2 files changed +20
-0
lines changed
Expand file tree Collapse file tree 2 files changed +20
-0
lines changed Original file line number Diff line number Diff 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 */
Original file line number Diff line number Diff 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 */
You can’t perform that action at this time.
0 commit comments