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/08/18 02:02:09 UTC
[mynewt-newtmgr] 04/04: newtmgr - revendor
This is an automated email from the ASF dual-hosted git repository.
ccollins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-newtmgr.git
commit badfa44761ef91da331ce91efe3525de9588edb4
Author: Christopher Collins <cc...@apache.org>
AuthorDate: Thu Aug 17 17:15:05 2017 -0700
newtmgr - revendor
---
newtmgr/Godeps/Godeps.json | 72 +++++++--------
.../newtmgr/nmxact/bledefs/bledefs.go | 10 ++
.../newtmgr/nmxact/nmble/ble_sesn.go | 55 ++++++-----
.../mynewt.apache.org/newtmgr/nmxact/nmble/conn.go | 40 ++++----
.../newtmgr/nmxact/nmble/profile.go | 4 +
.../newtmgr/nmxact/sesn/sesn_util.go | 2 +-
.../mynewt.apache.org/newtmgr/nmxact/xact/res.go | 101 +++++++++++++++++++--
7 files changed, 199 insertions(+), 85 deletions(-)
diff --git a/newtmgr/Godeps/Godeps.json b/newtmgr/Godeps/Godeps.json
index 9f98425..bb0fef8 100644
--- a/newtmgr/Godeps/Godeps.json
+++ b/newtmgr/Godeps/Godeps.json
@@ -107,93 +107,93 @@
},
{
"ImportPath": "mynewt.apache.org/newt/util",
- "Comment": "mynewt_1_0_1_tag-26-gd70e83c",
- "Rev": "d70e83caba3debbd8eff933308d619fe67c51dce"
+ "Comment": "mynewt_1_0_1_tag-32-g84f53dd",
+ "Rev": "84f53dd6fa887471393d955a5f179c89c57c95b3"
},
{
"ImportPath": "mynewt.apache.org/newt/util/unixchild",
- "Comment": "mynewt_1_0_1_tag-26-gd70e83c",
- "Rev": "d70e83caba3debbd8eff933308d619fe67c51dce"
+ "Comment": "mynewt_1_0_1_tag-32-g84f53dd",
+ "Rev": "84f53dd6fa887471393d955a5f179c89c57c95b3"
},
{
"ImportPath": "mynewt.apache.org/newt/viper",
- "Comment": "mynewt_1_0_1_tag-26-gd70e83c",
- "Rev": "d70e83caba3debbd8eff933308d619fe67c51dce"
+ "Comment": "mynewt_1_0_1_tag-32-g84f53dd",
+ "Rev": "84f53dd6fa887471393d955a5f179c89c57c95b3"
},
{
"ImportPath": "mynewt.apache.org/newt/yaml",
- "Comment": "mynewt_1_0_1_tag-26-gd70e83c",
- "Rev": "d70e83caba3debbd8eff933308d619fe67c51dce"
+ "Comment": "mynewt_1_0_1_tag-32-g84f53dd",
+ "Rev": "84f53dd6fa887471393d955a5f179c89c57c95b3"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/adv",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/bledefs",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/mgmt",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/nmble",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/nmp",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/nmserial",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/nmxutil",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/oic",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/omp",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/scan",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/sesn",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/udp",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/xact",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
},
{
"ImportPath": "mynewt.apache.org/newtmgr/nmxact/xport",
- "Comment": "mynewt_1_1_0_tag-50-g9bffc58",
- "Rev": "9bffc58e20c9c5ca399d83899db51a8e7caffd29"
+ "Comment": "mynewt_1_1_0_tag-54-g96f7ef8",
+ "Rev": "96f7ef876d0f42b96f125884a69ad2b2e44c9462"
}
]
}
diff --git a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/bledefs/bledefs.go b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/bledefs/bledefs.go
index e6bb5b9..5538681 100644
--- a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/bledefs/bledefs.go
+++ b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/bledefs/bledefs.go
@@ -824,6 +824,16 @@ func (b *BleChrId) String() string {
return fmt.Sprintf("s=%s c=%s", b.SvcUuid.String(), b.ChrUuid.String())
}
+func CompareChrIds(a BleChrId, b BleChrId) int {
+ if rc := CompareUuids(a.SvcUuid, b.SvcUuid); rc != 0 {
+ return rc
+ }
+ if rc := CompareUuids(a.ChrUuid, b.ChrUuid); rc != 0 {
+ return rc
+ }
+ return 0
+}
+
type BleMgmtChrs struct {
NmpReqChr *BleChrId
NmpRspChr *BleChrId
diff --git a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/ble_sesn.go b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/ble_sesn.go
index 31a8173..2355c30 100644
--- a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/ble_sesn.go
+++ b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/ble_sesn.go
@@ -110,6 +110,13 @@ func (s *BleSesn) disconnectListen() {
}()
}
+func (s *BleSesn) errIfClosed() error {
+ if !s.IsOpen() {
+ return nmxutil.NewSesnClosedError("Attempt to use closed BLE session")
+ }
+ return nil
+}
+
func (s *BleSesn) getChr(chrId *BleChrId) (*Characteristic, error) {
if chrId == nil {
return nil, fmt.Errorf("BLE session not configured with required " +
@@ -133,7 +140,7 @@ func (s *BleSesn) createNotifyListener(chrId *BleChrId) (
return nil, err
}
- return s.conn.ListenForNotifications(chr), nil
+ return s.conn.ListenForNotifications(chr)
}
func (s *BleSesn) notifyListenOnce(chrId *BleChrId,
@@ -168,19 +175,16 @@ func (s *BleSesn) notifyListenOnce(chrId *BleChrId,
}
func (s *BleSesn) notifyListen() {
- s.notifyListenOnce(s.mgmtChrs.NmpRspChr, s.txvr.DispatchNmpRsp)
s.notifyListenOnce(s.mgmtChrs.ResUnauthRspChr, s.txvr.DispatchCoap)
s.notifyListenOnce(s.mgmtChrs.ResSecureRspChr, s.txvr.DispatchCoap)
-
- // XXX: Don't listen for public resource responses for now; characteristic
- // may conflict with newtmgr.
- //s.notifyListenOnce(s.mgmtChrs.ResPublicRspChr, s.txvr.DispatchCoap)
+ s.notifyListenOnce(s.mgmtChrs.ResPublicRspChr, s.txvr.DispatchCoap)
+ s.notifyListenOnce(s.mgmtChrs.NmpRspChr, s.txvr.DispatchNmpRsp)
}
func (s *BleSesn) openOnce() (bool, error) {
if s.IsOpen() {
return false, nmxutil.NewSesnAlreadyOpenError(
- "Attempt to open an already-open bll session")
+ "Attempt to open an already-open BLE session")
}
if err := s.init(); err != nil {
@@ -290,10 +294,27 @@ func (s *BleSesn) EncodeNmpMsg(m *nmp.NmpMsg) ([]byte, error) {
return EncodeMgmtMsg(s.cfg.MgmtProto, m)
}
-// Blocking.
+func (s *BleSesn) MtuIn() int {
+ mtu, _ := MtuIn(s.cfg.MgmtProto, s.conn.AttMtu())
+ return mtu
+}
+
+func (s *BleSesn) MtuOut() int {
+ mtu, _ := MtuOut(s.cfg.MgmtProto, s.conn.AttMtu())
+ return mtu
+}
+
+func (s *BleSesn) ConnInfo() (BleConnDesc, error) {
+ return s.conn.ConnInfo(), nil
+}
+
func (s *BleSesn) TxNmpOnce(req *nmp.NmpMsg, opt sesn.TxOptions) (
nmp.NmpRsp, error) {
+ if err := s.errIfClosed(); err != nil {
+ return nil, err
+ }
+
chr, err := s.getChr(s.mgmtChrs.NmpReqChr)
if err != nil {
return nil, err
@@ -306,24 +327,14 @@ func (s *BleSesn) TxNmpOnce(req *nmp.NmpMsg, opt sesn.TxOptions) (
return s.txvr.TxNmp(txRaw, req, opt.Timeout)
}
-func (s *BleSesn) MtuIn() int {
- mtu, _ := MtuIn(s.cfg.MgmtProto, s.conn.AttMtu())
- return mtu
-}
-
-func (s *BleSesn) MtuOut() int {
- mtu, _ := MtuOut(s.cfg.MgmtProto, s.conn.AttMtu())
- return mtu
-}
-
-func (s *BleSesn) ConnInfo() (BleConnDesc, error) {
- return s.conn.ConnInfo(), nil
-}
-
func (s *BleSesn) TxCoapOnce(m coap.Message,
resType sesn.ResourceType,
opt sesn.TxOptions) (coap.COAPCode, []byte, error) {
+ if err := s.errIfClosed(); err != nil {
+ return 0, nil, err
+ }
+
chrId := ResChrReqIdLookup(s.mgmtChrs, resType)
chr, err := s.getChr(chrId)
if err != nil {
diff --git a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/conn.go b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/conn.go
index 5912d3d..40acaa0 100644
--- a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/conn.go
+++ b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/conn.go
@@ -46,7 +46,7 @@ type Conn struct {
// Terminates all go routines. Gets set to null after disconnect.
stopChan chan struct{}
- notifyMap map[*Characteristic][](*NotifyListener)
+ notifyMap map[*Characteristic]*NotifyListener
// Protects:
// * connHandle
@@ -64,7 +64,7 @@ func NewConn(bx *BleXport) *Conn {
attMtu: BLE_ATT_MTU_DFLT,
disconnectChan: make(chan error, 1),
stopChan: make(chan struct{}),
- notifyMap: map[*Characteristic][](*NotifyListener){},
+ notifyMap: map[*Characteristic]*NotifyListener{},
}
}
@@ -88,12 +88,10 @@ func (c *Conn) initiateShutdown() bool {
func (c *Conn) abortNotifyListeners(err error) {
// No need to lock mutex; this should only be called after all go routines
// have terminated.
- for _, nls := range c.notifyMap {
- for _, nl := range nls {
- nl.ErrChan <- err
- close(nl.NotifyChan)
- close(nl.ErrChan)
- }
+ for _, nl := range c.notifyMap {
+ nl.ErrChan <- err
+ close(nl.NotifyChan)
+ close(nl.ErrChan)
}
}
@@ -201,19 +199,16 @@ func (c *Conn) rxNotify(msg *BleNotifyRxEvt) {
return
}
- nls := c.notifyMap[chr]
- if nls == nil {
+ nl := c.notifyMap[chr]
+ if nl == nil {
return
}
- n := Notification{
+ nl.NotifyChan <- Notification{
Chr: chr,
Data: msg.Data.Bytes,
Indication: msg.Indication,
}
- for _, nl := range nls {
- nl.NotifyChan <- n
- }
}
// Listens for incoming notifications and indications.
@@ -662,17 +657,22 @@ func (c *Conn) Subscribe(chr *Characteristic) error {
return c.WriteHandle(dsc.Handle, payload, "subscribe")
}
-func (c *Conn) ListenForNotifications(chr *Characteristic) *NotifyListener {
+func (c *Conn) ListenForNotifications(chr *Characteristic) (
+ *NotifyListener, error) {
+
c.mtx.Lock()
defer c.mtx.Unlock()
- nl := NewNotifyListener()
- slice := c.notifyMap[chr]
+ if _, ok := c.notifyMap[chr]; ok {
+ return nil, fmt.Errorf(
+ "Already listening for notifications on characteristic %s",
+ chr.String())
+ }
- slice = append(slice, nl)
- c.notifyMap[chr] = slice
+ nl := NewNotifyListener()
+ c.notifyMap[chr] = nl
- return nl
+ return nl, nil
}
func (c *Conn) InitiateSecurity() error {
diff --git a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/profile.go b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/profile.go
index 0e98740..9db78e9 100644
--- a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/profile.go
+++ b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/nmble/profile.go
@@ -31,6 +31,10 @@ type Profile struct {
attrs map[uint16]*Characteristic
}
+func (c *Characteristic) String() string {
+ return c.Uuid.String()
+}
+
func (c *Characteristic) SubscribeType() BleChrFlags {
if c.Properties&BLE_GATT_F_NOTIFY != 0 {
return BLE_GATT_F_NOTIFY
diff --git a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/sesn/sesn_util.go b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/sesn/sesn_util.go
index f7b38c2..26eec86 100644
--- a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/sesn/sesn_util.go
+++ b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/sesn/sesn_util.go
@@ -128,7 +128,7 @@ func PostResource(s Sesn, resType ResourceType, uri string,
}
func DeleteResource(s Sesn, resType ResourceType, uri string,
- value []byte, o TxOptions) (coap.COAPCode, []byte, error) {
+ o TxOptions) (coap.COAPCode, []byte, error) {
return txCoap(func() (coap.COAPCode, []byte, error) {
return deleteResourceOnce(s, resType, uri, o)
diff --git a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/xact/res.go b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/xact/res.go
index c9fec2f..f54614a 100644
--- a/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/xact/res.go
+++ b/newtmgr/vendor/mynewt.apache.org/newtmgr/nmxact/xact/res.go
@@ -27,8 +27,8 @@ import (
type GetResCmd struct {
CmdBase
- Uri string
- Typ sesn.ResourceType
+ Path string
+ Typ sesn.ResourceType
}
func NewGetResCmd() *GetResCmd {
@@ -55,7 +55,7 @@ func (r *GetResResult) Status() int {
}
func (c *GetResCmd) Run(s sesn.Sesn) (Result, error) {
- status, val, err := sesn.GetResource(s, c.Typ, c.Uri, c.TxOptions())
+ status, val, err := sesn.GetResource(s, c.Typ, c.Path, c.TxOptions())
if err != nil {
return nil, err
}
@@ -68,7 +68,7 @@ func (c *GetResCmd) Run(s sesn.Sesn) (Result, error) {
type PutResCmd struct {
CmdBase
- Uri string
+ Path string
Typ sesn.ResourceType
Value []byte
}
@@ -89,7 +89,10 @@ func newPutResResult() *PutResResult {
}
func (r *PutResResult) Status() int {
- if r.Code == coap.Created || r.Code == coap.Changed || r.Code == coap.Content {
+ if r.Code == coap.Created ||
+ r.Code == coap.Changed ||
+ r.Code == coap.Content {
+
return 0
} else {
return int(r.Code)
@@ -97,7 +100,7 @@ func (r *PutResResult) Status() int {
}
func (c *PutResCmd) Run(s sesn.Sesn) (Result, error) {
- status, r, err := sesn.PutResource(s, c.Typ, c.Uri, c.Value, c.TxOptions())
+ status, r, err := sesn.PutResource(s, c.Typ, c.Path, c.Value, c.TxOptions())
if err != nil {
return nil, err
}
@@ -107,3 +110,89 @@ func (c *PutResCmd) Run(s sesn.Sesn) (Result, error) {
res.Value = r
return res, nil
}
+
+type PostResCmd struct {
+ CmdBase
+ Path string
+ Typ sesn.ResourceType
+ Value []byte
+}
+
+func NewPostResCmd() *PostResCmd {
+ return &PostResCmd{
+ CmdBase: NewCmdBase(),
+ }
+}
+
+type PostResResult struct {
+ Code coap.COAPCode
+ Value []byte
+}
+
+func newPostResResult() *PostResResult {
+ return &PostResResult{}
+}
+
+func (r *PostResResult) Status() int {
+ if r.Code == coap.Created ||
+ r.Code == coap.Changed ||
+ r.Code == coap.Content {
+
+ return 0
+ } else {
+ return int(r.Code)
+ }
+}
+
+func (c *PostResCmd) Run(s sesn.Sesn) (Result, error) {
+ status, r, err := sesn.PostResource(s, c.Typ, c.Path, c.Value, c.TxOptions())
+ if err != nil {
+ return nil, err
+ }
+
+ res := newPostResResult()
+ res.Code = status
+ res.Value = r
+ return res, nil
+}
+
+type DeleteResCmd struct {
+ CmdBase
+ Path string
+ Typ sesn.ResourceType
+}
+
+func NewDeleteResCmd() *DeleteResCmd {
+ return &DeleteResCmd{
+ CmdBase: NewCmdBase(),
+ }
+}
+
+type DeleteResResult struct {
+ Code coap.COAPCode
+ Value []byte
+}
+
+func newDeleteResResult() *DeleteResResult {
+ return &DeleteResResult{}
+}
+
+func (r *DeleteResResult) Status() int {
+ if r.Code == coap.Deleted {
+ return 0
+ } else {
+ return int(r.Code)
+ }
+}
+
+func (c *DeleteResCmd) Run(s sesn.Sesn) (Result, error) {
+ status, val, err := sesn.DeleteResource(s, c.Typ, c.Path, c.TxOptions())
+ if err != nil {
+ return nil, err
+ }
+
+ res := newDeleteResResult()
+ res.Code = status
+ res.Value = val
+ return res, nil
+}
--
To stop receiving notification emails like this one, please contact
"commits@mynewt.apache.org" <co...@mynewt.apache.org>.