mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2026-09-05 21:14:34 +02:00
update code with latest muka/go-bluetooth ,add go mod
This commit is contained in:
@@ -2,68 +2,72 @@ package Bluetooth
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"github.com/muka/go-bluetooth/api"
|
||||
"github.com/muka/go-bluetooth/emitter"
|
||||
"github.com/muka/go-bluetooth/linux/btmgmt"
|
||||
"github.com/muka/go-bluetooth/bluez/profile"
|
||||
|
||||
// "log"
|
||||
//"os"
|
||||
"time"
|
||||
"github.com/godbus/dbus/v5"
|
||||
"github.com/muka/go-bluetooth/api"
|
||||
"github.com/muka/go-bluetooth/hw"
|
||||
//"github.com/muka/go-bluetooth/bluez/profile"
|
||||
"github.com/muka/go-bluetooth/bluez/profile/agent"
|
||||
"github.com/muka/go-bluetooth/bluez/profile/adapter"
|
||||
/*
|
||||
"github.com/veandco/go-sdl2/ttf"
|
||||
"github.com/veandco/go-sdl2/ttf"
|
||||
|
||||
"github.com/cuu/gogame/surface"
|
||||
"github.com/cuu/gogame/event"
|
||||
"github.com/cuu/gogame/rect"
|
||||
"github.com/cuu/gogame/color"
|
||||
"github.com/cuu/gogame/surface"
|
||||
"github.com/cuu/gogame/event"
|
||||
"github.com/cuu/gogame/rect"
|
||||
"github.com/cuu/gogame/color"
|
||||
*/
|
||||
|
||||
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
|
||||
//"github.com/clockworkpi/LauncherGoDev/sysgo/DBUS"
|
||||
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
|
||||
//"github.com/clockworkpi/LauncherGoDev/sysgo/DBUS"
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
/******************************************************************************/
|
||||
type BluetoothPlugin struct {
|
||||
UI.Plugin
|
||||
UI.Plugin
|
||||
BluetoothPage *BluetoothPage
|
||||
PairPage *BleAgentPairPage
|
||||
}
|
||||
|
||||
const (
|
||||
adapterID = "hci0"
|
||||
BUS_NAME = "org.bluez"
|
||||
AGENT_INTERFACE = "org.bluez.Agent1"
|
||||
AGENT_PATH = "/gameshell/bleagentgo"
|
||||
BUS_NAME = "org.bluez"
|
||||
AGENT_INTERFACE = "org.bluez.Agent1"
|
||||
|
||||
)
|
||||
|
||||
|
||||
func (self *BluetoothPlugin) InitAgent() {
|
||||
agent := &Agent{}
|
||||
agent.BusName = BUS_NAME
|
||||
agent.AgentInterface = AGENT_INTERFACE
|
||||
agent.AgentPath = AGENT_PATH
|
||||
agent.Leader = self
|
||||
RegisterAgent(agent, profile.AGENT_CAP_KEYBOARD_DISPLAY)
|
||||
|
||||
conn, err := dbus.SystemBus()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
ag := agent.NewSimpleAgent()
|
||||
err = agent.ExposeAgent(conn, ag, agent.CapKeyboardDisplay, true)
|
||||
if err != nil {
|
||||
fmt.Println( fmt.Errorf("SimpleAgent: %s", err) )
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (self *BluetoothPlugin) Init( main_screen *UI.MainScreen ) {
|
||||
|
||||
log.Println("Reset bluetooth device")
|
||||
log.Println("Reset bluetooth device")
|
||||
|
||||
a := btmgmt.NewBtMgmt(adapterID)
|
||||
err := a.Reset()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
self.BluetoothPage = NewBluetoothPage()
|
||||
self.BluetoothPage.SetScreen( main_screen)
|
||||
self.BluetoothPage.SetName("Bluetooth")
|
||||
btmgmt := hw.NewBtMgmt(adapterID)
|
||||
btmgmt.SetPowered(true)
|
||||
|
||||
self.BluetoothPage = NewBluetoothPage()
|
||||
self.BluetoothPage.SetScreen( main_screen)
|
||||
self.BluetoothPage.SetName("Bluetooth")
|
||||
self.BluetoothPage.Leader = self
|
||||
self.BluetoothPage.Init()
|
||||
self.BluetoothPage.Init()
|
||||
|
||||
self.PairPage = NewBleAgentPairPage()
|
||||
self.PairPage.SetScreen( main_screen)
|
||||
@@ -73,30 +77,57 @@ func (self *BluetoothPlugin) Init( main_screen *UI.MainScreen ) {
|
||||
|
||||
self.InitAgent()
|
||||
|
||||
err = api.On("discovery", emitter.NewCallback(func(ev emitter.Event) {
|
||||
//discoveryEvent := ev.GetData().(api.DiscoveredDeviceEvent)
|
||||
//dev := discoveryEvent.Device
|
||||
//showDeviceInfo(dev)
|
||||
self.BluetoothPage.RefreshDevices()
|
||||
self.BluetoothPage.GenNetworkList()
|
||||
main_screen.Draw()
|
||||
main_screen.SwapAndShow()
|
||||
|
||||
}))
|
||||
|
||||
|
||||
a, err := adapter.GetAdapter(adapterID)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
discovery, cancel, err := api.Discover(a, nil)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
defer cancel()
|
||||
|
||||
wait := make(chan error)
|
||||
|
||||
go func() {
|
||||
for dev := range discovery {
|
||||
if dev == nil {
|
||||
return
|
||||
}
|
||||
wait <- nil
|
||||
}
|
||||
}()
|
||||
|
||||
go func() {
|
||||
sleep := 5
|
||||
time.Sleep(time.Duration(sleep) * time.Second)
|
||||
log.Debugf("Discovery timeout exceeded (%ds)", sleep)
|
||||
wait <- nil
|
||||
}()
|
||||
|
||||
err = <-wait
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
|
||||
self.BluetoothPage.RefreshDevices()
|
||||
self.BluetoothPage.GenNetworkList()
|
||||
main_screen.Draw()
|
||||
main_screen.SwapAndShow()
|
||||
|
||||
}
|
||||
|
||||
func (self *BluetoothPlugin) Run( main_screen *UI.MainScreen ) {
|
||||
if main_screen != nil {
|
||||
if main_screen != nil {
|
||||
main_screen.PushCurPage()
|
||||
main_screen.SetCurPage(self.BluetoothPage)
|
||||
main_screen.Draw()
|
||||
main_screen.SwapAndShow()
|
||||
}
|
||||
main_screen.Draw()
|
||||
main_screen.SwapAndShow()
|
||||
}
|
||||
}
|
||||
|
||||
var APIOBJ BluetoothPlugin
|
||||
|
||||
Reference in New Issue
Block a user