Can you share a block of code that is capable of sending and receiving packets?
I’ve developed the following (which is not working):
For Sending data:
public void write(final CallbackContext callbackContext, CordovaArgs args, DatagramSocket dsSend) {
try {
JSONArray objectToTransform = args.getJSONObject(0).getJSONObject("mavlinkmessage").getJSONArray("data");
byte[] mavlinkMessage = new byte[objectToTransform.length()];
for (int i = 0; i < objectToTransform.length(); i++) {
mavlinkMessage[i]=(byte)(((int)objectToTransform.get(i)));
}
DatagramPacket dp = new DatagramPacket(mavlinkMessage, mavlinkMessage.length, InetAddress.getLocalHost(), 14551);
dsSend.send(dp);
PluginResult dataResult = new PluginResult(PluginResult.Status.OK, dp.getData());
callbackContext.sendPluginResult(dataResult);
} catch (IOException | JSONException e) {
e.printStackTrace();
}
}
Receiving data (run on a separated Cordova Thread)
public void bind(final CallbackContext callbackContext, DatagramSocket ds, DatagramSocket dsSend) {
byte[] lMsg = new byte[1500];
try {
DatagramPacket dp = new DatagramPacket(lMsg, lMsg.length);
byte[] probe = new byte[16];
DatagramPacket outListen = new DatagramPacket(probe, probe.length, InetAddress.getLocalHost(), 14552);
ds.send(outListen);
DatagramPacket outWrite = new DatagramPacket(probe, probe.length, InetAddress.getLocalHost(), 14551);
dsSend.send(outWrite);
while (!ds.isClosed()) {
ds.receive(dp);
PluginResult dataResult = new PluginResult(PluginResult.Status.OK, dp.getData());
dataResult.setKeepCallback(true);
callbackContext.sendPluginResult(dataResult);
}
} catch (IOException e) {
e.printStackTrace();
}
}
But I’m only capable to receiving data, not sending.