MAVLink parser.mavlink_parse_char() DatagramSocket

185 views
Skip to first unread message

Сергей Кунцевич

unread,
Apr 1, 2020, 4:27:37 AM4/1/20
to MAVLink
https://stackoverflow.com/questions/60809590/java-code-mavlink-parser-mavlink-parse-char-datagramsocket

I am using Android Studio UDP DatagramSocket. Using a generator, I collected Java files. I can not decode messages. Maybe there is a working example on Android Studio?

    private class UdpServerThread extends Thread{
int serverPort;
DatagramSocket socket;
boolean running;
public UdpServerThread(int serverPort) {
super();
this.serverPort = serverPort;
}
public void setRunning(boolean running){ this.running = running;}

@Override
public void run() {
running = true;
try {
socket = new DatagramSocket(serverPort);
Log.e(TAG, "UDP Server is running");

while(running){
byte[] buf = new byte[256];

DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
String modifiedSentence = new String(packet.getData());
InetAddress address2 = packet.getAddress();
int port = packet.getPort();
String str = new String(packet.getData(), packet.getOffset(), packet.getLength());

Parser parser = new Parser();
MAVLinkPacket MAVpacket = null;
MAVLinkMessage msg;

//for (int i = 0; i < buf.length - 1; i++) {
for (byte b : packet.getData()) {
MAVpacket = parser.mavlink_parse_char(b & 0x00ff);
if (MAVpacket != null) {
msg = MAVpacket.unpack();
switch (msg.msgid) {
case msg_gamepad_button_press_event.MAVLINK_MSG_ID_GAMEPAD_BUTTON_PRESS_EVENT:
Log.d(LOG_TAG, "***Get data: " + msg.msgid + "***" );
break;

default:

}
}
}

}

Log.e(TAG, "UDP Server ended");

} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(socket != null){
socket.close();
Log.e(TAG, "socket.close()");
}
}
}
}

vhVYR.png



Reply all
Reply to author
Forward
0 new messages