File tree 3 files changed +39
-0
lines changed
3 files changed +39
-0
lines changed Original file line number Diff line number Diff line change @@ -110,6 +110,9 @@ type HCI struct {
110
110
chMasterConn chan * Conn // Dial returns master connections.
111
111
chSlaveConn chan * Conn // Peripheral accept slave connections.
112
112
113
+ connectedHandler func (evt.LEConnectionComplete )
114
+ disconnectedHandler func (evt.DisconnectionComplete )
115
+
113
116
dialerTmo time.Duration
114
117
listenerTmo time.Duration
115
118
@@ -505,6 +508,9 @@ func (h *HCI) handleLEConnectionComplete(b []byte) error {
505
508
}
506
509
h .params .RUnlock ()
507
510
}
511
+ if h .connectedHandler != nil {
512
+ h .connectedHandler (e )
513
+ }
508
514
return nil
509
515
}
510
516
@@ -546,6 +552,9 @@ func (h *HCI) handleDisconnectionComplete(b []byte) error {
546
552
c .txBuffer .LockPool ()
547
553
c .txBuffer .PutAll ()
548
554
c .txBuffer .UnlockPool ()
555
+ if h .disconnectedHandler != nil {
556
+ h .disconnectedHandler (e )
557
+ }
549
558
return nil
550
559
}
551
560
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ package hci
2
2
3
3
import (
4
4
"errors"
5
+ "github.com/go-ble/ble/linux/hci/evt"
5
6
"time"
6
7
7
8
"github.com/go-ble/ble/linux/hci/cmd"
@@ -37,6 +38,18 @@ func (h *HCI) SetScanParams(param cmd.LESetScanParameters) error {
37
38
return nil
38
39
}
39
40
41
+ // SetConnectedHandler sets handler to be called when new connection is established.
42
+ func (h * HCI ) SetConnectedHandler (f func (complete evt.LEConnectionComplete )) error {
43
+ h .connectedHandler = f
44
+ return nil
45
+ }
46
+
47
+ // SetDisconnectedHandler sets handler to be called on disconnect.
48
+ func (h * HCI ) SetDisconnectedHandler (f func (evt.DisconnectionComplete )) error {
49
+ h .disconnectedHandler = f
50
+ return nil
51
+ }
52
+
40
53
// SetAdvParams overrides default advertising parameters.
41
54
func (h * HCI ) SetAdvParams (param cmd.LESetAdvertisingParameters ) error {
42
55
h .params .advParams = param
Original file line number Diff line number Diff line change 1
1
package ble
2
2
3
3
import (
4
+ "github.com/go-ble/ble/linux/hci/evt"
4
5
"time"
5
6
6
7
"github.com/go-ble/ble/linux/hci/cmd"
@@ -14,6 +15,8 @@ type DeviceOption interface {
14
15
SetConnParams (cmd.LECreateConnection ) error
15
16
SetScanParams (cmd.LESetScanParameters ) error
16
17
SetAdvParams (cmd.LESetAdvertisingParameters ) error
18
+ SetConnectedHandler (f func (evt.LEConnectionComplete )) error
19
+ SetDisconnectedHandler (f func (evt.DisconnectionComplete )) error
17
20
SetPeripheralRole () error
18
21
SetCentralRole () error
19
22
}
@@ -69,6 +72,20 @@ func OptAdvParams(param cmd.LESetAdvertisingParameters) Option {
69
72
}
70
73
}
71
74
75
+ func OptConnectHandler (f func (evt.LEConnectionComplete )) Option {
76
+ return func (opt DeviceOption ) error {
77
+ opt .SetConnectedHandler (f )
78
+ return nil
79
+ }
80
+ }
81
+
82
+ func OptDisconnectHandler (f func (evt.DisconnectionComplete )) Option {
83
+ return func (opt DeviceOption ) error {
84
+ opt .SetDisconnectedHandler (f )
85
+ return nil
86
+ }
87
+ }
88
+
72
89
// OptPeripheralRole configures the device to perform Peripheral tasks.
73
90
func OptPeripheralRole () Option {
74
91
return func (opt DeviceOption ) error {
You can’t perform that action at this time.
0 commit comments