Repository: incubator-mynewt-newtmgr Updated Branches: refs/heads/master e234593ab -> ff255cbfa
nmxact - Keep ble_fsm config in params object. 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/f02ca2a1 Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/tree/f02ca2a1 Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/diff/f02ca2a1 Branch: refs/heads/master Commit: f02ca2a1c152e9cce0131d46ff5055529cc82d68 Parents: e234593 Author: Christopher Collins <[email protected]> Authored: Wed Mar 29 12:34:38 2017 -0700 Committer: Christopher Collins <[email protected]> Committed: Wed Mar 29 12:34:38 2017 -0700 ---------------------------------------------------------------------- nmxact/nmble/ble_fsm.go | 70 ++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/f02ca2a1/nmxact/nmble/ble_fsm.go ---------------------------------------------------------------------- diff --git a/nmxact/nmble/ble_fsm.go b/nmxact/nmble/ble_fsm.go index 9c96526..cfdb760 100644 --- a/nmxact/nmble/ble_fsm.go +++ b/nmxact/nmble/ble_fsm.go @@ -48,16 +48,9 @@ type BleFsmParams struct { } type BleFsm struct { - bx *BleXport - ownAddrType BleAddrType - peerSpec sesn.BlePeerSpec - peerDev *BleDev - svcUuid BleUuid - reqChrUuid BleUuid - rspChrUuid BleUuid - rxNmpCb BleRxNmpFn - disconnectCb BleDisconnectFn + params BleFsmParams + peerDev *BleDev connHandle int nmpSvc *BleSvc nmpReqChr *BleChr @@ -75,14 +68,7 @@ type BleFsm struct { func NewBleFsm(p BleFsmParams) *BleFsm { bf := &BleFsm{ - bx: p.Bx, - peerSpec: p.PeerSpec, - ownAddrType: p.OwnAddrType, - svcUuid: p.SvcUuid, - reqChrUuid: p.ReqChrUuid, - rspChrUuid: p.RspChrUuid, - rxNmpCb: p.RxNmpCb, - disconnectCb: p.DisconnectCb, + params: p, bls: map[*BleListener]struct{}{}, attMtu: DFLT_ATT_MTU, @@ -143,7 +129,7 @@ func (bf *BleFsm) addBleListener(base BleMsgBase) (*BleListener, error) { bf.bls[bl] = struct{}{} bf.mtx.Unlock() - if err := bf.bx.Bd.AddListener(base, bl); err != nil { + if err := bf.params.Bx.Bd.AddListener(base, bl); err != nil { delete(bf.bls, bl) return nil, err } @@ -167,7 +153,7 @@ func (bf *BleFsm) addBleSeqListener(seq int) (*BleListener, error) { } func (bf *BleFsm) removeBleListener(base BleMsgBase) { - bl := bf.bx.Bd.RemoveListener(base) + bl := bf.params.Bx.Bd.RemoveListener(base) if bl != nil { bf.mtx.Lock() delete(bf.bls, bl) @@ -286,13 +272,13 @@ func (bf *BleFsm) connectListen(seq int) error { bf.setState(SESN_STATE_UNCONNECTED) peer := *bf.peerDev bf.peerDev = nil - bf.disconnectCb(peer, err) + bf.params.DisconnectCb(peer, err) return default: } - case <-bl.AfterTimeout(bf.bx.rspTimeout): + case <-bl.AfterTimeout(bf.params.Bx.rspTimeout): bf.connChan <- BhdTimeoutError(MSG_TYPE_CONNECT) } } @@ -326,7 +312,7 @@ func (bf *BleFsm) nmpRspListen() error { if bf.nmpRspChr != nil && msg.AttrHandle == bf.nmpRspChr.ValHandle { - bf.rxNmpCb(msg.Data.Bytes) + bf.params.RxNmpCb(msg.Data.Bytes) } default: @@ -339,7 +325,7 @@ func (bf *BleFsm) nmpRspListen() error { func (bf *BleFsm) connect() error { r := NewBleConnectReq() - r.OwnAddrType = bf.ownAddrType + r.OwnAddrType = bf.params.OwnAddrType r.PeerAddrType = bf.peerDev.AddrType r.PeerAddr = bf.peerDev.Addr @@ -347,7 +333,7 @@ func (bf *BleFsm) connect() error { return err } - if err := connect(bf.bx, bf.connChan, r); err != nil { + if err := connect(bf.params.Bx, bf.connChan, r); err != nil { return err } @@ -356,7 +342,7 @@ func (bf *BleFsm) connect() error { func (bf *BleFsm) scan() error { r := NewBleScanReq() - r.OwnAddrType = bf.ownAddrType + r.OwnAddrType = bf.params.OwnAddrType r.DurationMs = 15000 r.FilterPolicy = BLE_SCAN_FILT_NO_WL r.Limited = false @@ -388,13 +374,13 @@ func (bf *BleFsm) scan() error { } // Ask client if we should connect to this advertiser. - if bf.peerSpec.ScanPred(r) { + if bf.params.PeerSpec.ScanPred(r) { bf.peerDev = &r.Sender abortChan <- struct{}{} } } - if err := scan(bf.bx, bl, r, abortChan, scanCb); err != nil { + if err := scan(bf.params.Bx, bl, r, abortChan, scanCb); err != nil { return err } @@ -411,7 +397,7 @@ func (bf *BleFsm) scanCancel() error { } defer bf.removeBleSeqListener(r.Seq) - if err := scanCancel(bf.bx, bl, r); err != nil { + if err := scanCancel(bf.params.Bx, bl, r); err != nil { return err } @@ -452,7 +438,7 @@ func (bf *BleFsm) terminate() error { } defer bf.removeBleSeqListener(r.Seq) - if err := terminate(bf.bx, bl, r); err != nil { + if err := terminate(bf.params.Bx, bl, r); err != nil { return err } @@ -474,7 +460,7 @@ func (bf *BleFsm) connCancel() error { } defer bf.removeBleSeqListener(r.Seq) - if err := connCancel(bf.bx, bl, r); err != nil { + if err := connCancel(bf.params.Bx, bl, r); err != nil { return err } @@ -484,7 +470,7 @@ func (bf *BleFsm) connCancel() error { func (bf *BleFsm) discSvcUuid() error { r := NewBleDiscSvcUuidReq() r.ConnHandle = bf.connHandle - r.Uuid = bf.svcUuid + r.Uuid = bf.params.SvcUuid bl, err := bf.addBleSeqListener(r.Seq) if err != nil { @@ -492,7 +478,7 @@ func (bf *BleFsm) discSvcUuid() error { } defer bf.removeBleSeqListener(r.Seq) - bf.nmpSvc, err = discSvcUuid(bf.bx, bl, r) + bf.nmpSvc, err = discSvcUuid(bf.params.Bx, bl, r) if err != nil { return err } @@ -512,16 +498,16 @@ func (bf *BleFsm) discAllChrs() error { } defer bf.removeBleSeqListener(r.Seq) - chrs, err := discAllChrs(bf.bx, bl, r) + chrs, err := discAllChrs(bf.params.Bx, bl, r) if err != nil { return err } for _, c := range chrs { - if CompareUuids(bf.reqChrUuid, c.Uuid) == 0 { + if CompareUuids(bf.params.ReqChrUuid, c.Uuid) == 0 { bf.nmpReqChr = c } - if CompareUuids(bf.rspChrUuid, c.Uuid) == 0 { + if CompareUuids(bf.params.RspChrUuid, c.Uuid) == 0 { bf.nmpRspChr = c } } @@ -529,13 +515,13 @@ func (bf *BleFsm) discAllChrs() error { if bf.nmpReqChr == nil { return fmt.Errorf( "Peer doesn't support required characteristic: %s", - bf.reqChrUuid.String()) + bf.params.ReqChrUuid.String()) } if bf.nmpRspChr == nil { return fmt.Errorf( "Peer doesn't support required characteristic: %s", - bf.rspChrUuid.String()) + bf.params.RspChrUuid.String()) } return nil @@ -551,7 +537,7 @@ func (bf *BleFsm) exchangeMtu() error { } defer bf.removeBleSeqListener(r.Seq) - mtu, err := exchangeMtu(bf.bx, bl, r) + mtu, err := exchangeMtu(bf.params.Bx, bl, r) if err != nil { return err } @@ -572,7 +558,7 @@ func (bf *BleFsm) writeCmd(data []byte) error { } defer bf.removeBleSeqListener(r.Seq) - if err := writeCmd(bf.bx, bl, r); err != nil { + if err := writeCmd(bf.params.Bx, bl, r); err != nil { return err } @@ -591,7 +577,7 @@ func (bf *BleFsm) subscribe() error { } defer bf.removeBleSeqListener(r.Seq) - if err := writeCmd(bf.bx, bl, r); err != nil { + if err := writeCmd(bf.params.Bx, bl, r); err != nil { return err } @@ -607,8 +593,8 @@ func (bf *BleFsm) tryFillPeerDev() bool { // 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 + if bf.params.PeerSpec.ScanPred == nil { + bf.peerDev = &bf.params.PeerSpec.Dev return true }
