mirror of
https://gitee.com/xiaohuolufeihua/bizhang_-obav.git
synced 2026-05-22 01:12:31 +00:00
Fix bug when ISBD parameters were too large
This commit is contained in:
@@ -258,10 +258,6 @@ void IridiumSBD::main_loop(int argc, char *argv[])
|
|||||||
param_pointer = param_find("ISBD_READ_INT");
|
param_pointer = param_find("ISBD_READ_INT");
|
||||||
param_get(param_pointer, ¶m_read_interval_s);
|
param_get(param_pointer, ¶m_read_interval_s);
|
||||||
|
|
||||||
// if (param_read_interval_s < 0) {
|
|
||||||
// param_read_interval_s = 10;
|
|
||||||
// }
|
|
||||||
|
|
||||||
param_pointer = param_find("ISBD_SBD_TIMEOUT");
|
param_pointer = param_find("ISBD_SBD_TIMEOUT");
|
||||||
param_get(param_pointer, ¶m_session_timeout_s);
|
param_get(param_pointer, ¶m_session_timeout_s);
|
||||||
|
|
||||||
@@ -330,12 +326,12 @@ void IridiumSBD::standby_loop(void)
|
|||||||
// check for incoming SBDRING, handled inside read_at_command()
|
// check for incoming SBDRING, handled inside read_at_command()
|
||||||
read_at_command();
|
read_at_command();
|
||||||
|
|
||||||
if (param_read_interval_s > 0 && ((int64_t)(hrt_absolute_time() - last_read_time) > param_read_interval_s * 1000000)) {
|
if (param_read_interval_s > 0 && ((hrt_absolute_time() - last_read_time) > (uint64_t)param_read_interval_s * 1000000)) {
|
||||||
rx_session_pending = true;
|
rx_session_pending = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// write the MO buffer when the message stacking time expires
|
// write the MO buffer when the message stacking time expires
|
||||||
if ((tx_buf_write_idx > 0) && ((int64_t)(hrt_absolute_time() - last_write_time) > param_stacking_time_ms * 1000)) {
|
if ((tx_buf_write_idx > 0) && ((hrt_absolute_time() - last_write_time) > (uint64_t)param_stacking_time_ms * 1000)) {
|
||||||
write_tx_buf();
|
write_tx_buf();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -406,8 +402,8 @@ void IridiumSBD::sbdsession_loop(void)
|
|||||||
|
|
||||||
if (res == SATCOM_RESULT_NA) {
|
if (res == SATCOM_RESULT_NA) {
|
||||||
if ((param_session_timeout_s > 0)
|
if ((param_session_timeout_s > 0)
|
||||||
&& ((int64_t)((hrt_absolute_time() - session_start_time))
|
&& (((hrt_absolute_time() - session_start_time))
|
||||||
> param_session_timeout_s * 1000000)) {
|
> (uint64_t)param_session_timeout_s * 1000000)) {
|
||||||
|
|
||||||
PX4_WARN("SBD SESSION: TIMEOUT!");
|
PX4_WARN("SBD SESSION: TIMEOUT!");
|
||||||
new_state = SATCOM_STATE_STANDBY;
|
new_state = SATCOM_STATE_STANDBY;
|
||||||
@@ -504,7 +500,7 @@ void IridiumSBD::test_loop(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// timeout after 60 s in the test state
|
// timeout after 60 s in the test state
|
||||||
if ((int64_t)((hrt_absolute_time() - test_timer)) > 60000000) {
|
if ((hrt_absolute_time() - test_timer) > 60000000) {
|
||||||
PX4_WARN("TEST TIMEOUT AFTER %lld S", (hrt_absolute_time() - test_timer) / 1000000);
|
PX4_WARN("TEST TIMEOUT AFTER %lld S", (hrt_absolute_time() - test_timer) / 1000000);
|
||||||
new_state = SATCOM_STATE_STANDBY;
|
new_state = SATCOM_STATE_STANDBY;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
#include <systemlib/param/param.h>
|
#include <systemlib/param/param.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Satellite radio read interval
|
* Satellite radio read interval. Only required to be nonzero if data is not sent using a ring call.
|
||||||
*
|
*
|
||||||
* @unit s
|
* @unit s
|
||||||
* @min 0
|
* @min 0
|
||||||
* @max 300
|
* @max 5000
|
||||||
* @group Iridium SBD
|
* @group Iridium SBD
|
||||||
*/
|
*/
|
||||||
PARAM_DEFINE_INT32(ISBD_READ_INT, 60);
|
PARAM_DEFINE_INT32(ISBD_READ_INT, 0);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Iridium SBD session timeout
|
* Iridium SBD session timeout
|
||||||
|
|||||||
Reference in New Issue
Block a user