Merge pull request #1505 from mhkabir/timesync

Timesync
This commit is contained in:
Lorenz Meier
2015-01-04 11:41:44 +01:00
4 changed files with 189 additions and 2 deletions
+88
View File
@@ -923,6 +923,92 @@ protected:
}
};
class MavlinkStreamSystemTime : public MavlinkStream
{
public:
const char *get_name() const {
return MavlinkStreamSystemTime::get_name_static();
}
static const char *get_name_static() {
return "SYSTEM_TIME";
}
uint8_t get_id() {
return MAVLINK_MSG_ID_SYSTEM_TIME;
}
static MavlinkStream *new_instance(Mavlink *mavlink) {
return new MavlinkStreamSystemTime(mavlink);
}
unsigned get_size() {
return MAVLINK_MSG_ID_SYSTEM_TIME_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES;
}
private:
/* do not allow top copying this class */
MavlinkStreamSystemTime(MavlinkStreamSystemTime &);
MavlinkStreamSystemTime &operator = (const MavlinkStreamSystemTime &);
protected:
explicit MavlinkStreamSystemTime(Mavlink *mavlink) : MavlinkStream(mavlink)
{}
void send(const hrt_abstime t) {
mavlink_system_time_t msg;
timespec tv;
clock_gettime(CLOCK_REALTIME, &tv);
msg.time_boot_ms = hrt_absolute_time() / 1000;
msg.time_unix_usec = (uint64_t)tv.tv_sec * 1000000 + tv.tv_nsec / 1000;
_mavlink->send_message(MAVLINK_MSG_ID_SYSTEM_TIME, &msg);
}
};
class MavlinkStreamTimesync : public MavlinkStream
{
public:
const char *get_name() const {
return MavlinkStreamTimesync::get_name_static();
}
static const char *get_name_static() {
return "TIMESYNC";
}
uint8_t get_id() {
return MAVLINK_MSG_ID_TIMESYNC;
}
static MavlinkStream *new_instance(Mavlink *mavlink) {
return new MavlinkStreamTimesync(mavlink);
}
unsigned get_size() {
return MAVLINK_MSG_ID_TIMESYNC_LEN + MAVLINK_NUM_NON_PAYLOAD_BYTES;
}
private:
/* do not allow top copying this class */
MavlinkStreamTimesync(MavlinkStreamTimesync &);
MavlinkStreamTimesync &operator = (const MavlinkStreamTimesync &);
protected:
explicit MavlinkStreamTimesync(Mavlink *mavlink) : MavlinkStream(mavlink)
{}
void send(const hrt_abstime t) {
mavlink_timesync_t msg;
msg.tc1 = 0;
msg.ts1 = hrt_absolute_time() * 1000; // boot time in nanoseconds
_mavlink->send_message(MAVLINK_MSG_ID_TIMESYNC, &msg);
}
};
class MavlinkStreamGlobalPositionInt : public MavlinkStream
{
@@ -2197,6 +2283,8 @@ StreamListItem *streams_list[] = {
new StreamListItem(&MavlinkStreamAttitudeQuaternion::new_instance, &MavlinkStreamAttitudeQuaternion::get_name_static),
new StreamListItem(&MavlinkStreamVFRHUD::new_instance, &MavlinkStreamVFRHUD::get_name_static),
new StreamListItem(&MavlinkStreamGPSRawInt::new_instance, &MavlinkStreamGPSRawInt::get_name_static),
new StreamListItem(&MavlinkStreamSystemTime::new_instance, &MavlinkStreamSystemTime::get_name_static),
new StreamListItem(&MavlinkStreamTimesync::new_instance, &MavlinkStreamTimesync::get_name_static),
new StreamListItem(&MavlinkStreamGlobalPositionInt::new_instance, &MavlinkStreamGlobalPositionInt::get_name_static),
new StreamListItem(&MavlinkStreamLocalPositionNED::new_instance, &MavlinkStreamLocalPositionNED::get_name_static),
new StreamListItem(&MavlinkStreamViconPositionEstimate::new_instance, &MavlinkStreamViconPositionEstimate::get_name_static),