mirror of
				https://github.com/liberatedsystems/Sideband_CE.git
				synced 2024-09-03 04:13:27 +02:00 
			
		
		
		
	Added serial port hardware config
This commit is contained in:
		
							parent
							
								
									f9d6185064
								
							
						
					
					
						commit
						712a099c8b
					
				
							
								
								
									
										104
									
								
								sbapp/main.py
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								sbapp/main.py
									
									
									
									
									
								
							@ -1537,7 +1537,109 @@ class SidebandApp(MDApp):
 | 
				
			|||||||
        self.sideband.setstate("app.displaying", self.root.ids.screen_manager.current)
 | 
					        self.sideband.setstate("app.displaying", self.root.ids.screen_manager.current)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def hardware_serial_init(self, sender=None):
 | 
					    def hardware_serial_init(self, sender=None):
 | 
				
			||||||
        pass
 | 
					        if not self.hardware_serial_ready:
 | 
				
			||||||
 | 
					            def save_connectivity(sender=None, event=None):
 | 
				
			||||||
 | 
					                if self.hardware_serial_validate():
 | 
				
			||||||
 | 
					                    self.hardware_serial_save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            def focus_save(sender=None, event=None):
 | 
				
			||||||
 | 
					                if sender != None:
 | 
				
			||||||
 | 
					                    if not sender.focus:
 | 
				
			||||||
 | 
					                        save_connectivity(sender=sender)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if self.sideband.config["hw_serial_baudrate"] != None:
 | 
				
			||||||
 | 
					                t_b = str(self.sideband.config["hw_serial_baudrate"])
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                t_b = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if self.sideband.config["hw_serial_databits"] != None:
 | 
				
			||||||
 | 
					                t_db = str(self.sideband.config["hw_serial_databits"])
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                t_db = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if self.sideband.config["hw_serial_parity"] != None:
 | 
				
			||||||
 | 
					                t_p = str(self.sideband.config["hw_serial_parity"])
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                t_p = ""
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if self.sideband.config["hw_serial_stopbits"] != None:
 | 
				
			||||||
 | 
					                t_sb = str(self.sideband.config["hw_serial_stopbits"])
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                t_sb = ""
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_baudrate.text = t_b
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_databits.text = t_db
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_parity.text = t_p
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_stopbits.text = t_sb
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_baudrate.bind(focus=focus_save)
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_databits.bind(focus=focus_save)
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_parity.bind(focus=focus_save)
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_stopbits.bind(focus=focus_save)
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_baudrate.bind(on_text_validate=save_connectivity)
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_databits.bind(on_text_validate=save_connectivity)
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_parity.bind(on_text_validate=save_connectivity)
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_stopbits.bind(on_text_validate=save_connectivity)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def hardware_serial_validate(self, sender=None):
 | 
				
			||||||
 | 
					        valid = True        
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            val = int(self.root.ids.hardware_serial_baudrate.text)
 | 
				
			||||||
 | 
					            if not val > 0:
 | 
				
			||||||
 | 
					                raise ValueError("Invalid baudrate")
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_baudrate.error = False
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_baudrate.text = str(val)
 | 
				
			||||||
 | 
					        except:
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_baudrate.error = True
 | 
				
			||||||
 | 
					            valid = False
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            val = int(self.root.ids.hardware_serial_databits.text)
 | 
				
			||||||
 | 
					            if not val > 0:
 | 
				
			||||||
 | 
					                raise ValueError("Invalid databits")
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_databits.error = False
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_databits.text = str(val)
 | 
				
			||||||
 | 
					        except:
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_databits.error = True
 | 
				
			||||||
 | 
					            valid = False
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            val = int(self.root.ids.hardware_serial_stopbits.text)
 | 
				
			||||||
 | 
					            if not val > 0:
 | 
				
			||||||
 | 
					                raise ValueError("Invalid stopbits")
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_stopbits.error = False
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_stopbits.text = str(val)
 | 
				
			||||||
 | 
					        except:
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_stopbits.error = True
 | 
				
			||||||
 | 
					            valid = False
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            val = self.root.ids.hardware_serial_parity.text
 | 
				
			||||||
 | 
					            nval = val.lower()
 | 
				
			||||||
 | 
					            if nval in ["e", "ev", "eve", "even"]:
 | 
				
			||||||
 | 
					                val = "even"
 | 
				
			||||||
 | 
					            if nval in ["o", "od", "odd"]:
 | 
				
			||||||
 | 
					                val = "odd"
 | 
				
			||||||
 | 
					            if nval in ["n", "no", "non", "none", "not", "null", "off"]:
 | 
				
			||||||
 | 
					                val = "none"
 | 
				
			||||||
 | 
					            if not val in ["even", "odd", "none"]:
 | 
				
			||||||
 | 
					                raise ValueError("Invalid parity")
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_parity.error = False
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_parity.text = str(val)
 | 
				
			||||||
 | 
					        except:
 | 
				
			||||||
 | 
					            self.root.ids.hardware_serial_parity.error = True
 | 
				
			||||||
 | 
					            valid = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return valid
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def hardware_serial_save(self):
 | 
				
			||||||
 | 
					        self.sideband.config["hw_serial_baudrate"] = int(self.root.ids.hardware_serial_baudrate.text)
 | 
				
			||||||
 | 
					        self.sideband.config["hw_serial_databits"] = int(self.root.ids.hardware_serial_databits.text)
 | 
				
			||||||
 | 
					        self.sideband.config["hw_serial_parity"] = self.root.ids.hardware_serial_parity.text
 | 
				
			||||||
 | 
					        self.sideband.config["hw_serial_stopbits"] = int(self.root.ids.hardware_serial_stopbits.text)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.sideband.save_configuration()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ### Announce Stream screen
 | 
					    ### Announce Stream screen
 | 
				
			||||||
    ######################################
 | 
					    ######################################
 | 
				
			||||||
 | 
				
			|||||||
