diff --git a/proto b/proto index 6a70598087..c02e228be9 160000 --- a/proto +++ b/proto @@ -1 +1 @@ -Subproject commit 6a70598087fa8fccda6ef7d89cc498550685659d +Subproject commit c02e228be9261e2ff56e7ced268c6739b4d21a87 diff --git a/src/mavsdk/plugins/transponder/include/plugins/transponder/transponder.h b/src/mavsdk/plugins/transponder/include/plugins/transponder/transponder.h index 29a68ca105..01cf0561e5 100644 --- a/src/mavsdk/plugins/transponder/include/plugins/transponder/transponder.h +++ b/src/mavsdk/plugins/transponder/include/plugins/transponder/transponder.h @@ -107,6 +107,7 @@ class Transponder : public PluginBase { std::string callsign{}; /**< @brief The callsign */ AdsbEmitterType emitter_type{}; /**< @brief ADSB emitter type. */ uint32_t squawk{}; /**< @brief Squawk code. */ + uint32_t tslc_s{}; /**< @brief Time Since Last Communication in seconds. */ }; /** diff --git a/src/mavsdk/plugins/transponder/transponder.cpp b/src/mavsdk/plugins/transponder/transponder.cpp index 4693c34489..57b5a3d57b 100644 --- a/src/mavsdk/plugins/transponder/transponder.cpp +++ b/src/mavsdk/plugins/transponder/transponder.cpp @@ -59,7 +59,7 @@ bool operator==(const Transponder::AdsbVehicle& lhs, const Transponder::AdsbVehi ((std::isnan(rhs.vertical_velocity_m_s) && std::isnan(lhs.vertical_velocity_m_s)) || rhs.vertical_velocity_m_s == lhs.vertical_velocity_m_s) && (rhs.callsign == lhs.callsign) && (rhs.emitter_type == lhs.emitter_type) && - (rhs.squawk == lhs.squawk); + (rhs.squawk == lhs.squawk) && (rhs.tslc_s == lhs.tslc_s); } std::ostream& operator<<(std::ostream& str, Transponder::AdsbVehicle const& adsb_vehicle) @@ -76,6 +76,7 @@ std::ostream& operator<<(std::ostream& str, Transponder::AdsbVehicle const& adsb str << " callsign: " << adsb_vehicle.callsign << '\n'; str << " emitter_type: " << adsb_vehicle.emitter_type << '\n'; str << " squawk: " << adsb_vehicle.squawk << '\n'; + str << " tslc_s: " << adsb_vehicle.tslc_s << '\n'; str << '}'; return str; } diff --git a/src/mavsdk/plugins/transponder/transponder_impl.cpp b/src/mavsdk/plugins/transponder/transponder_impl.cpp index 6ff2e413b0..04b57655b0 100644 --- a/src/mavsdk/plugins/transponder/transponder_impl.cpp +++ b/src/mavsdk/plugins/transponder/transponder_impl.cpp @@ -85,6 +85,7 @@ void TransponderImpl::process_transponder(const mavlink_message_t& message) adsbVehicle.callsign = local_adsb_vehicle.callsign; adsbVehicle.emitter_type = Transponder::AdsbEmitterType(local_adsb_vehicle.emitter_type); adsbVehicle.squawk = local_adsb_vehicle.squawk; + adsbVehicle.tslc_s = local_adsb_vehicle.tslc; set_transponder(adsbVehicle); diff --git a/src/mavsdk_server/src/generated/transponder/transponder.pb.cc b/src/mavsdk_server/src/generated/transponder/transponder.pb.cc index fbded78512..ea563b73ac 100644 --- a/src/mavsdk_server/src/generated/transponder/transponder.pb.cc +++ b/src/mavsdk_server/src/generated/transponder/transponder.pb.cc @@ -78,7 +78,8 @@ constexpr AdsbVehicle::AdsbVehicle( , vertical_velocity_m_s_(0) , emitter_type_(0) - , squawk_(0u){} + , squawk_(0u) + , tslc_s_(0u){} struct AdsbVehicleDefaultTypeInternal { constexpr AdsbVehicleDefaultTypeInternal() : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {} @@ -148,6 +149,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_transponder_2ftransponder_2epr PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::transponder::AdsbVehicle, callsign_), PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::transponder::AdsbVehicle, emitter_type_), PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::transponder::AdsbVehicle, squawk_), + PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::transponder::AdsbVehicle, tslc_s_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::mavsdk::rpc::transponder::TransponderResult, _internal_metadata_), ~0u, // no _extensions_ @@ -162,7 +164,7 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB { 11, -1, sizeof(::mavsdk::rpc::transponder::SetRateTransponderRequest)}, { 17, -1, sizeof(::mavsdk::rpc::transponder::SetRateTransponderResponse)}, { 23, -1, sizeof(::mavsdk::rpc::transponder::AdsbVehicle)}, - { 38, -1, sizeof(::mavsdk::rpc::transponder::TransponderResult)}, + { 39, -1, sizeof(::mavsdk::rpc::transponder::TransponderResult)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { @@ -182,7 +184,7 @@ const char descriptor_table_protodef_transponder_2ftransponder_2eproto[] PROTOBU "Vehicle\",\n\031SetRateTransponderRequest\022\017\n\007" "rate_hz\030\001 \001(\001\"c\n\032SetRateTransponderRespo" "nse\022E\n\022transponder_result\030\001 \001(\0132).mavsdk" - ".rpc.transponder.TransponderResult\"\243\002\n\013A" + ".rpc.transponder.TransponderResult\"\263\002\n\013A" "dsbVehicle\022\024\n\014icao_address\030\001 \001(\r\022\024\n\014lati" "tude_deg\030\002 \001(\001\022\025\n\rlongitude_deg\030\003 \001(\001\022\033\n" "\023absolute_altitude_m\030\005 \001(\002\022\023\n\013heading_de" @@ -190,43 +192,43 @@ const char descriptor_table_protodef_transponder_2ftransponder_2eproto[] PROTOBU "\022\035\n\025vertical_velocity_m_s\030\010 \001(\002\022\020\n\010calls" "ign\030\t \001(\t\022=\n\014emitter_type\030\n \001(\0162\'.mavsdk" ".rpc.transponder.AdsbEmitterType\022\016\n\006squa" - "wk\030\r \001(\r\"\217\002\n\021TransponderResult\022@\n\006result" - "\030\001 \001(\01620.mavsdk.rpc.transponder.Transpon" - "derResult.Result\022\022\n\nresult_str\030\002 \001(\t\"\243\001\n" - "\006Result\022\022\n\016RESULT_UNKNOWN\020\000\022\022\n\016RESULT_SU" - "CCESS\020\001\022\024\n\020RESULT_NO_SYSTEM\020\002\022\033\n\027RESULT_" - "CONNECTION_ERROR\020\003\022\017\n\013RESULT_BUSY\020\004\022\031\n\025R" - "ESULT_COMMAND_DENIED\020\005\022\022\n\016RESULT_TIMEOUT" - "\020\006*\255\005\n\017AdsbEmitterType\022\035\n\031ADSB_EMITTER_T" - "YPE_NO_INFO\020\000\022\033\n\027ADSB_EMITTER_TYPE_LIGHT" - "\020\001\022\033\n\027ADSB_EMITTER_TYPE_SMALL\020\002\022\033\n\027ADSB_" - "EMITTER_TYPE_LARGE\020\003\022\'\n#ADSB_EMITTER_TYP" - "E_HIGH_VORTEX_LARGE\020\004\022\033\n\027ADSB_EMITTER_TY" - "PE_HEAVY\020\005\022\"\n\036ADSB_EMITTER_TYPE_HIGHLY_M" - "ANUV\020\006\022\037\n\033ADSB_EMITTER_TYPE_ROTOCRAFT\020\007\022" - " \n\034ADSB_EMITTER_TYPE_UNASSIGNED\020\010\022\034\n\030ADS" - "B_EMITTER_TYPE_GLIDER\020\t\022!\n\035ADSB_EMITTER_" - "TYPE_LIGHTER_AIR\020\n\022\037\n\033ADSB_EMITTER_TYPE_" - "PARACHUTE\020\013\022!\n\035ADSB_EMITTER_TYPE_ULTRA_L" - "IGHT\020\014\022!\n\035ADSB_EMITTER_TYPE_UNASSIGNED2\020" - "\r\022\031\n\025ADSB_EMITTER_TYPE_UAV\020\016\022\033\n\027ADSB_EMI" - "TTER_TYPE_SPACE\020\017\022!\n\035ADSB_EMITTER_TYPE_U" - "NASSGINED3\020\020\022\'\n#ADSB_EMITTER_TYPE_EMERGE" - "NCY_SURFACE\020\021\022%\n!ADSB_EMITTER_TYPE_SERVI" - "CE_SURFACE\020\022\022$\n ADSB_EMITTER_TYPE_POINT_" - "OBSTACLE\020\0232\221\002\n\022TransponderService\022|\n\024Sub" - "scribeTransponder\0223.mavsdk.rpc.transpond" - "er.SubscribeTransponderRequest\032+.mavsdk." - "rpc.transponder.TransponderResponse\"\0000\001\022" - "}\n\022SetRateTransponder\0221.mavsdk.rpc.trans" - "ponder.SetRateTransponderRequest\0322.mavsd" - "k.rpc.transponder.SetRateTransponderResp" - "onse\"\000B)\n\025io.mavsdk.transponderB\020Transpo" - "nderProtob\006proto3" + "wk\030\r \001(\r\022\016\n\006tslc_s\030\016 \001(\r\"\217\002\n\021Transponder" + "Result\022@\n\006result\030\001 \001(\01620.mavsdk.rpc.tran" + "sponder.TransponderResult.Result\022\022\n\nresu" + "lt_str\030\002 \001(\t\"\243\001\n\006Result\022\022\n\016RESULT_UNKNOW" + "N\020\000\022\022\n\016RESULT_SUCCESS\020\001\022\024\n\020RESULT_NO_SYS" + "TEM\020\002\022\033\n\027RESULT_CONNECTION_ERROR\020\003\022\017\n\013RE" + "SULT_BUSY\020\004\022\031\n\025RESULT_COMMAND_DENIED\020\005\022\022" + "\n\016RESULT_TIMEOUT\020\006*\255\005\n\017AdsbEmitterType\022\035" + "\n\031ADSB_EMITTER_TYPE_NO_INFO\020\000\022\033\n\027ADSB_EM" + "ITTER_TYPE_LIGHT\020\001\022\033\n\027ADSB_EMITTER_TYPE_" + "SMALL\020\002\022\033\n\027ADSB_EMITTER_TYPE_LARGE\020\003\022\'\n#" + "ADSB_EMITTER_TYPE_HIGH_VORTEX_LARGE\020\004\022\033\n" + "\027ADSB_EMITTER_TYPE_HEAVY\020\005\022\"\n\036ADSB_EMITT" + "ER_TYPE_HIGHLY_MANUV\020\006\022\037\n\033ADSB_EMITTER_T" + "YPE_ROTOCRAFT\020\007\022 \n\034ADSB_EMITTER_TYPE_UNA" + "SSIGNED\020\010\022\034\n\030ADSB_EMITTER_TYPE_GLIDER\020\t\022" + "!\n\035ADSB_EMITTER_TYPE_LIGHTER_AIR\020\n\022\037\n\033AD" + "SB_EMITTER_TYPE_PARACHUTE\020\013\022!\n\035ADSB_EMIT" + "TER_TYPE_ULTRA_LIGHT\020\014\022!\n\035ADSB_EMITTER_T" + "YPE_UNASSIGNED2\020\r\022\031\n\025ADSB_EMITTER_TYPE_U" + "AV\020\016\022\033\n\027ADSB_EMITTER_TYPE_SPACE\020\017\022!\n\035ADS" + "B_EMITTER_TYPE_UNASSGINED3\020\020\022\'\n#ADSB_EMI" + "TTER_TYPE_EMERGENCY_SURFACE\020\021\022%\n!ADSB_EM" + "ITTER_TYPE_SERVICE_SURFACE\020\022\022$\n ADSB_EMI" + "TTER_TYPE_POINT_OBSTACLE\020\0232\221\002\n\022Transpond" + "erService\022|\n\024SubscribeTransponder\0223.mavs" + "dk.rpc.transponder.SubscribeTransponderR" + "equest\032+.mavsdk.rpc.transponder.Transpon" + "derResponse\"\0000\001\022}\n\022SetRateTransponder\0221." + "mavsdk.rpc.transponder.SetRateTransponde" + "rRequest\0322.mavsdk.rpc.transponder.SetRat" + "eTransponderResponse\"\000B)\n\025io.mavsdk.tran" + "sponderB\020TransponderProtob\006proto3" ; static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_transponder_2ftransponder_2eproto_once; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_transponder_2ftransponder_2eproto = { - false, false, 1897, descriptor_table_protodef_transponder_2ftransponder_2eproto, "transponder/transponder.proto", + false, false, 1913, descriptor_table_protodef_transponder_2ftransponder_2eproto, "transponder/transponder.proto", &descriptor_table_transponder_2ftransponder_2eproto_once, nullptr, 0, 6, schemas, file_default_instances, TableStruct_transponder_2ftransponder_2eproto::offsets, file_level_metadata_transponder_2ftransponder_2eproto, file_level_enum_descriptors_transponder_2ftransponder_2eproto, file_level_service_descriptors_transponder_2ftransponder_2eproto, @@ -1064,8 +1066,8 @@ AdsbVehicle::AdsbVehicle(const AdsbVehicle& from) GetArenaForAllocation()); } ::memcpy(&latitude_deg_, &from.latitude_deg_, - static_cast(reinterpret_cast(&squawk_) - - reinterpret_cast(&latitude_deg_)) + sizeof(squawk_)); + static_cast(reinterpret_cast(&tslc_s_) - + reinterpret_cast(&latitude_deg_)) + sizeof(tslc_s_)); // @@protoc_insertion_point(copy_constructor:mavsdk.rpc.transponder.AdsbVehicle) } @@ -1073,8 +1075,8 @@ inline void AdsbVehicle::SharedCtor() { callsign_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited()); ::memset(reinterpret_cast(this) + static_cast( reinterpret_cast(&latitude_deg_) - reinterpret_cast(this)), - 0, static_cast(reinterpret_cast(&squawk_) - - reinterpret_cast(&latitude_deg_)) + sizeof(squawk_)); + 0, static_cast(reinterpret_cast(&tslc_s_) - + reinterpret_cast(&latitude_deg_)) + sizeof(tslc_s_)); } AdsbVehicle::~AdsbVehicle() { @@ -1107,8 +1109,8 @@ void AdsbVehicle::Clear() { callsign_.ClearToEmpty(); ::memset(&latitude_deg_, 0, static_cast( - reinterpret_cast(&squawk_) - - reinterpret_cast(&latitude_deg_)) + sizeof(squawk_)); + reinterpret_cast(&tslc_s_) - + reinterpret_cast(&latitude_deg_)) + sizeof(tslc_s_)); _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); } @@ -1191,6 +1193,13 @@ const char* AdsbVehicle::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID CHK_(ptr); } else goto handle_unusual; continue; + // uint32 tslc_s = 14; + case 14: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) { + tslc_s_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; default: { handle_unusual: if ((tag == 0) || ((tag & 7) == 4)) { @@ -1285,6 +1294,12 @@ ::PROTOBUF_NAMESPACE_ID::uint8* AdsbVehicle::_InternalSerialize( target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(13, this->_internal_squawk(), target); } + // uint32 tslc_s = 14; + if (this->_internal_tslc_s() != 0) { + target = stream->EnsureSpace(target); + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32ToArray(14, this->_internal_tslc_s(), target); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -1358,6 +1373,13 @@ size_t AdsbVehicle::ByteSizeLong() const { this->_internal_squawk()); } + // uint32 tslc_s = 14; + if (this->_internal_tslc_s() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size( + this->_internal_tslc_s()); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize( _internal_metadata_, total_size, &_cached_size_); @@ -1416,6 +1438,9 @@ void AdsbVehicle::MergeFrom(const AdsbVehicle& from) { if (from._internal_squawk() != 0) { _internal_set_squawk(from._internal_squawk()); } + if (from._internal_tslc_s() != 0) { + _internal_set_tslc_s(from._internal_tslc_s()); + } _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); } @@ -1439,8 +1464,8 @@ void AdsbVehicle::InternalSwap(AdsbVehicle* other) { &other->callsign_, other->GetArenaForAllocation() ); ::PROTOBUF_NAMESPACE_ID::internal::memswap< - PROTOBUF_FIELD_OFFSET(AdsbVehicle, squawk_) - + sizeof(AdsbVehicle::squawk_) + PROTOBUF_FIELD_OFFSET(AdsbVehicle, tslc_s_) + + sizeof(AdsbVehicle::tslc_s_) - PROTOBUF_FIELD_OFFSET(AdsbVehicle, latitude_deg_)>( reinterpret_cast(&latitude_deg_), reinterpret_cast(&other->latitude_deg_)); diff --git a/src/mavsdk_server/src/generated/transponder/transponder.pb.h b/src/mavsdk_server/src/generated/transponder/transponder.pb.h index e94add6e1e..276f241fe9 100644 --- a/src/mavsdk_server/src/generated/transponder/transponder.pb.h +++ b/src/mavsdk_server/src/generated/transponder/transponder.pb.h @@ -851,6 +851,7 @@ class AdsbVehicle final : kVerticalVelocityMSFieldNumber = 8, kEmitterTypeFieldNumber = 10, kSquawkFieldNumber = 13, + kTslcSFieldNumber = 14, }; // string callsign = 9; void clear_callsign(); @@ -947,6 +948,15 @@ class AdsbVehicle final : void _internal_set_squawk(::PROTOBUF_NAMESPACE_ID::uint32 value); public: + // uint32 tslc_s = 14; + void clear_tslc_s(); + ::PROTOBUF_NAMESPACE_ID::uint32 tslc_s() const; + void set_tslc_s(::PROTOBUF_NAMESPACE_ID::uint32 value); + private: + ::PROTOBUF_NAMESPACE_ID::uint32 _internal_tslc_s() const; + void _internal_set_tslc_s(::PROTOBUF_NAMESPACE_ID::uint32 value); + public: + // @@protoc_insertion_point(class_scope:mavsdk.rpc.transponder.AdsbVehicle) private: class _Internal; @@ -964,6 +974,7 @@ class AdsbVehicle final : float vertical_velocity_m_s_; int emitter_type_; ::PROTOBUF_NAMESPACE_ID::uint32 squawk_; + ::PROTOBUF_NAMESPACE_ID::uint32 tslc_s_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_transponder_2ftransponder_2eproto; }; @@ -1615,6 +1626,26 @@ inline void AdsbVehicle::set_squawk(::PROTOBUF_NAMESPACE_ID::uint32 value) { // @@protoc_insertion_point(field_set:mavsdk.rpc.transponder.AdsbVehicle.squawk) } +// uint32 tslc_s = 14; +inline void AdsbVehicle::clear_tslc_s() { + tslc_s_ = 0u; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 AdsbVehicle::_internal_tslc_s() const { + return tslc_s_; +} +inline ::PROTOBUF_NAMESPACE_ID::uint32 AdsbVehicle::tslc_s() const { + // @@protoc_insertion_point(field_get:mavsdk.rpc.transponder.AdsbVehicle.tslc_s) + return _internal_tslc_s(); +} +inline void AdsbVehicle::_internal_set_tslc_s(::PROTOBUF_NAMESPACE_ID::uint32 value) { + + tslc_s_ = value; +} +inline void AdsbVehicle::set_tslc_s(::PROTOBUF_NAMESPACE_ID::uint32 value) { + _internal_set_tslc_s(value); + // @@protoc_insertion_point(field_set:mavsdk.rpc.transponder.AdsbVehicle.tslc_s) +} + // ------------------------------------------------------------------- // TransponderResult diff --git a/src/mavsdk_server/src/plugins/transponder/transponder_service_impl.h b/src/mavsdk_server/src/plugins/transponder/transponder_service_impl.h index 7fedb1064e..6973dd80f6 100644 --- a/src/mavsdk_server/src/plugins/transponder/transponder_service_impl.h +++ b/src/mavsdk_server/src/plugins/transponder/transponder_service_impl.h @@ -165,6 +165,8 @@ class TransponderServiceImpl final : public rpc::transponder::TransponderService rpc_obj->set_squawk(adsb_vehicle.squawk); + rpc_obj->set_tslc_s(adsb_vehicle.tslc_s); + return rpc_obj; } @@ -193,6 +195,8 @@ class TransponderServiceImpl final : public rpc::transponder::TransponderService obj.squawk = adsb_vehicle.squawk(); + obj.tslc_s = adsb_vehicle.tslc_s(); + return obj; }