You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2017/04/08 00:41:55 UTC
incubator-mynewt-newtmgr git commit: nmxact - Clear listeners when
connect fails.
Repository: incubator-mynewt-newtmgr
Updated Branches:
refs/heads/master 14d4b457c -> 0f1365665
nmxact - Clear listeners when connect fails.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/commit/0f136566
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/tree/0f136566
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/diff/0f136566
Branch: refs/heads/master
Commit: 0f13656651c79bf79de846363d28674a078cd8ab
Parents: 14d4b45
Author: Christopher Collins <cc...@apache.org>
Authored: Fri Apr 7 17:41:34 2017 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Fri Apr 7 17:41:34 2017 -0700
----------------------------------------------------------------------
nmxact/nmble/ble_fsm.go | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/0f136566/nmxact/nmble/ble_fsm.go
----------------------------------------------------------------------
diff --git a/nmxact/nmble/ble_fsm.go b/nmxact/nmble/ble_fsm.go
index 8dacc4e..d198844 100644
--- a/nmxact/nmble/ble_fsm.go
+++ b/nmxact/nmble/ble_fsm.go
@@ -151,13 +151,6 @@ func (bf *BleFsm) transitionState(fromState BleSesnState,
return nil
}
-func (bf *BleFsm) resetState() {
- if err := bf.setState(SESN_STATE_UNCONNECTED); err != nil {
- log.Debugf("BleFsm state change resulted in unexpected error: %s",
- err)
- }
-}
-
func (bf *BleFsm) addBleListener(base BleMsgBase) (*BleListener, error) {
bl := NewBleListener()
@@ -256,16 +249,13 @@ func calcDisconnectType(state BleSesnState) BleFsmDisconnectType {
}
}
-func (bf *BleFsm) onDisconnect(err error) {
+func (bf *BleFsm) resetState(err error) {
bf.mtx.Lock()
- // Remember some fields before we clear them.
- dt := calcDisconnectType(bf.state)
- peer := *bf.peerDev
-
if err := bf.setStateNoLock(SESN_STATE_UNCONNECTED); err != nil {
- log.Debugf("BleFsm state change resulted in unexpected error: %s",
- err)
+ // Change to unconnected state should never fail.
+ panic(fmt.Sprintf(
+ "BleFsm state change resulted in unexpected error: %s", err))
}
bf.peerDev = nil
@@ -281,6 +271,14 @@ func (bf *BleFsm) onDisconnect(err error) {
for _, bl := range bls {
bl.ErrChan <- err
}
+}
+
+func (bf *BleFsm) onDisconnect(err error) {
+ // Remember some fields before we clear them.
+ dt := calcDisconnectType(bf.state)
+ peer := *bf.peerDev
+
+ bf.resetState(err)
bf.params.DisconnectCb(dt, peer, err)
}
@@ -483,8 +481,9 @@ func (bf *BleFsm) terminateSetState() error {
"BLE terminate failed; session already being closed")
default:
if err := bf.setStateNoLock(SESN_STATE_TERMINATING); err != nil {
- log.Debugf("BleFsm state change resulted in unexpected error: %s",
- err)
+ // Change to terminating state should never fail.
+ panic(fmt.Sprintf(
+ "BleFsm state change resulted in unexpected error: %s", err))
}
}
@@ -710,7 +709,8 @@ func (bf *BleFsm) Start() (bool, error) {
}
if err != nil {
- bf.resetState()
+ log.Info("[%p] FAILED FROM UNCONNECTED STATE: %s", bf, err.Error())
+ bf.resetState(err)
return false, err
}
@@ -724,7 +724,7 @@ func (bf *BleFsm) Start() (bool, error) {
if err != nil {
bhe := nmxutil.ToBleHost(err)
retry := bhe != nil && bhe.Status == ERR_CODE_ENOTCONN
- bf.resetState()
+ bf.resetState(err)
return retry, err
}
@@ -736,7 +736,7 @@ func (bf *BleFsm) Start() (bool, error) {
SESN_STATE_DISCOVERED_SVC,
cb)
if err != nil {
- bf.resetState()
+ bf.resetState(err)
return false, err
}
@@ -751,12 +751,12 @@ func (bf *BleFsm) Start() (bool, error) {
SESN_STATE_DISCOVERED_CHR,
cb)
if err != nil {
- bf.resetState()
+ bf.resetState(err)
return false, err
}
if err := bf.subscribe(); err != nil {
- bf.resetState()
+ bf.resetState(err)
return false, err
}