It's been about six weeks since I posted the last update to the site, so thought I better post something...
Since the last post I've been working on implementing a modular system, with the idea that the basic logger can handle control inputs from USB, Bluetooth LE, a simple stop/go button interface, or a touch panel. The "Pass Through" interface shown in the last post is intended as a way of allowing applications running on mobile devices to communicate with the ECU without the need to micro-manage the low level protocol. You send a Service ID, Resource ID and any other necessary data for the request and get back a positive response plus data, or negative response if the request fails.
The second module is a configurable logger. And this is what I've been working on since start of July.
The logger is currently set up with definitions for the 18 or so diagnostic requests that I think you'd realistically want to log.
Requests are set by using something like..
AT M LC 09 0D 1B
LC indicates a "Log Configure" command, and the items to log are specified using the Request ID. In this example 0x09 = RPM, 0x0D = Road Speed, and 0x1B = Throttle Voltages. The command input is not case or space sensitive.
Starting and stopping logging is controlled by AT commands.
AT M LS AT M LE
These are the "Log Start" and "Log End" commands respectively.
By default the data from the logger is in ECU format with no transformations. Using the LR command
AT M LR
toggles between "Raw" and "Convert" mode which converts Kelvin to Celsius and shifts decimal places where appropriate.
The next thing I need to tackle is the logging to SD Card and the button control interface.