BLE SOAR Errors

Hi,

I am trying to use the BLE library (org=“ej.api” name=“bluetooth” rev=“1.0.0”) from within a Sandboxed application; however, when I go to build dynamic feature, SOAR image generation fails:

=============== [ Initialization Stage ] ===============
=============== [ Launching SOAR ] ===============
1 : KERNEL/FEATURE ERROR [ej.bon.Immortals$1]
	[M23] - Method ej.bon.Immortals$1.browse(java.lang.Object)void (owned by Feature C:\Users\ssampson\Documents\_IoT\_dev\2020\_ble\BlePeripheralSB\bin/ble.kf) cannot override Kernel method com.is2t.cldc.support.ObjectGraphBrowser.browse(java.lang.Object)void (not an API).
2 : KERNEL/FEATURE ERROR [ej.bon.Immortals]
	[M14] - Type ej.bon.Immortals (owned by Feature ble) cannot declare a native method (switchAllocationIntoImmortals).
3 : KERNEL/FEATURE ERROR [ej.bon.Immortals]
	[M14] - Type ej.bon.Immortals (owned by Feature ble) cannot declare a native method (setImmortal).
4 : KERNEL/FEATURE ERROR [ej.bon.Immortals]
	[M14] - Type ej.bon.Immortals (owned by Feature ble) cannot declare a native method (freeMemory).
5 : KERNEL/FEATURE ERROR [ej.bon.Immortals]
	[M14] - Type ej.bon.Immortals (owned by Feature ble) cannot declare a native method (totalMemory).
6 : KERNEL/FEATURE ERROR [ej.bon.Immortals]
	[M14] - Type ej.bon.Immortals (owned by Feature ble) cannot declare a native method (isImmortal).
7 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (sendNotification).
8 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (sendWriteResponse).
9 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (sendReadResponse).
10 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (sendWriteRequest).
11 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (sendReadRequest).
12 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (addService).
13 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (discoverServices).
14 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (passkeyReply).
15 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (pairReply).
16 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (pair).
17 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (disconnect).
18 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (connect).
19 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (stopAdvertising).
20 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (startAdvertising).
21 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (stopScanning).
22 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (startScanning).
23 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (initialize).
24 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothSNI]
	[M14] - Type ej.bluetooth.BluetoothSNI (owned by Feature ble) cannot declare a native method (waitEvent).
25 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothPump]
	[M18] - Type ej.bluetooth.BluetoothPump (owned by Feature C:\Users\ssampson\Documents\_IoT\_dev\2020\_ble\BlePeripheralSB\bin/ble.kf) cannot access Kernel type ej.tools.ArrayTools (not an API). Found 8 occurrence(s).
26 : KERNEL/FEATURE ERROR [ej.bluetooth.BluetoothUuid]
	[M18] - Type ej.bluetooth.BluetoothUuid (owned by Feature C:\Users\ssampson\Documents\_IoT\_dev\2020\_ble\BlePeripheralSB\bin/ble.kf) cannot access Kernel type ej.tools.HexTools (not an API). Found 3 occurrence(s).
27 : KERNEL/FEATURE ERROR [ej.bon.Immortals$1]
	[M18] - Type ej.bon.Immortals$1 (owned by Feature C:\Users\ssampson\Documents\_IoT\_dev\2020\_ble\BlePeripheralSB\bin/ble.kf) cannot access Kernel type com.is2t.cldc.support.ObjectGraphBrowser (not an API). Found 3 occurrence(s).

FAIL
Soar image generation aborted.

I don’t really know where to start other than maybe moving all of this functionality into a standalone app built into the kernel… Is BLE API not possible to use from a sandboxed application?

Steve

Hi stephen,
An application cannot owns a Type which contains some native methods.
Usually this kind of Type are owned by the Kernel.
In you use case the type of the ble foundation library should be own by a kernel.
Therefore you need to add a kernelapi file which list all the types and methods available in this foundation library.
Regards

Hi Alga,

In the Kernel project’s module.ivy, I added the following dependencies:

<dependency org="ej.api" name="bluetooth" rev="1.0.0"  />
<dependency org="com.microej.kernelapi" name="bluetooth" rev="1.0.0" ej:match="perfect" conf="kernelapi->default" />

But the kernel project will not build:

11:03:16 [java] [soar] 1 : SOAR ERROR [com.microej.kernelapi-bluetooth-bluetooth.jar[kernel.api]]
11:03:16 [java] [soar] [M51] - Class ej.bluetooth.BluetoothAdapter not found (class is referenced by the file C:\JenkinsHome.jenkins\workspace\Kernel-PULL\target~\dependencies\com.microej.kernelapi-bluetooth-bluetooth.jar[kernel.api]).

Hello,

I couldn’t reproduce this issue. Please let me know if you still facing this problem.