Read autoconnect ID out of configuration file, save config file
on any change to autoconnect ID.
This commit is contained in:
		
							parent
							
								
									45863ab212
								
							
						
					
					
						commit
						a123228e30
					
				
							
								
								
									
										29
									
								
								main.go
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								main.go
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -25,12 +25,14 @@ import (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
type conf struct {
 | 
			
		||||
	Autoconnect string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var Config conf
 | 
			
		||||
var conffile string
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	conffile := path.Join(confDir, "config.yml")
 | 
			
		||||
	conffile = path.Join(confDir, "config.yml")
 | 
			
		||||
	if _, err := os.Stat(conffile); os.IsNotExist(err) {
 | 
			
		||||
		fd, err := os.Create(conffile)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +52,14 @@ func main() {
 | 
			
		|||
	app.Main()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func saveConfig() {
 | 
			
		||||
	confbytes, err := yaml.Marshal(&Config)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal("Cannot encode configuration: ", err)
 | 
			
		||||
	}
 | 
			
		||||
	err = ioutil.WriteFile(conffile, confbytes, 0700)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func hrDecode(x []byte) int {
 | 
			
		||||
	flags := x[0]
 | 
			
		||||
	if flags&0x80 != 0 { // uint16 format
 | 
			
		||||
| 
						 | 
				
			
			@ -84,9 +94,6 @@ func eventloop() {
 | 
			
		|||
	periphs := make([]ble.Peripheral, 0)
 | 
			
		||||
	btns := make([]*widget.Button, 0)
 | 
			
		||||
 | 
			
		||||
	var autoconnectID string // should load from config file
 | 
			
		||||
	//autoconnectID = "93D3A64F-1664-497D-8B01-77951DB8E0F3"
 | 
			
		||||
 | 
			
		||||
	var page, offpage, scanpage, connpage, hrpage func()
 | 
			
		||||
 | 
			
		||||
	f := &layout.Flex{Axis: layout.Vertical}
 | 
			
		||||
| 
						 | 
				
			
			@ -166,10 +173,10 @@ func eventloop() {
 | 
			
		|||
					page = offpage
 | 
			
		||||
				} else {
 | 
			
		||||
 | 
			
		||||
					if autoconnectID != "" {
 | 
			
		||||
						b.Connect(ble.Peripheral{Identifier: autoconnectID})
 | 
			
		||||
					if Config.Autoconnect != "" && b.Connect(ble.Peripheral{Identifier: Config.Autoconnect}) {
 | 
			
		||||
						page = connpage
 | 
			
		||||
					} else {
 | 
			
		||||
						periphs = periphs[:0]
 | 
			
		||||
						page = scanpage
 | 
			
		||||
						b.Scan()
 | 
			
		||||
					}
 | 
			
		||||
| 
						 | 
				
			
			@ -178,20 +185,24 @@ func eventloop() {
 | 
			
		|||
				fmt.Printf("found %s (%s)\n", e.Peripheral.Name, e.Peripheral.Identifier)
 | 
			
		||||
				periphs = append(periphs, e.Peripheral)
 | 
			
		||||
				btns = append(btns, &widget.Button{})
 | 
			
		||||
				if e.Peripheral.Identifier == autoconnectID {
 | 
			
		||||
					b.Connect(e.Peripheral)
 | 
			
		||||
				if e.Peripheral.Identifier == Config.Autoconnect && b.Connect(e.Peripheral) {
 | 
			
		||||
					page = connpage
 | 
			
		||||
				}
 | 
			
		||||
			case ble.ConnectEvent:
 | 
			
		||||
				fmt.Printf("Connect event\n")
 | 
			
		||||
				state = "connected"
 | 
			
		||||
				periph = e.Peripheral
 | 
			
		||||
				Config.Autoconnect = periph.Identifier
 | 
			
		||||
				saveConfig()
 | 
			
		||||
				e.Peripheral.DiscoverServices()
 | 
			
		||||
				page = hrpage
 | 
			
		||||
			case ble.ConnectTimeoutEvent:
 | 
			
		||||
				fmt.Printf("Connect timeout\n")
 | 
			
		||||
				state = "timeout"
 | 
			
		||||
				autoconnectID = ""
 | 
			
		||||
				periphs = periphs[:0]
 | 
			
		||||
				page = scanpage
 | 
			
		||||
				Config.Autoconnect = ""
 | 
			
		||||
				saveConfig()
 | 
			
		||||
				b.Scan()
 | 
			
		||||
			case ble.DiscoverServiceEvent:
 | 
			
		||||
				fmt.Printf("DiscoverService %s\n", e.Gatt.UUID)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user