blob: b9a1c2757f14d48c819aea3ca5802e352aa3d48a [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build android
package discovery
import (
"unsafe"
jutil "v.io/x/jni/util"
"v.io/x/ref/lib/discovery"
)
// #include "jni.h"
import "C"
var (
androidContextSign = jutil.ClassSign("android.content.Context")
contextSign = jutil.ClassSign("io.v.v23.context.VContext")
advertisementSign = jutil.ClassSign("io.v.x.ref.lib.discovery.Advertisement")
scanHandlerSign = jutil.ClassSign("io.v.impl.google.lib.discovery.ScanHandler")
// Global reference for io.v.x.ref.lib.discovery.Advertisement
jAdvertisementClass jutil.Class
// Global reference for io.v.android.libs.discovery.ble.BlePlugin
jBlePluginClass jutil.Class
// Global reference for io.v.android.libs.discovery.ble.NativeScanHandler
jNativeScanHandlerClass jutil.Class
)
func Init(env jutil.Env) error {
var err error
jAdvertisementClass, err = jutil.JFindClass(env, "io/v/x/ref/lib/discovery/Advertisement")
if err != nil {
return err
}
jBlePluginClass, err = jutil.JFindClass(env, "io/v/android/libs/discovery/ble/BlePlugin")
if err != nil {
return err
}
jNativeScanHandlerClass, err = jutil.JFindClass(env, "io/v/android/libs/discovery/ble/NativeScanHandler")
return err
}
//export Java_io_v_android_libs_discovery_ble_NativeScanHandler_nativeHandleUpdate
func Java_io_v_android_libs_discovery_ble_NativeScanHandler_nativeHandleUpdate(jenv *C.JNIEnv, _ C.jobject, jAdvObj C.jobject, goPtr C.jlong) {
env := jutil.Env(uintptr(unsafe.Pointer(jenv)))
ch := (*(*chan<- discovery.Advertisement)(jutil.NativePtr(goPtr)))
jAdv := jutil.Object(uintptr(unsafe.Pointer(jAdvObj)))
var adv discovery.Advertisement
if err := jutil.GoVomCopy(env, jAdv, jAdvertisementClass, &adv); err != nil {
jutil.JThrowV(env, err)
return
}
ch <- adv
}
//export Java_io_v_android_libs_discovery_ble_NativeScanHandler_nativeFinalize
func Java_io_v_android_libs_discovery_ble_NativeScanHandler_nativeFinalize(jenv *C.JNIEnv, _ C.jobject, goPtr C.jlong) {
jutil.GoUnref(jutil.NativePtr(goPtr))
}