Example #1
0
 def setDeviceDelay(self, device, value):  # REP_DELAY
     if self.getDeviceAttribute(device, 'enabled'):
         # print("[InputDevices] setDeviceDelay for device %s to %d ms" % (device, value))
         event = pack('LLHHi', 0, 0, 0x14, 0x00, int(value))
         fd = osopen("/dev/input/" + device, O_RDWR)
         oswrite(fd, event)
         osclose(fd)
Example #2
0
	def setDeviceRepeat(self, device, value): # REP_PERIOD
		if self.getDeviceAttribute(device, "enabled"):
			# print("[InputDevices] setDeviceRepeat for device %s to %d ms" % (device, value))
			event = pack("LLHHi", 0, 0, 0x14, 0x01, int(value))
			fd = osopen("/dev/input/%s" % device, O_RDWR)
			oswrite(fd, event)
			osclose(fd)
Example #3
0
    def __init__(self):
        self.Devices = {}
        self.currentDevice = ""
        devices = listdir("/dev/input/")

        for device in devices:
            if isdir("/dev/input/%s" % device):
                continue
            try:
                _buffer = "\0" * 512
                self.fd = osopen("/dev/input/%s" % device, O_RDWR | O_NONBLOCK)
                self.name = ioctl(self.fd, self.EVIOCGNAME(256), _buffer)
                self.name = self.name[:self.name.find(b"\0")]
                self.name = ensure_str(self.name)
                if str(self.name).find("Keyboard") != -1:
                    self.name = 'keyboard'
                osclose(self.fd)
            except (IOError, OSError) as err:
                print(
                    "[InputDevice] Error: device='%s' getInputDevices <ERROR: ioctl(EVIOCGNAME): '%s'>"
                    % (device, str(err)))
                self.name = None

            if self.name:
                self.Devices[device] = {
                    'name': self.name,
                    'type': self.getInputDeviceType(self.name),
                    'enabled': False,
                    'configuredName': None
                }

                # load default remote control "delay" and "repeat" values for ETxxxx ("QuickFix Scrollspeed Menues" proposed by Xtrend Support)
                if getBoxType().startswith('et'):
                    self.setDeviceDefaults(device)
	def __init__(self):
		self.devices = {}
		self.currentDevice = None
		for device in sorted(listdir("/dev/input/")):
			if isdir("/dev/input/%s" % device):
				continue
			try:
				buffer = b"\0" * 512
				self.fd = osopen("/dev/input/%s" % device, O_RDWR | O_NONBLOCK)
				self.name = ioctl(self.fd, self.EVIOCGNAME(256), buffer)
				osclose(self.fd)
				self.name = str(self.name[:self.name.find(b"\0")])
			except (IOError, OSError) as err:
				print("[InputDevice] Error: device='%s' getInputDevices <ERROR: ioctl(EVIOCGNAME): '%s'>" % (device, str(err)))
				self.name = None
			if self.name:
				devType = self.getInputDeviceType(self.name.lower())
				print("[InputDevice] Found device '%s' with name '%s' of type '%s'." % (device, self.name, "Unknown" if devType is None else devType.capitalize()))
				# What was this for?
				# if self.name == "aml_keypad":
				# 	print("[InputDevice] ALERT: Old code flag for 'aml_keypad'.")
				# 	self.name = "dreambox advanced remote control (native)"
				# if self.name in BLACKLIST:
				# 	print("[InputDevice] ALERT: Old code flag for device in blacklist.")
				# 	continue
				self.devices[device] = {
					"name": self.name,
					"type": devType,
					"enabled": False,
					"configuredName": None
				}
Example #5
0
def _get(items, store, pp, successes, failures):
    if not exists(tempDir):
        mkdir(tempDir)

    for filePath,objHash,size in items:
        pp.newItem(filePath, size)
        
        # Copy download to temp file first, and then to actual object location
        # This is to prevent interrupted downloads from causing bad objects to be placed
        # in the objects cache
        (tempHandle, tempTransferFile) = mkstemp(dir=tempDir)
        osclose(tempHandle)
        key = store.check('%s/%s'%(objHash[:2], objHash[2:]))

        try:
            transferred = store.get(key, tempTransferFile, size)
        except:
            transferred = False
        if key and transferred:
            pp.updateProgress(size, size)
            popen(['mv', tempTransferFile, filePath]).wait()
            successes.append((filePath, objHash, size))
        else:
            pp.updateProgress(size, size, custom_item_string='ERROR')
            failures.append(filePath)

    cache.insert({h:(s,f) for f,h,s in successes}, inLru=True, progressMsg='Caching newly gotten items')
	def setDeviceDelay(self, device, value):  # REP_DELAY
		if self.getDeviceAttribute(device, "enabled"):
			# print("[InputDevice] setDeviceDelay DEBUG: Set device '%s' to %s ms." % (device, value))
			event = pack("LLHHi", 0, 0, 0x14, 0x00, int(value))
			fd = osopen("/dev/input/%s" % device, O_RDWR)
			oswrite(fd, event)
			osclose(fd)
