lib/discovery/ble: Export Driver.DebugString as a stat.

Change-Id: I4c74d0afd97053d4861355566c646065310a5d20
diff --git a/lib/discovery/plugins/ble/ble.go b/lib/discovery/plugins/ble/ble.go
index 76abf36..dad1926 100644
--- a/lib/discovery/plugins/ble/ble.go
+++ b/lib/discovery/plugins/ble/ble.go
@@ -5,12 +5,15 @@
 package ble
 
 import (
+	"fmt"
+	"runtime"
+	"sync"
 	"time"
 
 	"v.io/v23/context"
 	"v.io/v23/discovery"
-
 	idiscovery "v.io/x/ref/lib/discovery"
+	"v.io/x/ref/lib/stats"
 )
 
 const (
@@ -19,6 +22,11 @@
 	defaultTTL = 90 * time.Second
 )
 
+var (
+	statMu  sync.Mutex
+	statIdx int
+)
+
 type plugin struct {
 	advertiser *advertiser
 	scanner    *scanner
@@ -89,10 +97,18 @@
 	if err != nil {
 		return nil, err
 	}
+	statMu.Lock()
+	statName := fmt.Sprintf("discovery/ble/driver/%d", statIdx)
+	statIdx++
+	stats.NewStringFunc(statName, func() string {
+		return driver.DebugString()
+	})
+	statMu.Unlock()
 	p := &plugin{
 		advertiser: newAdvertiser(ctx, driver),
 		scanner:    newScanner(ctx, driver, ttl),
 		adStopper:  idiscovery.NewTrigger(),
 	}
+	runtime.SetFinalizer(p, func(p *plugin) { stats.Delete(statName) })
 	return p, nil
 }