Comments (4)
@rs38 I'll tell you. As I worked on UDS and KWP, trying to extend this library to cover both protocols, I began to understand how many OBD2-isms were lurking in LTSupportAutomotive
. The major deal-breaker though was the missing support for multiple OBD2 adapters, in particular for adapters that handle the ISOTP fragmentation on the controller layer.
Digression: Handling ISOTP fragmentation on the controller (OBD2 adapter) is a necessity for transmitting large ISOTP frames, i.e., when rewriting flash software to an ECU. The vast majority of ELM327 and its clones do not have the capability to handle this, hence you can't use them for something like ECU reprogramming or enhanced diagnostics.
As I layed out an infrastructure that would support multiple adapter types with their own specific command sets, it became clear that I would have to tear a whole lot of the layers in LTSupportAutomotive
apart. I learned a lot more about OBD2 since I first designed this library in 2016 – and while it is a good and stable work-horse, there's no way I spend a whole lot of time to retrofit all the new requirements.
Last but not least, I was teased by Swift, in particular Swift 5.5+. Swift 5.5+'s introduction of first class concurrency features allows for a wonderful mapping of hardware communication, which is inherently asynchronous, to programmatic control flow. So it became clear to me that I can only solve the complex requirement of rock-solid ECU reprogramming with a new Swift-Concurrency-based library.
from ltsupportautomotive.
Apart from the changes I already did in the UDS branch, I sadly have to confess that I have abandoned the idea of adding full UDS support to this library.
After having worked more on UDS (and I can release working code very soon), I have realized that when developing this library, I did base the protocols and the parsing with some OBD2-format-assumptions that no longer hold would I generalize this for introducing full UDS support.
In order not to destabilize this library and add a lot of special casing and/or #ifdef
s, I decided not to pursue this plan any further. Instead, I have started to work on a new library that encompasses OBD2 and UDS from the start.
This also allows me to handle some of the other griefs that I always had with this library – in particular the support for multiple adapter types, multiple (non-apple) platforms, and the notion of units right from the start.
Plus: The new library will be implemented in Swift, which – while not being uncontroversial – due to its richness in language concepts allows for a much better translation.
from ltsupportautomotive.
Leaving this issue open so that it's immediately visible.
from ltsupportautomotive.
only being curious and willing to learn:
how would UDS support de-stabilize an OBD lib, if OBD is (at least in theory) only special case of UDS sitting upon it from an OSI layer perspective?
Is it keeping compatibility with certain tools that reflected special cases for the tool's sake?
from ltsupportautomotive.
Related Issues (20)
- Connection Issue HOT 1
- Transmitting DTCs using Swift HOT 1
- Is it possible to get PID commands return data faster? HOT 15
- Adapter State Initializing HOT 1
- LELink Bluetooth Low Energy - stuck on "OBD2AdapterStateInitializing" state HOT 4
- Crash when adapter state changed HOT 2
- After Disconnect it didnt connect stuck on "Initializing" state.
- How to set IP address to connect OBD ELM327 through Wifi? HOT 2
- Any ideas about simulating DTC functions?
- got "Invalid or short line '83' found"?
- How can I get Trouble Code and Pending Code like android in iOS Swift ?
- Documentation refers to Swift-UDS which cannot be found on GitHub HOT 1
- Bug in LTOBD2ProtocolISO15765_4 HOT 1
- Crash on XCode 14.3, init is unavailable!
- How to read odometer from OBD2? HOT 2
- Bug in LTOBD2PID_DISTANCE_SINCE_DTC_CLEARED_31 HOT 1
- OBDLink MX+ via BT Stuck on initializing, Received Data: Error\r HOT 3
- Expected behavior of BT in background HOT 2
- European car / EOBD Standard -- incorrect / missing readings? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ltsupportautomotive.