plugin_init.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package Bluetooth
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "github.com/muka/go-bluetooth/api"
  7. "github.com/muka/go-bluetooth/emitter"
  8. "github.com/muka/go-bluetooth/linux/btmgmt"
  9. "github.com/muka/go-bluetooth/bluez/profile"
  10. /*
  11. "github.com/veandco/go-sdl2/ttf"
  12. "github.com/cuu/gogame/surface"
  13. "github.com/cuu/gogame/event"
  14. "github.com/cuu/gogame/rect"
  15. "github.com/cuu/gogame/color"
  16. */
  17. "github.com/clockworkpi/LauncherGoDev/sysgo/UI"
  18. //"github.com/clockworkpi/LauncherGoDev/sysgo/DBUS"
  19. )
  20. /******************************************************************************/
  21. type BluetoothPlugin struct {
  22. UI.Plugin
  23. BluetoothPage *BluetoothPage
  24. PairPage *BleAgentPairPage
  25. }
  26. const (
  27. adapterID = "hci0"
  28. BUS_NAME = "org.bluez"
  29. AGENT_INTERFACE = "org.bluez.Agent1"
  30. AGENT_PATH = "/gameshell/bleagentgo"
  31. )
  32. func (self *BluetoothPlugin) InitAgent() {
  33. agent := &Agent{}
  34. agent.BusName = BUS_NAME
  35. agent.AgentInterface = AGENT_INTERFACE
  36. agent.AgentPath = AGENT_PATH
  37. agent.Leader = self
  38. RegisterAgent(agent, profile.AGENT_CAP_KEYBOARD_DISPLAY)
  39. }
  40. func (self *BluetoothPlugin) Init( main_screen *UI.MainScreen ) {
  41. log.Println("Reset bluetooth device")
  42. a := btmgmt.NewBtMgmt(adapterID)
  43. err := a.Reset()
  44. if err != nil {
  45. log.Fatal(err)
  46. os.Exit(1)
  47. }
  48. self.BluetoothPage = NewBluetoothPage()
  49. self.BluetoothPage.SetScreen( main_screen)
  50. self.BluetoothPage.SetName("Bluetooth")
  51. self.BluetoothPage.Leader = self
  52. self.BluetoothPage.Init()
  53. self.PairPage = NewBleAgentPairPage()
  54. self.PairPage.SetScreen( main_screen)
  55. self.PairPage.SetName("Bluetooth pair")
  56. self.PairPage.Leader = self
  57. self.PairPage.Init()
  58. self.InitAgent()
  59. err = api.On("discovery", emitter.NewCallback(func(ev emitter.Event) {
  60. //discoveryEvent := ev.GetData().(api.DiscoveredDeviceEvent)
  61. //dev := discoveryEvent.Device
  62. //showDeviceInfo(dev)
  63. self.BluetoothPage.RefreshDevices()
  64. self.BluetoothPage.GenNetworkList()
  65. main_screen.Draw()
  66. main_screen.SwapAndShow()
  67. }))
  68. if err != nil {
  69. fmt.Println(err)
  70. }
  71. }
  72. func (self *BluetoothPlugin) Run( main_screen *UI.MainScreen ) {
  73. if main_screen != nil {
  74. main_screen.PushCurPage()
  75. main_screen.SetCurPage(self.BluetoothPage)
  76. main_screen.Draw()
  77. main_screen.SwapAndShow()
  78. }
  79. }
  80. var APIOBJ BluetoothPlugin