|  |  | @ -13,12 +13,22 @@ class TinyFrame: | 
			
		
	
		
		
			
				
					
					|  |  |  |         #  If the connection is reliable, you can disable the SOF byte and checksums. |  |  |  |         #  If the connection is reliable, you can disable the SOF byte and checksums. | 
			
		
	
		
		
			
				
					
					|  |  |  |         #  That can save up to 9 bytes of overhead. |  |  |  |         #  That can save up to 9 bytes of overhead. | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         #  ,-----+----+-----+------+------------+- - - -+------------, |  |  |  |         # ,-----+-----+-----+------+------------+- - - -+-------------, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         #  | SOF | ID | LEN | TYPE | HEAD_CKSUM | DATA  | PLD_CKSUM  | |  |  |  |         # | SOF | ID  | LEN | TYPE | HEAD_CKSUM | DATA  | DATA_CKSUM  | | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         #  | 1   | ?  | ?   | ?    | ?          | ...   | ?          | <- size (bytes) |  |  |  |         # | 0-1 | 1-4 | 1-4 | 1-4  | 0-4        | ...   | 0-4         | <- size (bytes) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         #  '-----+----+-----+------+------------+- - - -+------------' |  |  |  |         # '-----+-----+-----+------+------------+- - - -+-------------' | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # SOF ......... start of frame, usually 0x01 (optional, configurable) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # ID  ......... the frame ID (MSb is the peer bit) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # LEN ......... number of data bytes in the frame | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # TYPE ........ message type (used to run Type Listeners, pick any values you like) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # HEAD_CKSUM .. header checksum | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # DATA ........ LEN bytes of data (can be 0, in which case DATA_CKSUM is omitted as well) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # DATA_CKSUM .. checksum, implemented as XOR of all preceding bytes in the message | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         #  !!! BOTH SIDES MUST USE THE SAME SETTINGS !!! |  |  |  |         #  !!! BOTH SIDES MUST USE THE SAME SETTINGS !!! | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         # Settings can be adjusted by setting the properties after init | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         #  Adjust sizes as desired (1,2,4) |  |  |  |         #  Adjust sizes as desired (1,2,4) | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.ID_BYTES = 2 |  |  |  |         self.ID_BYTES = 2 | 
			
		
	
	
		
		
			
				
					|  |  | @ -279,7 +289,7 @@ class TinyFrame: | 
			
		
	
		
		
			
				
					
					|  |  |  |         if frame.id in self.id_listeners and self.id_listeners[frame.id] is not None: |  |  |  |         if frame.id in self.id_listeners and self.id_listeners[frame.id] is not None: | 
			
		
	
		
		
			
				
					
					|  |  |  |             lst = self.id_listeners[frame.id] |  |  |  |             lst = self.id_listeners[frame.id] | 
			
		
	
		
		
			
				
					
					|  |  |  |             rv = lst['fn'](self, frame) |  |  |  |             rv = lst['fn'](self, frame) | 
			
		
	
		
		
			
				
					
					|  |  |  |             if rv == TF.CLOSE: |  |  |  |             if rv == TF.CLOSE or rv is None: | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 self.id_listeners[frame.id] = None |  |  |  |                 self.id_listeners[frame.id] = None | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return |  |  |  |                 return | 
			
		
	
		
		
			
				
					
					|  |  |  |             elif rv == TF.RENEW: |  |  |  |             elif rv == TF.RENEW: | 
			
		
	
	
		
		
			
				
					|  |  | 
 |