aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_main.cpp
diff options
context:
space:
mode:
authorAnton Babushkin <anton.babushkin@me.com>2014-03-11 23:03:49 +0400
committerAnton Babushkin <anton.babushkin@me.com>2014-03-11 23:03:49 +0400
commit1fd7b89d3c7c5f9b5c13198c41a015d6c5899260 (patch)
treea18e302dff6ca8bc65899d3ac928ce29c2a8db92 /src/modules/mavlink/mavlink_main.cpp
parent0bcda7f8a6079ba20eeb4bbd4181872a5513acfc (diff)
downloadpx4-firmware-1fd7b89d3c7c5f9b5c13198c41a015d6c5899260.tar.gz
px4-firmware-1fd7b89d3c7c5f9b5c13198c41a015d6c5899260.tar.bz2
px4-firmware-1fd7b89d3c7c5f9b5c13198c41a015d6c5899260.zip
mavlink: use "normal" mode for HIL operation, only add HIL_CONTROLS stream when HIL enabled
Diffstat (limited to 'src/modules/mavlink/mavlink_main.cpp')
-rw-r--r--src/modules/mavlink/mavlink_main.cpp117
1 files changed, 21 insertions, 96 deletions
diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp
index 5bdf6c262..e1c53a599 100644
--- a/src/modules/mavlink/mavlink_main.cpp
+++ b/src/modules/mavlink/mavlink_main.cpp
@@ -165,7 +165,7 @@ Mavlink::Mavlink() :
_task_should_exit(false),
_mavlink_fd(-1),
_task_running(false),
- _mavlink_hil_enabled(false),
+ _hil_enabled(false),
_main_loop_delay(1000),
_subscriptions(nullptr),
_streams(nullptr),
@@ -548,38 +548,17 @@ Mavlink::set_hil_enabled(bool hil_enabled)
{
int ret = OK;
- /* Enable HIL */
- if (hil_enabled && !_mavlink_hil_enabled) {
-
- _mavlink_hil_enabled = true;
-
- /* ramp up some HIL-related subscriptions */
- unsigned hil_rate_interval;
-
- if (_baudrate < 19200) {
- /* 10 Hz */
- hil_rate_interval = 100;
-
- } else if (_baudrate < 38400) {
- /* 10 Hz */
- hil_rate_interval = 100;
-
- } else if (_baudrate < 115200) {
- /* 20 Hz */
- hil_rate_interval = 50;
-
- } else {
- /* 200 Hz */
- hil_rate_interval = 5;
- }
-
-// orb_set_interval(subs.spa_sub, hil_rate_interval);
-// set_mavlink_interval_limit(MAVLINK_MSG_ID_SERVO_OUTPUT_RAW, hil_rate_interval);
+ /* enable HIL */
+ if (hil_enabled && !_hil_enabled) {
+ _hil_enabled = true;
+ float rate_mult = _datarate / 1000.0f;
+ configure_stream("HIL_CONTROLS", 15.0f * rate_mult);
}
- if (!hil_enabled && _mavlink_hil_enabled) {
- _mavlink_hil_enabled = false;
-// orb_set_interval(subs.spa_sub, 200);
+ /* disable HIL */
+ if (!hil_enabled && _hil_enabled) {
+ _hil_enabled = false;
+ configure_stream("HIL_CONTROLS", 0.0f);
} else {
ret = ERROR;
@@ -1445,10 +1424,8 @@ Mavlink::mavlink_missionlib_send_gcs_string(const char *string)
if (i > 1) {
/* Enforce null termination */
statustext.text[i] = '\0';
- mavlink_message_t msg;
- mavlink_msg_statustext_encode(mavlink_system.sysid, mavlink_system.compid, &msg, &statustext);
- mavlink_missionlib_send_message(&msg);
+ mavlink_msg_statustext_send(_channel, statustext.severity, statustext.text);
return OK;
} else {
@@ -1560,9 +1537,7 @@ Mavlink::task_main(int argc, char *argv[])
int ch;
_baudrate = 57600;
_datarate = 0;
- _channel = MAVLINK_COMM_0;
-
- _mode = MODE_OFFBOARD;
+ _mode = MAVLINK_MODE_NORMAL;
/* work around some stupidity in task_create's argv handling */
argc -= 2;
@@ -1603,17 +1578,8 @@ Mavlink::task_main(int argc, char *argv[])
// break;
case 'm':
- if (strcmp(optarg, "offboard") == 0) {
- _mode = MODE_OFFBOARD;
-
- } else if (strcmp(optarg, "onboard") == 0) {
- _mode = MODE_ONBOARD;
-
- } else if (strcmp(optarg, "hil") == 0) {
- _mode = MODE_HIL;
-
- } else if (strcmp(optarg, "custom") == 0) {
- _mode = MODE_CUSTOM;
+ if (strcmp(optarg, "custom") == 0) {
+ _mode = MAVLINK_MODE_CUSTOM;
}
break;
@@ -1649,20 +1615,12 @@ Mavlink::task_main(int argc, char *argv[])
/* inform about mode */
switch (_mode) {
- case MODE_CUSTOM:
- warnx("mode: CUSTOM");
- break;
-
- case MODE_OFFBOARD:
- warnx("mode: OFFBOARD");
- break;
-
- case MODE_ONBOARD:
- warnx("mode: ONBOARD");
+ case MAVLINK_MODE_NORMAL:
+ warnx("mode: NORMAL");
break;
- case MODE_HIL:
- warnx("mode: HIL");
+ case MAVLINK_MODE_CUSTOM:
+ warnx("mode: CUSTOM");
break;
default:
@@ -1670,21 +1628,7 @@ Mavlink::task_main(int argc, char *argv[])
break;
}
- switch (_mode) {
- case MODE_OFFBOARD:
- case MODE_HIL:
- case MODE_CUSTOM:
- _mavlink_wpm_comp_id = MAV_COMP_ID_MISSIONPLANNER;
- break;
-
- case MODE_ONBOARD:
- _mavlink_wpm_comp_id = MAV_COMP_ID_CAMERA;
- break;
-
- default:
- _mavlink_wpm_comp_id = MAV_COMP_ID_ALL;
- break;
- }
+ _mavlink_wpm_comp_id = MAV_COMP_ID_MISSIONPLANNER;
warnx("data rate: %d bytes/s", _datarate);
warnx("port: %s, baudrate: %d", _device_name, _baudrate);
@@ -1741,7 +1685,7 @@ Mavlink::task_main(int argc, char *argv[])
configure_stream("HEARTBEAT", 1.0f);
switch (_mode) {
- case MODE_OFFBOARD:
+ case MAVLINK_MODE_NORMAL:
configure_stream("SYS_STATUS", 1.0f);
configure_stream("GPS_GLOBAL_ORIGIN", 0.5f);
configure_stream("HIGHRES_IMU", 1.0f * rate_mult);
@@ -1753,20 +1697,6 @@ Mavlink::task_main(int argc, char *argv[])
configure_stream("RC_CHANNELS_RAW", 1.0f * rate_mult);
break;
- case MODE_HIL:
- /* HIL mode normally runs at high data rate, rate_mult ~ 10 */
- configure_stream("SYS_STATUS", 1.0f);
- configure_stream("GPS_GLOBAL_ORIGIN", 0.5f);
- configure_stream("HIGHRES_IMU", 1.0f * rate_mult);
- configure_stream("ATTITUDE", 2.0f * rate_mult);
- configure_stream("VFR_HUD", 2.0f * rate_mult);
- configure_stream("GPS_RAW_INT", 1.0f * rate_mult);
- configure_stream("GLOBAL_POSITION_INT", 1.0f * rate_mult);
- configure_stream("LOCAL_POSITION_NED", 1.0f * rate_mult);
- configure_stream("RC_CHANNELS_RAW", 1.0f * rate_mult);
- configure_stream("HIL_CONTROLS", 15.0f * rate_mult);
- break;
-
default:
break;
}
@@ -1795,12 +1725,7 @@ Mavlink::task_main(int argc, char *argv[])
if (status_sub->update(t)) {
/* switch HIL mode if required */
- if (status->hil_state == HIL_STATE_ON) {
- set_hil_enabled(true);
-
- } else if (status->hil_state == HIL_STATE_OFF) {
- set_hil_enabled(false);
- }
+ set_hil_enabled(status->hil_state == HIL_STATE_ON);
}
/* check for requested subscriptions */