udev: fix writting to the device

Signed-off-by: Filipe Laíns <lains@archlinux.org>
This commit is contained in:
Filipe Laíns 2019-07-26 15:08:38 +01:00
parent 7a4f7bbb84
commit 6b14004a6f
No known key found for this signature in database
GPG Key ID: F893C674816AA95D
1 changed files with 10 additions and 9 deletions

View File

@ -30,6 +30,7 @@ from __future__ import absolute_import, division, print_function, unicode_litera
import os as _os
import errno as _errno
from time import sleep
from select import select as _select
from pyudev import Context as _Context, Monitor as _Monitor, Device as _Device
from pyudev import DeviceNotFoundError
@ -261,16 +262,16 @@ def write(device_handle, data):
assert data
assert isinstance(data, bytes), (repr(data), type(data))
retrycount = 0
while(True and retrycount < 3):
try:
bytes_written = _os.write(device_handle, data)
if bytes_written != len(data):
raise IOError(_errno.EIO, 'written %d bytes out of expected %d' % (bytes_written, len(data)))
except IOError as e:
if e.errno != _errno.EPIPE:
raise e
bytes_written = 0
while(retrycount < 3):
bytes_written = _os.write(device_handle, data)
if bytes_written != len(data):
sleep(0.1)
retrycount += 1
continue
else:
break
if bytes_written != len(data):
raise IOError(_errno.EIO, 'written %d bytes out of expected %d' % (bytes_written, len(data)))
def read(device_handle, bytes_count, timeout_ms=-1):