Example #7
0
	def setDeviceDefaults(self, device):
		print("[InputDevice] setDeviceDefaults DEBUG: Device '%s'." % device)
		self.setDeviceAttribute(device, "configuredName", None)
		eventRepeat = pack("LLHHi", 0, 0, 0x14, 0x01, 100)
		eventDelay = pack("LLHHi", 0, 0, 0x14, 0x00, 700)
		fd = osopen("/dev/input/%s" % device, O_RDWR)
		oswrite(fd, eventRepeat)
		oswrite(fd, eventDelay)
		osclose(fd)
Example #8
0
 def fork(self):
     rfd, wfd = pipe()
     subpid = fork()
     if subpid == 0:  # subprocess.
         del (self.rfds)
         osclose(rfd)
         self.wfclose()
         self.wfobj = fdopen(wfd, 'wt')
         return subpid
     osclose(wfd)
     self.rfds[subpid] = rfd
     return subpid
Example #9
0
 def fork(self):
     rfd, wfd = pipe()
     subpid = fork()
     if subpid == 0: # subprocess.
         del(self.rfds)
         osclose(rfd)
         self.wfclose()
         self.wfobj = fdopen(wfd, 'wt')
         return subpid
     osclose(wfd)
     self.rfds[subpid] = rfd
     return subpid
Example #10
0
    def __init__(self):
        self.devices = {}
        self.currentDevice = None
        for device in sorted(listdir("/dev/input/")):

            if isdir("/dev/input/%s" % device):
                continue
            try:
                _buffer = "\0" * 512
                self.fd = osopen("/dev/input/%s" % device, O_RDWR | O_NONBLOCK)
                self.name = ioctl(self.fd, self.EVIOCGNAME(256), _buffer)
                self.name = self.name[:self.name.find(b"\0")]
                self.name = ensure_str(self.name)
                if str(self.name).find("Keyboard") != -1:
                    self.name = 'keyboard'
                osclose(self.fd)
            except OSError as err:
                print(
                    "[InputDevice] Error: device='%s' getInputDevices <ERROR: ioctl(EVIOCGNAME): '%s'>"
                    % (device, str(err)))
                self.name = None

            if self.name:
                devType = self.getInputDeviceType(self.name.lower())
                print(
                    "[InputDevice] Found device '%s' with name '%s' of type '%s'."
                    % (device, self.name,
                       "Unknown" if devType is None else devType.capitalize()))
                # What was this for?
                # if self.name == "aml_keypad":
                # 	print("[InputDevice] ALERT: Old code flag for 'aml_keypad'.")
                # 	self.name = "dreambox advanced remote control (native)"
                # if self.name in BLACKLIST:
                # 	print("[InputDevice] ALERT: Old code flag for device in blacklist.")
                # 	continue
                self.devices[device] = {
                    "name": self.name,
                    "type": devType,
                    "enabled": False,
                    "configuredName": None
                }

                # load default remote control "delay" and "repeat" values for ETxxxx ("QuickFix Scrollspeed Menues" proposed by Xtrend Support)
                if getBoxType().startswith('et'):
                    self.setDeviceDefaults(device)
