forked from autosportlabs/RaceCapture-Pro_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGELOG
362 lines (307 loc) · 17.2 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
= 2.9.1 =
* Added CHAP support for APN authentication on 3G modem. This is activated
when user provides an APN password.
https://github.com/autosportlabs/RaceCapture-Pro_firmware/issues/619
* Improved SD Card operations by removing duplicate initialization issue and
removing unnecessary critical task guards which lead to long system pauses.
Other pauses remain, but the SD card logging no longer blocks preemption.
https://github.com/autosportlabs/RaceCapture-Pro_firmware/issues/571
* Back ported fix for the dual malloc issue. We were unintentionally running
both the FreeRTOS allocator and the glibc allocator. Fortunately this did
not cause issues because we made very limited use of the glibc allocator.
This patch adds the code so that we always use the FreeRTOS allocator, even
if we use glibc malloc/realloc/calloc/free calls.
https://github.com/autosportlabs/RaceCapture-Pro_firmware/issues/565
* Fixed issue in USART on MK2 where an improper clearing of the ORE flag could
cause the system to lock up and watchdog.
https://github.com/autosportlabs/RaceCapture-Pro_firmware/issues/562
* Removed unused CAN TX queues in MK2 hal to improve memory
https://github.com/autosportlabs/RaceCapture-Pro_firmware/issues/553
* Fixed invalid status return value when timeout = 0 on CAN TX invocation. Now
we return a useful status, informing the caller of whether or not the message
was added to the mailbox to send.
https://github.com/autosportlabs/RaceCapture-Pro_firmware/issues/549
* Drastically improved Lua GC behavior; built Lua Test script to prove it.
https://github.com/autosportlabs/RaceCapture-Pro_firmware/issues/476
= 2.9.0 =
* Fixed Lua stack overflow bug by increasing Lua Stack size (Issue #411)
* Fixed timer input so it resets to 0 when no input detected (Issue #418)
* Added RPM filtering in software to get rid of unrealistic engine speed
values (Issue #430). NOTE: The new quiet period logic uses your maximum
and pulse per revolution values to calculate the quiet period. Ensure
your maximum RPM and pulse per revolution values are set correctly.
* Fixed Lua onTick timing bug that was causing Lua to wait longer than it
should between onTick events. (Issue #433)
* Quieted various Lua memory alloc/free messages (Issue #410)
* Fixed virtual channel issue where if the virtual channel sample rate was
faster than other channels, it would not record. (Issue #444)
* Added new OBD-II PIDs into our OBD-II system. Special thanks to
Justin Imhoff (https://github.com/imhoffj) for the patch.
* Improved `addChannel` method in Lua environment to validate all inputs.
Now it will error with detailed information if a user supplies an invalid
input parameter or an invalid sample rate. (Issue #424)
* Fix USB suspend bug that causes device to go non-responsive when put into
suspend mode. (Issue #426)
* Fixed timer prescalar skew caused by varying timer speeds settings. Now all
timer speeds report correct values (when frequency is within the timer
measurement range of course. A good test is 100Hz). (Issue #435)
* Fixed telemetry destination. Currently set to telemetry.race-capture.com
(Issue #341)
* Removed MK1 platform from build tree.
* Improve unit test infrastructure to compile all firmware code strictly in
C (was C compiled as C++) and test accordingly.
* Improved unit test platform to be able to directly include C files to test
static methods and other non-visible methods as part of the unit test suite.
* Fixed serial device pass-through watchdog event. (Issue #352)
* Remove obd2SampleRate structure from LoggerConfig since deprecated (Issue #164)
* Standardized accelerometer on SAE J670E vector axis spec and adjusted internal
mappings of RCP units to ensure that default orientation of MK2 matches this
exactly.
* Added Lua method to get GPS altitude in Lua runtime. (Issue #397)
* Fixed timeout support on Lua CAN tx method. (Issue #404)
* Merged RaceCapture codebase into this mainline project.
* Add dynamic cellular modem support. This allows us to support both our current
sim900 card and the new ublox-sara 3G cards. (Issue #182)
* Added support for up to 100 virtual channels in Lua. Up from 30. (Issue #414)
* Adjusted internal process priorities so that the logging snapshot process
runs with this highest priority. This is to ensure that we never miss time a
snap-shot operation.
* Improve `onTick` method in Lua to be able to run at 1000Hz maximum rate. Not
gauranteed to run at that rate (depends on how much Lua code there is to parse)
but local testing shows its possible to do if code is optimized. (Issue #423)
* Added a new `getChannel` method in Lua so users don't have to maintain virtual
channel values in Lua environment variables if they want to later calculate
additional channels using the recorded virtual channel values. (Issue #456)
* Add additional version information to the firmware. Now include build type
(release, beta, dev) and a git description string. (Issue #436)
* Fixed up LED mappings, added deterministic LED control code to firmware. This
prevents us from turning the wrong LED on or off due to different LED mappings
between RaceCapture platforms. (Issue #437)
* Fixed up Lua setLed method to be consistent on which LED is set and to also allow
the user to specify an LED based on a string identifier to be able to control it.
(Issue #437)
* Improved our timer by adding support for selecting which edge we want to use for
timing measurements (Default is falling). Also allows the user to specify the
a quiet period for filtering if they wish to override the automatically calculated
value. A value of 0 will disable the filtering altogether. A value < 0 sets the
code into automatic calculation mode. (Issue #464)
* Fixed OBD-II speed conversion from kph to mph
=== 2.8.7 ===
* Properly handle analog linear scaling offset value.
* Report correct min/max values in logfile.
* Updated telemetry destination to work better with caching services.
* Remove MK1 code from mainstream dev tree and migrate to legacy
branch.
* Fixes a bug in start logic in the lap_stats code and adds 12 new
unit tests to better ensure the stability of that code.
* Fix predictive time unit by having it return 0 when not in
operation. Otherwise it can return invalid data.
* Converted Lua base number to double from float (allows 29 bit CAN
IDs to work correctly).
* Added Lua bitOp bitwise operations
* Fixes a bug in start logic in the lap_stats code and adds 12 new
unit tests to better ensure the stability of that code.
=== 2.8.6 ===
* Make OBD-II engine report temperature and speed that match channel
defaults (deg. F / MPH)
* Improved accuracy of IMU
=== 2.8.5 ===
* Increased GPS task stack size from 200 to 256 to prevent HULK smash.
* Increased printing precision in LUA from 3 to 6 decimal places (as needed).
* Fixed a bug in LUA libraries. Now functions like `math.sin()` no longer
cause the interpreter to crash.
* Prevent OBD-II channels from being included if OBD-II is disabled
* Expanded track detection radius from 1 KM to 5 KM to handle cases when users are
pitted far away from start/finish
* Release more RAM up by disabling LUA prior to flashing script. This fixes
many MK1 issues reported by customers when resetting or programming LUA.
* Fix intermittent hang due to USART receive overflow interrupt storm
* Add in LUA garbage collection parameters to help LUA work in high
memory pressure situations
* Reduce max LUA script size on MK1 to 4K for stability reasons and increased
max script size on MK2 to 16K. This will result in the LUA script being
restored to the default. Please back up your scripts prior to upgrading.
* Fix sector bug with no sector definitions. Now sectors will not arbitrarily
count up.
=== 2.8.4 ===
* Background streaming switch only affects telemetry link; Wireless (Bluetooth) link always streams
* Fixed duplicate log file issue
* Fixed filtering of 500 and 1000 Hz sample rates when config is applied
* Improved tolerance and recovery to SD card write/eject/reinsertion
* Reset CPU after we load factory defaults
* Reduce MK1 firmware size by over 15K by removing unneeded symbols in LUA lib.
* Fixed handling of extended CAN IDs
* Added Lua serial api for initializing serial port and character based reading / writing
* Added getUptime LUA method to get system uptime
* Added getDateTime LUA method to get date and time info. Returns in format
year, month, day, hour, minute, second, millisecond.
* Fixed invalid data print out bug during slow SD Card init
* Fixed meta fields in log file being corrupted during printout.
* Fixed no SPI lock issue on MK1 hardware for f_write call.
=== 2.8.3 ===
* Read cell module stats before checking if on network
* Extend heartbeat timeout to 60 seconds to allow more margin
* Correctly handle threshold for bad telemetry messsages, preventing unnecessary re-connects
=== 2.8.2 ===
* Improved reliability of GPS initialization
=== 2.8.1 ===
* Improved reliability of BT initialization process
=== 2.8.0 ===
* Refactor stage logic to support multiple stage runs without restarting unit.
* Add support for predictive timing in stage runs (same restrictions & rules
apply as in circuit racing).
* Replace start/finish cool off timer with geoTrigger to prevent false start/finish
events when driver is stuck at start/finish for whatever reason.
* Add the elapsed channel. This channel provides the time elapsed since the lap
first began in minutes. Useful for seeing current lap time of the driver.
* Add the CurrentLap channel. Increments when lap timing starts; as opposed to
LapCount which increments when the lap completes.
* Configure GPS module to select native upate rate to match selected sample rate
* Lua script automatically re-runs when re-written and flashed
* Fixed virtual channel name overrun
* Enhanced re-connection logic via heartbeat message
===2.7.9===
* Improved GPS processing performance, reduced chances of dropped packets from module.
* Bumped fast-link telemetry (i.e. Bluetooth link) to 50Hz.
* Reduced delay between PID querying for MK2
* Fixed OBD-II PID configuration message handling for PID counts > 8. PIDs limited to 10 until app supports sending PID configuration in batches
* IMU calibration correctly accounts for physical channel re-mapping
* Guard against floating point overflow for setting configuration options
* Fixed issue where writing IMU config caused subsequent errors in IMU output
===2.7.8===
* Fixed start/finish line detection for MK1
* Added getGpsSats as a Lua function
* Make max virtual channels configurable betwen MK1 (10 max) and MK2 (30 max)
* Fix sector bug so sector now goes to 0 when start/finish is crossed the first time.
===2.7.7===
* Allow cell module to connect to roaming network (roaming charges may apply)
* MK1: fix RPM stuck at zero if RPM signal is applied before RCP unit is powered up
* PWM clock frequency now settable via Lua script, was fixed at 20KHz before.
===2.7.6===
* Ensure timestamps show on every sample, regardless of sample rate combinations
* Fixes / updates for MK1 release
* 2nd CAN channel not set correctly via API
* IMU channel filtering was resetting Pitch and Roll physical mappings to Yaw channel
===2.7.5===
* Allow watchdog reset to prevent Lua from running script in case lua script was responsible for watchdog
* Adjusted USB and I2C interrupt priority to reduce the chance of hard faults
* Virtual Channel: encoding of sample rate incorrect, preventing SD logging in many cases
* Virtual Channel: if re-adding a virtual channel with the same name, update the standing channel with updated settings
===2.7.4===
* Fixed addChannel() return value upon successful creation of channel
===2.7.3===
* Padded all OBDII PID requests with 0x55 to the full 8 byte message for maximum ECU compatibility.
* Corrected Lua initCAN() api call to match documentation
* Fixed GPS Distance bug. Now provided in Miles instead of Km (Because I get 40 rods to the Hogs head and that's the way I likes it...)
===2.7.2===
Only disconnect telemetry upon sustained (10) malformed API message. Resend metadata if telemetry connection is restarted.
===2.7.1===
Initial release of MK2 firmware
=======MK2 Release=======
===2.0.8===
Switched Analog Raw mode to a more meaningful 0-5v mode
Cellular telemetry mode off with default config
===2.0.7===
Updates for UNIX epoch timestamp initialization
Fixed default script flashing
===2.0.6===
Source Code organization
===2.0.5===
If Lua Script crashes firmware and watchdog timer resets, prevent script from running again enabling a recovery mode. When recovery mode is activated, Red LED is activated.
===2.0.4===
removed trivial optimization that prevented correct logging at 10Hz and possibly other Hz.
===2.0.0===
Major release - new JSON API, predictive timing, virtual channels, CAN and OBD2 support.
===1.2.7===
RPM/Timer input value now goes to zero when input signal goes away (i.e. when internal timer counter overflows)
Fixed problem where zero values in log file were not being recorded (treated as nulls)
Optimized code that read channels and populated the sample record object.
Auto file recovery attempt if file write error occurs; falls back to creating a new log file if it cannot auto-recover.
Improved SD performance/reliability when writing at high logging rates (>=100Hz)
Updated to ChanFS 0.10
===1.2.6===
Fixed problem where saving an empty lua script caused garbage script to be saved
Trimmed clock frequency to make logging more accurate (was about 1% off)
Fixed error around omitting samples if samples did not fall on even sample boundaries (specific problem with 30Hz sampling rate)
Implemented experimental 200Hz logging rate
Switched OS preemption tick rate from 300Hz to 200Hz (performance optimization)
Only poll the ADCs when the sample record needs to be written (performance optimziation)
Removed AccelInstalled configuration feature (Accelerometer is always installed)
===1.2.5===
Implemented smoothing algorithm for accelerometer channels using Exponential Moving Average IIR filter
Continuous streaming via connectivity port - added start/stop logging messages
Implemented rate limiting for cellular telemetry & bluetooth - bluetooth limited to 50Hz, Cellular 10Hz. SD still logs at configured rate.
Various code improvements / internal architecture
===1.2.4===
Bluetooth provisioning only attempts once before falling through - to deal with cases if Bluetooth is already connected and can't respond to AT commands
===1.2.3===
Added support for RaceCapture Mobile app and Petrel Data Solo Storm
Redesigned Bluetooth / telemetry streaming API to 2.2
===1.1.14===
Added - and : characters as allowed characters in filtered text fields
===1.1.13===
Fixed 10% too fast logging rate (improved dramatically but still seems about 0.5 - 1% off; needs measurement on scope for fine tuning)
Fixed analog scaling divide by zero issue with raw values outside of configured scaling map
Fixed accelerometer mappings for invert settings and changed mapping to match industry standards
More JSON APIs implemented
===1.1.12===
Fixed regression in cellular APN initialization
Additional JSON API
Additional fixes around scaling value on timer channels
===1.1.11===
Fixed issue where timer scaling was not being recalculated upon changes to pulse per revolution
Work in progress for new JSON API to enable mobile app
Initial work for making cellular modem APN configurable
===1.1.10===
Fixed periodic glitch in accelerometer readings
Fixed periodic SD card file corruption
Disabled accelerometer averaging based on user feedback
Added beginning of logging infrastructure
===1.1.9===
Fixed corrupted data in analog and timer channels when logging precision is zero
===1.1.8===
PWM fixes (logical -> hardware channel mapping was wrong) and general refactoring
Various changes to support testability
Fixed up modp_ftoa temporarily to deal with overflow condition (0xDEADBEEF)
Added lua garbage collect before processing interactive command
===1.1.7===
added metadata preamble to telemetry stream
expanded default GPS target radius to 0.0004 degrees
===1.1.6===
fixed bug in split time data logging (float vs int)
===1.1.5===
removed gps quality field
added split time configuration, detection and logging field
fixed usb comm race issue
===1.1.3===
Fixed lua binding range check issues
===1.1.2===
Fixed accelerometer calibration issues
===1.1.1===
* changed to use new bootloader. install bootloader using SAM-BA then use bootloader to flash
RaceCapture/Pro firmware
* Fixed SD card compatibility issue
* added metadata in header for CSV file format
===0.4.0===
* added bluetooth module telemetry/connectivity
* fixed yaw sensor calibration
* other fixes
===0.3.4===
- Handles no telemetry authorizations scenario correctly
===0.3.3===
- Added wait for telemetry authorization in cellTelemetry.c
===0.3.2===
- Fixed bug where telemetry task would not start
===0.3.1===
- Select telemetry logging mode at strup based on configuration
- Fixed SD card detection / init bug
- Removed extraneous debug code
- Removed activation of LED3 during cellular initialization
===0.3.0===
- initial cut of cellular telemetry
- refactored P2P telemetry into it's own module
- removed a stray debug output in the SD writing routine
===0.2.0===
- Various fixes/ updates to support RaceAnalyzer application
- Fixed script flashing routine
- Added sample runtime channels