Closed anthonyhbest closed 1 month ago
0x00 is ASCII null. 0x30 is '0'.
BUT, yes, the method the tool uses to check for a null termincator is incorrect. Your second example should have passed.
The implementation of 6.1.6.2.e was taken very literally: "Fail if engine family has <> 12 characters before first asterisk character (ASCII 2Ah) or “null” character (ASCII 00h)." I assume this requirement means "Fail if engine family is not exactly 12 characters." That the field is delimited from another field by *, terminated by null, or terminated by the end of message doesn't matter.
The engine family name is understood to be exactly 12 characters. This is clear from https://www.epa.gov/ve-certification/information-about-family-naming-conventions-vehicles-and-engines
Which includes
Thus checking for a length of exactly 12 characters after YYYYE-MY (which was defined by CARB) is correct. String termination may be provided by * (2Ah), or null (00h), or omitted altogether.
The model year code appears below this figure. R = 2024.
The response is expected to have 8 + 12 = 20 characters.
A 24 character payload without string termination at byte 21 is incorrect, and should have failed.
The 24 character payload with 2Ah at byte 21 should have passed.
e. Accepts a null (00h) character in addition to 2Ah, in recognition of null’s common use as a string terminator. Thus e. appears to be correct.
When testing DM56 for MY24 support, tool is issuing an incorrect FAIL:
Regardless of using the ASCII * or ASCII null character the J1939-84 tool is issuing a fail. Below are excerpts from both J1939-73 and J1939-84 text. J1939-73:
J1939-84:
![image](https://user-images.githubusercontent.com/94923793/194125362-3a165b4b-fe24-46ea-a23a-44b15dc3cd9d.png)