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/03/28 22:41:50 UTC

[53/67] [abbrv] incubator-mynewt-newtmgr git commit: nmxact - Scan on each conn in case peer chgs addr.

nmxact - Scan on each conn in case peer chgs addr.


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/ae52880d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/tree/ae52880d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/diff/ae52880d

Branch: refs/heads/master
Commit: ae52880d6b2048e9765f6870b5d5487a2ccda038
Parents: 06f33c0
Author: Christopher Collins <cc...@apache.org>
Authored: Tue Mar 28 11:51:05 2017 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Tue Mar 28 15:38:36 2017 -0700

----------------------------------------------------------------------
 nmxact/nmble/ble_fsm.go | 29 +++++++++++++++++++----------
 1 file changed, 19 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/ae52880d/nmxact/nmble/ble_fsm.go
----------------------------------------------------------------------
diff --git a/nmxact/nmble/ble_fsm.go b/nmxact/nmble/ble_fsm.go
index 411ce59..52f61b8 100644
--- a/nmxact/nmble/ble_fsm.go
+++ b/nmxact/nmble/ble_fsm.go
@@ -88,16 +88,6 @@ func NewBleFsm(p BleFsmParams) *BleFsm {
 		attMtu: DFLT_ATT_MTU,
 	}
 
-	// The peer spec contains one of:
-	//     * Peer address;
-	//     * Predicate function to call during scanning.
-	// If a peer address is specified, fill in the peer field now so the
-	// scanning step can be skipped.  Otherwise, the peer field gets populated
-	// during scanning.
-	if bf.peerSpec.ScanPred == nil {
-		bf.peerDev = &bf.peerSpec.Dev
-	}
-
 	return bf
 }
 
@@ -294,6 +284,7 @@ func (bf *BleFsm) connectListen(seq int) error {
 					}
 
 					bf.setState(SESN_STATE_UNCONNECTED)
+					bf.peerDev = nil
 					bf.disconnectCb(err)
 					return
 
@@ -606,6 +597,23 @@ func (bf *BleFsm) subscribe() error {
 	return nil
 }
 
+// Tries to populate the FSM's peerDev field.  This function succeeds if the
+// client specified the address of the peer to connect to.
+func (bf *BleFsm) tryFillPeerDev() bool {
+	// The peer spec contains one of:
+	//     * Peer address;
+	//     * Predicate function to call during scanning.
+	// If a peer address is specified, fill in the peer field now so the
+	// scanning step can be skipped.  Otherwise, the peer field gets populated
+	// during scanning.
+	if bf.peerSpec.ScanPred == nil {
+		bf.peerDev = &bf.peerSpec.Dev
+		return true
+	}
+
+	return false
+}
+
 func (bf *BleFsm) Start() error {
 	if bf.getState() != SESN_STATE_UNCONNECTED {
 		return nmxutil.NewSesnAlreadyOpenError(
@@ -623,6 +631,7 @@ func (bf *BleFsm) Start() error {
 			// address, or if we have already successfully scanned, we initiate
 			// a connection now.  Otherwise, we need to scan to determine which
 			// peer meets the specified scan criteria.
+			bf.tryFillPeerDev()
 			if bf.peerDev == nil {
 				// Peer not inferred yet.  Initiate scan.
 				cb := func() error { return bf.scan() }