add minimal OTA Update CLI
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			This commit is contained in:
		
							parent
							
								
									8874fecf15
								
							
						
					
					
						commit
						09452ef7ab
					
				
					 2 changed files with 45 additions and 0 deletions
				
			
		
							
								
								
									
										44
									
								
								firmware/otaflash.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								firmware/otaflash.py
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
import time
 | 
			
		||||
import websocket
 | 
			
		||||
import argparse
 | 
			
		||||
import zlib
 | 
			
		||||
 | 
			
		||||
parser = argparse.ArgumentParser(description='Update fiatlux firmware via websocket.')
 | 
			
		||||
parser.add_argument("binfile")
 | 
			
		||||
 | 
			
		||||
args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
with open(args.binfile, "rb") as f:
 | 
			
		||||
    try:
 | 
			
		||||
        ws = websocket.WebSocket()
 | 
			
		||||
        ws.connect("ws://172.16.0.1")
 | 
			
		||||
        i = 0
 | 
			
		||||
        rolling = 0
 | 
			
		||||
        total = 0
 | 
			
		||||
        while True:
 | 
			
		||||
            bytes = f.read(512)
 | 
			
		||||
            rolling = zlib.crc32(bytes, rolling)
 | 
			
		||||
            total += len(bytes)
 | 
			
		||||
            msg = b'F\x00\x00\x00'
 | 
			
		||||
            msg += i.to_bytes(2, 'big')
 | 
			
		||||
            msg += len(bytes).to_bytes(2, 'big')
 | 
			
		||||
            msg += (zlib.crc32(bytes) & 0xffffffff).to_bytes(4, 'big')
 | 
			
		||||
            msg += bytes
 | 
			
		||||
            ws.send(msg)
 | 
			
		||||
            reply = ws.recv()
 | 
			
		||||
            time.sleep(0.05)
 | 
			
		||||
            i += 1
 | 
			
		||||
            if len(bytes) != 512:
 | 
			
		||||
                break
 | 
			
		||||
        msg = b'C\x00\x00\x00'
 | 
			
		||||
        msg += total.to_bytes(4, 'big')
 | 
			
		||||
        msg += rolling.to_bytes(4, 'big')
 | 
			
		||||
        ws.send(msg)
 | 
			
		||||
        print(ws.recv())
 | 
			
		||||
        ws.close()
 | 
			
		||||
    except ConnectionResetError:
 | 
			
		||||
        pass
 | 
			
		||||
    except KeyboardInterrupt:
 | 
			
		||||
        pass
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue