bluetooth code updated with latest github.com/muka/go-bluetooth@v0.0.0-20210812063148-b6c83362e27d

This commit is contained in:
cuu 2021-10-07 21:54:30 +08:00
parent b4680f1a3e
commit 0461450ea9
5 changed files with 70 additions and 43 deletions

View File

@ -6,6 +6,7 @@ import (
"log" "log"
"strings" "strings"
//"errors" //"errors"
gotime "time"
"github.com/fatih/structs" "github.com/fatih/structs"
"github.com/veandco/go-sdl2/ttf" "github.com/veandco/go-sdl2/ttf"
@ -23,7 +24,9 @@ import (
//"github.com/muka/go-bluetooth/bluez" //"github.com/muka/go-bluetooth/bluez"
// "github.com/muka/go-bluetooth/bluez/profile" // "github.com/muka/go-bluetooth/bluez/profile"
"github.com/muka/go-bluetooth/bluez/profile/device" "github.com/muka/go-bluetooth/bluez/profile/device"
"github.com/muka/go-bluetooth/bluez/profile/adapter"
logrus "github.com/sirupsen/logrus"
"github.com/clockworkpi/LauncherGoDev/sysgo/UI" "github.com/clockworkpi/LauncherGoDev/sysgo/UI"
) )
@ -167,9 +170,7 @@ func (self *BleInfoPage) Init() {
ps := NewBleInfoPageSelector() ps := NewBleInfoPageSelector()
ps.Parent = self ps.Parent = self
self.Ps = ps self.Ps = ps
self.PsIndex = 0 self.PsIndex = 0
//self.GenList()
self.Scroller = UI.NewListScroller() self.Scroller = UI.NewListScroller()
self.Scroller.Parent = self self.Scroller.Parent = self
@ -210,9 +211,7 @@ func (self *BleInfoPage) GenList() {
if skip2 { if skip2 {
continue continue
} }
li := UI.NewInfoPageListItem() li := UI.NewInfoPageListItem()
li.Parent = self li.Parent = self
li.PosX = start_x li.PosX = start_x
@ -480,7 +479,7 @@ func (self *BleListMessageBox) Draw() {
type BluetoothPage struct{ type BluetoothPage struct{
UI.Page UI.Page
Devices []*device.Device1 Devices []*device.Device1
BlePassword string BlePassword string
@ -565,14 +564,12 @@ func (self *BluetoothPage) Init() {
self.Scroller.PosX = 2 self.Scroller.PosX = 2
self.Scroller.PosY = 2 self.Scroller.PosY = 2
self.Scroller.Init() self.Scroller.Init()
self.GenNetworkList()
self.InfoPage = NewBleInfoPage() self.InfoPage = NewBleInfoPage()
self.InfoPage.Screen = self.Screen self.InfoPage.Screen = self.Screen
self.InfoPage.Name = "BluetoothInfo" self.InfoPage.Name = "BluetoothInfo"
self.InfoPage.Init() self.InfoPage.Init()
} }
@ -664,7 +661,7 @@ func (self *BluetoothPage) GetDevices() ([]*device.Device1, error) {
func (self *BluetoothPage) RefreshDevices() { func (self *BluetoothPage) RefreshDevices() {
// sync the cached devices // sync the cached devices
self.Devices = nil self.Devices = self.Devices[:0]
devices, err := self.GetDevices() devices, err := self.GetDevices()
if err != nil { if err != nil {
@ -682,8 +679,7 @@ func (self *BluetoothPage) GenNetworkList() {
start_x := 0 start_x := 0
start_y := 0 start_y := 0
for i, v := range self.Devices { // v == bleapi.Device for i, v := range self.Devices { // v == bleapi.Device
props, err := v.GetProperties() props, err := v.GetProperties()
@ -716,29 +712,56 @@ func (self *BluetoothPage) GenNetworkList() {
} }
func (self *BluetoothPage) Rescan() { func (self *BluetoothPage) Rescan() {
self.Scanning = true if self.Scanning == true {
self.ShowBox("Bluetooth scanning") self.ShowBox("Bluetooth scanning")
self.Screen.FootBar.UpdateNavText("Scanning")
}
a, err := adapter.GetAdapter(adapterID)
if err != nil {
fmt.Println(err)
return
}
discovery, cancel, err := bleapi.Discover(a, nil)
if err != nil {
fmt.Println(err)
}
defer cancel()
wait := make(chan error)
self.Scanning = true
self.ShowBox("Bluetooth scanning")
self.Screen.FootBar.UpdateNavText("Scanning") self.Screen.FootBar.UpdateNavText("Scanning")
a,nil := bleapi.GetAdapter(adapterID)
go func() {
for dev := range discovery {
if dev == nil {
return
}
wait <- nil
}
}()
err := a.StopDiscovery() go func() {
sleep := 5
gotime.Sleep(gotime.Duration(sleep) * gotime.Second)
logrus.Debugf("Discovery timeout exceeded (%ds)", sleep)
wait <- nil
}()
err = <-wait
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
self.Scanning = false
err = a.StartDiscovery() self.HideBox()
if err != nil { self.Screen.FootBar.ResetNavText()
fmt.Println(err)
}
fmt.Println("Started discovery")
} }
func (self *BluetoothPage) OnLoadCb() { func (self *BluetoothPage) OnLoadCb() {
self.Offline = false self.Offline = false
@ -748,6 +771,7 @@ func (self *BluetoothPage) OnLoadCb() {
self.Offline = true self.Offline = true
fmt.Println("Bluetooth OnLoadCb ,can not find hci0 alive,try to reboot") fmt.Println("Bluetooth OnLoadCb ,can not find hci0 alive,try to reboot")
}else { }else {
self.Rescan()
self.RefreshDevices() self.RefreshDevices()
self.GenNetworkList() self.GenNetworkList()
} }
@ -860,6 +884,7 @@ func (self *BluetoothPage) KeyDown(ev *event.Event) {
} }
func (self *BluetoothPage) Draw() { func (self *BluetoothPage) Draw() {
self.ClearCanvas() self.ClearCanvas()
if len(self.MyList) == 0 { if len(self.MyList) == 0 {
@ -887,5 +912,5 @@ func (self *BluetoothPage) Draw() {
} }
} }
} }

View File

@ -2,15 +2,15 @@ package Bluetooth
import ( import (
"fmt" "fmt"
// "log" //"log"
//"os" //"os"
"time" //"time"
"github.com/godbus/dbus/v5" "github.com/godbus/dbus/v5"
"github.com/muka/go-bluetooth/api" //"github.com/muka/go-bluetooth/api"
"github.com/muka/go-bluetooth/hw" "github.com/muka/go-bluetooth/hw"
//"github.com/muka/go-bluetooth/bluez/profile" //"github.com/muka/go-bluetooth/bluez/profile"
"github.com/muka/go-bluetooth/bluez/profile/agent" "github.com/muka/go-bluetooth/bluez/profile/agent"
"github.com/muka/go-bluetooth/bluez/profile/adapter" //"github.com/muka/go-bluetooth/bluez/profile/adapter"
/* /*
"github.com/veandco/go-sdl2/ttf" "github.com/veandco/go-sdl2/ttf"
@ -76,7 +76,7 @@ func (self *BluetoothPlugin) Init( main_screen *UI.MainScreen ) {
self.InitAgent() self.InitAgent()
/*
a, err := adapter.GetAdapter(adapterID) a, err := adapter.GetAdapter(adapterID)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
@ -112,12 +112,12 @@ func (self *BluetoothPlugin) Init( main_screen *UI.MainScreen ) {
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
*/
self.BluetoothPage.RefreshDevices() //self.BluetoothPage.RefreshDevices()
self.BluetoothPage.GenNetworkList() //self.BluetoothPage.GenNetworkList()
main_screen.Draw()
main_screen.SwapAndShow()
} }

View File

@ -402,6 +402,7 @@ func (self *MainScreen) Draw() {
} }
if self.TitleBar != nil { if self.TitleBar != nil {
//every plugin_init should not do any Draw actions since CurrentPage might be nil at that time
self.TitleBar.Draw( self.CurrentPage.GetName()) self.TitleBar.Draw( self.CurrentPage.GetName())
} }

View File

@ -64,7 +64,7 @@ func (self *SkinManager) Init() {
self.Colors["White"] = &color.Color{255,255,255,255} self.Colors["White"] = &color.Color{255,255,255,255}
self.Colors["Black"] = &color.Color{0,0,0,255} self.Colors["Black"] = &color.Color{0,0,0,255}
fname := "skin/"+sysgo.SKIN+"/config.ini" fname := sysgo.SKIN+"/config.ini"
load_opts := ini.LoadOptions{ load_opts := ini.LoadOptions{
IgnoreInlineComment:true, IgnoreInlineComment:true,

View File

@ -9,7 +9,8 @@ type PowerLevel struct {
var PowerLevels map[string]*PowerLevel var PowerLevels map[string]*PowerLevel
var ( var (
CurKeySet = "GameShell" // PC or GameShell //CurKeySet = "PC" // PC or GameShell
CurKeySet = "GameShell"
DontLeave = false DontLeave = false
BackLight = "/proc/driver/backlight" BackLight = "/proc/driver/backlight"
Battery = "/sys/class/power_supply/axp20x-battery/uevent" Battery = "/sys/class/power_supply/axp20x-battery/uevent"