Example #11
0
 def bpgdecode(self,filename):
     msg=None
     cmd=self.bpgpath
     self.frames_index=0
     if len(self.frames): self.frames=[]
     if self.img:
         del self.img
         self.img=None
     if len(filename)>4 and filename[-4:].lower()=='.bpg':
         try:
             if not(isfile(filename) and access(filename,R_OK)):
                 msg=_('Unable to open')+'\"%s\"!'%filename
         except: return False
         if not(msg):
             err=0
             try:
                 imbuffer=''
                 if osflag:
                     fifo=osopen(self.fifo,O_RDONLY|O_NONBLOCK)
                     cmd+=' "'+realpath(filename)+'" '+self.fifo+\
                         ' >/dev/null 2>&1'
                     f=Popen(cmd,shell=True,stdin=None,stdout=None,\
                         stderr=None)
                     if fifo:
                         while True:
                             if f.poll()!=None: break;
                             try: data=osread(fifo,16777216)
                             except OSError as e:
                                 if e.errno==errno.EAGAIN or\
                                     e.errno==errno.EWOULDBLOCK: data=''
                                 else: raise
                             if len(data): imbuffer+=data
                         osclose(fifo)
                 else:
                     si=STARTUPINFO()
                     si.dwFlags|=1
                     si.wShowWindow=0
                     pname='\\\\.\\pipe\\'+basename(self.fifo)
                     tpipe=win32pipe.CreateNamedPipe(
                         pname,
                         win32pipe.PIPE_ACCESS_DUPLEX,
                         win32pipe.PIPE_TYPE_BYTE|win32pipe.PIPE_WAIT,
                         1,16777216,16777216,2000,None)
                     cmd+=' "'+realpath(filename)+'" '+pname
                     f=Popen(cmd,shell=False,stdin=None,stdout=None,\
                         stderr=None,bufsize=0,startupinfo=si)
                     win32pipe.ConnectNamedPipe(tpipe,None)
                     imbuffer=''
                     if version_info[0]<3: imbuffer=''
                     else: imbuffer=b''
                     if tpipe:
                         while True:
                             data=None
                             try: data=win32file.ReadFile(tpipe,16777216)
                             except: data=None
                             if not(data): break
                             if data[0]!=0: break
                             if len(data[1]): imbuffer+=data[1]
                     win32pipe.DisconnectNamedPipe(tpipe)
                     f.wait()
                 if len(imbuffer):
                     x,=unpack("i",imbuffer[0:4])
                     y,=unpack("i",imbuffer[4:8])
                     n,=unpack("i",imbuffer[8:12])
                     d,=unpack("i",imbuffer[12:16])
                     if n==0 and d==1:
                         try:
                             self.img=Image.frombytes('RGBA',(x,y),
                                 imbuffer[16:])
                         except: err=1
                     else:
                         self.scale=100.0
                         self.autoscale=self.scale
                         self.bitmap_text=str(x)+'x'+str(y)
                         self.imginfo='%.2f'%self.scale+'%@'+self.bitmap_text
                         ishift=8
                         dr=n*1000/d
                         while True:
                             try:
                                 n,=unpack("i",imbuffer[ishift:ishift+4])
                                 ishift+=4
                                 d,=unpack("i",imbuffer[ishift:ishift+4])
                                 ishift+=4
                             except: break
                             try:
                                 img=Image.frombytes('RGBA',(x,y),
                                     imbuffer[ishift:])
                             except: break
                             ishift+=(x*y*4)
                             self.frames.append([self.bitmapfrompil(img),n*1000/d])
                         else: err=1
                     del imbuffer
                 else: err=1
             except: err=1
             if err: msg=_('BPG decoding error!\n')
     else: msg=_('File')+' \"%s\" '%filename+_('is not a BPG-File!')
     if msg:
         wx.PostEvent(self,ShowEvent(SE_EVT_TYPE,-1,value=msg))
         if self.img:
             del self.img
             self.img=None
     else: return True
     return False
