-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathCHANGES.txt
298 lines (238 loc) · 11.9 KB
/
CHANGES.txt
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
0.4.1
General:
* Fix compiler warnings
* Replace deprecated attribute ICACHE_RAM_ATTR by IRAM_ATTR
* Update Arduino IDE setup scripts to cover version 3.1.2 of ESP8266 board package
README.md:
* Mention version of Arduino IDE
* Refer to ESP8266 board package version 3.1.2
src/VanBusRx.h:
* Add a few IDENs to be recognized by TVanPacketRxDesc::IsSatnavPacket
src/VanBusRx.cpp:
* Remove unused code "flip three equal bits in a row" (seen this only once, ever)
* Add and invoke new method TVanPacketRxDesc::CheckCrcFix
* Try to handle bit deletion errors
examples/PacketParser:
* Various small fixes and updates
* Add example of log output
* Prevent RX queue overrun
0.4.0
General:
* Add support for ESP32 platform/architecture
* Added shell (.sh) and batch (.bat) scripts that help to set up the Arduino IDE with all the
correct board options
README.md:
* Fix broken links
src/VanBusRx.h:
* Move method 'TVanPacketRxQueue::GetLastMediaAccessAt' from private to public
0.3.4
General:
* Fix compiler warnings
README.md:
* Add note on clamping circuit
* Add note about the removal of the terminator resistors on the transceivers
* Document new method 'TVanBus::SetDropPolicy'
* Fix links
src/VanBus.h:
* Add method 'TVanBus::SetDropPolicy'
src/VanBusRx.cpp:
* Fix compilation error
* Small updates in the bit timing criteria
extras/Schematics:
* Add clamping circuit: seems to reduce amount of bit errors
examples/SendPacket:
* Add possibility to send also negative temperature values
examples/PacketParser:
* IDEN 0x8CE (SATNAV_STATUS_3_IDEN): add sat nav language codes
examples/DisplayNotifications:
* Add possibility to send also negative temperature values
0.3.3
General:
* Moved code to src/ subdir to adhere to '1.5 library format (rev. 2.2)'
* Updated README.md
* All lines end consistently with "\n" (no more lines ending with "\r\n")
* Fix compiler warnings
src/VanBusRx.cpp:
* Implement simple packet drop policy for queue filling up
* Experiment: use time average of measured one-bit CPU cycles to adjust timing of bits
* If (nBits == 0): reset jitter if last bit was actually flipped
* If there are still 9 last read bits at end of packet, store those bits and keep the read
result VAN_RX_PACKET_OK
* Small updates in the bit timing criteria
src/VanBusRx.h:
* Move methods 'getIfsDebugPacket' and 'getIsrDebugPacket' down, to match as listed in README.MD
* Moved method '_AdvanceHead' from .h file to .cpp file
extras/schematics:
* Added labels
examples/LiveWebPage:
* Rename IDEN 0xB0E from ECU_IDEN to SATNAV_GPS_INFO
examples/PacketParser:
* Rename IDEN 0xB0E from ECU_IDEN to SATNAV_GPS_INFO
0.3.2
General:
* Updated README.md
VanBusRx.cpp:
* Decrease CPU load by using table-based CRC calculation
* struct TIsrDebugData, struct TIfsDebugData: renamed nCycles to nCyclesMeasured
* Added new method TVanPacketRxQueue::IsEnabled()
* RxPinChangeIsr(): save a few precious bytes of RAM
* Prevent CPU monopolization by noise on bus
* TVanPacketRxQueue::Disable(): also run timer1_disable(), just in case
* Improved keeping the 'nQueued' counter up to date
* Add extra patterns for SOF detection
* Small updates in the bit timing criteria
0.3.1
General:
* Updated README.md
VanBus.h:
* TVanBus::DumpStats(...): pass also optional parameter "longForm"
* class TVanBus: add member functions 'QueueSize()', 'GetNQueued()' and 'GetMaxQueued()'
VanBusRx.cpp:
* TVanPacketRxDesc::CheckCrcAndRepair(...): try to fix packet by flipping three equal bits in a row
* TVanPacketRxDesc::CheckCrcAndRepair(...): multiple fixes in the "Flip two bits" part
* TVanPacketRxDesc::CheckCrcAndRepair(...): check first with only the "uncertain bit" flipped
* Better handling of unexpected new bit coming after an "ACK" (in which case it is not an "ACK" but the
first "1" bit of the next byte)
* Add extra patterns for SOF detection
* Small updates in the bit timing criteria
VanBusRx.h:
* Added new method TVanPacketRxQueue::GetNQueued(), returning current number of packets waiting in Rx queue
* class TVanPacketRxQueue: 'nQueued' and 'maxQueued' must be declared volatile
* Remove unnecessary debugging data/code(isrData->nIsrs)
0.3.0
General:
* Added new header file 'VanBusVersion.h'
* Consistently use Unix-style LF line endings
VanBusRx:
* More flexible SOF detection and smarter handling of jitter and missed interrupts, leading to less
CRC error packets
* New method GetMaxQueued() returning the highest fill level of the RX queue since boot time
* Improved ISR debugging (as enabled with #define VAN_RX_ISR_DEBUGGING): better functionality and
reduced RAM usage
* TVanPacketRxDesc::IsQueueOverrun(): reads and clears overrun bit within same invocation
* TVanPacketRxDesc::CheckCrcAndRepair(...):
- Added optional parameter 'wantToCount', a pointer-to-method of class TVanPacketRxDesc, returning a
boolean. It can be used to limit the repair statistics to take only specific types of packets into
account.
- Process a new member field, 'uncertainBit1', which the RX pin ISR can set when it is not certain
about a bit value.
- Re-introduced repair by flipping of two (non-consecutive) bits (but only the last bit in a sequence
of same bit values is flipped).
* TVanPacketRxDesc::DumpRaw(...):
- print the command flags also as HEX value
- also print the ASCII character representation of each byte, if possible
* TVanPacketRxQueue::DumpStats: print also the highest fill level of the RX queue
* Use compiler directive 'inline __attribute__((always_inline))' for routines that are called by the
RX pin ISR.
* nBitsTakingIntoAccountJitter(...): updates in the bit timing criteria
examples/LiveWebPage:
* Renamed TIME_IDEN (IDEN 984) to MFD_LANGUAGE_UNITS_IDEN and updated the parsing and displaying of
these packets
* Improved repeat-handling (held-down button) of IR remote control
* Updated JSON data (PacketToJson.ino) to be in line with VanLiveConnect
(https://github.com/0xCAFEDECAF/VanLiveConnect)
* Print also ESP MAC address and CPU factor on startup, pass ESP reset reason and reset info via
JSON data
examples/PacketParser:
* Renamed TIME_IDEN (IDEN 984) to MFD_LANGUAGE_UNITS_IDEN and updated the parsing of these packets
* SATNAV_STATUS_2_IDEN (IDEN 7CE) packets: added parsing of newly found field "guidance_language"
* SATNAV_GUIDANCE_IDEN (IDEN 64E) packets: added handling of 16-byte packets with two detailed
instructions ("take left/right fork/exit, then ...")
* enum VanPacketFilter_t: added item VAN_PACKETS_SAT_NAV_PKTS
0.2.5
General:
* Updated README.md
* Code formatting
VanBusRx:
* Added inter-frame space (IFS) debugging to be able to see why packets are sometimes missed
* Improved start of frame (SOF) detection to decrease the number of missed packets
examples/LiveWebPage.ino:
* Improved handling (timing) of IR remote control
* Update JSON data (PacketToJson.ino) to be in line with VanLiveConnect
(https://github.com/0xCAFEDECAF/VanLiveConnect)
* Various fixes in the HTML page (LiveWebPage.ino)
* Websocket: send instead of broadcast
0.2.4
VanBusRx:
* Added optional 'longForm' parameter to TVanPacketRxQueue::DumpStats method
* Added #define VAN_BUX_RX_VERSION 000002004
* Added new method TVanPacketRxDesc::Millis returning packet time stamp in milliseconds
examples/DisplayNotifications.ino:
* Re-trigger the shown notification every 7 seconds, so that it is displayed permanently
examples/PacketParser.ino
* Updated comment about sat nav street format
0.2.3
General:
* Compiles also for ESP32 architecture (but not tested!)
examples/LiveWebPage.ino:
* Improved compile-time options in Config.h
* Detecting and handling of button delay and repeat when held-down on IR remote control
* Various optimizations and improvements in packet parsing and handling (PacketToJson.ino)
0.2.2
VanBusRx.cpp:
* Added methods TVanPacketRxQueue::Disable() and TVanPacketRxQueue::Enable(), to be used when other
timing-critical / interrupt-driven tasks need to be done, like e.g. writing to SPIFFS (SPI Flash File System).
* Method TVanPacketRxQueue::Setup() returns false if already setup
* Experimental: accept a few "slightly-off" SOF bytes (normally always 0x0E)
VanBusRx.h:
* Added method TVanPacketRxQueue::IsSetup(), to check if the Setup() method was called
examples/DisplayNotifications.ino:
* Offer interactivity via menu on Serial
examples/LiveWebPage.ino:
* Various bugfixes and updates on parsing sat nav data structures
* Small update in parsing FM tuner data
* Updates in parsing and presentation of sat nav status and guidance data
* "cd_changer_current_disc": set to "---" if no discs present
* Show also ESP (hardware/board) data
* Added packet category VAN_PACKETS_COM2000_ETC for filtering serial output
* Various updates and bugfixes
examples/PacketParser.ino
* Various updates and bugfixes
0.2.1
VanBusRx.cpp: various changes that seem to decrease the number of packets with CRC errors
Added parameter 'queueSize' to TVanPacketRxQueue::Setup(...), giving option to set queue size at runtime
examples/LiveWebPage.ino:
* Added separate 'Config.h' file for Wi-Fi settings
* Added reading of infrared remote control
* Added reading of ESP system data
* Improved way to filter which packets are dumped (in JSON format) to Serial
* Various packet parsing improvements
examples/PacketParser.ino:
* Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors
* Various packet parsing improvements
examples/DisplayNotifications.ino
* Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors
examples/SendPacket.ino
* Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors
examples/VanBusDump.ino
* Disabled Wi-Fi to practically eliminate occurrence of packets with CRC errors
0.2.0
Added function to transmit packets onto the VAN bus:
* New class 'TVanBus' with single instance 'VanBus'.
* New class 'TVanPacketTxQueue' with single instance 'VanBusTx'.
* Renamed existing class instance 'VanBus' to 'VanBusRx'.
Still lots of TODOs: see code. Also:
* Transmitting an in-frame response
* Transmitting a "read" packet then receiving the in-frame response
Added 'DisplayNotifications.ino' example - send all MFD warnings, one by one.
Added 'SendPacket.ino' example - show all received information from the VAN bus on a "live" web page.
Added 'LiveWebPage.ino' example - send a packet on the VAN bus.
Many improvements and documentation updates.
0.1.2
Added 'PacketParser.ino' example sketch, showing all packets that I could decode from my vehicle.
Various small improvements, including:
* FloatToStr(...): save 12 statically allocated bytes of precious RAM.
* nBitsFromCycles(...): small correction seems to decrease number of CRC errors.
* TIsrDebugPacket::Dump(...): fix to be in line with the parsing by PinChangeIsr().
* class TVanPacketRxQueue:
- 'Receive' method: optionally report queue overrun condition.
- 'DumpRaw' method: various changes in output formatting, added option to change last character, e.g. to '\0'
for dumping into char array.
- Removed '_full' flag: not necessary.
- Added private method '_IsQueueOverrun()'.
- Removed private method '_IsFull()'.
* Updated 'library.json' and 'library.properties'.
0.1.1
Removed mentioning ESP32 as supported hardware
0.1
Initial version