Releases: 0xCAFEDECAF/VanBus
Releases · 0xCAFEDECAF/VanBus
V0.5.0
General:
- Fixes for ESP32 board package
- Added 'Arduino Lint' workflow and badge
src/VanBusRx.cpp, src/VanBusTx.cpp:
- Add possibility to drive analyzer pin for use with e.g. Saleae USB Logic Analyzer
- Fix buggy packet sending on ESP32:
- Use correct timer API invocations
- Use separate timer for packet transmission
- Cleanup timer
#defines
Examples:
- Show Arduino board package version on startup
V0.4.2
General:
- Updates for esp32 board package, major versions 2 and 3
- Fix compiler warnings
- Added 'compile' workflow and badge
V0.4.1
General:
- Fix compiler warnings
- Replace deprecated attribute
ICACHE_RAM_ATTRbyIRAM_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
V0.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::GetLastMediaAccessAtfrom private to public
V0.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
V0.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
getIfsDebugPacketandgetIsrDebugPacketdown, to match as listed inREADME.md - Moved method
_AdvanceHeadfrom .h file to .cpp file
extras/schematics:
- Added labels
examples/LiveWebPage:
- Rename IDEN
0xB0EfromECU_IDENtoSATNAV_GPS_INFO
examples/PacketParser:
- Rename IDEN
0xB0EfromECU_IDENtoSATNAV_GPS_INFO
V0.3.2
General:
- Updated README.md
VanBusRx.cpp:
- Decrease CPU load by using table-based CRC calculation
struct TIsrDebugData,struct TIfsDebugData: renamednCyclestonCyclesMeasured- Added new method
TVanPacketRxQueue::IsEnabled() RxPinChangeIsr(): save a few precious bytes of RAM- Prevent CPU monopolization by noise on bus
TVanPacketRxQueue::Disable(): also runtimer1_disable(), just in case- Improved keeping the
nQueuedcounter up to date - Add extra patterns for SOF detection
- Small updates in the bit timing criteria
V0.3.1
General:
- Updated README.md
VanBus.h:
TVanBus::DumpStats(...): pass also optional parameterlongFormclass TVanBus: add member functionsQueueSize(),GetNQueued()andGetMaxQueued()
VanBusRx.cpp:
TVanPacketRxDesc::CheckCrcAndRepair(...): try to fix packet by flipping three equal bits in a rowTVanPacketRxDesc::CheckCrcAndRepair(...): multiple fixes in the "Flip two bits" partTVanPacketRxDesc::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:nQueuedandmaxQueuedmust be declared volatile- Remove unnecessary debugging data/code (
isrData->nIsrs)
V0.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
- 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
V0.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 - Various fixes in the HTML page (
LiveWebPage.ino) - Websocket: send instead of broadcast