123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- package Bluetooth
- import (
- "fmt"
- //"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/cuu/gogame/surface"
- "github.com/cuu/gogame/event"
- "github.com/cuu/gogame/rect"
- "github.com/cuu/gogame/color"
- */
- "github.com/clockworkpi/LauncherGoDev/sysgo/UI"
- log "github.com/sirupsen/logrus"
- )
- /******************************************************************************/
- type BluetoothPlugin struct {
- UI.Plugin
- BluetoothPage *BluetoothPage
- PairPage *BleAgentPairPage
- }
- const (
- adapterID = "hci0"
- BUS_NAME = "org.bluez"
- AGENT_INTERFACE = "org.bluez.Agent1"
- )
- func (self *BluetoothPlugin) InitAgent() {
- 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")
- 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.PairPage = NewBleAgentPairPage()
- self.PairPage.SetScreen(main_screen)
- self.PairPage.SetName("Bluetooth pair")
- self.PairPage.Leader = self
- self.PairPage.Init()
- self.InitAgent()
- /*
- a, err := adapter.GetAdapter(adapterID)
- if err != nil {
- fmt.Println(err)
- return
- }
- 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()
- }
- func (self *BluetoothPlugin) Run(main_screen *UI.MainScreen) {
- if main_screen != nil {
- main_screen.PushCurPage()
- main_screen.SetCurPage(self.BluetoothPage)
- main_screen.Refresh()
- }
- }
- var APIOBJ BluetoothPlugin
|