Revert "Conversion to Blessed library for Android -- interim check-in,"
This reverts commit 4db9b4a5ed.
			
			
This commit is contained in:
		
							parent
							
								
									6bad5ba08e
								
							
						
					
					
						commit
						4ae98b622b
					
				|  | @ -1,262 +0,0 @@ | |||
| package st.wow.git.ble; | ||||
| 
 | ||||
| import java.lang.String; | ||||
| import java.util.List; | ||||
| import android.app.Activity; | ||||
| import android.app.Fragment; | ||||
| import android.os.Handler; | ||||
| import android.bluetooth.BluetoothAdapter; | ||||
| import android.bluetooth.BluetoothGatt; | ||||
| import android.bluetooth.BluetoothGattCharacteristic; | ||||
| import android.bluetooth.BluetoothGattService; | ||||
| import android.bluetooth.BluetoothManager; | ||||
| import android.bluetooth.le.ScanResult; | ||||
| import android.content.BroadcastReceiver; | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.content.IntentFilter; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.Manifest; | ||||
| import android.util.Log; | ||||
| 
 | ||||
| import com.welie.blessed.BluetoothCentral; | ||||
| import com.welie.blessed.BluetoothCentralCallback; | ||||
| import com.welie.blessed.BluetoothPeripheral; | ||||
| import com.welie.blessed.BluetoothPeripheralCallback; | ||||
| 
 | ||||
| public class BlessedConnect extends Fragment { | ||||
| 	BluetoothCentral central; | ||||
| 	boolean wantScan = false; | ||||
| 
 | ||||
| 	final int PERMISSION_REQUEST = 1; | ||||
| 	final int REQUEST_ENABLE_BT = 2; | ||||
| 
 | ||||
| 	public BlessedConnect() { | ||||
| 		Log.d("gio", "BlessedConnect()"); | ||||
| 	} | ||||
| 
 | ||||
| 	@Override public void onAttach(Context ctx) { | ||||
| 		super.onAttach(ctx); | ||||
| 		Log.d("gio", "BlessedConnect: onAttach()"); | ||||
| 		ctx.registerReceiver(receiver, new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED)); | ||||
| 		if (ctx.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { | ||||
|                         requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST); | ||||
|                 } | ||||
| 		central = new BluetoothCentral(ctx, centralCallback, new Handler(ctx.getMainLooper())); | ||||
| 		installComplete(this); | ||||
| 	} | ||||
| 
 | ||||
| 	private final BroadcastReceiver receiver = new BroadcastReceiver() { | ||||
| 		@Override | ||||
| 		public void onReceive(Context context, Intent intent) { | ||||
| 			Log.d("gio", "Received broadcast"); | ||||
| 			if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { | ||||
| 				updateState(intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1)); | ||||
| 			} | ||||
| 		} | ||||
| 	}; | ||||
| 
 | ||||