Example #12
0
 def bpgdecode(self,filename):
     msg=None
     cmd='"'+self.bpgpath+'"'
     self.frames_index=0
     if len(self.frames): self.frames=[]
     if self.img:
         del self.img
         self.img=None
     if len(filename)>4 and filename[-4:].lower()=='.bpg':
         try:
             if not(isfile(filename) and access(filename,R_OK)):
                 msg=_('Unable to open')+'\"%s\"!'%filename
         except: return False
         if not(msg):
             err=0
             try:
                 if version_info[0]<3: imbuffer=''
                 else: imbuffer=b''
                 t,tmp=mkstemp(suffix='.rgb',prefix='')
                 close(t)
                 cmd+=' "'+realpath(filename)+'" '+tmp+' >/dev/null 2>&1'
                 f=Popen(cmd,shell=True,stdin=None,stdout=None,stderr=None)
                 f.wait()
                 fifo=osopen(tmp,O_RDONLY|O_NONBLOCK)
                 if fifo:
                     while True:
                         try: data=osread(fifo,16777216)
                         except OSError as e:
                             if e.errno==errno.EAGAIN or\
                                 e.errno==errno.EWOULDBLOCK:
                                     data=''
                                     continue
                             else: raise
                         if len(data): imbuffer+=data
                         else: break
                     osclose(fifo)
                 if exists(tmp):
                     try: remove(tmp)
                     except: pass
                 if len(imbuffer):
                     x,=unpack("i",imbuffer[0:4])
                     y,=unpack("i",imbuffer[4:8])
                     n,=unpack("i",imbuffer[8:12])
                     d,=unpack("i",imbuffer[12:16])
                     if n==0 and d==1:
                         try:
                             self.img=Image.frombytes('RGBA',(x,y),
                                 imbuffer[16:])
                         except: err=1
                     else:
                         self.scale=100.0
                         self.autoscale=self.scale
                         self.bitmap_text=str(x)+'x'+str(y)
                         self.imginfo='%.2f'%self.scale+'%@'+self.bitmap_text
                         ishift=8
                         dr=n*1000/d
                         while True:
                             try:
                                 n,=unpack("i",imbuffer[ishift:ishift+4])
                                 ishift+=4
                                 d,=unpack("i",imbuffer[ishift:ishift+4])
                                 ishift+=4
                             except: break
                             try:
                                 img=Image.frombytes('RGBA',(x,y),
                                     imbuffer[ishift:])
                             except: break
                             ishift+=(x*y*4)
                             self.frames.append([self.bitmapfrompil(img),n*1000/d])
                         else: err=1
                     del imbuffer
                 else: err=1
             except: err=1
             if err: msg=_('BPG decoding error!\n')
     else: msg=_('File')+' \"%s\" '%filename+_('is not a BPG-File!')
     if msg:
         wx.PostEvent(self,ShowEvent(SE_EVT_TYPE,-1,value=msg))
         if self.img:
             del self.img
             self.img=None
     else: return True
     return False
Example #13
0
 def bpgdecode(self, filename):
     msg = None
     cmd = '"' + self.bpgpath + '"'
     self.frames_index = 0
     if len(self.frames): self.frames = []
     if self.img:
         del self.img
         self.img = None
     if len(filename) > 4 and filename[-4:].lower() == '.bpg':
         try:
             if not (isfile(filename) and access(filename, R_OK)):
                 msg = _('Unable to open') + '\"%s\"!' % filename
         except:
             return False
         if not (msg):
             err = 0
             try:
                 if version_info[0] < 3: imbuffer = ''
                 else: imbuffer = b''
                 t, tmp = mkstemp(suffix='.rgb', prefix='')
                 close(t)
                 cmd += ' "' + realpath(
                     filename) + '" ' + tmp + ' >/dev/null 2>&1'
                 f = Popen(cmd,
                           shell=True,
                           stdin=None,
                           stdout=None,
                           stderr=None)
                 f.wait()
                 fifo = osopen(tmp, O_RDONLY | O_NONBLOCK)
                 if fifo:
                     while True:
                         try:
                             data = osread(fifo, 16777216)
                         except OSError as e:
                             if e.errno==errno.EAGAIN or\
                                 e.errno==errno.EWOULDBLOCK:
                                 data = ''
                                 continue
                             else:
                                 raise
                         if len(data): imbuffer += data
                         else: break
                     osclose(fifo)
                 if exists(tmp):
                     try:
                         remove(tmp)
                     except:
                         pass
                 if len(imbuffer):
                     x, = unpack("i", imbuffer[0:4])
                     y, = unpack("i", imbuffer[4:8])
                     n, = unpack("i", imbuffer[8:12])
                     d, = unpack("i", imbuffer[12:16])
                     if n == 0 and d == 1:
                         try:
                             self.img = Image.frombytes(
                                 'RGBA', (x, y), imbuffer[16:])
                         except:
                             err = 1
                     else:
                         self.scale = 100.0
                         self.autoscale = self.scale
                         self.bitmap_text = str(x) + 'x' + str(y)
                         self.imginfo = '%.2f' % self.scale + '%@' + self.bitmap_text
                         ishift = 8
                         dr = n * 1000 / d
                         while True:
                             try:
                                 n, = unpack("i",
                                             imbuffer[ishift:ishift + 4])
                                 ishift += 4
                                 d, = unpack("i",
                                             imbuffer[ishift:ishift + 4])
                                 ishift += 4
                             except:
                                 break
                             try:
                                 img = Image.frombytes(
                                     'RGBA', (x, y), imbuffer[ishift:])
                             except:
                                 break
                             ishift += (x * y * 4)
                             self.frames.append(
                                 [self.bitmapfrompil(img), n * 1000 / d])
                         else:
                             err = 1
                     del imbuffer
                 else:
                     err = 1
             except:
                 err = 1
             if err: msg = _('BPG decoding error!\n')
     else: msg = _('File') + ' \"%s\" ' % filename + _('is not a BPG-File!')
     if msg:
         wx.PostEvent(self, ShowEvent(SE_EVT_TYPE, -1, value=msg))
         if self.img:
             del self.img
             self.img = None
     else:
         return True
     return False