@ -1139,7 +1139,7 @@ MDNavigationLayout:
 | 
				
			|||||||
                                font_size: dp(16)
 | 
					                                font_size: dp(16)
 | 
				
			||||||
                                size_hint: [1.0, None]
 | 
					                                size_hint: [1.0, None]
 | 
				
			||||||
                                on_release: root.ids.screen_manager.app.hardware_serial_action(self)
 | 
					                                on_release: root.ids.screen_manager.app.hardware_serial_action(self)
 | 
				
			||||||
                                disabled: True
 | 
					                                disabled: False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        MDScreen:
 | 
					        MDScreen:
 | 
				
			||||||
            name: "hardware_rnode_screen"
 | 
					            name: "hardware_rnode_screen"
 | 
				
			||||||
@ -1285,6 +1285,114 @@ MDNavigationLayout:
 | 
				
			|||||||
                                text: ""
 | 
					                                text: ""
 | 
				
			||||||
                                font_size: dp(24)
 | 
					                                font_size: dp(24)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        MDScreen:
 | 
				
			||||||
 | 
					            name: "hardware_serial_screen"
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            BoxLayout:
 | 
				
			||||||
 | 
					                orientation: "vertical"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                MDTopAppBar:
 | 
				
			||||||
 | 
					                    title: "Serial Port"
 | 
				
			||||||
 | 
					                    anchor_title: "left"
 | 
				
			||||||
 | 
					                    elevation: 2
 | 
				
			||||||
 | 
					                    left_action_items:
 | 
				
			||||||
 | 
					                        [['menu', lambda x: nav_drawer.set_state("open")]]
 | 
				
			||||||
 | 
					                    right_action_items:
 | 
				
			||||||
 | 
					                        [
 | 
				
			||||||
 | 
					                        ['close', lambda x: root.ids.screen_manager.app.close_sub_hardware_action(self)],
 | 
				
			||||||
 | 
					                        ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                ScrollView:
 | 
				
			||||||
 | 
					                    id: hardware_serial_scrollview
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    MDBoxLayout:
 | 
				
			||||||
 | 
					                        orientation: "vertical"
 | 
				
			||||||
 | 
					                        spacing: "8dp"
 | 
				
			||||||
 | 
					                        size_hint_y: None
 | 
				
			||||||
 | 
					                        height: self.minimum_height
 | 
				
			||||||
 | 
					                        padding: [dp(28), dp(48), dp(28), dp(16)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        MDLabel:
 | 
				
			||||||
 | 
					                            text: "Serial Hardware Parameters\\n"
 | 
				
			||||||
 | 
					                            font_style: "H6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        MDLabel:
 | 
				
			||||||
 | 
					                            id: hardware_serial_info
 | 
				
			||||||
 | 
					                            markup: True
 | 
				
			||||||
 | 
					                            text: "To communicate using a serial port, you will need to specify the following parameters. If communicating directly to another Reticulum instance over serial, the parameters must match the other device. If you are using a serial-connected device to pass on data to other Reticulum instances, it must be pass data transparently to the desired endpoints.\\n"
 | 
				
			||||||
 | 
					                            size_hint_y: None
 | 
				
			||||||
 | 
					                            text_size: self.width, None
 | 
				
			||||||
 | 
					                            height: self.texture_size[1]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        # MDBoxLayout:
 | 
				
			||||||
 | 
					                        #     orientation: "horizontal"
 | 
				
			||||||
 | 
					                        #     spacing: "24dp"
 | 
				
			||||||
 | 
					                        #     size_hint_y: None
 | 
				
			||||||
 | 
					                        #     height: self.minimum_height
 | 
				
			||||||
 | 
					                        #     padding: [dp(0), dp(0), dp(0), dp(35)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        #     MDRectangleFlatIconButton:
 | 
				
			||||||
 | 
					                        #         id: serial_mote_export
 | 
				
			||||||
 | 
					                        #         icon: "upload"
 | 
				
			||||||
 | 
					                        #         text: "Export"
 | 
				
			||||||
 | 
					                        #         padding: [dp(0), dp(14), dp(0), dp(14)]
 | 
				
			||||||
 | 
					                        #         icon_size: dp(24)
 | 
				
			||||||
 | 
					                        #         font_size: dp(16)
 | 
				
			||||||
 | 
					                        #         size_hint: [1.0, None]
 | 
				
			||||||
 | 
					                        #         on_release: root.ids.screen_manager.app.hardware_serial_export(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        #     MDRectangleFlatIconButton:
 | 
				
			||||||
 | 
					                        #         id: serial_mote_import
 | 
				
			||||||
 | 
					                        #         icon: "download"
 | 
				
			||||||
 | 
					                        #         text: "Import"
 | 
				
			||||||
 | 
					                        #         padding: [dp(0), dp(14), dp(0), dp(14)]
 | 
				
			||||||
 | 
					                        #         icon_size: dp(24)
 | 
				
			||||||
 | 
					                        #         font_size: dp(16)
 | 
				
			||||||
 | 
					                        #         size_hint: [1.0, None]
 | 
				
			||||||
 | 
					                        #         on_release: root.ids.screen_manager.app.hardware_serial_import(self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        MDLabel:
 | 
				
			||||||
 | 
					                            text: "Port Options"
 | 
				
			||||||
 | 
					                            font_style: "H6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        MDBoxLayout:
 | 
				
			||||||
 | 
					                            orientation: "horizontal"
 | 
				
			||||||
 | 
					                            spacing: "24dp"
 | 
				
			||||||
 | 
					                            size_hint_y: None
 | 
				
			||||||
 | 
					                            height: self.minimum_height
 | 
				
			||||||
 | 
					                            # padding: [dp(0), dp(0), dp(0), dp(35)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            MDTextField:
 | 
				
			||||||
 | 
					                                id: hardware_serial_baudrate
 | 
				
			||||||
 | 
					                                hint_text: "Baud Rate"
 | 
				
			||||||
 | 
					                                text: ""
 | 
				
			||||||
 | 
					                                font_size: dp(24)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        MDBoxLayout:
 | 
				
			||||||
 | 
					                            orientation: "horizontal"
 | 
				
			||||||
 | 
					                            spacing: "24dp"
 | 
				
			||||||
 | 
					                            size_hint_y: None
 | 
				
			||||||
 | 
					                            height: self.minimum_height
 | 
				
			||||||
 | 
					                            padding: [dp(0), dp(0), dp(0), dp(24)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            MDTextField:
 | 
				
			||||||
 | 
					                                id: hardware_serial_databits
 | 
				
			||||||
 | 
					                                hint_text: "Data Bits"
 | 
				
			||||||
 | 
					                                text: ""
 | 
				
			||||||
 | 
					                                font_size: dp(24)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            MDTextField:
 | 
				
			||||||
 | 
					                                id: hardware_serial_parity
 | 
				
			||||||
 | 
					                                hint_text: "Parity"
 | 
				
			||||||
 | 
					                                text: ""
 | 
				
			||||||
 | 
					                                font_size: dp(24)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            MDTextField:
 | 
				
			||||||
 | 
					                                id: hardware_serial_stopbits
 | 
				
			||||||
 | 
					                                hint_text: "Stop Bits"
 | 
				
			||||||
 | 
					                                text: ""
 | 
				
			||||||
 | 
					                                font_size: dp(24)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MDNavigationDrawer:
 | 
					    MDNavigationDrawer:
 | 
				
			||||||
        id: nav_drawer
 | 
					        id: nav_drawer
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user