| 	public boolean enabled() { | ||||
| 		Context ctx = getContext(); | ||||
| 		//The Blessed library does not expose this functionality, so | ||||
| 		//we need to get our own BluetoothAdapter and check its status. | ||||
| 		BluetoothAdapter adapter = ((BluetoothManager)ctx.getSystemService(ctx.BLUETOOTH_SERVICE)).getAdapter(); | ||||
| 		return (adapter != null && adapter.isEnabled()); | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
| 	public void onDestroy() { | ||||
| 		Log.d("gio","onDestroy()"); | ||||
| 		stopScan(); | ||||
| 		getContext().unregisterReceiver(receiver); | ||||
| 		super.onDestroy(); | ||||
| 	} | ||||
| 
 | ||||
| 	public void scan() { | ||||
| 		Log.d("gio", "BlessedConnect: Scan"); | ||||
| 		central.scanForPeripherals(); | ||||
| 	} | ||||
| 
 | ||||
| 	public void stopScan() { | ||||
| 		Log.d("gio", "BlessedConnect: Stop scan"); | ||||
| 		central.stopScan(); | ||||
| 	} | ||||
| 
 | ||||
| 	private final BluetoothCentralCallback centralCallback = new BluetoothCentralCallback() { | ||||
| 		@Override | ||||
| 		public void onDiscoveredPeripheral(BluetoothPeripheral peripheral, ScanResult scanResult) { | ||||
| 			Log.d("gio", "BlessedConnect: onDiscoveredPeripheral(): " + peripheral.getName()); | ||||
| 			onScan(peripheral.getName(), peripheral.getAddress(), scanResult.getRssi(), peripheral); | ||||
| 		} | ||||
| 
 | ||||
| 		@Override | ||||
| 		public void onConnectedPeripheral(BluetoothPeripheral peripheral) { | ||||
| 			if (peripheral.getState() == peripheral.STATE_CONNECTED) { | ||||
| 				Log.d("gio", "BlessedConnect: Connected to " + peripheral.getName()); | ||||
| 				Log.d("gio", "BlessedConnect: Address = " + peripheral.getAddress()); | ||||
| 
 | ||||
| 				onConnect(peripheral, peripheral.getAddress()); | ||||
| 			} else { | ||||
| 				onDisconnect(peripheral, peripheral.getAddress()); | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 		@Override | ||||
| 		public void onConnectionFailed(BluetoothPeripheral peripheral, int status) { | ||||
| 			Log.d("gio", "BlessedConnect: onConnectionFailed()"); | ||||
| 			onDisconnect(peripheral, peripheral.getAddress()); | ||||
| 		} | ||||
| 
 | ||||
| 		@Override | ||||
| 		public void onDisconnectedPeripheral(BluetoothPeripheral peripheral, int status) { | ||||
| 			Log.d("gio", "BlessedConnect: Disconnected"); | ||||
| 			onDisconnect(peripheral, peripheral.getAddress()); | ||||
| 		} | ||||
| 
 | ||||
| 		@Override | ||||
| 		public void onScanFailed(int errorCode) { | ||||
| 			Log.d("gio", "BlessedConnect: Scan failed"); | ||||
| 
 | ||||
| 		} | ||||
| 
 | ||||
| 	}; | ||||
| 
 | ||||
| 	private final BluetoothPeripheralCallback peripheralCallback = new BluetoothPeripheralCallback() { | ||||
| 		public void onBondingFailed(BluetoothPeripheral peripheral) { | ||||
| 			Log.d("gio", "BlessedConnect: onBondingFailed()"); | ||||
| 		} | ||||
| 		public void onBondingStarted(BluetoothPeripheral peripheral) { | ||||
| 			Log.d("gio", "BlessedConnect: onBondingStarted()"); | ||||
| 		} | ||||
| 		public void onBondingSucceeded(BluetoothPeripheral peripheral) { | ||||
| 			Log.d("gio", "BlessedConnect: onBondingSucceeded()"); | ||||
| 		} | ||||
| 		public void onBondLost(BluetoothPeripheral peripheral) { | ||||
| 			Log.d("gio", "BlessedConnect: onBondLost()"); | ||||
| 		} | ||||
| 		public void onCharacteristicUpdate(BluetoothPeripheral peripheral, byte[] value, BluetoothGattCharacteristic characteristic) { | ||||
| 			Log.d("gio", "BlessedConnect: onCharacteristicUpdate()"); | ||||
| 			characteristicChanged(peripheral.getAddress(), characteristic.getUuid().toString(), characteristic, value, value.length); | ||||
| 		} | ||||
| 		public void onCharacteristicWrite(BluetoothPeripheral peripheral, byte[] value, android.bluetooth.BluetoothGattCharacteristic characteristic, int status) { | ||||
| 			Log.d("gio", "onCharacteristicWrite(): " + characteristic.getUuid().toString()); | ||||
| 		} | ||||
| 		public void onDescriptorRead(BluetoothPeripheral peripheral, byte[] value, android.bluetooth.BluetoothGattDescriptor descriptor) { | ||||
| 			Log.d("gio", "onDescriptorRead(): " + descriptor.getUuid().toString()); | ||||
| 		} | ||||
| 		public void onDescriptorWrite(BluetoothPeripheral peripheral, byte[] value, android.bluetooth.BluetoothGattDescriptor descriptor, int status) { | ||||
| 			Log.d("gio", "onDescriptorWrite(): " + descriptor.getUuid().toString()); | ||||
| 		} | ||||
| 		public void onMtuChanged(BluetoothPeripheral peripheral, int mtu, int status) { | ||||
| 			Log.d("gio", "onMtuChanged()"); | ||||
| 		} | ||||
| 		public void onReadRemoteRssi(BluetoothPeripheral peripheral, int rssi, int status) { | ||||
| 			Log.d("gio", "onReadRemoteRssi"); | ||||
| 		} | ||||
| 		public void onNotificationStateUpdate(BluetoothPeripheral peripheral, BluetoothGattCharacteristic characteristic, int status) { | ||||
| 			if (status == BluetoothGatt.GATT_SUCCESS) { | ||||
| 				if(peripheral.isNotifying(characteristic)) { | ||||
| 					Log.i("gio", String.format("BlessedConnect: Notify set to 'on' for %s", characteristic.getUuid())); | ||||
| 				} else { | ||||
| 					Log.i("gio", String.format("BlessedConnect: Notify set to 'off' for %s", characteristic.getUuid())); | ||||
| 				} | ||||
| 			} else { | ||||
| 				Log.d("gio", "BlessedConnect: onNotificationStateUpdate(): failed"); | ||||
| 			} | ||||
| 		} | ||||
| 		public void onServicesDiscovered(BluetoothPeripheral peripheral) { | ||||
| 			Log.d("gio", "BlessedConnect: onServicesDiscovered()"); | ||||
| 		} | ||||
| 	}; | ||||
| 
 | ||||
| 	public void connect(BluetoothPeripheral peripheral) { | ||||
| 		if (peripheral == null) { | ||||
| 			return; | ||||
| 		} | ||||
| 		Log.d("gio","BlessedConnect: connect"); | ||||
| 		central.connectPeripheral(peripheral, peripheralCallback); | ||||
| 	} | ||||
| 
 | ||||
| 	public void disconnect(BluetoothPeripheral peripheral) { | ||||
| 		if (peripheral == null) { | ||||
| 			return; | ||||
| 		} | ||||
| 		Log.d("gio","BlessedConnect: disconnect"); | ||||
| 		peripheral.cancelConnection(); | ||||
| 		onDisconnect(peripheral, peripheral.getAddress()); | ||||
| 	} | ||||
| 
 | ||||
| 	public void discoverServices(BluetoothPeripheral peripheral) { | ||||
| 		if (peripheral == null) { | ||||
| 			return; | ||||
| 		} | ||||
| 		List<BluetoothGattService> services = peripheral.getServices(); | ||||
| 		for (BluetoothGattService serv : services) { | ||||
| 			onDiscoverService(peripheral.getAddress(), serv.getUuid().toString(), serv); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	public void discoverCharacteristics(BluetoothPeripheral peripheral, BluetoothGattService serv) { | ||||
| 		List<BluetoothGattCharacteristic> chrs = serv.getCharacteristics(); | ||||
| 		for (BluetoothGattCharacteristic chr : chrs) { | ||||
| 			onDiscoverCharacteristic(peripheral.getAddress(), serv.getUuid().toString(), serv, chr.getUuid().toString(), chr); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	public boolean setCharacteristicNotification(BluetoothPeripheral peripheral, BluetoothGattCharacteristic chr) { | ||||
| 		return peripheral.setNotify(chr, true); | ||||
| 	} | ||||
| 
 | ||||
| 	@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { | ||||
| 		Log.d("gio", "BlessedConnect: onActivityResult()"); | ||||
| 		if (requestCode == REQUEST_ENABLE_BT) { | ||||
| 			Log.d("gio", "BlessedConnect: onActivityResult() REQUEST_ENABLE_BT"); | ||||
| 			switch (resultCode) { | ||||
| 				case Activity.RESULT_OK: { | ||||
| 					Log.d("gio", "BlessedConnect: onActivityResult() -- OK"); | ||||
| 					if (wantScan) { | ||||
| 						scan(); | ||||
| 					} | ||||
| 					break; | ||||
| 				} | ||||
| 				case Activity.RESULT_CANCELED: { | ||||
| 					Log.d("gio", "BlessedConnect: onActivityResult() -- Cancelled"); | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
| 	public void onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults) { | ||||
| 		Log.d("gio", "BlessedConnect: onRequestPermissionsResult"); | ||||
| 		if (requestCode == PERMISSION_REQUEST) { | ||||
| 			boolean granted = true; | ||||
| 			for (int x : grantResults) { | ||||
| 				if (x == PackageManager.PERMISSION_DENIED) { | ||||
| 					granted = false; | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 			if (!granted) { | ||||
| 				Log.d("gio", "BlessedConnect: permissions not granted"); | ||||
| 				return; | ||||
| 			} | ||||
| 			Log.d("gio", "BlessedConnect: permissions granted"); | ||||
| 			if (wantScan) { | ||||
| 				scan(); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	static private native void installComplete(BlessedConnect p); | ||||
| 
 | ||||
| 	static private native void updateState(int s); | ||||
| 	static private native void onScan(String name, String id, int rssi, BluetoothPeripheral peripheral); | ||||
| 	static private native void onConnect(BluetoothPeripheral peripheral, String id); | ||||
| 	static private native void onDisconnect(BluetoothPeripheral peripheral, String id); | ||||
| 	static private native void onDiscoverService(String id, String uuid, BluetoothGattService serv); | ||||
| 	static private native void onDiscoverCharacteristic(String id, String suuid, BluetoothGattService serv, String cuuid, BluetoothGattCharacteristic chr); | ||||
| 	static private native void characteristicChanged(String id, String cuuid, BluetoothGattCharacteristic chr, byte[] value, int length); | ||||
| } | ||||
| 
 | ||||
|  | @ -1,5 +1,5 @@ | |||
| //go:generate mkdir -p classes
 | ||||
| //go:generate javac -bootclasspath $ANDROID_HOME/platforms/android-29/android.jar -classpath blessed-full.jar -d classes BlessedConnect.java
 | ||||
| //go:generate javac -bootclasspath $ANDROID_HOME/platforms/android-29/android.jar -d classes BleConnect.java
 | ||||
| //go:generate jar cf Ble.jar -C classes .
 | ||||
| //go:generate rm -rf classes
 | ||||
| 
 | ||||
|  | @ -7,7 +7,6 @@ package ble | |||
| 
 | ||||
| import ( | ||||
| 	"log" | ||||
| 	"time" | ||||
| 	"sync" | ||||
| 	"unsafe" | ||||
| 
 | ||||
|  | @ -35,7 +34,8 @@ type Peripheral struct { | |||
| 	Name string | ||||
| 	RSSI int | ||||
| 	Identifier string | ||||
| 	peripheral C.jobject | ||||
| 	device C.jobject | ||||
| 	gatt C.jobject | ||||
| } | ||||
| 
 | ||||
| type Service struct { | ||||
|  | @ -90,17 +90,17 @@ func peripheralLookup(p Peripheral) *BLE { | |||
| // FIXME: check what happens with "incomplete" Peripherals that have only
 | ||||
| // an Identifier set. Do the other functions on Peripherals do something
 | ||||
| // sensible?
 | ||||
| func newPeripheral(name, id string, rssi int, peripheral C.jobject) Peripheral { | ||||
| func newPeripheral(name, id string, rssi int, dev C.jobject) Peripheral { | ||||
| 	return Peripheral{ | ||||
| 		Name: name, | ||||
| 		RSSI: rssi, | ||||
| 		Identifier: id, | ||||
| 		peripheral: peripheral, | ||||
| 		device: dev, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (p Peripheral) IsIncomplete() bool { | ||||
| 	if p.peripheral == 0 { | ||||
| 	if p.device == 0 { | ||||
| 		return true | ||||
| 	} else { | ||||
| 		return false | ||||
|  | @ -157,7 +157,7 @@ func (b *BLE) stopScan() { | |||
| func (b *BLE) connectPeripheral(x Peripheral) { | ||||
| 	connect() | ||||
| 	runInJVM(func(env *C.JNIEnv) { | ||||
| 		C.connect(env, b.handle.BleConnect, x.peripheral) | ||||
| 		C.connect(env, b.handle.BleConnect, x.device) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
|  | @ -165,7 +165,7 @@ func (b *BLE) connectPeripheral(x Peripheral) { | |||
| func (b *BLE) cancelConnection(p Peripheral) { | ||||
| 	connect() | ||||
| 	runInJVM(func(env *C.JNIEnv) { | ||||
| 		C.disconnect(env, b.handle.BleConnect, p.peripheral) | ||||
| 		C.disconnect(env, b.handle.BleConnect, p.gatt) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
|  | @ -178,27 +178,23 @@ func (b *BLE) knownPeripheral(p Peripheral) (Peripheral, bool) { | |||
| 
 | ||||
| //DiscoverServices asks a Peripheral for its Services
 | ||||
| func (p Peripheral) DiscoverServices() { | ||||
| 	//launch a goroutine because this function calls back directly
 | ||||
| 	//from the same thread (underlying Java call is synchronous)
 | ||||
| 	go func() { | ||||
| 	connect() | ||||
| 	log.Printf("discovering services") | ||||
| 	runInJVM(func(env *C.JNIEnv) { | ||||
| 			C.discoverServices(env, gBLE.handle.BleConnect, p.peripheral) | ||||
| 		C.discoverServices(env, gBLE.handle.BleConnect, p.gatt) | ||||
| 	}) | ||||
| 	}() | ||||
| } | ||||
| 
 | ||||
| //DiscoverCharacteristics asks a Peripheral for the Characteristics related
 | ||||
| //to a Service
 | ||||
| func (p Peripheral) DiscoverCharacteristics(serv Service) { | ||||
| 	//launch a goroutine because this function calls back directly
 | ||||
| 	//from the same thread (underlying Java call is synchronous)
 | ||||
| 	//from the same thread.
 | ||||
| 	go func() { | ||||
| 		connect() | ||||
| 		log.Printf("discovering characteristics") | ||||
| 		runInJVM(func(env *C.JNIEnv) { | ||||
| 			C.discoverCharacteristics(env, gBLE.handle.BleConnect, p.peripheral, serv.service) | ||||
| 			C.discoverCharacteristics(env, gBLE.handle.BleConnect, p.gatt, serv.service) | ||||
| 		}) | ||||
| 		log.Printf("discovering characteristics done") | ||||
| 	}() | ||||
|  | @ -206,13 +202,10 @@ func (p Peripheral) DiscoverCharacteristics(serv Service) { | |||
| 
 | ||||
| //SetNotifyValue subscribes to a characteristic
 | ||||
| func (p Peripheral) SetNotifyValue(c Characteristic) { | ||||
| 	go func() { | ||||
| 		time.Sleep(time.Second / 2) | ||||
| 	runInJVM(func(env *C.JNIEnv) { | ||||
| 			result := (C.setCharacteristicNotification(env, gBLE.handle.BleConnect, p.peripheral, c.characteristic) == C.JNI_TRUE) | ||||
| 			log.Printf("setCharacteristicNotification: %s = %t", c.UUID, result) | ||||
| 		log.Printf("setCharacteristicNotification: %s", c.UUID) | ||||
| 		C.setCharacteristicNotification(env, gBLE.handle.BleConnect, p.gatt, c.characteristic) | ||||
| 	}) | ||||
| 	}() | ||||
| } | ||||
| 
 | ||||
| //NewBLE returns a pointer to a BLE struct after setting up the OS
 | ||||
|  | @ -229,16 +222,16 @@ func NewBLE() *BLE { | |||
| //Enable
 | ||||
| func (b *BLE) Enable(w *app.Window) { | ||||
| 	log.Printf("ble.Enable()") | ||||
| 	w.RegisterFragment("st/wow/git/ble/BlessedConnect") | ||||
| 	w.RegisterFragment("st/wow/git/ble/BleConnect") | ||||
| } | ||||
| 
 | ||||
| // Go callbacks from Java
 | ||||
| 
 | ||||
| //export Java_st_wow_git_ble_BlessedConnect_installComplete
 | ||||
| func Java_st_wow_git_ble_BlessedConnect_installComplete(env *C.JNIEnv, class C.jclass, b C.jobject) { | ||||
| //export Java_st_wow_git_ble_BleConnect_installComplete
 | ||||
| func Java_st_wow_git_ble_BleConnect_installComplete(env *C.JNIEnv, class C.jclass, b C.jobject) { | ||||
| 	log.Printf("installComplete()") | ||||
| 	if (b == 0) { | ||||
| 		log.Printf("BlessedConnect object is nil!") | ||||
| 		log.Printf("BleConnect object is nil!") | ||||
| 	} | ||||
| 	gBLE.handle.BleConnect = (C.NewGlobalRef)(env,b) | ||||
| 	h := app.PlatformHandle() | ||||
|  | @ -254,8 +247,8 @@ func Java_st_wow_git_ble_BlessedConnect_installComplete(env *C.JNIEnv, class C.j | |||
| 	log.Printf("installComplete() returning") | ||||
| } | ||||
| 
 | ||||
| //export Java_st_wow_git_ble_BlessedConnect_updateState
 | ||||
| func Java_st_wow_git_ble_BlessedConnect_updateState(env *C.JNIEnv, class C.jclass, s C.jint) { | ||||
| //export Java_st_wow_git_ble_BleConnect_updateState
 | ||||
| func Java_st_wow_git_ble_BleConnect_updateState(env *C.JNIEnv, class C.jclass, s C.jint) { | ||||
| 	log.Printf("UpdateState: %d", s) | ||||
| 	gBLE.handle.state = (int)(s) | ||||
| 	if gBLE.handle.state == STATE_ON { | ||||
|  | @ -278,13 +271,13 @@ func goOnScan(cname, cid *C.char, rssi C.int, dev C.jobject) { | |||
| } | ||||
| 
 | ||||
| //export goOnConnect
 | ||||
| func goOnConnect(p C.jobject, cid *C.char) { | ||||
| func goOnConnect(gatt C.jobject, cid *C.char) { | ||||
| 	id := C.GoString(cid) | ||||
| 
 | ||||
| 	peripheral := gBLE.retrievePeripheral(id) | ||||
| 
 | ||||
| 	if peripheral.peripheral == 0 { | ||||
| 		log.Printf("goOnConnect(): peripheral == null") | ||||
| 	if peripheral.gatt == 0 { | ||||
| 		log.Printf("goOnConnect(): gatt == null") | ||||
| 	} | ||||
| 
 | ||||
| 	gBLE.connections.UpdateState(peripheral, "connected") | ||||
|  |  | |||
							
								
								
									
										
											BIN
										
									
								
								blessed-full.jar
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								blessed-full.jar
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -27,36 +27,36 @@ stopScan(JNIEnv *env, jobject b) { | |||
| void | ||||
| connect(JNIEnv *env, jobject b, jobject d) { | ||||
| 	jclass cls = (*env)->GetObjectClass(env, b); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "connect", "(Lcom/welie/blessed/BluetoothPeripheral;)V"); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "connect", "(Landroid/bluetooth/BluetoothDevice;)V"); | ||||
| 	(*env)->CallObjectMethod(env, b, mid, d); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| disconnect(JNIEnv *env, jobject b, jobject g) { | ||||
| 	jclass cls = (*env)->GetObjectClass(env, b); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "disconnect", "(Lcom/welie/blessed/BluetoothPeripheral;)V"); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "disconnect", "(Landroid/bluetooth/BluetoothGatt;)V"); | ||||
| 	(*env)->CallVoidMethod(env, b, mid, g); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| discoverServices(JNIEnv *env, jobject b, jobject p) { | ||||
| 	jclass cls = (*env)->GetObjectClass(env, b); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "discoverServices", "(Lcom/welie/blessed/BluetoothPeripheral;)V"); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "discoverServices", "(Landroid/bluetooth/BluetoothGatt;)V"); | ||||
| 	(*env)->CallVoidMethod(env, b, mid, p); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| discoverCharacteristics(JNIEnv *env, jobject b, jobject g, jobject s) { | ||||
| 	jclass cls = (*env)->GetObjectClass(env, b); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "discoverCharacteristics", "(Lcom/welie/blessed/BluetoothPeripheral;Landroid/bluetooth/BluetoothGattService;)V"); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "discoverCharacteristics", "(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattService;)V"); | ||||
| 	(*env)->CallVoidMethod(env, b, mid, g, s); | ||||
| } | ||||
| 
 | ||||
| jboolean | ||||
| void | ||||
| setCharacteristicNotification(JNIEnv *env, jobject b, jobject g, jobject c) { | ||||
| 	jclass cls = (*env)->GetObjectClass(env, b); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "setCharacteristicNotification", "(Lcom/welie/blessed/BluetoothPeripheral;Landroid/bluetooth/BluetoothGattCharacteristic;)Z"); | ||||
| 	return (*env)->CallBooleanMethod(env, b, mid, g, c); | ||||
| 	jmethodID mid = (*env)->GetMethodID(env, cls, "setCharacteristicNotification", "(Landroid/bluetooth/BluetoothGatt;Landroid/bluetooth/BluetoothGattCharacteristic;)V"); | ||||
| 	(*env)->CallVoidMethod(env, b, mid, g, c); | ||||
| } | ||||
| 
 | ||||
| jint | ||||
|  | @ -80,7 +80,7 @@ NewGlobalRef(JNIEnv *env, jobject o) { | |||
| } | ||||
| 
 | ||||
| void | ||||
| Java_st_wow_git_ble_BlessedConnect_onScan(JNIEnv *env, jclass class, jstring jname, jstring jid, jint jrssi, jobject dev) { | ||||
| Java_st_wow_git_ble_BleConnect_onScan(JNIEnv *env, jclass class, jstring jname, jstring jid, jint jrssi, jobject dev) { | ||||
| 	const char* name = (*env)->GetStringUTFChars(env, jname, NULL); | ||||
| 	const char* id = (*env)->GetStringUTFChars(env, jid, NULL); | ||||
| 	jobject gdev = (*env)->NewGlobalRef(env, dev); | ||||
|  | @ -90,7 +90,7 @@ Java_st_wow_git_ble_BlessedConnect_onScan(JNIEnv *env, jclass class, jstring jna | |||
| } | ||||
| 
 | ||||
| void | ||||
| Java_st_wow_git_ble_BlessedConnect_onConnect(JNIEnv *env, jclass class, jobject gatt, jstring jid) { | ||||
| Java_st_wow_git_ble_BleConnect_onConnect(JNIEnv *env, jclass class, jobject gatt, jstring jid) { | ||||
| 	const char* id = (*env)->GetStringUTFChars(env, jid, NULL); | ||||
| 	jobject ggatt = (*env)->NewGlobalRef(env, gatt); | ||||
| 	goOnConnect(ggatt, id); | ||||
|  | @ -98,15 +98,14 @@ Java_st_wow_git_ble_BlessedConnect_onConnect(JNIEnv *env, jclass class, jobject | |||
| } | ||||
| 
 | ||||
| void | ||||
| Java_st_wow_git_ble_BlessedConnect_onDisconnect(JNIEnv *env, jclass class, jobject peripheral, jstring jid) { | ||||
| Java_st_wow_git_ble_BleConnect_onDisconnect(JNIEnv *env, jclass class, jobject peripheral, jstring jid) { | ||||
| 	const char* id = (*env)->GetStringUTFChars(env, jid, NULL); | ||||
| 	jobject gperipheral = (*env)->NewGlobalRef(env, peripheral); | ||||
| 	goOnDisconnect(gperipheral, id); | ||||
| 	(*env)->ReleaseStringUTFChars(env, jid, id); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| Java_st_wow_git_ble_BlessedConnect_onDiscoverService(JNIEnv *env, jclass class, jstring jid, jstring juuid, jobject serv) { | ||||
| Java_st_wow_git_ble_BleConnect_onDiscoverService(JNIEnv *env, jclass class, jstring jid, jstring juuid, jobject serv) { | ||||
| 	const char* id = (*env)->GetStringUTFChars(env, jid, NULL); | ||||
| 	const char* uuid = (*env)->GetStringUTFChars(env, juuid, NULL); | ||||
| 	jobject gserv = (*env)->NewGlobalRef(env, serv); | ||||
|  | @ -116,7 +115,7 @@ Java_st_wow_git_ble_BlessedConnect_onDiscoverService(JNIEnv *env, jclass class, | |||
| } | ||||
| 
 | ||||
| void | ||||
| Java_st_wow_git_ble_BlessedConnect_onDiscoverCharacteristic(JNIEnv *env, jclass class, jstring jid, jstring jsuuid, jobject serv, jstring jcuuid, jobject chr) { | ||||
| Java_st_wow_git_ble_BleConnect_onDiscoverCharacteristic(JNIEnv *env, jclass class, jstring jid, jstring jsuuid, jobject serv, jstring jcuuid, jobject chr) { | ||||
| 	const char* id = (*env)->GetStringUTFChars(env, jid, NULL); | ||||
| 	const char* suuid = (*env)->GetStringUTFChars(env, jsuuid, NULL); | ||||
| 	const char* cuuid = (*env)->GetStringUTFChars(env, jcuuid, NULL); | ||||
|  | @ -129,7 +128,7 @@ Java_st_wow_git_ble_BlessedConnect_onDiscoverCharacteristic(JNIEnv *env, jclass | |||
| } | ||||
| 
 | ||||
| void | ||||
| Java_st_wow_git_ble_BlessedConnect_characteristicChanged(JNIEnv *env, jclass class, jstring jid, jstring jcuuid, jobject chr, jbyteArray jvalue, jint len) { | ||||
| Java_st_wow_git_ble_BleConnect_characteristicChanged(JNIEnv *env, jclass class, jstring jid, jstring jcuuid, jobject chr, jbyteArray jvalue, jint len) { | ||||
| 	const char* id = (*env)->GetStringUTFChars(env, jid, NULL); | ||||
| 	const char* cuuid = (*env)->GetStringUTFChars(env, jcuuid, NULL); | ||||
| 	jbyte* value = (*env)->GetByteArrayElements(env, jvalue, NULL); | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ void connect(JNIEnv *env, jobject b, jobject d); | |||
| void disconnect(JNIEnv *env, jobject b, jobject g); | ||||
| void discoverServices(JNIEnv *env, jobject b, jobject p); | ||||
| void discoverCharacteristics(JNIEnv *env, jobject b, jobject g, jobject s); | ||||
| jboolean setCharacteristicNotification(JNIEnv *env, jobject b, jobject g, jobject c); | ||||
| void setCharacteristicNotification(JNIEnv *env, jobject b, jobject g, jobject c); | ||||
| jint GetEnv(JavaVM *vm, JNIEnv **env, jint version); | ||||
| jint AttachCurrentThread(JavaVM *vm, JNIEnv **p_env, void *thr_args); | ||||
| jint DetachCurrentThread(JavaVM *vm); | ||||
|  |  | |||
							
								
								
									
										
											BIN
										
									
								
								timber.jar
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								timber.jar
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user