forked from autosportlabs/RaceCapture-Pro_firmware
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
597 lines (513 loc) · 28.3 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
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
= 2.19.0 =
* Broadcast logging start/stop message to connected apps to trigger external logging
* Fix little endian CAN bus mapping when in bit mode
= 2.18.6 =
* Fix edge case where firmware may crash if GPS data does not change while interpolating points
= 2.18.4 =
* Enable pit-to-car alert message CAN bus broadcast for app-based telemetry
= 2.18.2 =
* Predictive Timer: Fix time jumping at the end of a lap
* OBDII: match PID responses to the configured CAN mapping ID, to account for standard as well as extended mapping responses
* CAN: Set factory default CAN baud rate to 500K for CAN1, and 1MB for remaning CAN bus networks.
* Lua: Add function to retrieve GPS X,Y,Z velocity to lua binding
* Lua: Add hex formatting to string format function
* API: Add txCan / rxCan for sending / receiving CAN messages directly from the RaceCapture app
= 2.18.0=
* IMU: Enable GSumPctMax and GSumMax channels to act as performance indicators within session
* IMU: Offset Z axis to zero to compensate for gravity
* IMU: Update Gsum calculation to include Z-axis, to account for hills / banked conditions
* Core: Increment ElapsedTime on every sample to maximize analysis resolution
* Telemetry: Enable 'reverse telemetry' to allow Podium to push timing/scoring data and more to device, to blend with regular telemetry
* Lua: Fix issue with getAnalog not adding the offset for 'linear' mode inputs
* Lua: Avoid nil on getChannelByName, if channel name exists
* Lua: Expose GPS DOP to Lua
* WiFi: Also perform a factory reset on WiFi module if user performs a factory reset on device
* WiFi: help prevent WiFi from being stuck in a loop, preventing initializaton
* Logging: Fix case where 10Hz sample rate logs at 5hz under certain circumstances
* CAN: Broadcast pit-to-car alert message on CAN bus
= 2.17.8=
* Telemetry: Disable +URAT feature on 4G as it is not be supported by all carriers
= 2.17.6=
* Lua: Ensure factory reset also resets script, even in out of memory conditions
* TrackMap: Ensure Lap target radius is within reasonable bounds
* LapConfig: Ensure sample rates are consistent for Lap Timing
* Core: Expand IMU device support
* Telemetry: Configure 4G module based on settings from SIM card, for faster connection
= 2.17.4=
* Telemetry: Fix issue with telemetry failing if buffering is enabled + virtual channels present
= 2.17.2=
* Telemetry: Ensure telemetry stream starts correctly if no SD card is installed
= 2.17.0=
* Telemetry: Add telemetry buffering via SD card to account for marginal cellular conditions.
* Core: improve testSD command
= 2.16.0=
* IMU: Add real-time Gsum channel
* Core: Add metric/imperial switches for calculated Distance, GPS Speed, GPS Altitude
* Core: Add ability to reset lap session via Lua or API (RaceCaptureApp)
* Core: API to reset lap stats (via RaceCapture app)
* Lua: Add resetLapStats() function to resetLapStats via scripting
* LapStats: Add SessionTime channel
* Telemetry: Add support for SARA R4 Cat M1 LTE
* Telemetry: Speed up telemetry re-connect by not immediately power-cycling modem after a disconnect.
* OBDII: Honor the CAN bus channel selected for OBDII broadcast and receive
= 2.15.1=
* Core: Ensure ShiftX configuration happens after ShiftX is booted and ready
= 2.15.0=
* Core: add support for ShiftX2/3 lua functions
* Core: broadcast button events from ShiftX2/3 to connected clients for dashboard navigation
* Lua: Reduce default memory limit back to safe level, add lua function to override limit
* Lua: Add Gear calculation helper function
* Lua: Add functions to support ShiftX3
* Config: Ensure we can configure maximum number of CAN channels without crashing firmware
* Config: Fix error updating Track database under certain high memory usage conditions. (Reduce track DB to 50 tracks)
* Config: Add ability to configure a fixed delay between OBDII queries to slow down OBDII engine, used for diagnostic purposes
* GPS: Filter out GPS speed spikes
= 2.14.0=
* Core: Add support for pit-to-car alerting
= 2.13.9=
* lapStats: Prevent edge cases where incorrect timestamp prevents proper lap timing
* lapStats: Require a minimum lap distance of 0.1Km to prevent false lap completion
= 2.13.8=
* GPS: Prevent coarse updating of distance for channel data
* GPS: Limit interpolation to reasonable value
= 2.13.7=
* GPS: Upsample GPS if GPS source is slower than 10Hz, to improve lap timing accuracy and reliability
= 2.13.6=
* Builds for RaceCapture/Apex and PodiumConnect
= 2.13.5 =
* Core: Restore 2.12.x bit mode little endian behavior to resolve regression with E46 CAN bus
* Core: Resolve logger crashing randomly when lap is completed
* Core: Clean up Command Line Interface options, remove obsolete functions
* Core: Add internal test function for stimulating lap timer
= 2.13.4=
* Builds for PodiumConnect
= 2.13.3 =
* GPS: Get UTC time directly from GPS driver
* WiFi: Fix wifi initialization problem on WiFi modules running older firmware
* Lua: prevent a critical Lua error if getchannel fails to find a channel by name; return nil instead.
* Analog: Increase smoothing range by 2x
= 2.13.1 =
* Builds for RaceCapture/Apex and PodiumConnect
= 2.13.0 =
* Core: Ensure Distance channel is always enabled, even if hardware GPS is disabled
* Core: Improve debouncing of front panel Action button
* Core: Update firmware friendly name for RaceCapture/Track to RaceCapture/Track (was just RaceCapture)
* Core: Properly Disable IMU channels if device does not support it
* Core: Fix periodic crash/resets when uploading full configuration via bluetooth
* Logging: Add GoPro camera control (experimental)
* Logging: Ensure action button remains active if GPIO hardware isn't present
* Logging: Enable auto-logger by default
* Lua: current channel values in Lua (inc. direct CAN mapping)
* Lua: Increase Lua memory availability by 20%
* CAN Mapping: Properly decode bit mode little endian values
* CAN Mapping: Add sub-id CAN mapping capabilities
* OBDII: Ensure OBDII PID mode is returned as unsigned value
* OBDII: Support additional OBDII modes
* Telemetry: Set UTC time from telemetry link if UTC time isn't locally available
* Cellular: Improve cell module connection time by reducing time lingering when cell module is in a bad state
* Cellular: read signal strength after registered on network to ensure getting a valid value
* Cellular: Switch default APN to FreedomPop
= 2.12.0 =
* Added obd2 channels capacity in getCapabilities API #940
* Increase number of OBDII channels from 5 to 10 for RaceCapture/Track; 10 to 20 for RaceCapture/Pro #936
* Increase number of direct CAN mapping channels from 5 to 10 for RaceCapture/Track #936
* Switch to newlib nano toolchain to conserve memory #904
* Increased memory savings in RAM and flash #904
* Allow any OBDII mode, treating any mode not 0x01 as an 'enhanced data request', enabling mode 0x23, etc. #915
* Support 32 bit PID requests #924
* Auto detection of 29 bit OBDII vehicles to support Honda, and similar #890
* Add lua function to expose current predictive time #929
* Ensure RELEASE_TYPE_BETA correctly enables watchdog #935
* Ensure direct CAN mapping channels are initialized to 0 after they are added #930
* Resolve pulse per revolution < 1 issue with Lua bindings around getTimerRPM and related functions #928
* Ensure direct CAN channels are registered correctly when uploaded to unit #927
* Fix incorrect direct can mapping with bit mode and big endian #926
* Complete missing implementation of slow counter mode for timer channels #925
* Prevent false-positive error reading phone number from SIM before cell module is ready #923
* Increase OBDII query timeout to 500ms to account for certain ECUs that require longer queries #922
* Complete missing implementation for passive mode OBDII #920
* Increase robustness of GPS initialization #919
* Rename .zip artifact for RaceCapture/Track to RaceCaptureTrack to correctly identify product #914
* Improve debounce logic for new switch on RCP MK3 #901
= 2.11.0 =
* Fixed Backwards X/Y IMU channel for RaceCapture/Track
* Make precision on gyro channels (yaw / pitch / roll ) zero position
* Final updates / bug fixes on OBDII channel mapping
= 2.11.0 RC1 =
* RCP MK3 support
* direct CAN mapping support
* OBDII PID mapping support
* Predictive timer requires high quality GPS data
= 2.10.2 =
* Fixed OBDII Stack Smash issue on RCT
* Fixed version printing information to reflect git tags
* Fixed LUA Raw character handling regression
* Fixed LUA readSer regression
= 2.10.1 =
* Fixed SIM900 failure to connect issue.
* Fix below sea level altitude issue.
* Fix AT parsing bug in cellular for IMEI.
* Fix battery voltage reading issue in RaceCapture devices.
* Improve handling of invalid JSON characters when both encoding and
decoding JSON messages.
* Fix SD card logging bug where we could log sample out of order at
the beginning of the log file.
* Improve track selection algorithm upon track detection .
= 2.10.0 =
* RaceCapture supported!
* Reduction of stack sizes to improve RAM usage
* WiFi support
* TCP socket support
* Streaming telemetry over Wifi Support
* IOCTL support for all communications channels
* Added support for Bluetooth baud rate to adjust to 230400. Will
become default in 2.11.0
* Changed distance calculation to integration of speed over time
instead of point to point measurement.
* Improved usage of newlib libc to reduce code duplication internally.
* Upgraded SD card driver and FATFS subsystem. Result is a very
stable SD card system.
* Created new AT subsystem for use with all AT modems (ESP8266,
U-Blox). Used with ESP8266 currently.
* Audited and fixed all IRQ values to be lower than those of FreeRTOS
to ensure no interrupt conflicts.
* Added debug builds for all dev builds with ASSERT support to help
find hidden bugs early.
* Moved all UART communication to DMA, reducing interrupt rates as
much as 32x.
* Improved testing on API calls to help avoid future regressions.
* Boot loader fixes to work around small bugs in USB.
* LUA now supports scripts without the `onTick` method as one time
only
* Make builds binary identical across platform to help with debugging.
* Add `setActiveTrack` API to allow app to override active track to
improve user experience.
* Adjusted timer to support measuring of slow rotation rates (down to
1/10 Hz)
* Added auto-logger support, a new subsystem that start/stops file
logging based on speed and time parameters
* Added basic metric support to GPS page for European customers.
* Added Serial Logging support to be able to debug any serial port
during run time.
* Added capabilites flags to firmware. Useful for determining what
the firmware supports.
= 2.9.2 =
* Reduce the size of the DMA buffer to ensure small GPS messages are received.
* Add 'break;' statements in timer init to use user setting and not fall into
the default value of "medium".
* Improve the processing of GPS stream data to not require start of message to
be aligned on even bytes.
* Added delays to GPS command responses so we can be sure the GPS chips is
caught up before the next command is sent. Otherwise we see sporadic
failures.
* Fix a bitwise bug logic in the USART init code. This would incorretly
enable usart interrupts on usart channels where DMA was used.
* Fixed compilation on GCC 6 toolchain.
* Verified that USB only power no longer causes the unit to hang.
= 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