Browse Source

gps & mavlink receiver: use C arrays instead of std::array<>

sbg
Beat Küng 9 years ago committed by Lorenz Meier
parent
commit
6029551c63
  1. 10
      src/drivers/gps/gps.cpp
  2. 7
      src/modules/mavlink/mavlink_receiver.cpp
  3. 5
      src/modules/mavlink/mavlink_receiver.h

10
src/drivers/gps/gps.cpp

@ -59,7 +59,6 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <array>
#include <poll.h> #include <poll.h>
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
@ -131,7 +130,8 @@ private:
float _rate; ///< position update rate float _rate; ///< position update rate
bool _fake_gps; ///< fake gps output bool _fake_gps; ///< fake gps output
std::array<int, 4> _orb_inject_data_fd; static const int _orb_inject_data_fd_count = 4;
int _orb_inject_data_fd[_orb_inject_data_fd_count];
int _orb_inject_data_next = 0; int _orb_inject_data_next = 0;
/** /**
@ -238,7 +238,7 @@ GPS::GPS(const char *uart_path, bool fake_gps, bool enable_sat_info) :
memset(_p_report_sat_info, 0, sizeof(*_p_report_sat_info)); memset(_p_report_sat_info, 0, sizeof(*_p_report_sat_info));
} }
for (int i = 0; i < _orb_inject_data_fd.size(); ++i) { for (int i = 0; i < _orb_inject_data_fd_count; ++i) {
_orb_inject_data_fd[i] = orb_subscribe_multi(ORB_ID(gps_inject_data), i); _orb_inject_data_fd[i] = orb_subscribe_multi(ORB_ID(gps_inject_data), i);
} }
} }
@ -248,7 +248,7 @@ GPS::~GPS()
/* tell the task we want it to go away */ /* tell the task we want it to go away */
_task_should_exit = true; _task_should_exit = true;
for (size_t i = 0; i < _orb_inject_data_fd.size(); ++i) { for (size_t i = 0; i < _orb_inject_data_fd_count; ++i) {
orb_unsubscribe(_orb_inject_data_fd[i]); orb_unsubscribe(_orb_inject_data_fd[i]);
} }
@ -384,7 +384,7 @@ void GPS::handleInjectDataTopic()
orb_copy(ORB_ID(gps_inject_data), orb_inject_data_cur_fd, &msg); orb_copy(ORB_ID(gps_inject_data), orb_inject_data_cur_fd, &msg);
injectData(msg.data, msg.len); injectData(msg.data, msg.len);
_orb_inject_data_next = (_orb_inject_data_next + 1) % _orb_inject_data_fd.size(); _orb_inject_data_next = (_orb_inject_data_next + 1) % _orb_inject_data_fd_count;
} }
} while (updated); } while (updated);

7
src/modules/mavlink/mavlink_receiver.cpp

@ -125,7 +125,6 @@ MavlinkReceiver::MavlinkReceiver(Mavlink *parent) :
_time_offset_pub(nullptr), _time_offset_pub(nullptr),
_follow_target_pub(nullptr), _follow_target_pub(nullptr),
_transponder_report_pub(nullptr), _transponder_report_pub(nullptr),
_gps_inject_data_pub(),
_control_mode_sub(orb_subscribe(ORB_ID(vehicle_control_mode))), _control_mode_sub(orb_subscribe(ORB_ID(vehicle_control_mode))),
_hil_frames(0), _hil_frames(0),
_old_timestamp(0), _old_timestamp(0),
@ -144,7 +143,9 @@ MavlinkReceiver::MavlinkReceiver(Mavlink *parent) :
_mom_switch_pos{}, _mom_switch_pos{},
_mom_switch_state(0) _mom_switch_state(0)
{ {
_gps_inject_data_pub.fill(nullptr); for (int i = 0; i < _gps_inject_data_pub_size; ++i) {
_gps_inject_data_pub[i] = nullptr;
}
} }
MavlinkReceiver::~MavlinkReceiver() MavlinkReceiver::~MavlinkReceiver()
@ -1784,7 +1785,7 @@ void MavlinkReceiver::handle_message_gps_inject_data(mavlink_message_t *msg)
orb_publish(ORB_ID(gps_inject_data), pub, &gps_inject_data_topic); orb_publish(ORB_ID(gps_inject_data), pub, &gps_inject_data_topic);
} }
_gps_inject_data_next_idx = (_gps_inject_data_next_idx + 1) % _gps_inject_data_pub.size(); _gps_inject_data_next_idx = (_gps_inject_data_next_idx + 1) % _gps_inject_data_pub_size;
} }

5
src/modules/mavlink/mavlink_receiver.h

@ -78,8 +78,6 @@
#include <uORB/topics/transponder_report.h> #include <uORB/topics/transponder_report.h>
#include <uORB/topics/gps_inject_data.h> #include <uORB/topics/gps_inject_data.h>
#include <array>
#include "mavlink_ftp.h" #include "mavlink_ftp.h"
#define PX4_EPOCH_SECS 1234567890ULL #define PX4_EPOCH_SECS 1234567890ULL
@ -207,7 +205,8 @@ private:
orb_advert_t _time_offset_pub; orb_advert_t _time_offset_pub;
orb_advert_t _follow_target_pub; orb_advert_t _follow_target_pub;
orb_advert_t _transponder_report_pub; orb_advert_t _transponder_report_pub;
std::array<orb_advert_t, 4> _gps_inject_data_pub; static const int _gps_inject_data_pub_size = 4;
orb_advert_t _gps_inject_data_pub[_gps_inject_data_pub_size];
int _gps_inject_data_next_idx = 0; int _gps_inject_data_next_idx = 0;
int _control_mode_sub; int _control_mode_sub;
int _hil_frames; int _hil_frames;

Loading…
Cancel
Save