Changed some types.

Change-Id: I45dca91f02e7924903a111f380fa4de09d2e80e3
diff --git a/go/src/mojom/v.io/x/ref/services/discovery/ble/ble/ble.mojom.go b/go/src/mojom/v.io/x/ref/services/discovery/ble/ble/ble.mojom.go
index ebcf1fa..4276952 100644
--- a/go/src/mojom/v.io/x/ref/services/discovery/ble/ble/ble.mojom.go
+++ b/go/src/mojom/v.io/x/ref/services/discovery/ble/ble/ble.mojom.go
@@ -647,8 +647,8 @@
 }
 
 type PluginScanHandler interface {
-	Add(inS Service) (err error)
-	Remove(inS Service) (err error)
+	Found(inS Advertisement) (err error)
+	Lost(inS Advertisement) (err error)
 }
 
 var pluginScanHandler_Name = "ble::PluginScanHandler"
@@ -689,8 +689,8 @@
         return PluginScanHandler_Request(r), PluginScanHandler_Pointer(p)
 }
 
-const pluginScanHandler_Add_Name uint32 = 0
-const pluginScanHandler_Remove_Name uint32 = 1
+const pluginScanHandler_Found_Name uint32 = 0
+const pluginScanHandler_Lost_Name uint32 = 1
 
 type PluginScanHandler_Proxy struct {
 	router *bindings.Router
@@ -708,11 +708,11 @@
 	p.router.Close()
 }
 
