Comments (7)
Thanks for this report. The actual problem looks like a multithreading race condition – I should check whether access of the command queue is a) coordinated or b) make the command queue thread-safe.
That said, if you're checking values in a loop, you have to take care that you're not adding commands faster than they are handled, so instead of adding based on a timer it would be better to use the completion handler to schedule the next iteration.
Last but not least, there are several optimizations that I want to tackle in 2019, namely adding facilities to group multiple PID queries (in order to save bandwidth), and also something to ease repeating queries.
from ltsupportautomotive.
Tested this in debug and _commandQueue is between 1 and 6 after adding commands.
i dont know why it can go up to 7000.
And why it is possible to get this Error: index beyond bounds
i will try it with this solution:
if ( [_commandQueue count] > 200 )
{
NSLog( @"cancelPendingCommands : Has more than 200" );
[self cancelPendingCommands];
}
after: asyncProcessCommandQueue
from ltsupportautomotive.
created an outlet for the queue count and slow down the new requests if needed.
for me its currently ok.
Thank you for detailed answer 👍
from ltsupportautomotive.
Have you any idea how to fix this ?
Yesterday it was 0...4 [index 6 beyond bounds]
I start the "transmitMultipleCommands" function in the main queue but it doesn´t help.
from ltsupportautomotive.
This Error only happens all >50.000 readings so its hard to find the error but i think this might be help.
-(void)asyncEnqueueInternalCommand:(LTOBD2AdapterInternalCommand*)internalCommand
{
@synchronized(self) {
[_commandQueue addObject:internalCommand];
[self asyncProcessCommandQueue];
}
}
from ltsupportautomotive.
@synchronized(self) is not the solution.
Now i test with the serial dispatchqueue.
from ltsupportautomotive.
created pull request for the solution. #26
from ltsupportautomotive.
Related Issues (20)
- Connection Issue HOT 1
- UDS Support (cancelled) HOT 4
- 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.