temper
temper copied to clipboard
[Testers Needed] Using non blocking I/O
I have been looking at the code and noticed that its was using select is an odd way. The oddity is that the fd is not set O_NONBLOCK.
The end result of using O_NONBLOCK is that the code will report the temperatures as soon the sensor reports them. Takes 0.386s vs the old code taking 0.558s. Tested with a TEMPer2.
If you are interest in my refactors let me know and I will raise a PR.
My refactor is in https://github.com/barry-scott/temper/commit/772d8c0aa6791d7dbb1c85c25d2bfcf0aa9e4a0d.
Testers Needed
- [ ] TEMPer 0c45:7401 TEMPerF1.4 I Metal
- [ ] TEMPer 413d:2107 TEMPerGold_V3.1 I Metal
- [ ] TEMPerHUM 413d:2107 TEMPerX_V3.1 I I White plastic
- [ ] TEMPer2 413d:2107 TEMPerX_V3.3 I,E White plastic
- [ ] TEMPer2 1a86:e025 TEMPer2_V3.7 I,E White plastic with red button
- [ ] TEMPer1F 413d:2107 TEMPerX_V3.3 E White plastic
- [ ] TEMPerX232 1a86:5523 TEMPerX232_V2.0 I,E I White plastic
- [ ] TEMPer1V1.1 0c45:7401 TEMPer1F1.1Per1F E Metal
Tests Passing
- [ ] TEMPer 0c45:7401 TEMPerF1.4 I Metal
- [ ] TEMPer 413d:2107 TEMPerGold_V3.1 I Metal
- [ ] TEMPerHUM 413d:2107 TEMPerX_V3.1 I I White plastic
- [ ] TEMPer2 413d:2107 TEMPerX_V3.3 I,E White plastic
- [ ] TEMPer2 1a86:e025 TEMPer2_V3.7 I,E White plastic with red button
- [ ] TEMPer1F 413d:2107 TEMPerX_V3.3 E White plastic
- [ ] TEMPerX232 1a86:5523 TEMPerX232_V2.0 I,E I White plastic
- [ ] TEMPer1V1.1 0c45:7401 TEMPer1F1.1Per1F E Metal
I am interested in this, but I'll need some testers with the different devices. I have one of the devices, and many of them are pretty finicky.
I don't have to have full coverage of all devices here -- this is entirely volunteer-driven, and it might be hard to get volunteers with all devices. But a decent majority without issues would work for me.
Can you open up a PR for this?
@eode : You should open a PR for this.
@neofob you're welcome to open a PR for this.
PRs I'll accept:
- one that handles all models and has been tested with all models
or
- one that provides alternate legacy/current vs new/nonblock code paths, and uses the new code path only for models that have been tested with it.