plugin_init.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package Bluetooth
  2. import (
  3. "fmt"
  4. //"log"
  5. //"os"
  6. //"time"
  7. "github.com/godbus/dbus/v5"
  8. //"github.com/muka/go-bluetooth/api"
  9. "github.com/muka/go-bluetooth/hw"
  10. //"github.com/muka/go-bluetooth/bluez/profile"
  11. "github.com/muka/go-bluetooth/bluez/profile/agent"
  12. //"github.com/muka/go-bluetooth/bluez/profile/adapter"
  13. /*
  14. "github.com/veandco/go-sdl2/ttf"
  15. "github.com/cuu/gogame/surface"
  16. "github.com/cuu/gogame/event"
  17. "github.com/cuu/gogame/rect"
  18. "github.com/cuu/gogame/color"
  19. */
  20. "github.com/clockworkpi/LauncherGoDev/sysgo/UI"
  21. log "github.com/sirupsen/logrus"
  22. )
  23. /******************************************************************************/
  24. type BluetoothPlugin struct {
  25. UI.Plugin
  26. BluetoothPage *BluetoothPage
  27. PairPage *BleAgentPairPage
  28. }
  29. const (
  30. adapterID = "hci0"
  31. BUS_NAME = "org.bluez"
  32. AGENT_INTERFACE = "org.bluez.Agent1"
  33. )
  34. func (self *BluetoothPlugin) InitAgent() {
  35. conn, err := dbus.SystemBus()
  36. if err != nil {
  37. return
  38. }
  39. ag := agent.NewSimpleAgent()
  40. err = agent.ExposeAgent(conn, ag, agent.CapKeyboardDisplay, true)
  41. if err != nil {
  42. fmt.Println(fmt.Errorf("SimpleAgent: %s", err))
  43. return
  44. }
  45. }
  46. func (self *BluetoothPlugin) Init(main_screen *UI.MainScreen) {
  47. log.Println("Reset bluetooth device")
  48. btmgmt := hw.NewBtMgmt(adapterID)
  49. btmgmt.SetPowered(true)
  50. self.BluetoothPage = NewBluetoothPage()
  51. self.BluetoothPage.SetScreen(main_screen)
  52. self.BluetoothPage.SetName("Bluetooth")
  53. self.BluetoothPage.Leader = self
  54. self.BluetoothPage.Init()
  55. self.PairPage = NewBleAgentPairPage()
  56. self.PairPage.SetScreen(main_screen)
  57. self.PairPage.SetName("Bluetooth pair")
  58. self.PairPage.Leader = self
  59. self.PairPage.Init()
  60. self.InitAgent()
  61. /*
  62. a, err := adapter.GetAdapter(adapterID)
  63. if err != nil {
  64. fmt.Println(err)
  65. return
  66. }
  67. discovery, cancel, err := api.Discover(a, nil)
  68. if err != nil {
  69. fmt.Println(err)
  70. }
  71. defer cancel()
  72. wait := make(chan error)
  73. go func() {
  74. for dev := range discovery {
  75. if dev == nil {
  76. return
  77. }
  78. wait <- nil
  79. }
  80. }()
  81. go func() {
  82. sleep := 5
  83. time.Sleep(time.Duration(sleep) * time.Second)
  84. log.Debugf("Discovery timeout exceeded (%ds)", sleep)
  85. wait <- nil
  86. }()
  87. err = <-wait
  88. if err != nil {
  89. fmt.Println(err)
  90. }
  91. */
  92. //self.BluetoothPage.RefreshDevices()
  93. //self.BluetoothPage.GenNetworkList()
  94. }
  95. func (self *BluetoothPlugin) Run(main_screen *UI.MainScreen) {
  96. if main_screen != nil {
  97. main_screen.PushCurPage()
  98. main_screen.SetCurPage(self.BluetoothPage)
  99. main_screen.Draw()
  100. main_screen.SwapAndShow()
  101. }
  102. }
  103. var APIOBJ BluetoothPlugin