49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
| #
 | |
| # Some common functions and types.
 | |
| #
 | |
| 
 | |
| from collections import namedtuple
 | |
| from binascii import hexlify as _hexlify
 | |
| _hex = lambda d: _hexlify(d).decode('ascii').upper()
 | |
| 
 | |
| 
 | |
| class FallbackDict(dict):
 | |
| 	def __init__(self, fallback_function=lambda x: None, *args, **kwargs):
 | |
| 		super(FallbackDict, self).__init__(*args, **kwargs)
 | |
| 		self.fallback = fallback_function
 | |
| 
 | |
| 	def __getitem__(self, key):
 | |
| 		try:
 | |
| 			return super(FallbackDict, self).__getitem__(key)
 | |
| 		except KeyError:
 | |
| 			return self.fallback(key)
 | |
| 
 | |
| 
 | |
| def list2dict(values_list):
 | |
| 	return dict(zip(range(0, len(values_list)), values_list))
 | |
| 
 | |
| 
 | |
| """Firmware information."""
 | |
| FirmwareInfo = namedtuple('FirmwareInfo', [
 | |
| 				'level',
 | |
| 				'kind',
 | |
| 				'name',
 | |
| 				'version',
 | |
| 				'extras'])
 | |
| 
 | |
| """Reprogrammable keys informations."""
 | |
| ReprogrammableKeyInfo = namedtuple('ReprogrammableKeyInfo', [
 | |
| 				'index',
 | |
| 				'id',
 | |
| 				'name',
 | |
| 				'task',
 | |
| 				'task_name',
 | |
| 				'flags'])
 | |
| 
 | |
| 
 | |
| class Packet(namedtuple('Packet', ['code', 'devnumber', 'data'])):
 | |
| 	def __str__(self):
 | |
| 		return 'Packet(%02X,%02X,%s)' % (self.code, self.devnumber, 'None' if self.data is None else _hex(self.data))
 | |
| 
 | |
| del namedtuple
 |