-type pluginScanHandler_Add_Params struct {
-	inS Service
+type pluginScanHandler_Found_Params struct {
+	inS Advertisement
 }
 
-func (s *pluginScanHandler_Add_Params) Encode(encoder *bindings.Encoder) error {
+func (s *pluginScanHandler_Found_Params) Encode(encoder *bindings.Encoder) error {
 	encoder.StartStruct(8, 0)
 	if err := encoder.WritePointer(); err != nil {
 		return err
@@ -726,23 +726,23 @@
 	return nil
 }
 
-var pluginScanHandler_Add_Params_Versions []bindings.DataHeader = []bindings.DataHeader{
+var pluginScanHandler_Found_Params_Versions []bindings.DataHeader = []bindings.DataHeader{
 	bindings.DataHeader{16, 0},
 }
 
-func (s *pluginScanHandler_Add_Params) Decode(decoder *bindings.Decoder) error {
+func (s *pluginScanHandler_Found_Params) Decode(decoder *bindings.Decoder) error {
 	header, err := decoder.StartStruct()
 	if err != nil {
 		return err
 	}
-	index := sort.Search(len(pluginScanHandler_Add_Params_Versions), func(i int) bool {
-		return pluginScanHandler_Add_Params_Versions[i].ElementsOrVersion >= header.ElementsOrVersion
+	index := sort.Search(len(pluginScanHandler_Found_Params_Versions), func(i int) bool {
+		return pluginScanHandler_Found_Params_Versions[i].ElementsOrVersion >= header.ElementsOrVersion
 	})
-	if index < len(pluginScanHandler_Add_Params_Versions) {
-		if pluginScanHandler_Add_Params_Versions[index].ElementsOrVersion > header.ElementsOrVersion {
+	if index < len(pluginScanHandler_Found_Params_Versions) {
+		if pluginScanHandler_Found_Params_Versions[index].ElementsOrVersion > header.ElementsOrVersion {
 			index--
 		}
-		expectedSize := pluginScanHandler_Add_Params_Versions[index].Size
+		expectedSize := pluginScanHandler_Found_Params_Versions[index].Size
 		if expectedSize != header.Size {
 			return &bindings.ValidationError{bindings.UnexpectedStructHeader,
 				fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size),
@@ -768,12 +768,12 @@
 	return nil
 }
 
-func (p *PluginScanHandler_Proxy) Add(inS Service) (err error) {
-	payload := &pluginScanHandler_Add_Params{
+func (p *PluginScanHandler_Proxy) Found(inS Advertisement) (err error) {
+	payload := &pluginScanHandler_Found_Params{
 		inS,
 	}
 	header := bindings.MessageHeader{
-		Type: pluginScanHandler_Add_Name,
+		Type: pluginScanHandler_Found_Name,
 		Flags: bindings.MessageNoFlag,
 	}
 	var message *bindings.Message
@@ -789,11 +789,11 @@
 	return
 }
 
-type pluginScanHandler_Remove_Params struct {
-	inS Service
+type pluginScanHandler_Lost_Params struct {
+	inS Advertisement
 }
 
-func (s *pluginScanHandler_Remove_Params) Encode(encoder *bindings.Encoder) error {
+func (s *pluginScanHandler_Lost_Params) Encode(encoder *bindings.Encoder) error {
 	encoder.StartStruct(8, 0)
 	if err := encoder.WritePointer(); err != nil {
 		return err
@@ -807,23 +807,23 @@
 	return nil
 }
 
-var pluginScanHandler_Remove_Params_Versions []bindings.DataHeader = []bindings.DataHeader{
+var pluginScanHandler_Lost_Params_Versions []bindings.DataHeader = []bindings.DataHeader{
 	bindings.DataHeader{16, 0},
 }
 
-func (s *pluginScanHandler_Remove_Params) Decode(decoder *bindings.Decoder) error {
+func (s *pluginScanHandler_Lost_Params) Decode(decoder *bindings.Decoder) error {
 	header, err := decoder.StartStruct()
 	if err != nil {
 		return err
 	}
-	index := sort.Search(len(pluginScanHandler_Remove_Params_Versions), func(i int) bool {
-		return pluginScanHandler_Remove_Params_Versions[i].ElementsOrVersion >= header.ElementsOrVersion
+	index := sort.Search(len(pluginScanHandler_Lost_Params_Versions), func(i int) bool {
+		return pluginScanHandler_Lost_Params_Versions[i].ElementsOrVersion >= header.ElementsOrVersion
 	})
-	if index < len(pluginScanHandler_Remove_Params_Versions) {
-		if pluginScanHandler_Remove_Params_Versions[index].ElementsOrVersion > header.ElementsOrVersion {
+	if index < len(pluginScanHandler_Lost_Params_Versions) {
+		if pluginScanHandler_Lost_Params_Versions[index].ElementsOrVersion > header.ElementsOrVersion {
 			index--
 		}
-		expectedSize := pluginScanHandler_Remove_Params_Versions[index].Size
+		expectedSize := pluginScanHandler_Lost_Params_Versions[index].Size
 		if expectedSize != header.Size {
 			return &bindings.ValidationError{bindings.UnexpectedStructHeader,
 				fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size),
@@ -849,12 +849,12 @@
 	return nil
 }
 
-func (p *PluginScanHandler_Proxy) Remove(inS Service) (err error) {
-	payload := &pluginScanHandler_Remove_Params{
+func (p *PluginScanHandler_Proxy) Lost(inS Advertisement) (err error) {
+	payload := &pluginScanHandler_Lost_Params{
 		inS,
 	}
 	header := bindings.MessageHeader{
-		Type: pluginScanHandler_Remove_Name,
+		Type: pluginScanHandler_Lost_Name,
 		Flags: bindings.MessageNoFlag,
 	}
 	var message *bindings.Message
@@ -882,31 +882,31 @@
 
 func (s *pluginScanHandler_Stub) Accept(message *bindings.Message) (err error) {
 	switch message.Header.Type {
-	case pluginScanHandler_Add_Name:
+	case pluginScanHandler_Found_Name:
 		if message.Header.Flags != bindings.MessageNoFlag {
 			return &bindings.ValidationError{bindings.MessageHeaderInvalidFlags,
 				fmt.Sprintf("invalid message header flag: %v", message.Header.Flags),
 			}
 		}
-		var request pluginScanHandler_Add_Params
+		var request pluginScanHandler_Found_Params
 		if err := message.DecodePayload(&request); err != nil {
 			return err
 		}
-		err = s.impl.Add(request.inS)
+		err = s.impl.Found(request.inS)
 		if err != nil {
 			return
 		}
-	case pluginScanHandler_Remove_Name:
+	case pluginScanHandler_Lost_Name:
 		if message.Header.Flags != bindings.MessageNoFlag {
 			return &bindings.ValidationError{bindings.MessageHeaderInvalidFlags,
 				fmt.Sprintf("invalid message header flag: %v", message.Header.Flags),
 			}
 		}
-		var request pluginScanHandler_Remove_Params
+		var request pluginScanHandler_Lost_Params
 		if err := message.DecodePayload(&request); err != nil {
 			return err
 		}
-		err = s.impl.Remove(request.inS)
+		err = s.impl.Lost(request.inS)
 		if err != nil {
 			return
 		}
diff --git a/go/src/mojom/v.io/x/ref/services/discovery/discovery/discovery.mojom.go b/go/src/mojom/v.io/x/ref/services/discovery/discovery/discovery.mojom.go
index 5ccd99f..9ad87c7 100644
--- a/go/src/mojom/v.io/x/ref/services/discovery/discovery/discovery.mojom.go
+++ b/go/src/mojom/v.io/x/ref/services/discovery/discovery/discovery.mojom.go
@@ -930,7 +930,7 @@
 }
 
 type Service struct {
-	InterfaceNames []string
+	InterfaceNames string
 	Attrs map[string]string
 	Addrs []string
 }
@@ -940,16 +940,7 @@
 	if err := encoder.WritePointer(); err != nil {
 		return err
 	}
-	encoder.StartArray(uint32(len(s.InterfaceNames)), 64)
-	for _, elem0 := range s.InterfaceNames {
-		if err := encoder.WritePointer(); err != nil {
-			return err
-		}
-		if err := encoder.WriteString(elem0); err != nil {
-			return err
-		}
-	}
-	if err := encoder.Finish(); err != nil {
+	if err := encoder.WriteString(s.InterfaceNames); err != nil {
 		return err
 	}
 	if err := encoder.WritePointer(); err != nil {
@@ -1049,29 +1040,11 @@
 		if pointer0 == 0 {
 			return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
 		} else {
-			len0, err := decoder.StartArray(64)
+			value0, err := decoder.ReadString()
 			if err != nil {
 				return err
 			}
-			s.InterfaceNames = make([]string, len0)
-			for i0 := uint32(0); i0 < len0; i0++ {
-				pointer1, err := decoder.ReadPointer()
-				if err != nil {
-					return err
-				}
-				if pointer1 == 0 {
-					return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
-				} else {
-					value1, err := decoder.ReadString()
-					if err != nil {
-						return err
-					}
-					s.InterfaceNames[i0] = value1
-				}
-			}
-			if err := decoder.Finish(); err != nil {
-				return err
-			}
+			s.InterfaceNames = value0
 		}
 	}
 	if header.ElementsOrVersion >= 0 {
diff --git a/go/src/v.io/x/ref/services/discovery/ble/neighborhood.go b/go/src/v.io/x/ref/services/discovery/ble/neighborhood.go
index b26d003..301316a 100644
--- a/go/src/v.io/x/ref/services/discovery/ble/neighborhood.go
+++ b/go/src/v.io/x/ref/services/discovery/ble/neighborhood.go
@@ -101,12 +101,28 @@
 	}
 	matches := s.matches(id, newService)
 	oldMatches := s.matches(id, oldService)
+	uuid, err := hex.DecodeString(id)
+	if err != nil {
+		log.Fatal("Failed to decode uuid:",id,",",err)
+	}
 	if oldMatches {
-		s.ch <- &update{found: false, service: *oldService}
+		s.ch <- &update{
+			found: false,
+			adv: ble.Advertisement{
+				ServiceId: uuid,
+				Service: *oldService,
+			},
+		}
 	}
 
 	if matches {
-		s.ch <- &update{found: true, service: *newService}
+		s.ch <- &update{
+			found: true,
+			adv: ble.Advertisement{
+				ServiceId: uuid,
+				Service: *newService,
+			},
+		}
 	}
 }
 
@@ -134,7 +150,7 @@
 
 type update struct {
 	found   bool
-	service ble.Service
+	adv ble.Advertisement
 }
 
 type bleCacheEntry struct {
diff --git a/go/src/v.io/x/ref/services/discovery/ble/service.go b/go/src/v.io/x/ref/services/discovery/ble/service.go
index 9270097..bf0a91a 100644
--- a/go/src/v.io/x/ref/services/discovery/ble/service.go
+++ b/go/src/v.io/x/ref/services/discovery/ble/service.go
@@ -32,9 +32,9 @@
 	go func() {
 		for v := range ch {
 			if v.found {
-				proxy.Add(v.service)
+				proxy.Found(v.adv)
 			} else {
-				proxy.Remove(v.service)
+				proxy.Lost(v.adv)
 			}
 		}
 	}()
diff --git a/mojom/v.io/x/ref/services/discovery/ble/ble.mojom b/mojom/v.io/x/ref/services/discovery/ble/ble.mojom
index 331c735..62985f7 100644
--- a/mojom/v.io/x/ref/services/discovery/ble/ble.mojom
+++ b/mojom/v.io/x/ref/services/discovery/ble/ble.mojom
@@ -27,9 +27,9 @@
 };
 
 interface PluginScanHandler {
-    Add(Service s);
+    Found(Advertisement s);
 
-    Remove(Service s);
+    Lost(Advertisement s);
 };
 
 interface PluginStopper {