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/07 21:08:36 UTC

incubator-mynewt-newtmgr git commit: nmxact - ble_loop example: graceful shutdown

Repository: incubator-mynewt-newtmgr
Updated Branches:
  refs/heads/master f573ad10e -> a5c9d0b3f


nmxact - ble_loop example: graceful shutdown


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

Branch: refs/heads/master
Commit: a5c9d0b3f9ac7df16492e5dd39a3b9aac13a72a6
Parents: f573ad1
Author: Christopher Collins <cc...@apache.org>
Authored: Fri Apr 7 14:08:15 2017 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Fri Apr 7 14:08:15 2017 -0700

----------------------------------------------------------------------
 nmxact/example/ble_loop/ble_loop.go | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newtmgr/blob/a5c9d0b3/nmxact/example/ble_loop/ble_loop.go
----------------------------------------------------------------------
diff --git a/nmxact/example/ble_loop/ble_loop.go b/nmxact/example/ble_loop/ble_loop.go
index c76b11c..7c6140a 100644
--- a/nmxact/example/ble_loop/ble_loop.go
+++ b/nmxact/example/ble_loop/ble_loop.go
@@ -22,13 +22,40 @@ package main
 import (
 	"fmt"
 	"os"
+	"os/signal"
+	"syscall"
 
 	"mynewt.apache.org/newtmgr/nmxact/bledefs"
 	"mynewt.apache.org/newtmgr/nmxact/nmble"
 	"mynewt.apache.org/newtmgr/nmxact/sesn"
 	"mynewt.apache.org/newtmgr/nmxact/xact"
+	"mynewt.apache.org/newtmgr/nmxact/xport"
 )
 
+func configExitHandler(x xport.Xport, s sesn.Sesn) {
+	onExit := func() {
+		if s.IsOpen() {
+			s.Close()
+		}
+
+		x.Stop()
+	}
+
+	sigChan := make(chan os.Signal, 1)
+	signal.Notify(sigChan)
+
+	go func() {
+		for {
+			s := <-sigChan
+			switch s {
+			case os.Interrupt, syscall.SIGTERM:
+				onExit()
+				os.Exit(0)
+			}
+		}
+	}()
+}
+
 func main() {
 	// Initialize the BLE transport.
 	params := nmble.NewXportCfg()
@@ -66,6 +93,8 @@ func main() {
 		os.Exit(1)
 	}
 
+	configExitHandler(x, s)
+
 	// Repeatedly:
 	//     * Connect to peer if unconnected.
 	//     * Send an echo command to peer.