7. 7.1/7.3 the while(true); is ihmo UB. Could we make it while(device.has_unprocessed_io()); or similarly check the state of it.
Also correct. Will fix.
I fixed this, however while(device.has_unprocessed_io()); would be the wrong condition if you do async processing (the normal case). Better to use while(device.is_running()). This way the loop will stop as soon as the device becomes unavailable or the user stops it.