Example #14
0
 def waitpid(self):
     subpid, status = waitpid(-1, WNOHANG)
     if subpid in self.rfds:
         osclose(self.rfds[subpid])
         del (self.rfds[subpid])
     return subpid, status
Example #15
0
 def bpgdecode(self,filename):
     msg=None
     cmd=self.bpgpath+' -o '
     if self.img:
         del self.img
         self.img=None
     if len(filename)>4 and filename[-4:].lower()=='.bpg':
         try:
             if not(isfile(filename) and access(filename,R_OK)):
                 msg=_('Unable to open')+'\"%s\"!'%filename
         except: return False
         if not(msg):
             err=0
             try:
                 imbuffer=''
                 if osflag:
                     fifo=osopen(self.fifo,O_RDONLY|O_NONBLOCK)
                     cmd+=self.fifo+' "'+realpath(filename)+'"'+\
                         ' >/dev/null 2>&1'
                     f=Popen(cmd,shell=True,stdin=None,stdout=None,\
                         stderr=None)
                     if fifo:
                         while True:
                             if f.poll()!=None: break;
                             try: data=osread(fifo,16777216)
                             except OSError as e:
                                 if e.errno==errno.EAGAIN or\
                                     e.errno==errno.EWOULDBLOCK: data=''
                                 else: raise
                             if len(data): imbuffer+=data
                         osclose(fifo)
                 else:
                     si=STARTUPINFO()
                     si.dwFlags|=1
                     si.wShowWindow=0
                     pname='\\\\.\\pipe\\'+basename(self.fifo)
                     tpipe=win32pipe.CreateNamedPipe(
                         pname,
                         win32pipe.PIPE_ACCESS_DUPLEX,
                         win32pipe.PIPE_TYPE_BYTE|win32pipe.PIPE_WAIT,
                         1,16777216,16777216,2000,None)
                     cmd+=pname+' "'+realpath(filename)+'"'
                     f=Popen(cmd,shell=False,stdin=None,stdout=None,\
                         stderr=None,bufsize=0,startupinfo=si)
                     win32pipe.ConnectNamedPipe(tpipe,None)
                     imbuffer=''
                     if tpipe:
                         while True:
                             data=None
                             try: data=win32file.ReadFile(tpipe,16777216)
                             except: data=None
                             if not(data): break
                             if data[0]!=0: break
                             if len(data[1]): imbuffer+=data[1]
                     win32pipe.DisconnectNamedPipe(tpipe)
                     f.wait()
                 if len(imbuffer):
                     if imbuffer[0]=='a': mode='RGBA'
                     else: mode='RGB'
                     x,=unpack("i",imbuffer[1:5])
                     y,=unpack("i",imbuffer[5:9])
                     try: self.img=Image.fromstring(mode,(x,y),imbuffer[9:])
                     except: err=1
                     del imbuffer
                 else: err=1
             except: err=1
             if err: msg=_('BPG decoding error!\n')
     else: msg=_('File')+' \"%s\" '%filename+_('is not a BPG-File!')
     if msg:
         print msg
         errmsgbox(msg)
         if self.img:
             del self.img
             self.img=None
     else: return True
     return False
Example #16
0
 def waitpid(self):
     subpid, status = waitpid(-1, WNOHANG)
     if subpid in self.rfds:
         osclose(self.rfds[subpid])
         del(self.rfds[subpid])
     return subpid, status