From 196086f00e6ba3648fe2d690ed0b60ab0dda3985 Mon Sep 17 00:00:00 2001
From: Jun Zhang
Date: Mon, 4 Nov 2024 09:48:29 +0800
Subject: [PATCH] add carbon data struct
---
city/person/v2/carbon.proto | 24 +
city/person/v2/vehicle.proto | 4 +
cpp/city/person/v2/carbon.grpc.pb.cc | 29 +
cpp/city/person/v2/carbon.grpc.pb.h | 37 ++
cpp/city/person/v2/carbon.pb.cc | 559 ++++++++++++++++++
cpp/city/person/v2/carbon.pb.h | 472 +++++++++++++++
cpp/city/person/v2/vehicle.pb.cc | 179 ++++--
cpp/city/person/v2/vehicle.pb.h | 108 ++++
doc/index.html | 110 ++++
es/city/person/v2/carbon_pb.d.ts | 86 +++
es/city/person/v2/carbon_pb.js | 27 +
es/city/person/v2/vehicle_pb.d.ts | 9 +
es/city/person/v2/vehicle_pb.js | 2 +
go/city/person/v2/carbon.pb.go | 211 +++++++
go/city/person/v2/vehicle.pb.go | 300 +++++-----
pycityproto/city/person/v2/__init__.pyi | 1 +
pycityproto/city/person/v2/carbon_pb2.py | 15 +
pycityproto/city/person/v2/carbon_pb2.pyi | 26 +
pycityproto/city/person/v2/carbon_pb2_grpc.py | 2 +
pycityproto/city/person/v2/vehicle_pb2.py | 39 +-
pycityproto/city/person/v2/vehicle_pb2.pyi | 7 +-
21 files changed, 2024 insertions(+), 223 deletions(-)
create mode 100644 city/person/v2/carbon.proto
create mode 100644 cpp/city/person/v2/carbon.grpc.pb.cc
create mode 100644 cpp/city/person/v2/carbon.grpc.pb.h
create mode 100644 cpp/city/person/v2/carbon.pb.cc
create mode 100644 cpp/city/person/v2/carbon.pb.h
create mode 100644 es/city/person/v2/carbon_pb.d.ts
create mode 100644 es/city/person/v2/carbon_pb.js
create mode 100644 go/city/person/v2/carbon.pb.go
create mode 100644 pycityproto/city/person/v2/carbon_pb2.py
create mode 100644 pycityproto/city/person/v2/carbon_pb2.pyi
create mode 100644 pycityproto/city/person/v2/carbon_pb2_grpc.py
diff --git a/city/person/v2/carbon.proto b/city/person/v2/carbon.proto
new file mode 100644
index 00000000..597759c6
--- /dev/null
+++ b/city/person/v2/carbon.proto
@@ -0,0 +1,24 @@
+syntax = "proto3";
+
+package city.person.v2;
+
+// 车辆瞬时碳排放信息
+// Vehicle instantaneous carbon emission information
+message VehicleCarbon {
+ // ID
+ int32 id = 1;
+ // delta distance (m)
+ double ds = 2;
+ // vehicle speed (m/s)
+ double v = 3;
+ // vehicle acceleration (m/s^2)
+ double a = 4;
+ // energy for acceleration (J)
+ double u_acc = 5;
+ // energy for rolling resistance (J)
+ double u_roll = 6;
+ // energy for air resistance (J)
+ double u_aero = 7;
+ // C_D: drag coefficient
+ double c_d = 8;
+}
diff --git a/city/person/v2/vehicle.proto b/city/person/v2/vehicle.proto
index f0260a9d..542e2493 100644
--- a/city/person/v2/vehicle.proto
+++ b/city/person/v2/vehicle.proto
@@ -2,6 +2,7 @@ syntax = "proto3";
package city.person.v2;
+import "city/person/v2/carbon.proto";
import "city/person/v2/motion.proto";
import "city/routing/v2/routing.proto";
@@ -75,6 +76,9 @@ message VehicleRuntime {
// 自由流下的预计到达时刻
// estimated arrival time under free flow
double eta_free_flow = 10;
+ // 碳排放信息
+ // carbon emission information
+ optional VehicleCarbon carbon = 11;
}
enum VehicleRelation {
diff --git a/cpp/city/person/v2/carbon.grpc.pb.cc b/cpp/city/person/v2/carbon.grpc.pb.cc
new file mode 100644
index 00000000..9607a5aa
--- /dev/null
+++ b/cpp/city/person/v2/carbon.grpc.pb.cc
@@ -0,0 +1,29 @@
+// Generated by the gRPC C++ plugin.
+// If you make any local change, they will be lost.
+// source: city/person/v2/carbon.proto
+
+#include "city/person/v2/carbon.pb.h"
+#include "city/person/v2/carbon.grpc.pb.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+namespace city {
+namespace person {
+namespace v2 {
+
+} // namespace city
+} // namespace person
+} // namespace v2
+
diff --git a/cpp/city/person/v2/carbon.grpc.pb.h b/cpp/city/person/v2/carbon.grpc.pb.h
new file mode 100644
index 00000000..2b8da269
--- /dev/null
+++ b/cpp/city/person/v2/carbon.grpc.pb.h
@@ -0,0 +1,37 @@
+// Generated by the gRPC C++ plugin.
+// If you make any local change, they will be lost.
+// source: city/person/v2/carbon.proto
+#ifndef GRPC_city_2fperson_2fv2_2fcarbon_2eproto__INCLUDED
+#define GRPC_city_2fperson_2fv2_2fcarbon_2eproto__INCLUDED
+
+#include "city/person/v2/carbon.pb.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace city {
+namespace person {
+namespace v2 {
+
+} // namespace v2
+} // namespace person
+} // namespace city
+
+
+#endif // GRPC_city_2fperson_2fv2_2fcarbon_2eproto__INCLUDED
diff --git a/cpp/city/person/v2/carbon.pb.cc b/cpp/city/person/v2/carbon.pb.cc
new file mode 100644
index 00000000..893a8f8e
--- /dev/null
+++ b/cpp/city/person/v2/carbon.pb.cc
@@ -0,0 +1,559 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: city/person/v2/carbon.proto
+
+#include "city/person/v2/carbon.pb.h"
+
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+// @@protoc_insertion_point(includes)
+#include
+
+PROTOBUF_PRAGMA_INIT_SEG
+
+namespace _pb = ::PROTOBUF_NAMESPACE_ID;
+namespace _pbi = _pb::internal;
+
+namespace city {
+namespace person {
+namespace v2 {
+PROTOBUF_CONSTEXPR VehicleCarbon::VehicleCarbon(
+ ::_pbi::ConstantInitialized): _impl_{
+ /*decltype(_impl_.ds_)*/0
+ , /*decltype(_impl_.v_)*/0
+ , /*decltype(_impl_.a_)*/0
+ , /*decltype(_impl_.u_acc_)*/0
+ , /*decltype(_impl_.u_roll_)*/0
+ , /*decltype(_impl_.u_aero_)*/0
+ , /*decltype(_impl_.c_d_)*/0
+ , /*decltype(_impl_.id_)*/0
+ , /*decltype(_impl_._cached_size_)*/{}} {}
+struct VehicleCarbonDefaultTypeInternal {
+ PROTOBUF_CONSTEXPR VehicleCarbonDefaultTypeInternal()
+ : _instance(::_pbi::ConstantInitialized{}) {}
+ ~VehicleCarbonDefaultTypeInternal() {}
+ union {
+ VehicleCarbon _instance;
+ };
+};
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VehicleCarbonDefaultTypeInternal _VehicleCarbon_default_instance_;
+} // namespace v2
+} // namespace person
+} // namespace city
+static ::_pb::Metadata file_level_metadata_city_2fperson_2fv2_2fcarbon_2eproto[1];
+static constexpr ::_pb::EnumDescriptor const** file_level_enum_descriptors_city_2fperson_2fv2_2fcarbon_2eproto = nullptr;
+static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_city_2fperson_2fv2_2fcarbon_2eproto = nullptr;
+
+const uint32_t TableStruct_city_2fperson_2fv2_2fcarbon_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+ ~0u, // no _has_bits_
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _internal_metadata_),
+ ~0u, // no _extensions_
+ ~0u, // no _oneof_case_
+ ~0u, // no _weak_field_map_
+ ~0u, // no _inlined_string_donated_
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.id_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.ds_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.v_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.a_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.u_acc_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.u_roll_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.u_aero_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleCarbon, _impl_.c_d_),
+};
+static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
+ { 0, -1, -1, sizeof(::city::person::v2::VehicleCarbon)},
+};
+
+static const ::_pb::Message* const file_default_instances[] = {
+ &::city::person::v2::_VehicleCarbon_default_instance_._instance,
+};
+
+const char descriptor_table_protodef_city_2fperson_2fv2_2fcarbon_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
+ "\n\033city/person/v2/carbon.proto\022\016city.pers"
+ "on.v2\"\237\001\n\rVehicleCarbon\022\016\n\002id\030\001 \001(\005R\002id\022"
+ "\016\n\002ds\030\002 \001(\001R\002ds\022\014\n\001v\030\003 \001(\001R\001v\022\014\n\001a\030\004 \001(\001"
+ "R\001a\022\023\n\005u_acc\030\005 \001(\001R\004uAcc\022\025\n\006u_roll\030\006 \001(\001"
+ "R\005uRoll\022\025\n\006u_aero\030\007 \001(\001R\005uAero\022\017\n\003c_d\030\010 "
+ "\001(\001R\002cDB\264\001\n\022com.city.person.v2B\013CarbonPr"
+ "otoP\001Z7git.fiblab.net/sim/protos/v2/go/c"
+ "ity/person/v2;personv2\242\002\003CPX\252\002\016City.Pers"
+ "on.V2\312\002\016City\\Person\\V2\342\002\032City\\Person\\V2\\"
+ "GPBMetadata\352\002\020City::Person::V2b\006proto3"
+ ;
+static ::_pbi::once_flag descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto_once;
+const ::_pbi::DescriptorTable descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto = {
+ false, false, 398, descriptor_table_protodef_city_2fperson_2fv2_2fcarbon_2eproto,
+ "city/person/v2/carbon.proto",
+ &descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto_once, nullptr, 0, 1,
+ schemas, file_default_instances, TableStruct_city_2fperson_2fv2_2fcarbon_2eproto::offsets,
+ file_level_metadata_city_2fperson_2fv2_2fcarbon_2eproto, file_level_enum_descriptors_city_2fperson_2fv2_2fcarbon_2eproto,
+ file_level_service_descriptors_city_2fperson_2fv2_2fcarbon_2eproto,
+};
+PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto_getter() {
+ return &descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto;
+}
+
+// Force running AddDescriptors() at dynamic initialization time.
+PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_city_2fperson_2fv2_2fcarbon_2eproto(&descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto);
+namespace city {
+namespace person {
+namespace v2 {
+
+// ===================================================================
+
+class VehicleCarbon::_Internal {
+ public:
+};
+
+VehicleCarbon::VehicleCarbon(::PROTOBUF_NAMESPACE_ID::Arena* arena,
+ bool is_message_owned)
+ : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
+ SharedCtor(arena, is_message_owned);
+ // @@protoc_insertion_point(arena_constructor:city.person.v2.VehicleCarbon)
+}
+VehicleCarbon::VehicleCarbon(const VehicleCarbon& from)
+ : ::PROTOBUF_NAMESPACE_ID::Message() {
+ VehicleCarbon* const _this = this; (void)_this;
+ new (&_impl_) Impl_{
+ decltype(_impl_.ds_){}
+ , decltype(_impl_.v_){}
+ , decltype(_impl_.a_){}
+ , decltype(_impl_.u_acc_){}
+ , decltype(_impl_.u_roll_){}
+ , decltype(_impl_.u_aero_){}
+ , decltype(_impl_.c_d_){}
+ , decltype(_impl_.id_){}
+ , /*decltype(_impl_._cached_size_)*/{}};
+
+ _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
+ ::memcpy(&_impl_.ds_, &from._impl_.ds_,
+ static_cast(reinterpret_cast(&_impl_.id_) -
+ reinterpret_cast(&_impl_.ds_)) + sizeof(_impl_.id_));
+ // @@protoc_insertion_point(copy_constructor:city.person.v2.VehicleCarbon)
+}
+
+inline void VehicleCarbon::SharedCtor(
+ ::_pb::Arena* arena, bool is_message_owned) {
+ (void)arena;
+ (void)is_message_owned;
+ new (&_impl_) Impl_{
+ decltype(_impl_.ds_){0}
+ , decltype(_impl_.v_){0}
+ , decltype(_impl_.a_){0}
+ , decltype(_impl_.u_acc_){0}
+ , decltype(_impl_.u_roll_){0}
+ , decltype(_impl_.u_aero_){0}
+ , decltype(_impl_.c_d_){0}
+ , decltype(_impl_.id_){0}
+ , /*decltype(_impl_._cached_size_)*/{}
+ };
+}
+
+VehicleCarbon::~VehicleCarbon() {
+ // @@protoc_insertion_point(destructor:city.person.v2.VehicleCarbon)
+ if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
+ (void)arena;
+ return;
+ }
+ SharedDtor();
+}
+
+inline void VehicleCarbon::SharedDtor() {
+ GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
+}
+
+void VehicleCarbon::SetCachedSize(int size) const {
+ _impl_._cached_size_.Set(size);
+}
+
+void VehicleCarbon::Clear() {
+// @@protoc_insertion_point(message_clear_start:city.person.v2.VehicleCarbon)
+ uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ ::memset(&_impl_.ds_, 0, static_cast(
+ reinterpret_cast(&_impl_.id_) -
+ reinterpret_cast(&_impl_.ds_)) + sizeof(_impl_.id_));
+ _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
+}
+
+const char* VehicleCarbon::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
+#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
+ while (!ctx->Done(&ptr)) {
+ uint32_t tag;
+ ptr = ::_pbi::ReadTag(ptr, &tag);
+ switch (tag >> 3) {
+ // int32 id = 1 [json_name = "id"];
+ case 1:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 8)) {
+ _impl_.id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
+ CHK_(ptr);
+ } else
+ goto handle_unusual;
+ continue;
+ // double ds = 2 [json_name = "ds"];
+ case 2:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 17)) {
+ _impl_.ds_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr);
+ ptr += sizeof(double);
+ } else
+ goto handle_unusual;
+ continue;
+ // double v = 3 [json_name = "v"];
+ case 3:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 25)) {
+ _impl_.v_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr);
+ ptr += sizeof(double);
+ } else
+ goto handle_unusual;
+ continue;
+ // double a = 4 [json_name = "a"];
+ case 4:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 33)) {
+ _impl_.a_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr);
+ ptr += sizeof(double);
+ } else
+ goto handle_unusual;
+ continue;
+ // double u_acc = 5 [json_name = "uAcc"];
+ case 5:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 41)) {
+ _impl_.u_acc_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr);
+ ptr += sizeof(double);
+ } else
+ goto handle_unusual;
+ continue;
+ // double u_roll = 6 [json_name = "uRoll"];
+ case 6:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 49)) {
+ _impl_.u_roll_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr);
+ ptr += sizeof(double);
+ } else
+ goto handle_unusual;
+ continue;
+ // double u_aero = 7 [json_name = "uAero"];
+ case 7:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 57)) {
+ _impl_.u_aero_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr);
+ ptr += sizeof(double);
+ } else
+ goto handle_unusual;
+ continue;
+ // double c_d = 8 [json_name = "cD"];
+ case 8:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 65)) {
+ _impl_.c_d_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad(ptr);
+ ptr += sizeof(double);
+ } else
+ goto handle_unusual;
+ continue;
+ default:
+ goto handle_unusual;
+ } // switch
+ handle_unusual:
+ if ((tag == 0) || ((tag & 7) == 4)) {
+ CHK_(ptr);
+ ctx->SetLastTag(tag);
+ goto message_done;
+ }
+ ptr = UnknownFieldParse(
+ tag,
+ _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
+ ptr, ctx);
+ CHK_(ptr != nullptr);
+ } // while
+message_done:
+ return ptr;
+failure:
+ ptr = nullptr;
+ goto message_done;
+#undef CHK_
+}
+
+uint8_t* VehicleCarbon::_InternalSerialize(
+ uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
+ // @@protoc_insertion_point(serialize_to_array_start:city.person.v2.VehicleCarbon)
+ uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ // int32 id = 1 [json_name = "id"];
+ if (this->_internal_id() != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_id(), target);
+ }
+
+ // double ds = 2 [json_name = "ds"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_ds = this->_internal_ds();
+ uint64_t raw_ds;
+ memcpy(&raw_ds, &tmp_ds, sizeof(tmp_ds));
+ if (raw_ds != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteDoubleToArray(2, this->_internal_ds(), target);
+ }
+
+ // double v = 3 [json_name = "v"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_v = this->_internal_v();
+ uint64_t raw_v;
+ memcpy(&raw_v, &tmp_v, sizeof(tmp_v));
+ if (raw_v != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteDoubleToArray(3, this->_internal_v(), target);
+ }
+
+ // double a = 4 [json_name = "a"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_a = this->_internal_a();
+ uint64_t raw_a;
+ memcpy(&raw_a, &tmp_a, sizeof(tmp_a));
+ if (raw_a != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteDoubleToArray(4, this->_internal_a(), target);
+ }
+
+ // double u_acc = 5 [json_name = "uAcc"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_acc = this->_internal_u_acc();
+ uint64_t raw_u_acc;
+ memcpy(&raw_u_acc, &tmp_u_acc, sizeof(tmp_u_acc));
+ if (raw_u_acc != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteDoubleToArray(5, this->_internal_u_acc(), target);
+ }
+
+ // double u_roll = 6 [json_name = "uRoll"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_roll = this->_internal_u_roll();
+ uint64_t raw_u_roll;
+ memcpy(&raw_u_roll, &tmp_u_roll, sizeof(tmp_u_roll));
+ if (raw_u_roll != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteDoubleToArray(6, this->_internal_u_roll(), target);
+ }
+
+ // double u_aero = 7 [json_name = "uAero"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_aero = this->_internal_u_aero();
+ uint64_t raw_u_aero;
+ memcpy(&raw_u_aero, &tmp_u_aero, sizeof(tmp_u_aero));
+ if (raw_u_aero != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteDoubleToArray(7, this->_internal_u_aero(), target);
+ }
+
+ // double c_d = 8 [json_name = "cD"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_c_d = this->_internal_c_d();
+ uint64_t raw_c_d;
+ memcpy(&raw_c_d, &tmp_c_d, sizeof(tmp_c_d));
+ if (raw_c_d != 0) {
+ target = stream->EnsureSpace(target);
+ target = ::_pbi::WireFormatLite::WriteDoubleToArray(8, this->_internal_c_d(), target);
+ }
+
+ if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+ target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+ _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
+ }
+ // @@protoc_insertion_point(serialize_to_array_end:city.person.v2.VehicleCarbon)
+ return target;
+}
+
+size_t VehicleCarbon::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:city.person.v2.VehicleCarbon)
+ size_t total_size = 0;
+
+ uint32_t cached_has_bits = 0;
+ // Prevent compiler warnings about cached_has_bits being unused
+ (void) cached_has_bits;
+
+ // double ds = 2 [json_name = "ds"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_ds = this->_internal_ds();
+ uint64_t raw_ds;
+ memcpy(&raw_ds, &tmp_ds, sizeof(tmp_ds));
+ if (raw_ds != 0) {
+ total_size += 1 + 8;
+ }
+
+ // double v = 3 [json_name = "v"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_v = this->_internal_v();
+ uint64_t raw_v;
+ memcpy(&raw_v, &tmp_v, sizeof(tmp_v));
+ if (raw_v != 0) {
+ total_size += 1 + 8;
+ }
+
+ // double a = 4 [json_name = "a"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_a = this->_internal_a();
+ uint64_t raw_a;
+ memcpy(&raw_a, &tmp_a, sizeof(tmp_a));
+ if (raw_a != 0) {
+ total_size += 1 + 8;
+ }
+
+ // double u_acc = 5 [json_name = "uAcc"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_acc = this->_internal_u_acc();
+ uint64_t raw_u_acc;
+ memcpy(&raw_u_acc, &tmp_u_acc, sizeof(tmp_u_acc));
+ if (raw_u_acc != 0) {
+ total_size += 1 + 8;
+ }
+
+ // double u_roll = 6 [json_name = "uRoll"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_roll = this->_internal_u_roll();
+ uint64_t raw_u_roll;
+ memcpy(&raw_u_roll, &tmp_u_roll, sizeof(tmp_u_roll));
+ if (raw_u_roll != 0) {
+ total_size += 1 + 8;
+ }
+
+ // double u_aero = 7 [json_name = "uAero"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_aero = this->_internal_u_aero();
+ uint64_t raw_u_aero;
+ memcpy(&raw_u_aero, &tmp_u_aero, sizeof(tmp_u_aero));
+ if (raw_u_aero != 0) {
+ total_size += 1 + 8;
+ }
+
+ // double c_d = 8 [json_name = "cD"];
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_c_d = this->_internal_c_d();
+ uint64_t raw_c_d;
+ memcpy(&raw_c_d, &tmp_c_d, sizeof(tmp_c_d));
+ if (raw_c_d != 0) {
+ total_size += 1 + 8;
+ }
+
+ // int32 id = 1 [json_name = "id"];
+ if (this->_internal_id() != 0) {
+ total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_id());
+ }
+
+ return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
+}
+
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData VehicleCarbon::_class_data_ = {
+ ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
+ VehicleCarbon::MergeImpl
+};
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*VehicleCarbon::GetClassData() const { return &_class_data_; }
+
+
+void VehicleCarbon::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
+ auto* const _this = static_cast(&to_msg);
+ auto& from = static_cast(from_msg);
+ // @@protoc_insertion_point(class_specific_merge_from_start:city.person.v2.VehicleCarbon)
+ GOOGLE_DCHECK_NE(&from, _this);
+ uint32_t cached_has_bits = 0;
+ (void) cached_has_bits;
+
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_ds = from._internal_ds();
+ uint64_t raw_ds;
+ memcpy(&raw_ds, &tmp_ds, sizeof(tmp_ds));
+ if (raw_ds != 0) {
+ _this->_internal_set_ds(from._internal_ds());
+ }
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_v = from._internal_v();
+ uint64_t raw_v;
+ memcpy(&raw_v, &tmp_v, sizeof(tmp_v));
+ if (raw_v != 0) {
+ _this->_internal_set_v(from._internal_v());
+ }
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_a = from._internal_a();
+ uint64_t raw_a;
+ memcpy(&raw_a, &tmp_a, sizeof(tmp_a));
+ if (raw_a != 0) {
+ _this->_internal_set_a(from._internal_a());
+ }
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_acc = from._internal_u_acc();
+ uint64_t raw_u_acc;
+ memcpy(&raw_u_acc, &tmp_u_acc, sizeof(tmp_u_acc));
+ if (raw_u_acc != 0) {
+ _this->_internal_set_u_acc(from._internal_u_acc());
+ }
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_roll = from._internal_u_roll();
+ uint64_t raw_u_roll;
+ memcpy(&raw_u_roll, &tmp_u_roll, sizeof(tmp_u_roll));
+ if (raw_u_roll != 0) {
+ _this->_internal_set_u_roll(from._internal_u_roll());
+ }
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_u_aero = from._internal_u_aero();
+ uint64_t raw_u_aero;
+ memcpy(&raw_u_aero, &tmp_u_aero, sizeof(tmp_u_aero));
+ if (raw_u_aero != 0) {
+ _this->_internal_set_u_aero(from._internal_u_aero());
+ }
+ static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
+ double tmp_c_d = from._internal_c_d();
+ uint64_t raw_c_d;
+ memcpy(&raw_c_d, &tmp_c_d, sizeof(tmp_c_d));
+ if (raw_c_d != 0) {
+ _this->_internal_set_c_d(from._internal_c_d());
+ }
+ if (from._internal_id() != 0) {
+ _this->_internal_set_id(from._internal_id());
+ }
+ _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void VehicleCarbon::CopyFrom(const VehicleCarbon& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:city.person.v2.VehicleCarbon)
+ if (&from == this) return;
+ Clear();
+ MergeFrom(from);
+}
+
+bool VehicleCarbon::IsInitialized() const {
+ return true;
+}
+
+void VehicleCarbon::InternalSwap(VehicleCarbon* other) {
+ using std::swap;
+ _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+ ::PROTOBUF_NAMESPACE_ID::internal::memswap<
+ PROTOBUF_FIELD_OFFSET(VehicleCarbon, _impl_.id_)
+ + sizeof(VehicleCarbon::_impl_.id_)
+ - PROTOBUF_FIELD_OFFSET(VehicleCarbon, _impl_.ds_)>(
+ reinterpret_cast(&_impl_.ds_),
+ reinterpret_cast(&other->_impl_.ds_));
+}
+
+::PROTOBUF_NAMESPACE_ID::Metadata VehicleCarbon::GetMetadata() const {
+ return ::_pbi::AssignDescriptors(
+ &descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto_getter, &descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto_once,
+ file_level_metadata_city_2fperson_2fv2_2fcarbon_2eproto[0]);
+}
+
+// @@protoc_insertion_point(namespace_scope)
+} // namespace v2
+} // namespace person
+} // namespace city
+PROTOBUF_NAMESPACE_OPEN
+template<> PROTOBUF_NOINLINE ::city::person::v2::VehicleCarbon*
+Arena::CreateMaybeMessage< ::city::person::v2::VehicleCarbon >(Arena* arena) {
+ return Arena::CreateMessageInternal< ::city::person::v2::VehicleCarbon >(arena);
+}
+PROTOBUF_NAMESPACE_CLOSE
+
+// @@protoc_insertion_point(global_scope)
+#include
diff --git a/cpp/city/person/v2/carbon.pb.h b/cpp/city/person/v2/carbon.pb.h
new file mode 100644
index 00000000..f30990ac
--- /dev/null
+++ b/cpp/city/person/v2/carbon.pb.h
@@ -0,0 +1,472 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: city/person/v2/carbon.proto
+
+#ifndef GOOGLE_PROTOBUF_INCLUDED_city_2fperson_2fv2_2fcarbon_2eproto
+#define GOOGLE_PROTOBUF_INCLUDED_city_2fperson_2fv2_2fcarbon_2eproto
+
+#include
+#include
+
+#include
+#if PROTOBUF_VERSION < 3021000
+#error This file was generated by a newer version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please update
+#error your headers.
+#endif
+#if 3021012 < PROTOBUF_MIN_PROTOC_VERSION
+#error This file was generated by an older version of protoc which is
+#error incompatible with your Protocol Buffer headers. Please
+#error regenerate this file with a newer version of protoc.
+#endif
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include // IWYU pragma: export
+#include // IWYU pragma: export
+#include
+// @@protoc_insertion_point(includes)
+#include
+#define PROTOBUF_INTERNAL_EXPORT_city_2fperson_2fv2_2fcarbon_2eproto
+PROTOBUF_NAMESPACE_OPEN
+namespace internal {
+class AnyMetadata;
+} // namespace internal
+PROTOBUF_NAMESPACE_CLOSE
+
+// Internal implementation detail -- do not use these members.
+struct TableStruct_city_2fperson_2fv2_2fcarbon_2eproto {
+ static const uint32_t offsets[];
+};
+extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto;
+namespace city {
+namespace person {
+namespace v2 {
+class VehicleCarbon;
+struct VehicleCarbonDefaultTypeInternal;
+extern VehicleCarbonDefaultTypeInternal _VehicleCarbon_default_instance_;
+} // namespace v2
+} // namespace person
+} // namespace city
+PROTOBUF_NAMESPACE_OPEN
+template<> ::city::person::v2::VehicleCarbon* Arena::CreateMaybeMessage<::city::person::v2::VehicleCarbon>(Arena*);
+PROTOBUF_NAMESPACE_CLOSE
+namespace city {
+namespace person {
+namespace v2 {
+
+// ===================================================================
+
+class VehicleCarbon final :
+ public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:city.person.v2.VehicleCarbon) */ {
+ public:
+ inline VehicleCarbon() : VehicleCarbon(nullptr) {}
+ ~VehicleCarbon() override;
+ explicit PROTOBUF_CONSTEXPR VehicleCarbon(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
+
+ VehicleCarbon(const VehicleCarbon& from);
+ VehicleCarbon(VehicleCarbon&& from) noexcept
+ : VehicleCarbon() {
+ *this = ::std::move(from);
+ }
+
+ inline VehicleCarbon& operator=(const VehicleCarbon& from) {
+ CopyFrom(from);
+ return *this;
+ }
+ inline VehicleCarbon& operator=(VehicleCarbon&& from) noexcept {
+ if (this == &from) return *this;
+ if (GetOwningArena() == from.GetOwningArena()
+ #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
+ && GetOwningArena() != nullptr
+ #endif // !PROTOBUF_FORCE_COPY_IN_MOVE
+ ) {
+ InternalSwap(&from);
+ } else {
+ CopyFrom(from);
+ }
+ return *this;
+ }
+
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
+ return GetDescriptor();
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
+ return default_instance().GetMetadata().descriptor;
+ }
+ static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
+ return default_instance().GetMetadata().reflection;
+ }
+ static const VehicleCarbon& default_instance() {
+ return *internal_default_instance();
+ }
+ static inline const VehicleCarbon* internal_default_instance() {
+ return reinterpret_cast(
+ &_VehicleCarbon_default_instance_);
+ }
+ static constexpr int kIndexInFileMessages =
+ 0;
+
+ friend void swap(VehicleCarbon& a, VehicleCarbon& b) {
+ a.Swap(&b);
+ }
+ inline void Swap(VehicleCarbon* other) {
+ if (other == this) return;
+ #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
+ if (GetOwningArena() != nullptr &&
+ GetOwningArena() == other->GetOwningArena()) {
+ #else // PROTOBUF_FORCE_COPY_IN_SWAP
+ if (GetOwningArena() == other->GetOwningArena()) {
+ #endif // !PROTOBUF_FORCE_COPY_IN_SWAP
+ InternalSwap(other);
+ } else {
+ ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
+ }
+ }
+ void UnsafeArenaSwap(VehicleCarbon* other) {
+ if (other == this) return;
+ GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
+ InternalSwap(other);
+ }
+
+ // implements Message ----------------------------------------------
+
+ VehicleCarbon* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
+ return CreateMaybeMessage(arena);
+ }
+ using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
+ void CopyFrom(const VehicleCarbon& from);
+ using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
+ void MergeFrom( const VehicleCarbon& from) {
+ VehicleCarbon::MergeImpl(*this, from);
+ }
+ private:
+ static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
+ public:
+ PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+ bool IsInitialized() const final;
+
+ size_t ByteSizeLong() const final;
+ const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
+ uint8_t* _InternalSerialize(
+ uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
+ int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
+
+ private:
+ void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
+ void SharedDtor();
+ void SetCachedSize(int size) const final;
+ void InternalSwap(VehicleCarbon* other);
+
+ private:
+ friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
+ static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
+ return "city.person.v2.VehicleCarbon";
+ }
+ protected:
+ explicit VehicleCarbon(::PROTOBUF_NAMESPACE_ID::Arena* arena,
+ bool is_message_owned = false);
+ public:
+
+ static const ClassData _class_data_;
+ const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
+
+ ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
+
+ // nested types ----------------------------------------------------
+
+ // accessors -------------------------------------------------------
+
+ enum : int {
+ kDsFieldNumber = 2,
+ kVFieldNumber = 3,
+ kAFieldNumber = 4,
+ kUAccFieldNumber = 5,
+ kURollFieldNumber = 6,
+ kUAeroFieldNumber = 7,
+ kCDFieldNumber = 8,
+ kIdFieldNumber = 1,
+ };
+ // double ds = 2 [json_name = "ds"];
+ void clear_ds();
+ double ds() const;
+ void set_ds(double value);
+ private:
+ double _internal_ds() const;
+ void _internal_set_ds(double value);
+ public:
+
+ // double v = 3 [json_name = "v"];
+ void clear_v();
+ double v() const;
+ void set_v(double value);
+ private:
+ double _internal_v() const;
+ void _internal_set_v(double value);
+ public:
+
+ // double a = 4 [json_name = "a"];
+ void clear_a();
+ double a() const;
+ void set_a(double value);
+ private:
+ double _internal_a() const;
+ void _internal_set_a(double value);
+ public:
+
+ // double u_acc = 5 [json_name = "uAcc"];
+ void clear_u_acc();
+ double u_acc() const;
+ void set_u_acc(double value);
+ private:
+ double _internal_u_acc() const;
+ void _internal_set_u_acc(double value);
+ public:
+
+ // double u_roll = 6 [json_name = "uRoll"];
+ void clear_u_roll();
+ double u_roll() const;
+ void set_u_roll(double value);
+ private:
+ double _internal_u_roll() const;
+ void _internal_set_u_roll(double value);
+ public:
+
+ // double u_aero = 7 [json_name = "uAero"];
+ void clear_u_aero();
+ double u_aero() const;
+ void set_u_aero(double value);
+ private:
+ double _internal_u_aero() const;
+ void _internal_set_u_aero(double value);
+ public:
+
+ // double c_d = 8 [json_name = "cD"];
+ void clear_c_d();
+ double c_d() const;
+ void set_c_d(double value);
+ private:
+ double _internal_c_d() const;
+ void _internal_set_c_d(double value);
+ public:
+
+ // int32 id = 1 [json_name = "id"];
+ void clear_id();
+ int32_t id() const;
+ void set_id(int32_t value);
+ private:
+ int32_t _internal_id() const;
+ void _internal_set_id(int32_t value);
+ public:
+
+ // @@protoc_insertion_point(class_scope:city.person.v2.VehicleCarbon)
+ private:
+ class _Internal;
+
+ template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
+ typedef void InternalArenaConstructable_;
+ typedef void DestructorSkippable_;
+ struct Impl_ {
+ double ds_;
+ double v_;
+ double a_;
+ double u_acc_;
+ double u_roll_;
+ double u_aero_;
+ double c_d_;
+ int32_t id_;
+ mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
+ };
+ union { Impl_ _impl_; };
+ friend struct ::TableStruct_city_2fperson_2fv2_2fcarbon_2eproto;
+};
+// ===================================================================
+
+
+// ===================================================================
+
+#ifdef __GNUC__
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif // __GNUC__
+// VehicleCarbon
+
+// int32 id = 1 [json_name = "id"];
+inline void VehicleCarbon::clear_id() {
+ _impl_.id_ = 0;
+}
+inline int32_t VehicleCarbon::_internal_id() const {
+ return _impl_.id_;
+}
+inline int32_t VehicleCarbon::id() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.id)
+ return _internal_id();
+}
+inline void VehicleCarbon::_internal_set_id(int32_t value) {
+
+ _impl_.id_ = value;
+}
+inline void VehicleCarbon::set_id(int32_t value) {
+ _internal_set_id(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.id)
+}
+
+// double ds = 2 [json_name = "ds"];
+inline void VehicleCarbon::clear_ds() {
+ _impl_.ds_ = 0;
+}
+inline double VehicleCarbon::_internal_ds() const {
+ return _impl_.ds_;
+}
+inline double VehicleCarbon::ds() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.ds)
+ return _internal_ds();
+}
+inline void VehicleCarbon::_internal_set_ds(double value) {
+
+ _impl_.ds_ = value;
+}
+inline void VehicleCarbon::set_ds(double value) {
+ _internal_set_ds(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.ds)
+}
+
+// double v = 3 [json_name = "v"];
+inline void VehicleCarbon::clear_v() {
+ _impl_.v_ = 0;
+}
+inline double VehicleCarbon::_internal_v() const {
+ return _impl_.v_;
+}
+inline double VehicleCarbon::v() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.v)
+ return _internal_v();
+}
+inline void VehicleCarbon::_internal_set_v(double value) {
+
+ _impl_.v_ = value;
+}
+inline void VehicleCarbon::set_v(double value) {
+ _internal_set_v(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.v)
+}
+
+// double a = 4 [json_name = "a"];
+inline void VehicleCarbon::clear_a() {
+ _impl_.a_ = 0;
+}
+inline double VehicleCarbon::_internal_a() const {
+ return _impl_.a_;
+}
+inline double VehicleCarbon::a() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.a)
+ return _internal_a();
+}
+inline void VehicleCarbon::_internal_set_a(double value) {
+
+ _impl_.a_ = value;
+}
+inline void VehicleCarbon::set_a(double value) {
+ _internal_set_a(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.a)
+}
+
+// double u_acc = 5 [json_name = "uAcc"];
+inline void VehicleCarbon::clear_u_acc() {
+ _impl_.u_acc_ = 0;
+}
+inline double VehicleCarbon::_internal_u_acc() const {
+ return _impl_.u_acc_;
+}
+inline double VehicleCarbon::u_acc() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.u_acc)
+ return _internal_u_acc();
+}
+inline void VehicleCarbon::_internal_set_u_acc(double value) {
+
+ _impl_.u_acc_ = value;
+}
+inline void VehicleCarbon::set_u_acc(double value) {
+ _internal_set_u_acc(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.u_acc)
+}
+
+// double u_roll = 6 [json_name = "uRoll"];
+inline void VehicleCarbon::clear_u_roll() {
+ _impl_.u_roll_ = 0;
+}
+inline double VehicleCarbon::_internal_u_roll() const {
+ return _impl_.u_roll_;
+}
+inline double VehicleCarbon::u_roll() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.u_roll)
+ return _internal_u_roll();
+}
+inline void VehicleCarbon::_internal_set_u_roll(double value) {
+
+ _impl_.u_roll_ = value;
+}
+inline void VehicleCarbon::set_u_roll(double value) {
+ _internal_set_u_roll(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.u_roll)
+}
+
+// double u_aero = 7 [json_name = "uAero"];
+inline void VehicleCarbon::clear_u_aero() {
+ _impl_.u_aero_ = 0;
+}
+inline double VehicleCarbon::_internal_u_aero() const {
+ return _impl_.u_aero_;
+}
+inline double VehicleCarbon::u_aero() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.u_aero)
+ return _internal_u_aero();
+}
+inline void VehicleCarbon::_internal_set_u_aero(double value) {
+
+ _impl_.u_aero_ = value;
+}
+inline void VehicleCarbon::set_u_aero(double value) {
+ _internal_set_u_aero(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.u_aero)
+}
+
+// double c_d = 8 [json_name = "cD"];
+inline void VehicleCarbon::clear_c_d() {
+ _impl_.c_d_ = 0;
+}
+inline double VehicleCarbon::_internal_c_d() const {
+ return _impl_.c_d_;
+}
+inline double VehicleCarbon::c_d() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleCarbon.c_d)
+ return _internal_c_d();
+}
+inline void VehicleCarbon::_internal_set_c_d(double value) {
+
+ _impl_.c_d_ = value;
+}
+inline void VehicleCarbon::set_c_d(double value) {
+ _internal_set_c_d(value);
+ // @@protoc_insertion_point(field_set:city.person.v2.VehicleCarbon.c_d)
+}
+
+#ifdef __GNUC__
+ #pragma GCC diagnostic pop
+#endif // __GNUC__
+
+// @@protoc_insertion_point(namespace_scope)
+
+} // namespace v2
+} // namespace person
+} // namespace city
+
+// @@protoc_insertion_point(global_scope)
+
+#include
+#endif // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_city_2fperson_2fv2_2fcarbon_2eproto
diff --git a/cpp/city/person/v2/vehicle.pb.cc b/cpp/city/person/v2/vehicle.pb.cc
index 357736b5..324b37ca 100644
--- a/cpp/city/person/v2/vehicle.pb.cc
+++ b/cpp/city/person/v2/vehicle.pb.cc
@@ -77,6 +77,7 @@ PROTOBUF_CONSTEXPR VehicleRuntime::VehicleRuntime(
, /*decltype(_impl_.base_)*/nullptr
, /*decltype(_impl_.lc_)*/nullptr
, /*decltype(_impl_.action_)*/nullptr
+ , /*decltype(_impl_.carbon_)*/nullptr
, /*decltype(_impl_.running_distance_)*/0
, /*decltype(_impl_.departure_time_)*/0
, /*decltype(_impl_.eta_)*/0
@@ -194,6 +195,7 @@ const uint32_t TableStruct_city_2fperson_2fv2_2fvehicle_2eproto::offsets[] PROTO
PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleRuntime, _impl_.departure_time_),
PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleRuntime, _impl_.eta_),
PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleRuntime, _impl_.eta_free_flow_),
+ PROTOBUF_FIELD_OFFSET(::city::person::v2::VehicleRuntime, _impl_.carbon_),
~0u,
0,
1,
@@ -202,6 +204,7 @@ const uint32_t TableStruct_city_2fperson_2fv2_2fvehicle_2eproto::offsets[] PROTO
~0u,
~0u,
~0u,
+ 2,
~0u, // no _has_bits_
PROTOBUF_FIELD_OFFSET(::city::person::v2::ObservedVehicle, _internal_metadata_),
~0u, // no _extensions_
@@ -238,10 +241,10 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode
{ 0, -1, -1, sizeof(::city::person::v2::LC)},
{ 10, 20, -1, sizeof(::city::person::v2::VehicleAction)},
{ 24, -1, -1, sizeof(::city::person::v2::VehicleRouteAction)},
- { 32, 46, -1, sizeof(::city::person::v2::VehicleRuntime)},
- { 54, -1, -1, sizeof(::city::person::v2::ObservedVehicle)},
- { 64, -1, -1, sizeof(::city::person::v2::ObservedLane)},
- { 74, -1, -1, sizeof(::city::person::v2::VehicleEnv)},
+ { 32, 47, -1, sizeof(::city::person::v2::VehicleRuntime)},
+ { 56, -1, -1, sizeof(::city::person::v2::ObservedVehicle)},
+ { 66, -1, -1, sizeof(::city::person::v2::ObservedLane)},
+ { 76, -1, -1, sizeof(::city::person::v2::VehicleEnv)},
};
static const ::_pb::Message* const file_default_instances[] = {
@@ -256,68 +259,72 @@ static const ::_pb::Message* const file_default_instances[] = {
const char descriptor_table_protodef_city_2fperson_2fv2_2fvehicle_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
"\n\034city/person/v2/vehicle.proto\022\016city.per"
- "son.v2\032\033city/person/v2/motion.proto\032\035cit"
- "y/routing/v2/routing.proto\"\204\001\n\002LC\022$\n\016sha"
- "dow_lane_id\030\001 \001(\005R\014shadowLaneId\022\031\n\010shado"
- "w_s\030\002 \001(\001R\007shadowS\022\024\n\005angle\030\003 \001(\001R\005angle"
- "\022\'\n\017completed_ratio\030\004 \001(\001R\016completedRati"
- "o\"\177\n\rVehicleAction\022\016\n\002id\030\004 \001(\005R\002id\022\020\n\003ac"
- "c\030\001 \001(\001R\003acc\022%\n\014lc_target_id\030\002 \001(\005H\000R\nlc"
- "TargetId\210\001\001\022\024\n\005angle\030\003 \001(\001R\005angleB\017\n\r_lc"
- "_target_id\"X\n\022VehicleRouteAction\022\016\n\002id\030\001"
- " \001(\005R\002id\0222\n\007journey\030\002 \001(\0132\030.city.routing"
- ".v2.JourneyR\007journey\"\353\002\n\016VehicleRuntime\022"
- "0\n\004base\030\001 \001(\0132\034.city.person.v2.PersonMot"
- "ionR\004base\022\'\n\002lc\030\004 \001(\0132\022.city.person.v2.L"
- "CH\000R\002lc\210\001\001\022:\n\006action\030\005 \001(\0132\035.city.person"
- ".v2.VehicleActionH\001R\006action\210\001\001\022)\n\020runnin"
- "g_distance\030\006 \001(\001R\017runningDistance\022(\n\020num"
- "_going_astray\030\007 \001(\005R\016numGoingAstray\022%\n\016d"
- "eparture_time\030\010 \001(\001R\rdepartureTime\022\020\n\003et"
- "a\030\t \001(\001R\003eta\022\"\n\reta_free_flow\030\n \001(\001R\013eta"
- "FreeFlowB\005\n\003_lcB\t\n\007_action\"\301\001\n\017ObservedV"
- "ehicle\022\016\n\002id\030\001 \001(\005R\002id\0224\n\006motion\030\002 \001(\0132\034"
- ".city.person.v2.PersonMotionR\006motion\022+\n\021"
- "relative_distance\030\003 \001(\001R\020relativeDistanc"
- "e\022;\n\010relation\030\004 \001(\0162\037.city.person.v2.Veh"
- "icleRelationR\010relation\"\257\001\n\014ObservedLane\022"
- "\016\n\002id\030\001 \001(\005R\002id\022 \n\013restriction\030\002 \001(\010R\013re"
- "striction\022;\n\013light_state\030\003 \001(\0162\032.city.pe"
- "rson.v2.LightStateR\nlightState\0220\n\024light_"
- "remaining_time\030\004 \001(\001R\022lightRemainingTime"
- "\"\235\002\n\nVehicleEnv\022\016\n\002id\030\001 \001(\005R\002id\0228\n\007runti"
- "me\030\002 \001(\0132\036.city.person.v2.VehicleRuntime"
- "R\007runtime\0222\n\007journey\030\003 \001(\0132\030.city.routin"
- "g.v2.JourneyR\007journey\022L\n\021observed_vehicl"
- "es\030\004 \003(\0132\037.city.person.v2.ObservedVehicl"
- "eR\020observedVehicles\022C\n\016observed_lanes\030\005 "
- "\003(\0132\034.city.person.v2.ObservedLaneR\robser"
- "vedLanes*\273\002\n\017VehicleRelation\022 \n\034VEHICLE_"
- "RELATION_UNSPECIFIED\020\000\022\032\n\026VEHICLE_RELATI"
- "ON_AHEAD\020\001\022\033\n\027VEHICLE_RELATION_BEHIND\020\002\022"
- "!\n\035VEHICLE_RELATION_SHADOW_AHEAD\020\003\022\"\n\036VE"
- "HICLE_RELATION_SHADOW_BEHIND\020\004\022\037\n\033VEHICL"
- "E_RELATION_LEFT_AHEAD\020\005\022 \n\034VEHICLE_RELAT"
- "ION_RIGHT_AHEAD\020\006\022 \n\034VEHICLE_RELATION_LE"
- "FT_BEHIND\020\007\022!\n\035VEHICLE_RELATION_RIGHT_BE"
- "HIND\020\010*m\n\nLightState\022\033\n\027LIGHT_STATE_UNSP"
- "ECIFIED\020\000\022\023\n\017LIGHT_STATE_RED\020\001\022\025\n\021LIGHT_"
- "STATE_GREEN\020\002\022\026\n\022LIGHT_STATE_YELLOW\020\003B\265\001"
- "\n\022com.city.person.v2B\014VehicleProtoP\001Z7gi"
- "t.fiblab.net/sim/protos/v2/go/city/perso"
- "n/v2;personv2\242\002\003CPX\252\002\016City.Person.V2\312\002\016C"
- "ity\\Person\\V2\342\002\032City\\Person\\V2\\GPBMetada"
- "ta\352\002\020City::Person::V2b\006proto3"
+ "son.v2\032\033city/person/v2/carbon.proto\032\033cit"
+ "y/person/v2/motion.proto\032\035city/routing/v"
+ "2/routing.proto\"\204\001\n\002LC\022$\n\016shadow_lane_id"
+ "\030\001 \001(\005R\014shadowLaneId\022\031\n\010shadow_s\030\002 \001(\001R\007"
+ "shadowS\022\024\n\005angle\030\003 \001(\001R\005angle\022\'\n\017complet"
+ "ed_ratio\030\004 \001(\001R\016completedRatio\"\177\n\rVehicl"
+ "eAction\022\016\n\002id\030\004 \001(\005R\002id\022\020\n\003acc\030\001 \001(\001R\003ac"
+ "c\022%\n\014lc_target_id\030\002 \001(\005H\000R\nlcTargetId\210\001\001"
+ "\022\024\n\005angle\030\003 \001(\001R\005angleB\017\n\r_lc_target_id\""
+ "X\n\022VehicleRouteAction\022\016\n\002id\030\001 \001(\005R\002id\0222\n"
+ "\007journey\030\002 \001(\0132\030.city.routing.v2.Journey"
+ "R\007journey\"\262\003\n\016VehicleRuntime\0220\n\004base\030\001 \001"
+ "(\0132\034.city.person.v2.PersonMotionR\004base\022\'"
+ "\n\002lc\030\004 \001(\0132\022.city.person.v2.LCH\000R\002lc\210\001\001\022"
+ ":\n\006action\030\005 \001(\0132\035.city.person.v2.Vehicle"
+ "ActionH\001R\006action\210\001\001\022)\n\020running_distance\030"
+ "\006 \001(\001R\017runningDistance\022(\n\020num_going_astr"
+ "ay\030\007 \001(\005R\016numGoingAstray\022%\n\016departure_ti"
+ "me\030\010 \001(\001R\rdepartureTime\022\020\n\003eta\030\t \001(\001R\003et"
+ "a\022\"\n\reta_free_flow\030\n \001(\001R\013etaFreeFlow\022:\n"
+ "\006carbon\030\013 \001(\0132\035.city.person.v2.VehicleCa"
+ "rbonH\002R\006carbon\210\001\001B\005\n\003_lcB\t\n\007_actionB\t\n\007_"
+ "carbon\"\301\001\n\017ObservedVehicle\022\016\n\002id\030\001 \001(\005R\002"
+ "id\0224\n\006motion\030\002 \001(\0132\034.city.person.v2.Pers"
+ "onMotionR\006motion\022+\n\021relative_distance\030\003 "
+ "\001(\001R\020relativeDistance\022;\n\010relation\030\004 \001(\0162"
+ "\037.city.person.v2.VehicleRelationR\010relati"
+ "on\"\257\001\n\014ObservedLane\022\016\n\002id\030\001 \001(\005R\002id\022 \n\013r"
+ "estriction\030\002 \001(\010R\013restriction\022;\n\013light_s"
+ "tate\030\003 \001(\0162\032.city.person.v2.LightStateR\n"
+ "lightState\0220\n\024light_remaining_time\030\004 \001(\001"
+ "R\022lightRemainingTime\"\235\002\n\nVehicleEnv\022\016\n\002i"
+ "d\030\001 \001(\005R\002id\0228\n\007runtime\030\002 \001(\0132\036.city.pers"
+ "on.v2.VehicleRuntimeR\007runtime\0222\n\007journey"
+ "\030\003 \001(\0132\030.city.routing.v2.JourneyR\007journe"
+ "y\022L\n\021observed_vehicles\030\004 \003(\0132\037.city.pers"
+ "on.v2.ObservedVehicleR\020observedVehicles\022"
+ "C\n\016observed_lanes\030\005 \003(\0132\034.city.person.v2"
+ ".ObservedLaneR\robservedLanes*\273\002\n\017Vehicle"
+ "Relation\022 \n\034VEHICLE_RELATION_UNSPECIFIED"
+ "\020\000\022\032\n\026VEHICLE_RELATION_AHEAD\020\001\022\033\n\027VEHICL"
+ "E_RELATION_BEHIND\020\002\022!\n\035VEHICLE_RELATION_"
+ "SHADOW_AHEAD\020\003\022\"\n\036VEHICLE_RELATION_SHADO"
+ "W_BEHIND\020\004\022\037\n\033VEHICLE_RELATION_LEFT_AHEA"
+ "D\020\005\022 \n\034VEHICLE_RELATION_RIGHT_AHEAD\020\006\022 \n"
+ "\034VEHICLE_RELATION_LEFT_BEHIND\020\007\022!\n\035VEHIC"
+ "LE_RELATION_RIGHT_BEHIND\020\010*m\n\nLightState"
+ "\022\033\n\027LIGHT_STATE_UNSPECIFIED\020\000\022\023\n\017LIGHT_S"
+ "TATE_RED\020\001\022\025\n\021LIGHT_STATE_GREEN\020\002\022\026\n\022LIG"
+ "HT_STATE_YELLOW\020\003B\265\001\n\022com.city.person.v2"
+ "B\014VehicleProtoP\001Z7git.fiblab.net/sim/pro"
+ "tos/v2/go/city/person/v2;personv2\242\002\003CPX\252"
+ "\002\016City.Person.V2\312\002\016City\\Person\\V2\342\002\032City"
+ "\\Person\\V2\\GPBMetadata\352\002\020City::Person::V"
+ "2b\006proto3"
;
-static const ::_pbi::DescriptorTable* const descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto_deps[2] = {
+static const ::_pbi::DescriptorTable* const descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto_deps[3] = {
+ &::descriptor_table_city_2fperson_2fv2_2fcarbon_2eproto,
&::descriptor_table_city_2fperson_2fv2_2fmotion_2eproto,
&::descriptor_table_city_2frouting_2fv2_2frouting_2eproto,
};
static ::_pbi::once_flag descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto = {
- false, false, 2109, descriptor_table_protodef_city_2fperson_2fv2_2fvehicle_2eproto,
+ false, false, 2209, descriptor_table_protodef_city_2fperson_2fv2_2fvehicle_2eproto,
"city/person/v2/vehicle.proto",
- &descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto_once, descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto_deps, 2, 7,
+ &descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto_once, descriptor_table_city_2fperson_2fv2_2fvehicle_2eproto_deps, 3, 7,
schemas, file_default_instances, TableStruct_city_2fperson_2fv2_2fvehicle_2eproto::offsets,
file_level_metadata_city_2fperson_2fv2_2fvehicle_2eproto, file_level_enum_descriptors_city_2fperson_2fv2_2fvehicle_2eproto,
file_level_service_descriptors_city_2fperson_2fv2_2fvehicle_2eproto,
@@ -1205,6 +1212,10 @@ class VehicleRuntime::_Internal {
static void set_has_action(HasBits* has_bits) {
(*has_bits)[0] |= 2u;
}
+ static const ::city::person::v2::VehicleCarbon& carbon(const VehicleRuntime* msg);
+ static void set_has_carbon(HasBits* has_bits) {
+ (*has_bits)[0] |= 4u;
+ }
};
const ::city::person::v2::PersonMotion&
@@ -1219,12 +1230,20 @@ const ::city::person::v2::VehicleAction&
VehicleRuntime::_Internal::action(const VehicleRuntime* msg) {
return *msg->_impl_.action_;
}
+const ::city::person::v2::VehicleCarbon&
+VehicleRuntime::_Internal::carbon(const VehicleRuntime* msg) {
+ return *msg->_impl_.carbon_;
+}
void VehicleRuntime::clear_base() {
if (GetArenaForAllocation() == nullptr && _impl_.base_ != nullptr) {
delete _impl_.base_;
}
_impl_.base_ = nullptr;
}
+void VehicleRuntime::clear_carbon() {
+ if (_impl_.carbon_ != nullptr) _impl_.carbon_->Clear();
+ _impl_._has_bits_[0] &= ~0x00000004u;
+}
VehicleRuntime::VehicleRuntime(::PROTOBUF_NAMESPACE_ID::Arena* arena,
bool is_message_owned)
: ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
@@ -1240,6 +1259,7 @@ VehicleRuntime::VehicleRuntime(const VehicleRuntime& from)
, decltype(_impl_.base_){nullptr}
, decltype(_impl_.lc_){nullptr}
, decltype(_impl_.action_){nullptr}
+ , decltype(_impl_.carbon_){nullptr}
, decltype(_impl_.running_distance_){}
, decltype(_impl_.departure_time_){}
, decltype(_impl_.eta_){}
@@ -1256,6 +1276,9 @@ VehicleRuntime::VehicleRuntime(const VehicleRuntime& from)
if (from._internal_has_action()) {
_this->_impl_.action_ = new ::city::person::v2::VehicleAction(*from._impl_.action_);
}
+ if (from._internal_has_carbon()) {
+ _this->_impl_.carbon_ = new ::city::person::v2::VehicleCarbon(*from._impl_.carbon_);
+ }
::memcpy(&_impl_.running_distance_, &from._impl_.running_distance_,
static_cast(reinterpret_cast(&_impl_.num_going_astray_) -
reinterpret_cast(&_impl_.running_distance_)) + sizeof(_impl_.num_going_astray_));
@@ -1272,6 +1295,7 @@ inline void VehicleRuntime::SharedCtor(
, decltype(_impl_.base_){nullptr}
, decltype(_impl_.lc_){nullptr}
, decltype(_impl_.action_){nullptr}
+ , decltype(_impl_.carbon_){nullptr}
, decltype(_impl_.running_distance_){0}
, decltype(_impl_.departure_time_){0}
, decltype(_impl_.eta_){0}
@@ -1294,6 +1318,7 @@ inline void VehicleRuntime::SharedDtor() {
if (this != internal_default_instance()) delete _impl_.base_;
if (this != internal_default_instance()) delete _impl_.lc_;
if (this != internal_default_instance()) delete _impl_.action_;
+ if (this != internal_default_instance()) delete _impl_.carbon_;
}
void VehicleRuntime::SetCachedSize(int size) const {
@@ -1311,7 +1336,7 @@ void VehicleRuntime::Clear() {
}
_impl_.base_ = nullptr;
cached_has_bits = _impl_._has_bits_[0];
- if (cached_has_bits & 0x00000003u) {
+ if (cached_has_bits & 0x00000007u) {
if (cached_has_bits & 0x00000001u) {
GOOGLE_DCHECK(_impl_.lc_ != nullptr);
_impl_.lc_->Clear();
@@ -1320,6 +1345,10 @@ void VehicleRuntime::Clear() {
GOOGLE_DCHECK(_impl_.action_ != nullptr);
_impl_.action_->Clear();
}
+ if (cached_has_bits & 0x00000004u) {
+ GOOGLE_DCHECK(_impl_.carbon_ != nullptr);
+ _impl_.carbon_->Clear();
+ }
}
::memset(&_impl_.running_distance_, 0, static_cast(
reinterpret_cast(&_impl_.num_going_astray_) -
@@ -1399,6 +1428,14 @@ const char* VehicleRuntime::_InternalParse(const char* ptr, ::_pbi::ParseContext
} else
goto handle_unusual;
continue;
+ // optional .city.person.v2.VehicleCarbon carbon = 11 [json_name = "carbon"];
+ case 11:
+ if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 90)) {
+ ptr = ctx->ParseMessage(_internal_mutable_carbon(), ptr);
+ CHK_(ptr);
+ } else
+ goto handle_unusual;
+ continue;
default:
goto handle_unusual;
} // switch
@@ -1496,6 +1533,13 @@ uint8_t* VehicleRuntime::_InternalSerialize(
target = ::_pbi::WireFormatLite::WriteDoubleToArray(10, this->_internal_eta_free_flow(), target);
}
+ // optional .city.person.v2.VehicleCarbon carbon = 11 [json_name = "carbon"];
+ if (_internal_has_carbon()) {
+ target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
+ InternalWriteMessage(11, _Internal::carbon(this),
+ _Internal::carbon(this).GetCachedSize(), target, stream);
+ }
+
if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
_internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
@@ -1520,7 +1564,7 @@ size_t VehicleRuntime::ByteSizeLong() const {
}
cached_has_bits = _impl_._has_bits_[0];
- if (cached_has_bits & 0x00000003u) {
+ if (cached_has_bits & 0x00000007u) {
// optional .city.person.v2.LC lc = 4 [json_name = "lc"];
if (cached_has_bits & 0x00000001u) {
total_size += 1 +
@@ -1535,6 +1579,13 @@ size_t VehicleRuntime::ByteSizeLong() const {
*_impl_.action_);
}
+ // optional .city.person.v2.VehicleCarbon carbon = 11 [json_name = "carbon"];
+ if (cached_has_bits & 0x00000004u) {
+ total_size += 1 +
+ ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
+ *_impl_.carbon_);
+ }
+
}
// double running_distance = 6 [json_name = "runningDistance"];
static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
@@ -1600,7 +1651,7 @@ void VehicleRuntime::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const :
from._internal_base());
}
cached_has_bits = from._impl_._has_bits_[0];
- if (cached_has_bits & 0x00000003u) {
+ if (cached_has_bits & 0x00000007u) {
if (cached_has_bits & 0x00000001u) {
_this->_internal_mutable_lc()->::city::person::v2::LC::MergeFrom(
from._internal_lc());
@@ -1609,6 +1660,10 @@ void VehicleRuntime::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const :
_this->_internal_mutable_action()->::city::person::v2::VehicleAction::MergeFrom(
from._internal_action());
}
+ if (cached_has_bits & 0x00000004u) {
+ _this->_internal_mutable_carbon()->::city::person::v2::VehicleCarbon::MergeFrom(
+ from._internal_carbon());
+ }
}
static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
double tmp_running_distance = from._internal_running_distance();
diff --git a/cpp/city/person/v2/vehicle.pb.h b/cpp/city/person/v2/vehicle.pb.h
index 50eed467..efe9ddfb 100644
--- a/cpp/city/person/v2/vehicle.pb.h
+++ b/cpp/city/person/v2/vehicle.pb.h
@@ -31,6 +31,7 @@
#include // IWYU pragma: export
#include
#include
+#include "city/person/v2/carbon.pb.h"
#include "city/person/v2/motion.pb.h"
#include "city/routing/v2/routing.pb.h"
// @@protoc_insertion_point(includes)
@@ -807,6 +808,7 @@ class VehicleRuntime final :
kBaseFieldNumber = 1,
kLcFieldNumber = 4,
kActionFieldNumber = 5,
+ kCarbonFieldNumber = 11,
kRunningDistanceFieldNumber = 6,
kDepartureTimeFieldNumber = 8,
kEtaFieldNumber = 9,
@@ -867,6 +869,24 @@ class VehicleRuntime final :
::city::person::v2::VehicleAction* action);
::city::person::v2::VehicleAction* unsafe_arena_release_action();
+ // optional .city.person.v2.VehicleCarbon carbon = 11 [json_name = "carbon"];
+ bool has_carbon() const;
+ private:
+ bool _internal_has_carbon() const;
+ public:
+ void clear_carbon();
+ const ::city::person::v2::VehicleCarbon& carbon() const;
+ PROTOBUF_NODISCARD ::city::person::v2::VehicleCarbon* release_carbon();
+ ::city::person::v2::VehicleCarbon* mutable_carbon();
+ void set_allocated_carbon(::city::person::v2::VehicleCarbon* carbon);
+ private:
+ const ::city::person::v2::VehicleCarbon& _internal_carbon() const;
+ ::city::person::v2::VehicleCarbon* _internal_mutable_carbon();
+ public:
+ void unsafe_arena_set_allocated_carbon(
+ ::city::person::v2::VehicleCarbon* carbon);
+ ::city::person::v2::VehicleCarbon* unsafe_arena_release_carbon();
+
// double running_distance = 6 [json_name = "runningDistance"];
void clear_running_distance();
double running_distance() const;
@@ -925,6 +945,7 @@ class VehicleRuntime final :
::city::person::v2::PersonMotion* base_;
::city::person::v2::LC* lc_;
::city::person::v2::VehicleAction* action_;
+ ::city::person::v2::VehicleCarbon* carbon_;
double running_distance_;
double departure_time_;
double eta_;
@@ -2194,6 +2215,93 @@ inline void VehicleRuntime::set_eta_free_flow(double value) {
// @@protoc_insertion_point(field_set:city.person.v2.VehicleRuntime.eta_free_flow)
}
+// optional .city.person.v2.VehicleCarbon carbon = 11 [json_name = "carbon"];
+inline bool VehicleRuntime::_internal_has_carbon() const {
+ bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
+ PROTOBUF_ASSUME(!value || _impl_.carbon_ != nullptr);
+ return value;
+}
+inline bool VehicleRuntime::has_carbon() const {
+ return _internal_has_carbon();
+}
+inline const ::city::person::v2::VehicleCarbon& VehicleRuntime::_internal_carbon() const {
+ const ::city::person::v2::VehicleCarbon* p = _impl_.carbon_;
+ return p != nullptr ? *p : reinterpret_cast(
+ ::city::person::v2::_VehicleCarbon_default_instance_);
+}
+inline const ::city::person::v2::VehicleCarbon& VehicleRuntime::carbon() const {
+ // @@protoc_insertion_point(field_get:city.person.v2.VehicleRuntime.carbon)
+ return _internal_carbon();
+}
+inline void VehicleRuntime::unsafe_arena_set_allocated_carbon(
+ ::city::person::v2::VehicleCarbon* carbon) {
+ if (GetArenaForAllocation() == nullptr) {
+ delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.carbon_);
+ }
+ _impl_.carbon_ = carbon;
+ if (carbon) {
+ _impl_._has_bits_[0] |= 0x00000004u;
+ } else {
+ _impl_._has_bits_[0] &= ~0x00000004u;
+ }
+ // @@protoc_insertion_point(field_unsafe_arena_set_allocated:city.person.v2.VehicleRuntime.carbon)
+}
+inline ::city::person::v2::VehicleCarbon* VehicleRuntime::release_carbon() {
+ _impl_._has_bits_[0] &= ~0x00000004u;
+ ::city::person::v2::VehicleCarbon* temp = _impl_.carbon_;
+ _impl_.carbon_ = nullptr;
+#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
+ auto* old = reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
+ temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
+ if (GetArenaForAllocation() == nullptr) { delete old; }
+#else // PROTOBUF_FORCE_COPY_IN_RELEASE
+ if (GetArenaForAllocation() != nullptr) {
+ temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
+ }
+#endif // !PROTOBUF_FORCE_COPY_IN_RELEASE
+ return temp;
+}
+inline ::city::person::v2::VehicleCarbon* VehicleRuntime::unsafe_arena_release_carbon() {
+ // @@protoc_insertion_point(field_release:city.person.v2.VehicleRuntime.carbon)
+ _impl_._has_bits_[0] &= ~0x00000004u;
+ ::city::person::v2::VehicleCarbon* temp = _impl_.carbon_;
+ _impl_.carbon_ = nullptr;
+ return temp;
+}
+inline ::city::person::v2::VehicleCarbon* VehicleRuntime::_internal_mutable_carbon() {
+ _impl_._has_bits_[0] |= 0x00000004u;
+ if (_impl_.carbon_ == nullptr) {
+ auto* p = CreateMaybeMessage<::city::person::v2::VehicleCarbon>(GetArenaForAllocation());
+ _impl_.carbon_ = p;
+ }
+ return _impl_.carbon_;
+}
+inline ::city::person::v2::VehicleCarbon* VehicleRuntime::mutable_carbon() {
+ ::city::person::v2::VehicleCarbon* _msg = _internal_mutable_carbon();
+ // @@protoc_insertion_point(field_mutable:city.person.v2.VehicleRuntime.carbon)
+ return _msg;
+}
+inline void VehicleRuntime::set_allocated_carbon(::city::person::v2::VehicleCarbon* carbon) {
+ ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
+ if (message_arena == nullptr) {
+ delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.carbon_);
+ }
+ if (carbon) {
+ ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
+ ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
+ reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(carbon));
+ if (message_arena != submessage_arena) {
+ carbon = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
+ message_arena, carbon, submessage_arena);
+ }
+ _impl_._has_bits_[0] |= 0x00000004u;
+ } else {
+ _impl_._has_bits_[0] &= ~0x00000004u;
+ }
+ _impl_.carbon_ = carbon;
+ // @@protoc_insertion_point(field_set_allocated:city.person.v2.VehicleRuntime.carbon)
+}
+
// -------------------------------------------------------------------
// ObservedVehicle
diff --git a/doc/index.html b/doc/index.html
index 7cffe70e..bfb5c1bc 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1279,6 +1279,21 @@ Table of Contents
+
+ city/person/v2/carbon.proto
+
+
+
+
city/routing/v2/routing.proto
+
+ carbon |
+ VehicleCarbon |
+ optional |
+ 碳排放信息
+carbon emission information |
+
+
diff --git a/es/city/person/v2/carbon_pb.d.ts b/es/city/person/v2/carbon_pb.d.ts
new file mode 100644
index 00000000..b8998e8e
--- /dev/null
+++ b/es/city/person/v2/carbon_pb.d.ts
@@ -0,0 +1,86 @@
+// @generated by protoc-gen-es v1.10.0
+// @generated from file city/person/v2/carbon.proto (package city.person.v2, syntax proto3)
+/* eslint-disable */
+// @ts-nocheck
+
+import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
+import { Message, proto3 } from "@bufbuild/protobuf";
+
+/**
+ * 车辆瞬时碳排放信息
+ * Vehicle instantaneous carbon emission information
+ *
+ * @generated from message city.person.v2.VehicleCarbon
+ */
+export declare class VehicleCarbon extends Message {
+ /**
+ * ID
+ *
+ * @generated from field: int32 id = 1;
+ */
+ id: number;
+
+ /**
+ * delta distance (m)
+ *
+ * @generated from field: double ds = 2;
+ */
+ ds: number;
+
+ /**
+ * vehicle speed (m/s)
+ *
+ * @generated from field: double v = 3;
+ */
+ v: number;
+
+ /**
+ * vehicle acceleration (m/s^2)
+ *
+ * @generated from field: double a = 4;
+ */
+ a: number;
+
+ /**
+ * energy for acceleration (J)
+ *
+ * @generated from field: double u_acc = 5;
+ */
+ uAcc: number;
+
+ /**
+ * energy for rolling resistance (J)
+ *
+ * @generated from field: double u_roll = 6;
+ */
+ uRoll: number;
+
+ /**
+ * energy for air resistance (J)
+ *
+ * @generated from field: double u_aero = 7;
+ */
+ uAero: number;
+
+ /**
+ * C_D: drag coefficient
+ *
+ * @generated from field: double c_d = 8;
+ */
+ cD: number;
+
+ constructor(data?: PartialMessage);
+
+ static readonly runtime: typeof proto3;
+ static readonly typeName = "city.person.v2.VehicleCarbon";
+ static readonly fields: FieldList;
+
+ static fromBinary(bytes: Uint8Array, options?: Partial): VehicleCarbon;
+
+ static fromJson(jsonValue: JsonValue, options?: Partial): VehicleCarbon;
+
+ static fromJsonString(jsonString: string, options?: Partial): VehicleCarbon;
+
+ static equals(a: VehicleCarbon | PlainMessage | undefined, b: VehicleCarbon | PlainMessage | undefined): boolean;
+}
+
diff --git a/es/city/person/v2/carbon_pb.js b/es/city/person/v2/carbon_pb.js
new file mode 100644
index 00000000..5886b47e
--- /dev/null
+++ b/es/city/person/v2/carbon_pb.js
@@ -0,0 +1,27 @@
+// @generated by protoc-gen-es v1.10.0
+// @generated from file city/person/v2/carbon.proto (package city.person.v2, syntax proto3)
+/* eslint-disable */
+// @ts-nocheck
+
+import { proto3 } from "@bufbuild/protobuf";
+
+/**
+ * 车辆瞬时碳排放信息
+ * Vehicle instantaneous carbon emission information
+ *
+ * @generated from message city.person.v2.VehicleCarbon
+ */
+export const VehicleCarbon = /*@__PURE__*/ proto3.makeMessageType(
+ "city.person.v2.VehicleCarbon",
+ () => [
+ { no: 1, name: "id", kind: "scalar", T: 5 /* ScalarType.INT32 */ },
+ { no: 2, name: "ds", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ { no: 3, name: "v", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ { no: 4, name: "a", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ { no: 5, name: "u_acc", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ { no: 6, name: "u_roll", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ { no: 7, name: "u_aero", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ { no: 8, name: "c_d", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ ],
+);
+
diff --git a/es/city/person/v2/vehicle_pb.d.ts b/es/city/person/v2/vehicle_pb.d.ts
index e17c0419..53d615a9 100644
--- a/es/city/person/v2/vehicle_pb.d.ts
+++ b/es/city/person/v2/vehicle_pb.d.ts
@@ -7,6 +7,7 @@ import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialM
import { Message, proto3 } from "@bufbuild/protobuf";
import type { Journey } from "../../routing/v2/routing_pb.js";
import type { PersonMotion } from "./motion_pb.js";
+import type { VehicleCarbon } from "./carbon_pb.js";
/**
* @generated from enum city.person.v2.VehicleRelation
@@ -339,6 +340,14 @@ export declare class VehicleRuntime extends Message {
*/
etaFreeFlow: number;
+ /**
+ * 碳排放信息
+ * carbon emission information
+ *
+ * @generated from field: optional city.person.v2.VehicleCarbon carbon = 11;
+ */
+ carbon?: VehicleCarbon;
+
constructor(data?: PartialMessage);
static readonly runtime: typeof proto3;
diff --git a/es/city/person/v2/vehicle_pb.js b/es/city/person/v2/vehicle_pb.js
index 671fea22..ef6e8e47 100644
--- a/es/city/person/v2/vehicle_pb.js
+++ b/es/city/person/v2/vehicle_pb.js
@@ -6,6 +6,7 @@
import { proto3 } from "@bufbuild/protobuf";
import { Journey } from "../../routing/v2/routing_pb.js";
import { PersonMotion } from "./motion_pb.js";
+import { VehicleCarbon } from "./carbon_pb.js";
/**
* @generated from enum city.person.v2.VehicleRelation
@@ -101,6 +102,7 @@ export const VehicleRuntime = /*@__PURE__*/ proto3.makeMessageType(
{ no: 8, name: "departure_time", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
{ no: 9, name: "eta", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
{ no: 10, name: "eta_free_flow", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
+ { no: 11, name: "carbon", kind: "message", T: VehicleCarbon, opt: true },
],
);
diff --git a/go/city/person/v2/carbon.pb.go b/go/city/person/v2/carbon.pb.go
new file mode 100644
index 00000000..a1b63973
--- /dev/null
+++ b/go/city/person/v2/carbon.pb.go
@@ -0,0 +1,211 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.35.1
+// protoc (unknown)
+// source: city/person/v2/carbon.proto
+
+package personv2
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// 车辆瞬时碳排放信息
+// Vehicle instantaneous carbon emission information
+type VehicleCarbon struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // ID
+ Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty" bson:"id" db:"id" yaml:"id"`
+ // delta distance (m)
+ Ds float64 `protobuf:"fixed64,2,opt,name=ds,proto3" json:"ds,omitempty" bson:"ds" db:"ds" yaml:"ds"`
+ // vehicle speed (m/s)
+ V float64 `protobuf:"fixed64,3,opt,name=v,proto3" json:"v,omitempty" bson:"v" db:"v" yaml:"v"`
+ // vehicle acceleration (m/s^2)
+ A float64 `protobuf:"fixed64,4,opt,name=a,proto3" json:"a,omitempty" bson:"a" db:"a" yaml:"a"`
+ // energy for acceleration (J)
+ UAcc float64 `protobuf:"fixed64,5,opt,name=u_acc,json=uAcc,proto3" json:"u_acc,omitempty" bson:"u_acc" db:"u_acc" yaml:"u_acc"`
+ // energy for rolling resistance (J)
+ URoll float64 `protobuf:"fixed64,6,opt,name=u_roll,json=uRoll,proto3" json:"u_roll,omitempty" bson:"u_roll" db:"u_roll" yaml:"u_roll"`
+ // energy for air resistance (J)
+ UAero float64 `protobuf:"fixed64,7,opt,name=u_aero,json=uAero,proto3" json:"u_aero,omitempty" bson:"u_aero" db:"u_aero" yaml:"u_aero"`
+ // C_D: drag coefficient
+ CD float64 `protobuf:"fixed64,8,opt,name=c_d,json=cD,proto3" json:"c_d,omitempty" bson:"cd" db:"cd" yaml:"cd"`
+}
+
+func (x *VehicleCarbon) Reset() {
+ *x = VehicleCarbon{}
+ mi := &file_city_person_v2_carbon_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *VehicleCarbon) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VehicleCarbon) ProtoMessage() {}
+
+func (x *VehicleCarbon) ProtoReflect() protoreflect.Message {
+ mi := &file_city_person_v2_carbon_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use VehicleCarbon.ProtoReflect.Descriptor instead.
+func (*VehicleCarbon) Descriptor() ([]byte, []int) {
+ return file_city_person_v2_carbon_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *VehicleCarbon) GetId() int32 {
+ if x != nil {
+ return x.Id
+ }
+ return 0
+}
+
+func (x *VehicleCarbon) GetDs() float64 {
+ if x != nil {
+ return x.Ds
+ }
+ return 0
+}
+
+func (x *VehicleCarbon) GetV() float64 {
+ if x != nil {
+ return x.V
+ }
+ return 0
+}
+
+func (x *VehicleCarbon) GetA() float64 {
+ if x != nil {
+ return x.A
+ }
+ return 0
+}
+
+func (x *VehicleCarbon) GetUAcc() float64 {
+ if x != nil {
+ return x.UAcc
+ }
+ return 0
+}
+
+func (x *VehicleCarbon) GetURoll() float64 {
+ if x != nil {
+ return x.URoll
+ }
+ return 0
+}
+
+func (x *VehicleCarbon) GetUAero() float64 {
+ if x != nil {
+ return x.UAero
+ }
+ return 0
+}
+
+func (x *VehicleCarbon) GetCD() float64 {
+ if x != nil {
+ return x.CD
+ }
+ return 0
+}
+
+var File_city_person_v2_carbon_proto protoreflect.FileDescriptor
+
+var file_city_person_v2_carbon_proto_rawDesc = []byte{
+ 0x0a, 0x1b, 0x63, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x76, 0x32,
+ 0x2f, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x63,
+ 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x22, 0x9f, 0x01,
+ 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x0e, 0x0a, 0x02, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02, 0x64, 0x73, 0x12,
+ 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x76, 0x12, 0x0c, 0x0a,
+ 0x01, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x01, 0x61, 0x12, 0x13, 0x0a, 0x05, 0x75,
+ 0x5f, 0x61, 0x63, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x75, 0x41, 0x63, 0x63,
+ 0x12, 0x15, 0x0a, 0x06, 0x75, 0x5f, 0x72, 0x6f, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x05, 0x75, 0x52, 0x6f, 0x6c, 0x6c, 0x12, 0x15, 0x0a, 0x06, 0x75, 0x5f, 0x61, 0x65, 0x72,
+ 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x75, 0x41, 0x65, 0x72, 0x6f, 0x12, 0x0f,
+ 0x0a, 0x03, 0x63, 0x5f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02, 0x63, 0x44, 0x42,
+ 0xb4, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72,
+ 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x42, 0x0b, 0x43, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x50, 0x72,
+ 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x2e, 0x66, 0x69, 0x62, 0x6c, 0x61,
+ 0x62, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x69, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+ 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x76, 0x32, 0xa2, 0x02,
+ 0x03, 0x43, 0x50, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x0e, 0x43, 0x69, 0x74, 0x79, 0x5c, 0x50, 0x65, 0x72,
+ 0x73, 0x6f, 0x6e, 0x5c, 0x56, 0x32, 0xe2, 0x02, 0x1a, 0x43, 0x69, 0x74, 0x79, 0x5c, 0x50, 0x65,
+ 0x72, 0x73, 0x6f, 0x6e, 0x5c, 0x56, 0x32, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x50, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_city_person_v2_carbon_proto_rawDescOnce sync.Once
+ file_city_person_v2_carbon_proto_rawDescData = file_city_person_v2_carbon_proto_rawDesc
+)
+
+func file_city_person_v2_carbon_proto_rawDescGZIP() []byte {
+ file_city_person_v2_carbon_proto_rawDescOnce.Do(func() {
+ file_city_person_v2_carbon_proto_rawDescData = protoimpl.X.CompressGZIP(file_city_person_v2_carbon_proto_rawDescData)
+ })
+ return file_city_person_v2_carbon_proto_rawDescData
+}
+
+var file_city_person_v2_carbon_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_city_person_v2_carbon_proto_goTypes = []any{
+ (*VehicleCarbon)(nil), // 0: city.person.v2.VehicleCarbon
+}
+var file_city_person_v2_carbon_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_city_person_v2_carbon_proto_init() }
+func file_city_person_v2_carbon_proto_init() {
+ if File_city_person_v2_carbon_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_city_person_v2_carbon_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_city_person_v2_carbon_proto_goTypes,
+ DependencyIndexes: file_city_person_v2_carbon_proto_depIdxs,
+ MessageInfos: file_city_person_v2_carbon_proto_msgTypes,
+ }.Build()
+ File_city_person_v2_carbon_proto = out.File
+ file_city_person_v2_carbon_proto_rawDesc = nil
+ file_city_person_v2_carbon_proto_goTypes = nil
+ file_city_person_v2_carbon_proto_depIdxs = nil
+}
diff --git a/go/city/person/v2/vehicle.pb.go b/go/city/person/v2/vehicle.pb.go
index ee866ffd..9f52a06c 100644
--- a/go/city/person/v2/vehicle.pb.go
+++ b/go/city/person/v2/vehicle.pb.go
@@ -414,6 +414,9 @@ type VehicleRuntime struct {
// 自由流下的预计到达时刻
// estimated arrival time under free flow
EtaFreeFlow float64 `protobuf:"fixed64,10,opt,name=eta_free_flow,json=etaFreeFlow,proto3" json:"eta_free_flow,omitempty" bson:"eta_free_flow" db:"eta_free_flow" yaml:"eta_free_flow"`
+ // 碳排放信息
+ // carbon emission information
+ Carbon *VehicleCarbon `protobuf:"bytes,11,opt,name=carbon,proto3,oneof" json:"carbon,omitempty" bson:"carbon" db:"carbon" yaml:"carbon"`
}
func (x *VehicleRuntime) Reset() {
@@ -502,6 +505,13 @@ func (x *VehicleRuntime) GetEtaFreeFlow() float64 {
return 0
}
+func (x *VehicleRuntime) GetCarbon() *VehicleCarbon {
+ if x != nil {
+ return x.Carbon
+ }
+ return nil
+}
+
// 观测到的车辆
// observed vehicles
type ObservedVehicle struct {
@@ -752,135 +762,142 @@ var file_city_person_v2_vehicle_proto_rawDesc = []byte{
0x0a, 0x1c, 0x63, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x76, 0x32,
0x2f, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e,
0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x1a, 0x1b,
- 0x63, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x2f, 0x6d,
- 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x63, 0x69, 0x74,
- 0x79, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x72, 0x6f, 0x75,
- 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x02, 0x4c,
- 0x43, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x6e, 0x65,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x64, 0x6f,
- 0x77, 0x4c, 0x61, 0x6e, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x64, 0x6f,
- 0x77, 0x5f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x68, 0x61, 0x64, 0x6f,
- 0x77, 0x53, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70,
- 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69,
- 0x6f, 0x22, 0x7f, 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
- 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x03, 0x61, 0x63, 0x63, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x63, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x63,
- 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61,
- 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x61, 0x6e, 0x67, 0x6c,
- 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6c, 0x63, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
- 0x69, 0x64, 0x22, 0x58, 0x0a, 0x12, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x6f, 0x75,
- 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x07, 0x6a, 0x6f, 0x75, 0x72,
- 0x6e, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x69, 0x74, 0x79,
- 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x75, 0x72,
- 0x6e, 0x65, 0x79, 0x52, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x22, 0xeb, 0x02, 0x0a,
- 0x0e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12,
- 0x30, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
- 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50,
- 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x62, 0x61, 0x73,
- 0x65, 0x12, 0x27, 0x0a, 0x02, 0x6c, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e,
- 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c,
- 0x43, 0x48, 0x00, 0x52, 0x02, 0x6c, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x06, 0x61, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x69, 0x74,
- 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x65, 0x68, 0x69,
- 0x63, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
- 0x67, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01,
- 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x61,
- 0x73, 0x74, 0x72, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e, 0x75, 0x6d,
- 0x47, 0x6f, 0x69, 0x6e, 0x67, 0x41, 0x73, 0x74, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x64,
- 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20,
- 0x01, 0x28, 0x01, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69,
- 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x03, 0x65, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0d, 0x65, 0x74, 0x61, 0x5f, 0x66, 0x72, 0x65, 0x65,
- 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x65, 0x74, 0x61,
- 0x46, 0x72, 0x65, 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x63, 0x42,
- 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc1, 0x01, 0x0a, 0x0f, 0x4f,
- 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34,
- 0x0a, 0x06, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
- 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e,
- 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6d, 0x6f,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65,
- 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52,
- 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
- 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20,
- 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f,
- 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf,
- 0x01, 0x0a, 0x0c, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x65, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f,
- 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65,
- 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x30,
- 0x0a, 0x14, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e,
- 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x6c, 0x69,
- 0x67, 0x68, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65,
- 0x22, 0x9d, 0x02, 0x0a, 0x0a, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x45, 0x6e, 0x76, 0x12,
- 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0x38, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1e, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76,
- 0x32, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
- 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x07, 0x6a, 0x6f, 0x75,
- 0x72, 0x6e, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x69, 0x74,
- 0x79, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x75,
- 0x72, 0x6e, 0x65, 0x79, 0x52, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x12, 0x4c, 0x0a,
- 0x11, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c,
- 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e,
- 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x10, 0x6f, 0x62, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x6f,
- 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0x18, 0x05, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f,
- 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4c, 0x61, 0x6e,
- 0x65, 0x52, 0x0d, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x65, 0x73,
- 0x2a, 0xbb, 0x02, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f,
- 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
- 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c,
- 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x48, 0x45, 0x41, 0x44,
- 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45,
- 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x48, 0x49, 0x4e, 0x44, 0x10, 0x02, 0x12,
- 0x21, 0x0a, 0x1d, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54,
- 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x4f, 0x57, 0x5f, 0x41, 0x48, 0x45, 0x41, 0x44,
- 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45,
- 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x4f, 0x57, 0x5f, 0x42, 0x45,
- 0x48, 0x49, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c,
- 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f,
- 0x41, 0x48, 0x45, 0x41, 0x44, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x45, 0x48, 0x49, 0x43,
- 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x49, 0x47, 0x48,
- 0x54, 0x5f, 0x41, 0x48, 0x45, 0x41, 0x44, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x45, 0x48,
- 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45,
- 0x46, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x49, 0x4e, 0x44, 0x10, 0x07, 0x12, 0x21, 0x0a, 0x1d, 0x56,
+ 0x63, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x2f, 0x63,
+ 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x63, 0x69, 0x74,
+ 0x79, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x2f, 0x6d, 0x6f, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x63, 0x69, 0x74, 0x79, 0x2f, 0x72,
+ 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x32, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e,
+ 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x01, 0x0a, 0x02, 0x4c, 0x43, 0x12, 0x24,
+ 0x0a, 0x0e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x4c, 0x61,
+ 0x6e, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x5f, 0x73,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x53, 0x12,
+ 0x14, 0x0a, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05,
+ 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e,
+ 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x7f,
+ 0x0a, 0x0d, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12,
+ 0x10, 0x0a, 0x03, 0x61, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x61, 0x63,
+ 0x63, 0x12, 0x25, 0x0a, 0x0c, 0x6c, 0x63, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x63, 0x54, 0x61, 0x72,
+ 0x67, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6e, 0x67, 0x6c,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x42, 0x0f,
+ 0x0a, 0x0d, 0x5f, 0x6c, 0x63, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22,
+ 0x58, 0x0a, 0x12, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x72, 0x6f,
+ 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32, 0x2e, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79,
+ 0x52, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x22, 0xb2, 0x03, 0x0a, 0x0e, 0x56, 0x65,
+ 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04,
+ 0x62, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x69, 0x74,
+ 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x12, 0x27,
+ 0x0a, 0x02, 0x6c, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x63, 0x69, 0x74,
+ 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x43, 0x48, 0x00,
+ 0x52, 0x02, 0x6c, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65,
+ 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x64,
+ 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x72,
+ 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28,
+ 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x73, 0x74, 0x72,
+ 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x69,
+ 0x6e, 0x67, 0x41, 0x73, 0x74, 0x72, 0x61, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61,
+ 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x10, 0x0a, 0x03, 0x65, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x65, 0x74,
+ 0x61, 0x12, 0x22, 0x0a, 0x0d, 0x65, 0x74, 0x61, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x5f, 0x66, 0x6c,
+ 0x6f, 0x77, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x65, 0x74, 0x61, 0x46, 0x72, 0x65,
+ 0x65, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x18,
+ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72,
+ 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x61,
+ 0x72, 0x62, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x06, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x88, 0x01,
+ 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x6c, 0x63, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x61, 0x72, 0x62, 0x6f, 0x6e, 0x22, 0xc1,
+ 0x01, 0x0a, 0x0f, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63,
+ 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
+ 0x69, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e,
+ 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x4d, 0x6f, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x06, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x6c, 0x61,
+ 0x74, 0x69, 0x76, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x01, 0x52, 0x10, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x44, 0x69, 0x73,
+ 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65,
+ 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0x0a, 0x0c, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4c,
+ 0x61, 0x6e, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x73,
+ 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x69, 0x74,
+ 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x67, 0x68,
+ 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61,
+ 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x72, 0x65, 0x6d, 0x61,
+ 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01,
+ 0x52, 0x12, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67,
+ 0x54, 0x69, 0x6d, 0x65, 0x22, 0x9d, 0x02, 0x0a, 0x0a, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65,
+ 0x45, 0x6e, 0x76, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+ 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73,
+ 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x75, 0x6e,
+ 0x74, 0x69, 0x6d, 0x65, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a,
+ 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+ 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x32,
+ 0x2e, 0x4a, 0x6f, 0x75, 0x72, 0x6e, 0x65, 0x79, 0x52, 0x07, 0x6a, 0x6f, 0x75, 0x72, 0x6e, 0x65,
+ 0x79, 0x12, 0x4c, 0x0a, 0x11, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x76, 0x65,
+ 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63,
+ 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x52, 0x10, 0x6f,
+ 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x12,
+ 0x43, 0x0a, 0x0e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x6e, 0x65,
+ 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x64, 0x4c, 0x61, 0x6e, 0x65, 0x52, 0x0d, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4c,
+ 0x61, 0x6e, 0x65, 0x73, 0x2a, 0xbb, 0x02, 0x0a, 0x0f, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65,
+ 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x45, 0x48, 0x49,
+ 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53,
+ 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x45,
+ 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41,
+ 0x48, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c,
+ 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x48, 0x49, 0x4e,
+ 0x44, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52,
+ 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x4f, 0x57, 0x5f, 0x41,
+ 0x48, 0x45, 0x41, 0x44, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c,
+ 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x4f,
+ 0x57, 0x5f, 0x42, 0x45, 0x48, 0x49, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x45,
+ 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c,
+ 0x45, 0x46, 0x54, 0x5f, 0x41, 0x48, 0x45, 0x41, 0x44, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x56,
0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
- 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x49, 0x4e, 0x44, 0x10, 0x08, 0x2a, 0x6d,
- 0x0a, 0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x17,
- 0x4c, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50,
- 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x49, 0x47,
- 0x48, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15,
- 0x0a, 0x11, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x47, 0x52,
- 0x45, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53,
- 0x54, 0x41, 0x54, 0x45, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x42, 0xb5, 0x01,
- 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x65, 0x72, 0x73, 0x6f,
- 0x6e, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x2e, 0x66, 0x69, 0x62, 0x6c, 0x61, 0x62,
- 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x69, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
- 0x76, 0x32, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x69, 0x74, 0x79, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f,
- 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x76, 0x32, 0xa2, 0x02, 0x03,
- 0x43, 0x50, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x69, 0x74, 0x79, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f,
- 0x6e, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x0e, 0x43, 0x69, 0x74, 0x79, 0x5c, 0x50, 0x65, 0x72, 0x73,
- 0x6f, 0x6e, 0x5c, 0x56, 0x32, 0xe2, 0x02, 0x1a, 0x43, 0x69, 0x74, 0x79, 0x5c, 0x50, 0x65, 0x72,
- 0x73, 0x6f, 0x6e, 0x5c, 0x56, 0x32, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x50, 0x65, 0x72, 0x73, 0x6f,
- 0x6e, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x41, 0x48, 0x45, 0x41, 0x44, 0x10, 0x06, 0x12, 0x20, 0x0a,
+ 0x1c, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x49, 0x4e, 0x44, 0x10, 0x07, 0x12,
+ 0x21, 0x0a, 0x1d, 0x56, 0x45, 0x48, 0x49, 0x43, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x49, 0x4e, 0x44,
+ 0x10, 0x08, 0x2a, 0x6d, 0x0a, 0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65,
+ 0x12, 0x1b, 0x0a, 0x17, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f,
+ 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a,
+ 0x0f, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x44,
+ 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54,
+ 0x45, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x49, 0x47,
+ 0x48, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x10,
+ 0x03, 0x42, 0xb5, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x69, 0x74, 0x79, 0x2e, 0x70,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x76, 0x32, 0x42, 0x0c, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c,
+ 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x2e, 0x66, 0x69,
+ 0x62, 0x6c, 0x61, 0x62, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x69, 0x6d, 0x2f, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x73, 0x2f, 0x76, 0x32, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x69, 0x74, 0x79, 0x2f, 0x70,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x76, 0x32, 0x3b, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x76,
+ 0x32, 0xa2, 0x02, 0x03, 0x43, 0x50, 0x58, 0xaa, 0x02, 0x0e, 0x43, 0x69, 0x74, 0x79, 0x2e, 0x50,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x0e, 0x43, 0x69, 0x74, 0x79, 0x5c,
+ 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x5c, 0x56, 0x32, 0xe2, 0x02, 0x1a, 0x43, 0x69, 0x74, 0x79,
+ 0x5c, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x5c, 0x56, 0x32, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x10, 0x43, 0x69, 0x74, 0x79, 0x3a, 0x3a, 0x50,
+ 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x33,
}
var (
@@ -909,24 +926,26 @@ var file_city_person_v2_vehicle_proto_goTypes = []any{
(*VehicleEnv)(nil), // 8: city.person.v2.VehicleEnv
(*v2.Journey)(nil), // 9: city.routing.v2.Journey
(*PersonMotion)(nil), // 10: city.person.v2.PersonMotion
+ (*VehicleCarbon)(nil), // 11: city.person.v2.VehicleCarbon
}
var file_city_person_v2_vehicle_proto_depIdxs = []int32{
9, // 0: city.person.v2.VehicleRouteAction.journey:type_name -> city.routing.v2.Journey
10, // 1: city.person.v2.VehicleRuntime.base:type_name -> city.person.v2.PersonMotion
2, // 2: city.person.v2.VehicleRuntime.lc:type_name -> city.person.v2.LC
3, // 3: city.person.v2.VehicleRuntime.action:type_name -> city.person.v2.VehicleAction
- 10, // 4: city.person.v2.ObservedVehicle.motion:type_name -> city.person.v2.PersonMotion
- 0, // 5: city.person.v2.ObservedVehicle.relation:type_name -> city.person.v2.VehicleRelation
- 1, // 6: city.person.v2.ObservedLane.light_state:type_name -> city.person.v2.LightState
- 5, // 7: city.person.v2.VehicleEnv.runtime:type_name -> city.person.v2.VehicleRuntime
- 9, // 8: city.person.v2.VehicleEnv.journey:type_name -> city.routing.v2.Journey
- 6, // 9: city.person.v2.VehicleEnv.observed_vehicles:type_name -> city.person.v2.ObservedVehicle
- 7, // 10: city.person.v2.VehicleEnv.observed_lanes:type_name -> city.person.v2.ObservedLane
- 11, // [11:11] is the sub-list for method output_type
- 11, // [11:11] is the sub-list for method input_type
- 11, // [11:11] is the sub-list for extension type_name
- 11, // [11:11] is the sub-list for extension extendee
- 0, // [0:11] is the sub-list for field type_name
+ 11, // 4: city.person.v2.VehicleRuntime.carbon:type_name -> city.person.v2.VehicleCarbon
+ 10, // 5: city.person.v2.ObservedVehicle.motion:type_name -> city.person.v2.PersonMotion
+ 0, // 6: city.person.v2.ObservedVehicle.relation:type_name -> city.person.v2.VehicleRelation
+ 1, // 7: city.person.v2.ObservedLane.light_state:type_name -> city.person.v2.LightState
+ 5, // 8: city.person.v2.VehicleEnv.runtime:type_name -> city.person.v2.VehicleRuntime
+ 9, // 9: city.person.v2.VehicleEnv.journey:type_name -> city.routing.v2.Journey
+ 6, // 10: city.person.v2.VehicleEnv.observed_vehicles:type_name -> city.person.v2.ObservedVehicle
+ 7, // 11: city.person.v2.VehicleEnv.observed_lanes:type_name -> city.person.v2.ObservedLane
+ 12, // [12:12] is the sub-list for method output_type
+ 12, // [12:12] is the sub-list for method input_type
+ 12, // [12:12] is the sub-list for extension type_name
+ 12, // [12:12] is the sub-list for extension extendee
+ 0, // [0:12] is the sub-list for field type_name
}
func init() { file_city_person_v2_vehicle_proto_init() }
@@ -934,6 +953,7 @@ func file_city_person_v2_vehicle_proto_init() {
if File_city_person_v2_vehicle_proto != nil {
return
}
+ file_city_person_v2_carbon_proto_init()
file_city_person_v2_motion_proto_init()
file_city_person_v2_vehicle_proto_msgTypes[1].OneofWrappers = []any{}
file_city_person_v2_vehicle_proto_msgTypes[3].OneofWrappers = []any{}
diff --git a/pycityproto/city/person/v2/__init__.pyi b/pycityproto/city/person/v2/__init__.pyi
index 14ee097b..51bd50df 100644
--- a/pycityproto/city/person/v2/__init__.pyi
+++ b/pycityproto/city/person/v2/__init__.pyi
@@ -1,3 +1,4 @@
+from . import carbon_pb2
from . import motion_pb2
from . import person_pb2
from . import person_runtime_pb2
diff --git a/pycityproto/city/person/v2/carbon_pb2.py b/pycityproto/city/person/v2/carbon_pb2.py
new file mode 100644
index 00000000..3ba7b83b
--- /dev/null
+++ b/pycityproto/city/person/v2/carbon_pb2.py
@@ -0,0 +1,15 @@
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf.internal import builder as _builder
+_sym_db = _symbol_database.Default()
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1bcity/person/v2/carbon.proto\x12\x0ecity.person.v2"\x9f\x01\n\rVehicleCarbon\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12\x0e\n\x02ds\x18\x02 \x01(\x01R\x02ds\x12\x0c\n\x01v\x18\x03 \x01(\x01R\x01v\x12\x0c\n\x01a\x18\x04 \x01(\x01R\x01a\x12\x13\n\x05u_acc\x18\x05 \x01(\x01R\x04uAcc\x12\x15\n\x06u_roll\x18\x06 \x01(\x01R\x05uRoll\x12\x15\n\x06u_aero\x18\x07 \x01(\x01R\x05uAero\x12\x0f\n\x03c_d\x18\x08 \x01(\x01R\x02cDB\xb4\x01\n\x12com.city.person.v2B\x0bCarbonProtoP\x01Z7git.fiblab.net/sim/protos/v2/go/city/person/v2;personv2\xa2\x02\x03CPX\xaa\x02\x0eCity.Person.V2\xca\x02\x0eCity\\Person\\V2\xe2\x02\x1aCity\\Person\\V2\\GPBMetadata\xea\x02\x10City::Person::V2b\x06proto3')
+_globals = globals()
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'city.person.v2.carbon_pb2', _globals)
+if _descriptor._USE_C_DESCRIPTORS == False:
+ _globals['DESCRIPTOR']._options = None
+ _globals['DESCRIPTOR']._serialized_options = b'\n\x12com.city.person.v2B\x0bCarbonProtoP\x01Z7git.fiblab.net/sim/protos/v2/go/city/person/v2;personv2\xa2\x02\x03CPX\xaa\x02\x0eCity.Person.V2\xca\x02\x0eCity\\Person\\V2\xe2\x02\x1aCity\\Person\\V2\\GPBMetadata\xea\x02\x10City::Person::V2'
+ _globals['_VEHICLECARBON']._serialized_start = 48
+ _globals['_VEHICLECARBON']._serialized_end = 207
\ No newline at end of file
diff --git a/pycityproto/city/person/v2/carbon_pb2.pyi b/pycityproto/city/person/v2/carbon_pb2.pyi
new file mode 100644
index 00000000..fe1395d6
--- /dev/null
+++ b/pycityproto/city/person/v2/carbon_pb2.pyi
@@ -0,0 +1,26 @@
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from typing import ClassVar as _ClassVar, Optional as _Optional
+DESCRIPTOR: _descriptor.FileDescriptor
+
+class VehicleCarbon(_message.Message):
+ __slots__ = ['id', 'ds', 'v', 'a', 'u_acc', 'u_roll', 'u_aero', 'c_d']
+ ID_FIELD_NUMBER: _ClassVar[int]
+ DS_FIELD_NUMBER: _ClassVar[int]
+ V_FIELD_NUMBER: _ClassVar[int]
+ A_FIELD_NUMBER: _ClassVar[int]
+ U_ACC_FIELD_NUMBER: _ClassVar[int]
+ U_ROLL_FIELD_NUMBER: _ClassVar[int]
+ U_AERO_FIELD_NUMBER: _ClassVar[int]
+ C_D_FIELD_NUMBER: _ClassVar[int]
+ id: int
+ ds: float
+ v: float
+ a: float
+ u_acc: float
+ u_roll: float
+ u_aero: float
+ c_d: float
+
+ def __init__(self, id: _Optional[int]=..., ds: _Optional[float]=..., v: _Optional[float]=..., a: _Optional[float]=..., u_acc: _Optional[float]=..., u_roll: _Optional[float]=..., u_aero: _Optional[float]=..., c_d: _Optional[float]=...) -> None:
+ ...
\ No newline at end of file
diff --git a/pycityproto/city/person/v2/carbon_pb2_grpc.py b/pycityproto/city/person/v2/carbon_pb2_grpc.py
new file mode 100644
index 00000000..a8ba7cd4
--- /dev/null
+++ b/pycityproto/city/person/v2/carbon_pb2_grpc.py
@@ -0,0 +1,2 @@
+"""Client and server classes corresponding to protobuf-defined services."""
+import grpc
\ No newline at end of file
diff --git a/pycityproto/city/person/v2/vehicle_pb2.py b/pycityproto/city/person/v2/vehicle_pb2.py
index 6757cc7f..3b0712a7 100644
--- a/pycityproto/city/person/v2/vehicle_pb2.py
+++ b/pycityproto/city/person/v2/vehicle_pb2.py
@@ -4,30 +4,31 @@
from google.protobuf import symbol_database as _symbol_database
from google.protobuf.internal import builder as _builder
_sym_db = _symbol_database.Default()
+from ....city.person.v2 import carbon_pb2 as city_dot_person_dot_v2_dot_carbon__pb2
from ....city.person.v2 import motion_pb2 as city_dot_person_dot_v2_dot_motion__pb2
from ....city.routing.v2 import routing_pb2 as city_dot_routing_dot_v2_dot_routing__pb2
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ccity/person/v2/vehicle.proto\x12\x0ecity.person.v2\x1a\x1bcity/person/v2/motion.proto\x1a\x1dcity/routing/v2/routing.proto"\x84\x01\n\x02LC\x12$\n\x0eshadow_lane_id\x18\x01 \x01(\x05R\x0cshadowLaneId\x12\x19\n\x08shadow_s\x18\x02 \x01(\x01R\x07shadowS\x12\x14\n\x05angle\x18\x03 \x01(\x01R\x05angle\x12\'\n\x0fcompleted_ratio\x18\x04 \x01(\x01R\x0ecompletedRatio"\x7f\n\rVehicleAction\x12\x0e\n\x02id\x18\x04 \x01(\x05R\x02id\x12\x10\n\x03acc\x18\x01 \x01(\x01R\x03acc\x12%\n\x0clc_target_id\x18\x02 \x01(\x05H\x00R\nlcTargetId\x88\x01\x01\x12\x14\n\x05angle\x18\x03 \x01(\x01R\x05angleB\x0f\n\r_lc_target_id"X\n\x12VehicleRouteAction\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x122\n\x07journey\x18\x02 \x01(\x0b2\x18.city.routing.v2.JourneyR\x07journey"\xeb\x02\n\x0eVehicleRuntime\x120\n\x04base\x18\x01 \x01(\x0b2\x1c.city.person.v2.PersonMotionR\x04base\x12\'\n\x02lc\x18\x04 \x01(\x0b2\x12.city.person.v2.LCH\x00R\x02lc\x88\x01\x01\x12:\n\x06action\x18\x05 \x01(\x0b2\x1d.city.person.v2.VehicleActionH\x01R\x06action\x88\x01\x01\x12)\n\x10running_distance\x18\x06 \x01(\x01R\x0frunningDistance\x12(\n\x10num_going_astray\x18\x07 \x01(\x05R\x0enumGoingAstray\x12%\n\x0edeparture_time\x18\x08 \x01(\x01R\rdepartureTime\x12\x10\n\x03eta\x18\t \x01(\x01R\x03eta\x12"\n\reta_free_flow\x18\n \x01(\x01R\x0betaFreeFlowB\x05\n\x03_lcB\t\n\x07_action"\xc1\x01\n\x0fObservedVehicle\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x124\n\x06motion\x18\x02 \x01(\x0b2\x1c.city.person.v2.PersonMotionR\x06motion\x12+\n\x11relative_distance\x18\x03 \x01(\x01R\x10relativeDistance\x12;\n\x08relation\x18\x04 \x01(\x0e2\x1f.city.person.v2.VehicleRelationR\x08relation"\xaf\x01\n\x0cObservedLane\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12 \n\x0brestriction\x18\x02 \x01(\x08R\x0brestriction\x12;\n\x0blight_state\x18\x03 \x01(\x0e2\x1a.city.person.v2.LightStateR\nlightState\x120\n\x14light_remaining_time\x18\x04 \x01(\x01R\x12lightRemainingTime"\x9d\x02\n\nVehicleEnv\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x128\n\x07runtime\x18\x02 \x01(\x0b2\x1e.city.person.v2.VehicleRuntimeR\x07runtime\x122\n\x07journey\x18\x03 \x01(\x0b2\x18.city.routing.v2.JourneyR\x07journey\x12L\n\x11observed_vehicles\x18\x04 \x03(\x0b2\x1f.city.person.v2.ObservedVehicleR\x10observedVehicles\x12C\n\x0eobserved_lanes\x18\x05 \x03(\x0b2\x1c.city.person.v2.ObservedLaneR\robservedLanes*\xbb\x02\n\x0fVehicleRelation\x12 \n\x1cVEHICLE_RELATION_UNSPECIFIED\x10\x00\x12\x1a\n\x16VEHICLE_RELATION_AHEAD\x10\x01\x12\x1b\n\x17VEHICLE_RELATION_BEHIND\x10\x02\x12!\n\x1dVEHICLE_RELATION_SHADOW_AHEAD\x10\x03\x12"\n\x1eVEHICLE_RELATION_SHADOW_BEHIND\x10\x04\x12\x1f\n\x1bVEHICLE_RELATION_LEFT_AHEAD\x10\x05\x12 \n\x1cVEHICLE_RELATION_RIGHT_AHEAD\x10\x06\x12 \n\x1cVEHICLE_RELATION_LEFT_BEHIND\x10\x07\x12!\n\x1dVEHICLE_RELATION_RIGHT_BEHIND\x10\x08*m\n\nLightState\x12\x1b\n\x17LIGHT_STATE_UNSPECIFIED\x10\x00\x12\x13\n\x0fLIGHT_STATE_RED\x10\x01\x12\x15\n\x11LIGHT_STATE_GREEN\x10\x02\x12\x16\n\x12LIGHT_STATE_YELLOW\x10\x03B\xb5\x01\n\x12com.city.person.v2B\x0cVehicleProtoP\x01Z7git.fiblab.net/sim/protos/v2/go/city/person/v2;personv2\xa2\x02\x03CPX\xaa\x02\x0eCity.Person.V2\xca\x02\x0eCity\\Person\\V2\xe2\x02\x1aCity\\Person\\V2\\GPBMetadata\xea\x02\x10City::Person::V2b\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ccity/person/v2/vehicle.proto\x12\x0ecity.person.v2\x1a\x1bcity/person/v2/carbon.proto\x1a\x1bcity/person/v2/motion.proto\x1a\x1dcity/routing/v2/routing.proto"\x84\x01\n\x02LC\x12$\n\x0eshadow_lane_id\x18\x01 \x01(\x05R\x0cshadowLaneId\x12\x19\n\x08shadow_s\x18\x02 \x01(\x01R\x07shadowS\x12\x14\n\x05angle\x18\x03 \x01(\x01R\x05angle\x12\'\n\x0fcompleted_ratio\x18\x04 \x01(\x01R\x0ecompletedRatio"\x7f\n\rVehicleAction\x12\x0e\n\x02id\x18\x04 \x01(\x05R\x02id\x12\x10\n\x03acc\x18\x01 \x01(\x01R\x03acc\x12%\n\x0clc_target_id\x18\x02 \x01(\x05H\x00R\nlcTargetId\x88\x01\x01\x12\x14\n\x05angle\x18\x03 \x01(\x01R\x05angleB\x0f\n\r_lc_target_id"X\n\x12VehicleRouteAction\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x122\n\x07journey\x18\x02 \x01(\x0b2\x18.city.routing.v2.JourneyR\x07journey"\xb2\x03\n\x0eVehicleRuntime\x120\n\x04base\x18\x01 \x01(\x0b2\x1c.city.person.v2.PersonMotionR\x04base\x12\'\n\x02lc\x18\x04 \x01(\x0b2\x12.city.person.v2.LCH\x00R\x02lc\x88\x01\x01\x12:\n\x06action\x18\x05 \x01(\x0b2\x1d.city.person.v2.VehicleActionH\x01R\x06action\x88\x01\x01\x12)\n\x10running_distance\x18\x06 \x01(\x01R\x0frunningDistance\x12(\n\x10num_going_astray\x18\x07 \x01(\x05R\x0enumGoingAstray\x12%\n\x0edeparture_time\x18\x08 \x01(\x01R\rdepartureTime\x12\x10\n\x03eta\x18\t \x01(\x01R\x03eta\x12"\n\reta_free_flow\x18\n \x01(\x01R\x0betaFreeFlow\x12:\n\x06carbon\x18\x0b \x01(\x0b2\x1d.city.person.v2.VehicleCarbonH\x02R\x06carbon\x88\x01\x01B\x05\n\x03_lcB\t\n\x07_actionB\t\n\x07_carbon"\xc1\x01\n\x0fObservedVehicle\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x124\n\x06motion\x18\x02 \x01(\x0b2\x1c.city.person.v2.PersonMotionR\x06motion\x12+\n\x11relative_distance\x18\x03 \x01(\x01R\x10relativeDistance\x12;\n\x08relation\x18\x04 \x01(\x0e2\x1f.city.person.v2.VehicleRelationR\x08relation"\xaf\x01\n\x0cObservedLane\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x12 \n\x0brestriction\x18\x02 \x01(\x08R\x0brestriction\x12;\n\x0blight_state\x18\x03 \x01(\x0e2\x1a.city.person.v2.LightStateR\nlightState\x120\n\x14light_remaining_time\x18\x04 \x01(\x01R\x12lightRemainingTime"\x9d\x02\n\nVehicleEnv\x12\x0e\n\x02id\x18\x01 \x01(\x05R\x02id\x128\n\x07runtime\x18\x02 \x01(\x0b2\x1e.city.person.v2.VehicleRuntimeR\x07runtime\x122\n\x07journey\x18\x03 \x01(\x0b2\x18.city.routing.v2.JourneyR\x07journey\x12L\n\x11observed_vehicles\x18\x04 \x03(\x0b2\x1f.city.person.v2.ObservedVehicleR\x10observedVehicles\x12C\n\x0eobserved_lanes\x18\x05 \x03(\x0b2\x1c.city.person.v2.ObservedLaneR\robservedLanes*\xbb\x02\n\x0fVehicleRelation\x12 \n\x1cVEHICLE_RELATION_UNSPECIFIED\x10\x00\x12\x1a\n\x16VEHICLE_RELATION_AHEAD\x10\x01\x12\x1b\n\x17VEHICLE_RELATION_BEHIND\x10\x02\x12!\n\x1dVEHICLE_RELATION_SHADOW_AHEAD\x10\x03\x12"\n\x1eVEHICLE_RELATION_SHADOW_BEHIND\x10\x04\x12\x1f\n\x1bVEHICLE_RELATION_LEFT_AHEAD\x10\x05\x12 \n\x1cVEHICLE_RELATION_RIGHT_AHEAD\x10\x06\x12 \n\x1cVEHICLE_RELATION_LEFT_BEHIND\x10\x07\x12!\n\x1dVEHICLE_RELATION_RIGHT_BEHIND\x10\x08*m\n\nLightState\x12\x1b\n\x17LIGHT_STATE_UNSPECIFIED\x10\x00\x12\x13\n\x0fLIGHT_STATE_RED\x10\x01\x12\x15\n\x11LIGHT_STATE_GREEN\x10\x02\x12\x16\n\x12LIGHT_STATE_YELLOW\x10\x03B\xb5\x01\n\x12com.city.person.v2B\x0cVehicleProtoP\x01Z7git.fiblab.net/sim/protos/v2/go/city/person/v2;personv2\xa2\x02\x03CPX\xaa\x02\x0eCity.Person.V2\xca\x02\x0eCity\\Person\\V2\xe2\x02\x1aCity\\Person\\V2\\GPBMetadata\xea\x02\x10City::Person::V2b\x06proto3')
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'city.person.v2.vehicle_pb2', _globals)
if _descriptor._USE_C_DESCRIPTORS == False:
_globals['DESCRIPTOR']._options = None
_globals['DESCRIPTOR']._serialized_options = b'\n\x12com.city.person.v2B\x0cVehicleProtoP\x01Z7git.fiblab.net/sim/protos/v2/go/city/person/v2;personv2\xa2\x02\x03CPX\xaa\x02\x0eCity.Person.V2\xca\x02\x0eCity\\Person\\V2\xe2\x02\x1aCity\\Person\\V2\\GPBMetadata\xea\x02\x10City::Person::V2'
- _globals['_VEHICLERELATION']._serialized_start = 1491
- _globals['_VEHICLERELATION']._serialized_end = 1806
- _globals['_LIGHTSTATE']._serialized_start = 1808
- _globals['_LIGHTSTATE']._serialized_end = 1917
- _globals['_LC']._serialized_start = 109
- _globals['_LC']._serialized_end = 241
- _globals['_VEHICLEACTION']._serialized_start = 243
- _globals['_VEHICLEACTION']._serialized_end = 370
- _globals['_VEHICLEROUTEACTION']._serialized_start = 372
- _globals['_VEHICLEROUTEACTION']._serialized_end = 460
- _globals['_VEHICLERUNTIME']._serialized_start = 463
- _globals['_VEHICLERUNTIME']._serialized_end = 826
- _globals['_OBSERVEDVEHICLE']._serialized_start = 829
- _globals['_OBSERVEDVEHICLE']._serialized_end = 1022
- _globals['_OBSERVEDLANE']._serialized_start = 1025
- _globals['_OBSERVEDLANE']._serialized_end = 1200
- _globals['_VEHICLEENV']._serialized_start = 1203
- _globals['_VEHICLEENV']._serialized_end = 1488
\ No newline at end of file
+ _globals['_VEHICLERELATION']._serialized_start = 1591
+ _globals['_VEHICLERELATION']._serialized_end = 1906
+ _globals['_LIGHTSTATE']._serialized_start = 1908
+ _globals['_LIGHTSTATE']._serialized_end = 2017
+ _globals['_LC']._serialized_start = 138
+ _globals['_LC']._serialized_end = 270
+ _globals['_VEHICLEACTION']._serialized_start = 272
+ _globals['_VEHICLEACTION']._serialized_end = 399
+ _globals['_VEHICLEROUTEACTION']._serialized_start = 401
+ _globals['_VEHICLEROUTEACTION']._serialized_end = 489
+ _globals['_VEHICLERUNTIME']._serialized_start = 492
+ _globals['_VEHICLERUNTIME']._serialized_end = 926
+ _globals['_OBSERVEDVEHICLE']._serialized_start = 929
+ _globals['_OBSERVEDVEHICLE']._serialized_end = 1122
+ _globals['_OBSERVEDLANE']._serialized_start = 1125
+ _globals['_OBSERVEDLANE']._serialized_end = 1300
+ _globals['_VEHICLEENV']._serialized_start = 1303
+ _globals['_VEHICLEENV']._serialized_end = 1588
\ No newline at end of file
diff --git a/pycityproto/city/person/v2/vehicle_pb2.pyi b/pycityproto/city/person/v2/vehicle_pb2.pyi
index 5a167b7d..7a88423f 100644
--- a/pycityproto/city/person/v2/vehicle_pb2.pyi
+++ b/pycityproto/city/person/v2/vehicle_pb2.pyi
@@ -1,3 +1,4 @@
+from city.person.v2 import carbon_pb2 as _carbon_pb2
from city.person.v2 import motion_pb2 as _motion_pb2
from city.routing.v2 import routing_pb2 as _routing_pb2
from google.protobuf.internal import containers as _containers
@@ -78,7 +79,7 @@ class VehicleRouteAction(_message.Message):
...
class VehicleRuntime(_message.Message):
- __slots__ = ['base', 'lc', 'action', 'running_distance', 'num_going_astray', 'departure_time', 'eta', 'eta_free_flow']
+ __slots__ = ['base', 'lc', 'action', 'running_distance', 'num_going_astray', 'departure_time', 'eta', 'eta_free_flow', 'carbon']
BASE_FIELD_NUMBER: _ClassVar[int]
LC_FIELD_NUMBER: _ClassVar[int]
ACTION_FIELD_NUMBER: _ClassVar[int]
@@ -87,6 +88,7 @@ class VehicleRuntime(_message.Message):
DEPARTURE_TIME_FIELD_NUMBER: _ClassVar[int]
ETA_FIELD_NUMBER: _ClassVar[int]
ETA_FREE_FLOW_FIELD_NUMBER: _ClassVar[int]
+ CARBON_FIELD_NUMBER: _ClassVar[int]
base: _motion_pb2.PersonMotion
lc: LC
action: VehicleAction
@@ -95,8 +97,9 @@ class VehicleRuntime(_message.Message):
departure_time: float
eta: float
eta_free_flow: float
+ carbon: _carbon_pb2.VehicleCarbon
- def __init__(self, base: _Optional[_Union[_motion_pb2.PersonMotion, _Mapping]]=..., lc: _Optional[_Union[LC, _Mapping]]=..., action: _Optional[_Union[VehicleAction, _Mapping]]=..., running_distance: _Optional[float]=..., num_going_astray: _Optional[int]=..., departure_time: _Optional[float]=..., eta: _Optional[float]=..., eta_free_flow: _Optional[float]=...) -> None:
+ def __init__(self, base: _Optional[_Union[_motion_pb2.PersonMotion, _Mapping]]=..., lc: _Optional[_Union[LC, _Mapping]]=..., action: _Optional[_Union[VehicleAction, _Mapping]]=..., running_distance: _Optional[float]=..., num_going_astray: _Optional[int]=..., departure_time: _Optional[float]=..., eta: _Optional[float]=..., eta_free_flow: _Optional[float]=..., carbon: _Optional[_Union[_carbon_pb2.VehicleCarbon, _Mapping]]=...) -> None:
...
class ObservedVehicle(_message.Message):