Not sure what are valid "OPTIONS" for the registration. When I try (I have also tried null, but get null pointer exception):
mBTAdvertisement = new BTAdvertisement();
mBTAdvertisement.Build();
ap = new DBusPath(mBTAdvertisement.getObjectPath());
LEAdvertisingManager1 advm = sDBus.getRemoteObject("org.bluez", "/org/bluez", LEAdvertisingManager1.class);
Map<String, Variant<?>> args = new HashMap<String, Variant<?>>();
advm.RegisterAdvertisement(ap, args);
I get the following exception:
org.freedesktop.dbus.errors.UnknownMethod: Method "RegisterAdvertisement" with signature "oa{sv}" on interface "org.bluez.LEAdvertisingManager1" does\
n't exist
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.freedesktop.dbus.errors.Error.getException(Error.java:157)
at org.freedesktop.dbus.errors.Error.throwException(Error.java:187)
at org.freedesktop.dbus.RemoteInvocationHandler.executeRemoteMethod(RemoteInvocationHandler.java:164)
at org.freedesktop.dbus.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:228)
at com.sun.proxy.$Proxy24.RegisterAdvertisement(Unknown Source)
at com.rtsservices.gc.BTHandler.<init>(BTHandler.java:124)
For reference: my Class Code (Started from Python Example ... plan to customize when I get it working!)
class BTAdvertisement implements LEAdvertisement1 {
private final String TAG = "BTHandler.AdvertiseMent1";
Map<String, Variant<?>> mProperties = new HashMap<String, Variant<?>>();
List<String> mServiceUUIDs = new ArrayList<String>();
Map<UInt16, Variant<byte[]>> mManufacturerData = new HashMap<UInt16, Variant<byte[]>>();
Map<String, Variant<byte[]>> mServiceData = new HashMap<String, Variant<byte[]>>();
Map<Byte, Variant<byte[]>> mData = new HashMap<Byte, Variant<byte[]>>();
String mLocalName;
boolean mIncludeTXPower = true;
@Override
public boolean isRemote() {
PersistLog.i(TAG, "isRemote");
return mIncludeTXPower;
}
@Override
public String getObjectPath() {
PersistLog.i(TAG, "getObjectPath");
return "/opensesame/advertisment";
}
@Override
public <A> A Get(String interface_name, String property_name) {
PersistLog.i(TAG, "Get");
return null;
}
@Override
public <A> void Set(String interface_name, String property_name, A value) {
PersistLog.i(TAG, "Set");
}
@Override
public Map<String, Variant<?>> GetAll(String interface_name) {
PersistLog.i(TAG, "GetAll");
return Properties();
}
public void AddServiceUUID(String uuid) {
mServiceUUIDs.add(uuid);
}
public void AddManufacturerData(UInt16 Code, byte[]Data) {
mManufacturerData.put(Code, new Variant<byte[]>(Data));
}
public void AddServiceData(String uuid, byte[]Data) {
mServiceData.put(uuid, new Variant<byte[]>(Data));
}
public void AddLocalName(String name) {
mLocalName = name;
}
public void IncludeTXPower(boolean State) {
mIncludeTXPower = State;
}
public void AddData(byte id, byte[] Data) {
mData.put(id, new Variant<byte[]>(Data));
}
public Map<String, Variant<?>> Properties() {
HashMap<String, Variant<?>> props = new HashMap<String, Variant<?>>();
mProperties.put("Type", new Variant<String>("peripheral"));
if (mServiceUUIDs.size() > 0) {
mProperties.put("ServiceIIIDs", new Variant<List<String>>(mServiceUUIDs));
}
if (mManufacturerData.size() > 0) {
mProperties.put("ManufacturerData", new Variant<Map<UInt16, Variant<byte[]>>>(mManufacturerData));
}
if (mServiceData.size() > 0) {
mProperties.put("ServiceData", new Variant<Map<String, Variant<byte[]>>>(mServiceData));
}
if (mLocalName != null) {
mProperties.put("LocalName", new Variant<String>(mLocalName));
}
mProperties.put("IncludeTXPower", new Variant<Boolean>(mIncludeTXPower));
if (mData.size() > 0) {
mProperties.put("Data", new Variant<Map<Byte, Variant<byte[]>>>(mData));
}
props.put("", new Variant<Map<String, Variant<?>>>(mProperties));;
return props;
}
// Ultimately this will be subclasased
public void Build() {
AddServiceUUID("180D");
AddServiceUUID("180F");
UInt16 code = new UInt16(0xffff);
byte[] data = new byte[] {0x00, 0x01, 0x02, 0x03, 0x04};
AddManufacturerData(code, data);
AddServiceData("9999", data);
AddLocalName("RaspberryGate");
data = new byte[] {0x03, 0x02, 0x01, 0x00};
byte id = 0x26;
AddData(id, data);
}
}
Not sure what are valid "OPTIONS" for the registration. When I try (I have also tried null, but get null pointer exception):
I get the following exception:
For reference: my Class Code (Started from Python Example ... plan to customize when I get it working!) class BTAdvertisement implements LEAdvertisement1 { private final String TAG = "BTHandler.AdvertiseMent1";