Skip to content

Commit 4c523ce

Browse files
Merge pull request #191 from rayw-dronesense/add-custom-id
Fixes #179 Add method to run mavsdk server with custom IDs
2 parents 8728743 + 8549de3 commit 4c523ce

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

mavsdk_server/src/main/cpp/native-lib.cpp

+16
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,22 @@ extern "C"
3131
return true;
3232
}
3333

34+
JNIEXPORT jboolean JNICALL
35+
Java_io_mavsdk_mavsdkserver_MavsdkServer_runNativeWithMavIds(JNIEnv* env, jobject thiz, jlong mavsdkServerHandle, jstring system_address, jint mavsdk_server_port, jint system_id, jint component_id)
36+
{
37+
const char* native_connection_url = env->GetStringUTFChars(system_address, 0);
38+
auto mavsdk_server = reinterpret_cast<MavsdkServer*>(mavsdkServerHandle);
39+
40+
LOGD("Running mavsdk_server with connection url: %s", native_connection_url);
41+
if (!mavsdk_server_run_with_mavlink_ids(mavsdk_server, native_connection_url, mavsdk_server_port, system_id, component_id)) {
42+
return false;
43+
}
44+
45+
auto server_port = mavsdk_server_get_port(mavsdk_server);
46+
LOGD("mavsdk_server is now running, listening on port %d", server_port);
47+
return true;
48+
}
49+
3450
JNIEXPORT jint JNICALL
3551
Java_io_mavsdk_mavsdkserver_MavsdkServer_getPort(JNIEnv* env, jobject thiz, jlong mavsdkServerHandle)
3652
{

mavsdk_server/src/main/java/io/mavsdk/mavsdkserver/MavsdkServer.java

+28
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,38 @@ public int run(String systemAddress, int mavsdkServerPort) {
6363
return getPort(mavsdkServerHandle);
6464
}
6565

66+
/**
67+
* Run MavsdkServer with MAVLink on `systemAddress` with custom MAVLink IDs.
68+
*
69+
* <p>MavsdkServer will listen for a `System` to connect on `mavsdkServerPort`.</p>
70+
*
71+
* @param systemAddress The address on which the remote MAVLink system is expected.
72+
* Valid formats are:
73+
* For TCP : tcp://[server_host][:server_port]
74+
* For UDP : udp://[bind_host][:bind_port]
75+
* For Serial : serial:///path/to/serial/dev[:baudrate]
76+
* @param mavsdkServerPort The port on which the server should listen for a `System`.
77+
* @param systemId The MAVLink sysid that MAVSDK should use.
78+
* @param componentId The MAVLink compid that MAVSDK should use.
79+
* @return The port on which MavsdkServer listens for a `System` to connect.
80+
* A return value of 0 means that the server failed to start.
81+
*/
82+
public int runWithMavIds(String systemAddress, int mavsdkServerPort, int systemId, int componentId) {
83+
mavsdkServerHandle = initNative();
84+
85+
if (!runNativeWithMavIds(mavsdkServerHandle, systemAddress, mavsdkServerPort, systemId, componentId)) {
86+
return 0;
87+
}
88+
89+
return getPort(mavsdkServerHandle);
90+
}
91+
6692
private native long initNative();
6793

6894
private native boolean runNative(long mavsdkServerHandle, String systemAddress, int mavsdkServerPort);
6995

96+
private native boolean runNativeWithMavIds(long mavsdkServerHandle, String systemAddress, int mavsdkServerPort, int systemId, int componentId);
97+
7098
private native int getPort(long mavsdkServerHandle);
7199

72100
/**

0 commit comments

Comments
 (0)