[Ovmsdev] Multi frame query

didier at ernotte.com didier at ernotte.com
Fri Apr 2 18:55:08 HKT 2021

Don't you think this fix has a bigger impact on vehicle.cpp, and all implementations ?I have started creating the Jaguar Ipace vehicle, and I see a very similar code (and fix) in IncomingPollReply, for the size (16 bits) of the "length"

 protected: virtual void PollerStateTicker(); virtual void IncomingPollReply(canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t length, uint16_t mlremain); virtual void IncomingPollError(canbus* bus, uint16_t type, uint16_t pid, uint16_t code);

void OvmsVehicleJaguarIpace::IncomingPollFrame(CAN_frame_t* frame){
 uint8_t frameType = frame->data.u8[0] >> 4; uint16_t frameLength = frame->data.u8[0] & 0x0f; uint8_t* data = &frame->data.u8[1]; uint16_t dataLength = frameLength;


    Le mardi 30 mars 2021 13 h 58 min 20 s UTC−4, Greg D. <gregd2350 at gmail.com> a écrit :  
  Just to close out this loose end...
 OBD2ECU doesn't do any multi-frame PIDs other than responding to requests for the VIN (fixed format) and ECU Name (20 characters, user configurable).  The flow control frame for both of these are kludged with a simple (fixed) 10ms delay, i.e. it doesn't actually wait for the flow control frame to be received before proceeding, and ignores them when received.  Proper processing was seen as unnecessary complexity when I wrote the first prototype, and was never "corrected".
 Michael Balzer wrote:
 the PID scanner normally works perfectly with multi frame responses, but I haven't had a response that long yet.
 For 1503 bytes, 215 consecutive frames need to be transmitted. The PID scanner requests these to be sent with 25 ms separation time, so they should need 5.375 seconds.
 Maybe some frame gets lost, or maybe the device doesn't allow a separation time that high for a transmission that huge.
 Your log quote wasn't from the re-pid component but from obd2ecu, which has nothing to do with the RE tools. You should raise the log level for re-pid to see more info. Another tracing option is to use the CAN log monitor.
 Btw, you should never need 30 seconds timeout for a PID poll, as the scanner checks against the last frame reception.
 Am 28.03.21 um 17:52 schrieb didier at ernotte.com:
 I am investigating some PID with very long data. I am using the PID scanner for this. When I turn on the log level debug , I can see this as the first repy
   D (1456677) obd2ecu: Rcv 7ec: 8 (15 df 62 48 83 0 0 0)

>From the Canbus doc, I understand that the first "1x (15)" tells me that this is the first frame of a multi frame, and the length is "5df" .
The Pid scanner seems to return only "df", not "5df" data, and I can see in the log that I have around 1500 byte returned, not 220.
Any explanation ? anyone see this problem as well ?

The scan command is (I had to hack the code to allow timeout > 10sec)

re obdii scan start 1 7e4 4883 4883 -r500-7ff -t22 -x30  
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26 
OvmsDev mailing list
OvmsDev at lists.openvehicles.com
OvmsDev mailing list
OvmsDev at lists.openvehicles.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210402/81f1c180/attachment.htm>

More information about the OvmsDev mailing list