FreeEMS Issues - Firmware
View Issue Details
0000473FirmwareSerial Commspublic2011-12-08 15:252012-04-05 00:22
New Feature
0000473: Provide A Bit That Tells The Device If It Has Been Reset
One single bit in the header of the packet that says "we've talked before" and when missing says "i've been reset" would be very useful. Sean suggested a key number but all that is required is a single bit to say that things are not as they have been configured to be, thanks Sean.

There are lots of ways to go about implementing this.

The bit could be set upon query of some specific "query once per session" type, or upon querying all of those types, or set by the connected application explicitly.

There could even be a status register that denied all other requests with an "not properly interrogated" error if all interesting data hasn't been previously pulled from the device.

Another way could be to have a state bit in the ecu and a state bit in the app:

App > (to) ECU

0 > 0 error = ecu has reset without your knowledge
1 > 1 error = ecu has been interrogated without your knowledge
1 > 0 set = set the ecu to having been interrogated
0 > 1 normal = ecu has been set as being interrogated

The first packet on a cold connect would be 1 from app and 0 inside ECU and would set the 0 to 1 and return normally. The second and all subsequent packets would send zero and if the ECU is one, it would respond normally, if the ecu is zero it responds with an error. At cold connect if the ecu is already one with the first packet from an app, the app knows that another app has been in there and that it should be careful about what it does and what state the device is in.

Another similar way would involve a specific packet to set that bit and the ecu to always match what was inside or error. This way could be done without it being part of the protocol provided that there was a header bit free for this.
No tags attached.

There are no notes attached to this issue.