【新增】测试模块车库门状态proto定义及车库门状态发送逻辑

【删除】ecs的车库门状态及相关逻辑
This commit is contained in:
thesai 2024-03-26 16:48:37 +08:00
parent 141cc633b9
commit 9d6acd9c20
4 changed files with 404 additions and 267 deletions

View File

@ -53,7 +53,7 @@ func InitSimulationRouter(api *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddle
authed.PUT("/balise/telegram/stop", baliseTelegramStop) authed.PUT("/balise/telegram/stop", baliseTelegramStop)
authed.PUT("/balise/telegram/send", baliseTelegramSend) authed.PUT("/balise/telegram/send", baliseTelegramSend)
authed.PUT("/balise/reset", baliseReset) authed.PUT("/balise/reset", baliseReset)
authed.PUT("/ckm/operation") authed.PUT("/ckm/operation", ckmOperation)
//authed.POST("/bypass/operation", bypassBtnOrKeyOperation) //authed.POST("/bypass/operation", bypassBtnOrKeyOperation)
// 初始化地图信息 // 初始化地图信息

View File

@ -249,7 +249,7 @@ func (x SimulationStatus_SimulationState) Number() protoreflect.EnumNumber {
// Deprecated: Use SimulationStatus_SimulationState.Descriptor instead. // Deprecated: Use SimulationStatus_SimulationState.Descriptor instead.
func (SimulationStatus_SimulationState) EnumDescriptor() ([]byte, []int) { func (SimulationStatus_SimulationState) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{28, 0} return file_device_state_proto_rawDescGZIP(), []int{29, 0}
} }
type SimulationThirdPartyApiService_Type int32 type SimulationThirdPartyApiService_Type int32
@ -301,7 +301,7 @@ func (x SimulationThirdPartyApiService_Type) Number() protoreflect.EnumNumber {
// Deprecated: Use SimulationThirdPartyApiService_Type.Descriptor instead. // Deprecated: Use SimulationThirdPartyApiService_Type.Descriptor instead.
func (SimulationThirdPartyApiService_Type) EnumDescriptor() ([]byte, []int) { func (SimulationThirdPartyApiService_Type) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{29, 0} return file_device_state_proto_rawDescGZIP(), []int{30, 0}
} }
// 服务状态 // 服务状态
@ -350,7 +350,7 @@ func (x SimulationThirdPartyApiService_State) Number() protoreflect.EnumNumber {
// Deprecated: Use SimulationThirdPartyApiService_State.Descriptor instead. // Deprecated: Use SimulationThirdPartyApiService_State.Descriptor instead.
func (SimulationThirdPartyApiService_State) EnumDescriptor() ([]byte, []int) { func (SimulationThirdPartyApiService_State) EnumDescriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{29, 1} return file_device_state_proto_rawDescGZIP(), []int{30, 1}
} }
// 相邻端点定义的link的状态 // 相邻端点定义的link的状态
@ -3492,6 +3492,78 @@ func (x *StationQc) GetCjStates() []*StationQc_State {
return nil return nil
} }
// 车库门
type CkmState struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` //车库门的id
Mgj bool `protobuf:"varint,2,opt,name=mgj,proto3" json:"mgj,omitempty"` //车库门关闭继电器
Param *request_proto.CkmParam `protobuf:"bytes,3,opt,name=param,proto3" json:"param,omitempty"` //屏蔽门设置的参数
StateLoss bool `protobuf:"varint,4,opt,name=stateLoss,proto3" json:"stateLoss,omitempty"` //状态丢失
}
func (x *CkmState) Reset() {
*x = CkmState{}
if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CkmState) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CkmState) ProtoMessage() {}
func (x *CkmState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CkmState.ProtoReflect.Descriptor instead.
func (*CkmState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{25}
}
func (x *CkmState) GetId() uint32 {
if x != nil {
return x.Id
}
return 0
}
func (x *CkmState) GetMgj() bool {
if x != nil {
return x.Mgj
}
return false
}
func (x *CkmState) GetParam() *request_proto.CkmParam {
if x != nil {
return x.Param
}
return nil
}
func (x *CkmState) GetStateLoss() bool {
if x != nil {
return x.StateLoss
}
return false
}
// 仿真运行时状态变化量,当前时刻与上一时刻比较得到 // 仿真运行时状态变化量,当前时刻与上一时刻比较得到
type VariationStatus struct { type VariationStatus struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -3513,7 +3585,7 @@ type VariationStatus struct {
func (x *VariationStatus) Reset() { func (x *VariationStatus) Reset() {
*x = VariationStatus{} *x = VariationStatus{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[25] mi := &file_device_state_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3526,7 +3598,7 @@ func (x *VariationStatus) String() string {
func (*VariationStatus) ProtoMessage() {} func (*VariationStatus) ProtoMessage() {}
func (x *VariationStatus) ProtoReflect() protoreflect.Message { func (x *VariationStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[25] mi := &file_device_state_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3539,7 +3611,7 @@ func (x *VariationStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use VariationStatus.ProtoReflect.Descriptor instead. // Deprecated: Use VariationStatus.ProtoReflect.Descriptor instead.
func (*VariationStatus) Descriptor() ([]byte, []int) { func (*VariationStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{25} return file_device_state_proto_rawDescGZIP(), []int{26}
} }
func (x *VariationStatus) GetUpdatedTrain() []*TrainMapState { func (x *VariationStatus) GetUpdatedTrain() []*TrainMapState {
@ -3609,12 +3681,14 @@ type AllDevicesStatus struct {
BaliseState []*BaliseState `protobuf:"bytes,12,rep,name=baliseState,proto3" json:"baliseState,omitempty"` BaliseState []*BaliseState `protobuf:"bytes,12,rep,name=baliseState,proto3" json:"baliseState,omitempty"`
// 车站联锁驱采状态 // 车站联锁驱采状态
StationQc *StationQc `protobuf:"bytes,13,opt,name=stationQc,proto3" json:"stationQc,omitempty"` StationQc *StationQc `protobuf:"bytes,13,opt,name=stationQc,proto3" json:"stationQc,omitempty"`
// 车库门状态
CkmStates []*CkmState `protobuf:"bytes,14,rep,name=ckmStates,proto3" json:"ckmStates,omitempty"`
} }
func (x *AllDevicesStatus) Reset() { func (x *AllDevicesStatus) Reset() {
*x = AllDevicesStatus{} *x = AllDevicesStatus{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[26] mi := &file_device_state_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3627,7 +3701,7 @@ func (x *AllDevicesStatus) String() string {
func (*AllDevicesStatus) ProtoMessage() {} func (*AllDevicesStatus) ProtoMessage() {}
func (x *AllDevicesStatus) ProtoReflect() protoreflect.Message { func (x *AllDevicesStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[26] mi := &file_device_state_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3640,7 +3714,7 @@ func (x *AllDevicesStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use AllDevicesStatus.ProtoReflect.Descriptor instead. // Deprecated: Use AllDevicesStatus.ProtoReflect.Descriptor instead.
func (*AllDevicesStatus) Descriptor() ([]byte, []int) { func (*AllDevicesStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{26} return file_device_state_proto_rawDescGZIP(), []int{27}
} }
func (x *AllDevicesStatus) GetTrainState() []*TrainMapState { func (x *AllDevicesStatus) GetTrainState() []*TrainMapState {
@ -3734,6 +3808,13 @@ func (x *AllDevicesStatus) GetStationQc() *StationQc {
return nil return nil
} }
func (x *AllDevicesStatus) GetCkmStates() []*CkmState {
if x != nil {
return x.CkmStates
}
return nil
}
// 服务器端向前端推送的设备状态信息 // 服务器端向前端推送的设备状态信息
type PushedDevicesStatus struct { type PushedDevicesStatus struct {
state protoimpl.MessageState state protoimpl.MessageState
@ -3752,7 +3833,7 @@ type PushedDevicesStatus struct {
func (x *PushedDevicesStatus) Reset() { func (x *PushedDevicesStatus) Reset() {
*x = PushedDevicesStatus{} *x = PushedDevicesStatus{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[27] mi := &file_device_state_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3765,7 +3846,7 @@ func (x *PushedDevicesStatus) String() string {
func (*PushedDevicesStatus) ProtoMessage() {} func (*PushedDevicesStatus) ProtoMessage() {}
func (x *PushedDevicesStatus) ProtoReflect() protoreflect.Message { func (x *PushedDevicesStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[27] mi := &file_device_state_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3778,7 +3859,7 @@ func (x *PushedDevicesStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use PushedDevicesStatus.ProtoReflect.Descriptor instead. // Deprecated: Use PushedDevicesStatus.ProtoReflect.Descriptor instead.
func (*PushedDevicesStatus) Descriptor() ([]byte, []int) { func (*PushedDevicesStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{27} return file_device_state_proto_rawDescGZIP(), []int{28}
} }
func (x *PushedDevicesStatus) GetAll() bool { func (x *PushedDevicesStatus) GetAll() bool {
@ -3815,7 +3896,7 @@ type SimulationStatus struct {
func (x *SimulationStatus) Reset() { func (x *SimulationStatus) Reset() {
*x = SimulationStatus{} *x = SimulationStatus{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[28] mi := &file_device_state_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3828,7 +3909,7 @@ func (x *SimulationStatus) String() string {
func (*SimulationStatus) ProtoMessage() {} func (*SimulationStatus) ProtoMessage() {}
func (x *SimulationStatus) ProtoReflect() protoreflect.Message { func (x *SimulationStatus) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[28] mi := &file_device_state_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3841,7 +3922,7 @@ func (x *SimulationStatus) ProtoReflect() protoreflect.Message {
// Deprecated: Use SimulationStatus.ProtoReflect.Descriptor instead. // Deprecated: Use SimulationStatus.ProtoReflect.Descriptor instead.
func (*SimulationStatus) Descriptor() ([]byte, []int) { func (*SimulationStatus) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{28} return file_device_state_proto_rawDescGZIP(), []int{29}
} }
func (x *SimulationStatus) GetSimulationId() string { func (x *SimulationStatus) GetSimulationId() string {
@ -3871,7 +3952,7 @@ type SimulationThirdPartyApiService struct {
func (x *SimulationThirdPartyApiService) Reset() { func (x *SimulationThirdPartyApiService) Reset() {
*x = SimulationThirdPartyApiService{} *x = SimulationThirdPartyApiService{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[29] mi := &file_device_state_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3884,7 +3965,7 @@ func (x *SimulationThirdPartyApiService) String() string {
func (*SimulationThirdPartyApiService) ProtoMessage() {} func (*SimulationThirdPartyApiService) ProtoMessage() {}
func (x *SimulationThirdPartyApiService) ProtoReflect() protoreflect.Message { func (x *SimulationThirdPartyApiService) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[29] mi := &file_device_state_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3897,7 +3978,7 @@ func (x *SimulationThirdPartyApiService) ProtoReflect() protoreflect.Message {
// Deprecated: Use SimulationThirdPartyApiService.ProtoReflect.Descriptor instead. // Deprecated: Use SimulationThirdPartyApiService.ProtoReflect.Descriptor instead.
func (*SimulationThirdPartyApiService) Descriptor() ([]byte, []int) { func (*SimulationThirdPartyApiService) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{29} return file_device_state_proto_rawDescGZIP(), []int{30}
} }
func (x *SimulationThirdPartyApiService) GetStates() []*SimulationThirdPartyApiServiceState { func (x *SimulationThirdPartyApiService) GetStates() []*SimulationThirdPartyApiServiceState {
@ -3922,7 +4003,7 @@ type SimulationThirdPartyApiServiceState struct {
func (x *SimulationThirdPartyApiServiceState) Reset() { func (x *SimulationThirdPartyApiServiceState) Reset() {
*x = SimulationThirdPartyApiServiceState{} *x = SimulationThirdPartyApiServiceState{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[30] mi := &file_device_state_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3935,7 +4016,7 @@ func (x *SimulationThirdPartyApiServiceState) String() string {
func (*SimulationThirdPartyApiServiceState) ProtoMessage() {} func (*SimulationThirdPartyApiServiceState) ProtoMessage() {}
func (x *SimulationThirdPartyApiServiceState) ProtoReflect() protoreflect.Message { func (x *SimulationThirdPartyApiServiceState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[30] mi := &file_device_state_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3948,7 +4029,7 @@ func (x *SimulationThirdPartyApiServiceState) ProtoReflect() protoreflect.Messag
// Deprecated: Use SimulationThirdPartyApiServiceState.ProtoReflect.Descriptor instead. // Deprecated: Use SimulationThirdPartyApiServiceState.ProtoReflect.Descriptor instead.
func (*SimulationThirdPartyApiServiceState) Descriptor() ([]byte, []int) { func (*SimulationThirdPartyApiServiceState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{30} return file_device_state_proto_rawDescGZIP(), []int{31}
} }
func (x *SimulationThirdPartyApiServiceState) GetType() SimulationThirdPartyApiService_Type { func (x *SimulationThirdPartyApiServiceState) GetType() SimulationThirdPartyApiService_Type {
@ -3980,7 +4061,7 @@ type TrainControlState struct {
func (x *TrainControlState) Reset() { func (x *TrainControlState) Reset() {
*x = TrainControlState{} *x = TrainControlState{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[31] mi := &file_device_state_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3993,7 +4074,7 @@ func (x *TrainControlState) String() string {
func (*TrainControlState) ProtoMessage() {} func (*TrainControlState) ProtoMessage() {}
func (x *TrainControlState) ProtoReflect() protoreflect.Message { func (x *TrainControlState) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[31] mi := &file_device_state_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -4006,7 +4087,7 @@ func (x *TrainControlState) ProtoReflect() protoreflect.Message {
// Deprecated: Use TrainControlState.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState.ProtoReflect.Descriptor instead.
func (*TrainControlState) Descriptor() ([]byte, []int) { func (*TrainControlState) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{31} return file_device_state_proto_rawDescGZIP(), []int{32}
} }
func (x *TrainControlState) GetEbutton() *TrainControlState_EmergentButton { func (x *TrainControlState) GetEbutton() *TrainControlState_EmergentButton {
@ -4050,7 +4131,7 @@ type StationQc_State struct {
func (x *StationQc_State) Reset() { func (x *StationQc_State) Reset() {
*x = StationQc_State{} *x = StationQc_State{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[33] mi := &file_device_state_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -4063,7 +4144,7 @@ func (x *StationQc_State) String() string {
func (*StationQc_State) ProtoMessage() {} func (*StationQc_State) ProtoMessage() {}
func (x *StationQc_State) ProtoReflect() protoreflect.Message { func (x *StationQc_State) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[33] mi := &file_device_state_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -4112,7 +4193,7 @@ type TrainControlState_EmergentButton struct {
func (x *TrainControlState_EmergentButton) Reset() { func (x *TrainControlState_EmergentButton) Reset() {
*x = TrainControlState_EmergentButton{} *x = TrainControlState_EmergentButton{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[34] mi := &file_device_state_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -4125,7 +4206,7 @@ func (x *TrainControlState_EmergentButton) String() string {
func (*TrainControlState_EmergentButton) ProtoMessage() {} func (*TrainControlState_EmergentButton) ProtoMessage() {}
func (x *TrainControlState_EmergentButton) ProtoReflect() protoreflect.Message { func (x *TrainControlState_EmergentButton) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[34] mi := &file_device_state_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -4138,7 +4219,7 @@ func (x *TrainControlState_EmergentButton) ProtoReflect() protoreflect.Message {
// Deprecated: Use TrainControlState_EmergentButton.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState_EmergentButton.ProtoReflect.Descriptor instead.
func (*TrainControlState_EmergentButton) Descriptor() ([]byte, []int) { func (*TrainControlState_EmergentButton) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{31, 0} return file_device_state_proto_rawDescGZIP(), []int{32, 0}
} }
func (x *TrainControlState_EmergentButton) GetId() uint32 { func (x *TrainControlState_EmergentButton) GetId() uint32 {
@ -4168,7 +4249,7 @@ type TrainControlState_DriverKeySwitch struct {
func (x *TrainControlState_DriverKeySwitch) Reset() { func (x *TrainControlState_DriverKeySwitch) Reset() {
*x = TrainControlState_DriverKeySwitch{} *x = TrainControlState_DriverKeySwitch{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[35] mi := &file_device_state_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -4181,7 +4262,7 @@ func (x *TrainControlState_DriverKeySwitch) String() string {
func (*TrainControlState_DriverKeySwitch) ProtoMessage() {} func (*TrainControlState_DriverKeySwitch) ProtoMessage() {}
func (x *TrainControlState_DriverKeySwitch) ProtoReflect() protoreflect.Message { func (x *TrainControlState_DriverKeySwitch) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[35] mi := &file_device_state_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -4194,7 +4275,7 @@ func (x *TrainControlState_DriverKeySwitch) ProtoReflect() protoreflect.Message
// Deprecated: Use TrainControlState_DriverKeySwitch.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState_DriverKeySwitch.ProtoReflect.Descriptor instead.
func (*TrainControlState_DriverKeySwitch) Descriptor() ([]byte, []int) { func (*TrainControlState_DriverKeySwitch) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{31, 1} return file_device_state_proto_rawDescGZIP(), []int{32, 1}
} }
func (x *TrainControlState_DriverKeySwitch) GetId() uint32 { func (x *TrainControlState_DriverKeySwitch) GetId() uint32 {
@ -4230,7 +4311,7 @@ type TrainControlState_DirectionKeySwitch struct {
func (x *TrainControlState_DirectionKeySwitch) Reset() { func (x *TrainControlState_DirectionKeySwitch) Reset() {
*x = TrainControlState_DirectionKeySwitch{} *x = TrainControlState_DirectionKeySwitch{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[36] mi := &file_device_state_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -4243,7 +4324,7 @@ func (x *TrainControlState_DirectionKeySwitch) String() string {
func (*TrainControlState_DirectionKeySwitch) ProtoMessage() {} func (*TrainControlState_DirectionKeySwitch) ProtoMessage() {}
func (x *TrainControlState_DirectionKeySwitch) ProtoReflect() protoreflect.Message { func (x *TrainControlState_DirectionKeySwitch) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[36] mi := &file_device_state_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -4256,7 +4337,7 @@ func (x *TrainControlState_DirectionKeySwitch) ProtoReflect() protoreflect.Messa
// Deprecated: Use TrainControlState_DirectionKeySwitch.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState_DirectionKeySwitch.ProtoReflect.Descriptor instead.
func (*TrainControlState_DirectionKeySwitch) Descriptor() ([]byte, []int) { func (*TrainControlState_DirectionKeySwitch) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{31, 2} return file_device_state_proto_rawDescGZIP(), []int{32, 2}
} }
func (x *TrainControlState_DirectionKeySwitch) GetId() uint32 { func (x *TrainControlState_DirectionKeySwitch) GetId() uint32 {
@ -4286,7 +4367,7 @@ type TrainControlState_PushHandler struct {
func (x *TrainControlState_PushHandler) Reset() { func (x *TrainControlState_PushHandler) Reset() {
*x = TrainControlState_PushHandler{} *x = TrainControlState_PushHandler{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[37] mi := &file_device_state_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -4299,7 +4380,7 @@ func (x *TrainControlState_PushHandler) String() string {
func (*TrainControlState_PushHandler) ProtoMessage() {} func (*TrainControlState_PushHandler) ProtoMessage() {}
func (x *TrainControlState_PushHandler) ProtoReflect() protoreflect.Message { func (x *TrainControlState_PushHandler) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[37] mi := &file_device_state_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -4312,7 +4393,7 @@ func (x *TrainControlState_PushHandler) ProtoReflect() protoreflect.Message {
// Deprecated: Use TrainControlState_PushHandler.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState_PushHandler.ProtoReflect.Descriptor instead.
func (*TrainControlState_PushHandler) Descriptor() ([]byte, []int) { func (*TrainControlState_PushHandler) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{31, 3} return file_device_state_proto_rawDescGZIP(), []int{32, 3}
} }
func (x *TrainControlState_PushHandler) GetId() uint32 { func (x *TrainControlState_PushHandler) GetId() uint32 {
@ -4913,158 +4994,169 @@ var file_device_state_proto_rawDesc = []byte{
0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77, 0x0a, 0x03, 0x72, 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x72, 0x6f, 0x77,
0x12, 0x10, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x63,
0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02,
0x6f, 0x6e, 0x22, 0xa1, 0x02, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x6e, 0x22, 0x73, 0x0a, 0x08, 0x43, 0x6b, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10,
0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x0a, 0x03, 0x6d, 0x67, 0x6a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6d, 0x67, 0x6a,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x74, 0x65, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x11, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x6d, 0x50, 0x61, 0x72,
0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61,
0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x74, 0x65, 0x4c, 0x6f, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x74,
0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x61, 0x74, 0x65, 0x4c, 0x6f, 0x73, 0x73, 0x22, 0xa1, 0x02, 0x0a, 0x0f, 0x56, 0x61, 0x72, 0x69,
0x74, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x75,
0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28,
0x61, 0x74, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d,
0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64,
0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72,
0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x38, 0x0a,
0x35, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03,
0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69,
0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0xb8, 0x05, 0x0a, 0x10, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74,
0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53,
0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x63,
0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52,
0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x65, 0x70, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x75,
0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0xe7, 0x05, 0x0a, 0x10,
0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x12, 0x34, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01,
0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61,
0x74, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x69, 0x6e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x69,
0x12, 0x31, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74,
0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52,
0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x0b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x0c,
0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03,
0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x73, 0x69, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69,
0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x62, 0x75, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x74, 0x65, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x72, 0x65,
0x31, 0x0a, 0x0a, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x70, 0x6c, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e,
0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x61, 0x72, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x65, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34,
0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x0a, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20,
0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x75, 0x74, 0x74,
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x53,
0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x53, 0x74, 0x61,
0x50, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x70, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x74, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x2e, 0x41, 0x6c, 0x61, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x41, 0x6c, 0x61,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x4c, 0x69, 0x67, 0x68, 0x74,
0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x74,
0x3a, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a,
0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x73,
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x70, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73,
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x62, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x70,
0x61, 0x6c, 0x69, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x73, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x53, 0x74,
0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x53, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x4b, 0x65, 0x79, 0x53,
0x65, 0x12, 0x2e, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63, 0x18, 0x0d, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x74,
0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74,
0x63, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64, 0x44, 0x65, 0x76, 0x69, 0x65, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65,
0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x0a, 0x0b, 0x62, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18,
0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12, 0x34, 0x0a, 0x09, 0x76, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x42, 0x61,
0x61, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x6c, 0x69, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x62, 0x61, 0x6c, 0x69, 0x73,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x6e, 0x51, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x73, 0x12, 0x35, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63, 0x52, 0x09, 0x73, 0x74, 0x61,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c, 0x6c, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x63, 0x12, 0x2d, 0x0a, 0x09, 0x63, 0x6b, 0x6d, 0x53, 0x74, 0x61,
0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x61, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x10, 0x53, 0x69, 0x6d, 0x65, 0x2e, 0x43, 0x6b, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x63, 0x6b, 0x6d, 0x53,
0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x73, 0x68, 0x65, 0x64,
0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x10, 0x0a,
0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6c, 0x6c, 0x12,
0x64, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x34, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01,
0x32, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61,
0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x76, 0x61, 0x72, 0x53,
0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x22, 0x4b, 0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65,
0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x2e, 0x41, 0x6c, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75,
0x07, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x61, 0x73, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xc2, 0x01, 0x0a,
0x75, 0x73, 0x65, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x03, 0x10, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75,
0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x10, 0x04, 0x22, 0xc0, 0x01, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
0x0a, 0x1e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74,
0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02,
0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d,
0x32, 0x2a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x53, 0x69,
0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73,
0x74, 0x61, 0x74, 0x65, 0x22, 0x4b, 0x0a, 0x0f, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x10,
0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x01, 0x12, 0x09,
0x0a, 0x05, 0x50, 0x61, 0x75, 0x73, 0x65, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x10,
0x04, 0x22, 0xc0, 0x01, 0x0a, 0x1e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d,
0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74,
0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65,
0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65,
0x12, 0x0d, 0x0a, 0x09, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12,
0x0c, 0x0a, 0x08, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x73, 0x10, 0x01, 0x12, 0x15, 0x0a,
0x11, 0x53, 0x65, 0x6d, 0x69, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x72, 0x61,
0x69, 0x6e, 0x10, 0x02, 0x22, 0x1e, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a,
0x06, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72,
0x6f, 0x72, 0x10, 0x01, 0x22, 0xa8, 0x01, 0x0a, 0x23, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69,
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x06, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x04,
0x61, 0x74, 0x65, 0x73, 0x22, 0x3a, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x61,
0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69,
0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x73, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x65, 0x6d, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x69, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x05,
0x22, 0x1e, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x6f, 0x72, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x74,
0x6d, 0x61, 0x6c, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68,
0x22, 0xa8, 0x01, 0x0a, 0x23, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69,
0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22,
0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0xa8, 0x04, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x65, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e,
0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54,
0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x79,
0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50,
0x61, 0x72, 0x74, 0x79, 0x41, 0x70, 0x69, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xa8, 0x04, 0x0a, 0x11,
0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x41, 0x0a, 0x07, 0x65, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6d, 0x65,
0x72, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x65, 0x62, 0x75,
0x74, 0x74, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65,
0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e,
0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x65, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63,
0x68, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x06,
0x64, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x64, 0x69, 0x72, 0x4b, 0x65,
0x79, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54,
0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65,
0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x75, 0x2e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52,
0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x1a, 0x38, 0x0a, 0x0e, 0x45, 0x6d, 0x65, 0x07, 0x65, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x09, 0x64, 0x72, 0x69, 0x76,
0x72, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x53,
0x73, 0x65, 0x64, 0x1a, 0x58, 0x0a, 0x0f, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79,
0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x12, 0x43, 0x0a, 0x06, 0x64, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x32, 0x2b, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f,
0x01, 0x28, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x02, 0x64, 0x74, 0x18, 0x03, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x06, 0x64,
0x72, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x64, 0x74, 0x1a, 0x36, 0x0a, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e,
0x12, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x61,
0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53,
0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72,
0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x2f, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x1a, 0x38, 0x0a,
0x64, 0x6c, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x0e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12,
0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12,
0x05, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x2a, 0x37, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x08, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x1a, 0x58, 0x0a, 0x0f, 0x44, 0x72, 0x69, 0x76, 0x65,
0x0a, 0x04, 0x41, 0x78, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x63, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x10, 0x03, 0x42, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61,
0x67, 0x0a, 0x25, 0x63, 0x6c, 0x75, 0x62, 0x2e, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x12, 0x23, 0x0a, 0x02,
0x62, 0x6a, 0x72, 0x74, 0x73, 0x73, 0x2e, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x64, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65,
0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x42, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x64,
0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x2c, 0x6a, 0x6f, 0x79, 0x6c, 0x74, 0x1a, 0x36, 0x0a, 0x12, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65,
0x69, 0x6e, 0x6b, 0x2e, 0x63, 0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d, 0x72, 0x74, 0x73, 0x74, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x61, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02,
0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x2f, 0x0a, 0x0b, 0x50, 0x75, 0x73,
0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x2a, 0x37, 0x0a, 0x0b, 0x53, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6e, 0x79,
0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x78, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,
0x4c, 0x6f, 0x67, 0x69, 0x63, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x68, 0x79, 0x73, 0x69,
0x63, 0x10, 0x03, 0x42, 0x67, 0x0a, 0x25, 0x63, 0x6c, 0x75, 0x62, 0x2e, 0x6a, 0x6f, 0x79, 0x6c,
0x69, 0x6e, 0x6b, 0x2e, 0x62, 0x6a, 0x72, 0x74, 0x73, 0x73, 0x2e, 0x61, 0x74, 0x73, 0x2e, 0x76,
0x65, 0x72, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x42, 0x10, 0x44, 0x65,
0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x2c,
0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x63, 0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d,
0x72, 0x74, 0x73, 0x74, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f,
0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -5080,7 +5172,7 @@ func file_device_state_proto_rawDescGZIP() []byte {
} }
var file_device_state_proto_enumTypes = make([]protoimpl.EnumInfo, 6) var file_device_state_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
var file_device_state_proto_msgTypes = make([]protoimpl.MessageInfo, 38) var file_device_state_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
var file_device_state_proto_goTypes = []interface{}{ var file_device_state_proto_goTypes = []interface{}{
(SectionType)(0), // 0: state.SectionType (SectionType)(0), // 0: state.SectionType
(Signal_Aspect)(0), // 1: state.Signal.Aspect (Signal_Aspect)(0), // 1: state.Signal.Aspect
@ -5113,42 +5205,44 @@ var file_device_state_proto_goTypes = []interface{}{
(*MkxJState)(nil), // 28: state.MkxJState (*MkxJState)(nil), // 28: state.MkxJState
(*BaliseState)(nil), // 29: state.BaliseState (*BaliseState)(nil), // 29: state.BaliseState
(*StationQc)(nil), // 30: state.StationQc (*StationQc)(nil), // 30: state.StationQc
(*VariationStatus)(nil), // 31: state.VariationStatus (*CkmState)(nil), // 31: state.CkmState
(*AllDevicesStatus)(nil), // 32: state.AllDevicesStatus (*VariationStatus)(nil), // 32: state.VariationStatus
(*PushedDevicesStatus)(nil), // 33: state.PushedDevicesStatus (*AllDevicesStatus)(nil), // 33: state.AllDevicesStatus
(*SimulationStatus)(nil), // 34: state.SimulationStatus (*PushedDevicesStatus)(nil), // 34: state.PushedDevicesStatus
(*SimulationThirdPartyApiService)(nil), // 35: state.SimulationThirdPartyApiService (*SimulationStatus)(nil), // 35: state.SimulationStatus
(*SimulationThirdPartyApiServiceState)(nil), // 36: state.SimulationThirdPartyApiServiceState (*SimulationThirdPartyApiService)(nil), // 36: state.SimulationThirdPartyApiService
(*TrainControlState)(nil), // 37: state.TrainControlState (*SimulationThirdPartyApiServiceState)(nil), // 37: state.SimulationThirdPartyApiServiceState
nil, // 38: state.SignalState.RelayStateMapEntry (*TrainControlState)(nil), // 38: state.TrainControlState
(*StationQc_State)(nil), // 39: state.StationQc.State nil, // 39: state.SignalState.RelayStateMapEntry
(*TrainControlState_EmergentButton)(nil), // 40: state.TrainControlState.EmergentButton (*StationQc_State)(nil), // 40: state.StationQc.State
(*TrainControlState_DriverKeySwitch)(nil), // 41: state.TrainControlState.DriverKeySwitch (*TrainControlState_EmergentButton)(nil), // 41: state.TrainControlState.EmergentButton
(*TrainControlState_DirectionKeySwitch)(nil), // 42: state.TrainControlState.DirectionKeySwitch (*TrainControlState_DriverKeySwitch)(nil), // 42: state.TrainControlState.DriverKeySwitch
(*TrainControlState_PushHandler)(nil), // 43: state.TrainControlState.PushHandler (*TrainControlState_DirectionKeySwitch)(nil), // 43: state.TrainControlState.DirectionKeySwitch
(*request_proto.PointsParam)(nil), // 44: request.PointsParam (*TrainControlState_PushHandler)(nil), // 44: state.TrainControlState.PushHandler
(*request_proto.SignalParam)(nil), // 45: request.SignalParam (*request_proto.PointsParam)(nil), // 45: request.PointsParam
(*common_proto.TrainDynamicConfig)(nil), // 46: common.TrainDynamicConfig (*request_proto.SignalParam)(nil), // 46: request.SignalParam
(*common_proto.TrainEndsState)(nil), // 47: common.TrainEndsState (*common_proto.TrainDynamicConfig)(nil), // 47: common.TrainDynamicConfig
(*request_proto.PsdParam)(nil), // 48: request.PsdParam (*common_proto.TrainEndsState)(nil), // 48: common.TrainEndsState
(*data_proto.KilometerSystem)(nil), // 49: graphicData.KilometerSystem (*request_proto.PsdParam)(nil), // 49: request.PsdParam
(request_proto.DriverType)(0), // 50: request.DriverType (*data_proto.KilometerSystem)(nil), // 50: graphicData.KilometerSystem
(*request_proto.CkmParam)(nil), // 51: request.CkmParam
(request_proto.DriverType)(0), // 52: request.DriverType
} }
var file_device_state_proto_depIdxs = []int32{ var file_device_state_proto_depIdxs = []int32{
44, // 0: state.SwitchState.param:type_name -> request.PointsParam 45, // 0: state.SwitchState.param:type_name -> request.PointsParam
1, // 1: state.SignalState.aspect:type_name -> state.Signal.Aspect 1, // 1: state.SignalState.aspect:type_name -> state.Signal.Aspect
45, // 2: state.SignalState.param:type_name -> request.SignalParam 46, // 2: state.SignalState.param:type_name -> request.SignalParam
38, // 3: state.SignalState.relayStateMap:type_name -> state.SignalState.RelayStateMapEntry 39, // 3: state.SignalState.relayStateMap:type_name -> state.SignalState.RelayStateMapEntry
21, // 4: state.PlatformState.spksState:type_name -> state.ReplyState 21, // 4: state.PlatformState.spksState:type_name -> state.ReplyState
28, // 5: state.PlatformState.mkxJState:type_name -> state.MkxJState 28, // 5: state.PlatformState.mkxJState:type_name -> state.MkxJState
2, // 6: state.TrainConnState.connType:type_name -> state.TrainConnState.TrainConnType 2, // 6: state.TrainConnState.connType:type_name -> state.TrainConnState.TrainConnType
15, // 7: state.TrainState.dynamicState:type_name -> state.TrainDynamicState 15, // 7: state.TrainState.dynamicState:type_name -> state.TrainDynamicState
16, // 8: state.TrainState.vobcState:type_name -> state.TrainVobcState 16, // 8: state.TrainState.vobcState:type_name -> state.TrainVobcState
46, // 9: state.TrainState.trainDynamicConfig:type_name -> common.TrainDynamicConfig 47, // 9: state.TrainState.trainDynamicConfig:type_name -> common.TrainDynamicConfig
47, // 10: state.TrainState.trainEndsA:type_name -> common.TrainEndsState 48, // 10: state.TrainState.trainEndsA:type_name -> common.TrainEndsState
47, // 11: state.TrainState.trainEndsB:type_name -> common.TrainEndsState 48, // 11: state.TrainState.trainEndsB:type_name -> common.TrainEndsState
18, // 12: state.TrainState.btmState:type_name -> state.BTMState 18, // 12: state.TrainState.btmState:type_name -> state.BTMState
37, // 13: state.TrainState.tcc:type_name -> state.TrainControlState 38, // 13: state.TrainState.tcc:type_name -> state.TrainControlState
13, // 14: state.TrainState.connState:type_name -> state.TrainConnState 13, // 14: state.TrainState.connState:type_name -> state.TrainConnState
19, // 15: state.TrainMapState.trainDynamicConfig:type_name -> state.TrainDynamicConfigMqtt 19, // 15: state.TrainMapState.trainDynamicConfig:type_name -> state.TrainDynamicConfigMqtt
20, // 16: state.TrainMapState.trainEndsA:type_name -> state.TrainEndsStateMqtt 20, // 16: state.TrainMapState.trainEndsA:type_name -> state.TrainEndsStateMqtt
@ -5156,44 +5250,46 @@ var file_device_state_proto_depIdxs = []int32{
18, // 18: state.TrainMapState.btmState:type_name -> state.BTMState 18, // 18: state.TrainMapState.btmState:type_name -> state.BTMState
13, // 19: state.TrainMapState.connState:type_name -> state.TrainConnState 13, // 19: state.TrainMapState.connState:type_name -> state.TrainConnState
26, // 20: state.PsdState.asdStates:type_name -> state.AsdState 26, // 20: state.PsdState.asdStates:type_name -> state.AsdState
48, // 21: state.PsdState.param:type_name -> request.PsdParam 49, // 21: state.PsdState.param:type_name -> request.PsdParam
21, // 22: state.MkxJState.replyState:type_name -> state.ReplyState 21, // 22: state.MkxJState.replyState:type_name -> state.ReplyState
49, // 23: state.BaliseState.km:type_name -> graphicData.KilometerSystem 50, // 23: state.BaliseState.km:type_name -> graphicData.KilometerSystem
39, // 24: state.StationQc.qdStates:type_name -> state.StationQc.State 40, // 24: state.StationQc.qdStates:type_name -> state.StationQc.State
39, // 25: state.StationQc.cjStates:type_name -> state.StationQc.State 40, // 25: state.StationQc.cjStates:type_name -> state.StationQc.State
17, // 26: state.VariationStatus.updatedTrain:type_name -> state.TrainMapState 51, // 26: state.CkmState.param:type_name -> request.CkmParam
8, // 27: state.VariationStatus.updatedSwitch:type_name -> state.SwitchState 17, // 27: state.VariationStatus.updatedTrain:type_name -> state.TrainMapState
7, // 28: state.VariationStatus.updatedSection:type_name -> state.SectionState 8, // 28: state.VariationStatus.updatedSwitch:type_name -> state.SwitchState
21, // 29: state.VariationStatus.updatedReply:type_name -> state.ReplyState 7, // 29: state.VariationStatus.updatedSection:type_name -> state.SectionState
17, // 30: state.AllDevicesStatus.trainState:type_name -> state.TrainMapState 21, // 30: state.VariationStatus.updatedReply:type_name -> state.ReplyState
8, // 31: state.AllDevicesStatus.switchState:type_name -> state.SwitchState 17, // 31: state.AllDevicesStatus.trainState:type_name -> state.TrainMapState
7, // 32: state.AllDevicesStatus.sectionState:type_name -> state.SectionState 8, // 32: state.AllDevicesStatus.switchState:type_name -> state.SwitchState
21, // 33: state.AllDevicesStatus.replyState:type_name -> state.ReplyState 7, // 33: state.AllDevicesStatus.sectionState:type_name -> state.SectionState
9, // 34: state.AllDevicesStatus.signalState:type_name -> state.SignalState 21, // 34: state.AllDevicesStatus.replyState:type_name -> state.ReplyState
22, // 35: state.AllDevicesStatus.buttonState:type_name -> state.ButtonState 9, // 35: state.AllDevicesStatus.signalState:type_name -> state.SignalState
23, // 36: state.AllDevicesStatus.AlarmState:type_name -> state.AlarmState 22, // 36: state.AllDevicesStatus.buttonState:type_name -> state.ButtonState
24, // 37: state.AllDevicesStatus.LightState:type_name -> state.LightState 23, // 37: state.AllDevicesStatus.AlarmState:type_name -> state.AlarmState
25, // 38: state.AllDevicesStatus.psdState:type_name -> state.PsdState 24, // 38: state.AllDevicesStatus.LightState:type_name -> state.LightState
27, // 39: state.AllDevicesStatus.KeyState:type_name -> state.KeyState 25, // 39: state.AllDevicesStatus.psdState:type_name -> state.PsdState
11, // 40: state.AllDevicesStatus.platformState:type_name -> state.PlatformState 27, // 40: state.AllDevicesStatus.KeyState:type_name -> state.KeyState
29, // 41: state.AllDevicesStatus.baliseState:type_name -> state.BaliseState 11, // 41: state.AllDevicesStatus.platformState:type_name -> state.PlatformState
30, // 42: state.AllDevicesStatus.stationQc:type_name -> state.StationQc 29, // 42: state.AllDevicesStatus.baliseState:type_name -> state.BaliseState
31, // 43: state.PushedDevicesStatus.varStatus:type_name -> state.VariationStatus 30, // 43: state.AllDevicesStatus.stationQc:type_name -> state.StationQc
32, // 44: state.PushedDevicesStatus.allStatus:type_name -> state.AllDevicesStatus 31, // 44: state.AllDevicesStatus.ckmStates:type_name -> state.CkmState
3, // 45: state.SimulationStatus.state:type_name -> state.SimulationStatus.SimulationState 32, // 45: state.PushedDevicesStatus.varStatus:type_name -> state.VariationStatus
36, // 46: state.SimulationThirdPartyApiService.states:type_name -> state.SimulationThirdPartyApiServiceState 33, // 46: state.PushedDevicesStatus.allStatus:type_name -> state.AllDevicesStatus
4, // 47: state.SimulationThirdPartyApiServiceState.type:type_name -> state.SimulationThirdPartyApiService.Type 3, // 47: state.SimulationStatus.state:type_name -> state.SimulationStatus.SimulationState
5, // 48: state.SimulationThirdPartyApiServiceState.state:type_name -> state.SimulationThirdPartyApiService.State 37, // 48: state.SimulationThirdPartyApiService.states:type_name -> state.SimulationThirdPartyApiServiceState
40, // 49: state.TrainControlState.ebutton:type_name -> state.TrainControlState.EmergentButton 4, // 49: state.SimulationThirdPartyApiServiceState.type:type_name -> state.SimulationThirdPartyApiService.Type
41, // 50: state.TrainControlState.driverKey:type_name -> state.TrainControlState.DriverKeySwitch 5, // 50: state.SimulationThirdPartyApiServiceState.state:type_name -> state.SimulationThirdPartyApiService.State
42, // 51: state.TrainControlState.dirKey:type_name -> state.TrainControlState.DirectionKeySwitch 41, // 51: state.TrainControlState.ebutton:type_name -> state.TrainControlState.EmergentButton
43, // 52: state.TrainControlState.pushHandler:type_name -> state.TrainControlState.PushHandler 42, // 52: state.TrainControlState.driverKey:type_name -> state.TrainControlState.DriverKeySwitch
50, // 53: state.TrainControlState.DriverKeySwitch.dt:type_name -> request.DriverType 43, // 53: state.TrainControlState.dirKey:type_name -> state.TrainControlState.DirectionKeySwitch
54, // [54:54] is the sub-list for method output_type 44, // 54: state.TrainControlState.pushHandler:type_name -> state.TrainControlState.PushHandler
54, // [54:54] is the sub-list for method input_type 52, // 55: state.TrainControlState.DriverKeySwitch.dt:type_name -> request.DriverType
54, // [54:54] is the sub-list for extension type_name 56, // [56:56] is the sub-list for method output_type
54, // [54:54] is the sub-list for extension extendee 56, // [56:56] is the sub-list for method input_type
0, // [0:54] is the sub-list for field type_name 56, // [56:56] is the sub-list for extension type_name
56, // [56:56] is the sub-list for extension extendee
0, // [0:56] is the sub-list for field type_name
} }
func init() { file_device_state_proto_init() } func init() { file_device_state_proto_init() }
@ -5503,7 +5599,7 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VariationStatus); i { switch v := v.(*CkmState); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -5515,7 +5611,7 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AllDevicesStatus); i { switch v := v.(*VariationStatus); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -5527,7 +5623,7 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PushedDevicesStatus); i { switch v := v.(*AllDevicesStatus); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -5539,7 +5635,7 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulationStatus); i { switch v := v.(*PushedDevicesStatus); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -5551,7 +5647,7 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulationThirdPartyApiService); i { switch v := v.(*SimulationStatus); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -5563,7 +5659,7 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulationThirdPartyApiServiceState); i { switch v := v.(*SimulationThirdPartyApiService); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -5575,6 +5671,18 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SimulationThirdPartyApiServiceState); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState); i { switch v := v.(*TrainControlState); i {
case 0: case 0:
return &v.state return &v.state
@ -5586,7 +5694,7 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StationQc_State); i { switch v := v.(*StationQc_State); i {
case 0: case 0:
return &v.state return &v.state
@ -5598,7 +5706,7 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_EmergentButton); i { switch v := v.(*TrainControlState_EmergentButton); i {
case 0: case 0:
return &v.state return &v.state
@ -5610,7 +5718,7 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_DriverKeySwitch); i { switch v := v.(*TrainControlState_DriverKeySwitch); i {
case 0: case 0:
return &v.state return &v.state
@ -5622,7 +5730,7 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_DirectionKeySwitch); i { switch v := v.(*TrainControlState_DirectionKeySwitch); i {
case 0: case 0:
return &v.state return &v.state
@ -5634,7 +5742,7 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_PushHandler); i { switch v := v.(*TrainControlState_PushHandler); i {
case 0: case 0:
return &v.state return &v.state
@ -5653,7 +5761,7 @@ func file_device_state_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_device_state_proto_rawDesc, RawDescriptor: file_device_state_proto_rawDesc,
NumEnums: 6, NumEnums: 6,
NumMessages: 38, NumMessages: 39,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -59,6 +59,10 @@ func NewSfpMs(vs *memory.VerifySimulation, mapId int32) ms_api.MsgTask {
if err != nil { if err != nil {
return err return err
} }
ckmStates, err := collectCkmStates(vs.World, mapId)
if err != nil {
return err
}
ststes := &state_proto.PushedDevicesStatus{ ststes := &state_proto.PushedDevicesStatus{
All: true, All: true,
AllStatus: &state_proto.AllDevicesStatus{ AllStatus: &state_proto.AllDevicesStatus{
@ -70,6 +74,7 @@ func NewSfpMs(vs *memory.VerifySimulation, mapId int32) ms_api.MsgTask {
SectionState: sectionStates, SectionState: sectionStates,
PlatformState: platformStates, PlatformState: platformStates,
BaliseState: baliseStates, BaliseState: baliseStates,
CkmStates: ckmStates,
}, },
} }
err = mqtt.GetMsgClient().PubSfpState(vs.SimulationId, mapId, ststes) err = mqtt.GetMsgClient().PubSfpState(vs.SimulationId, mapId, ststes)
@ -80,6 +85,30 @@ func NewSfpMs(vs *memory.VerifySimulation, mapId int32) ms_api.MsgTask {
}, 1000*time.Millisecond) }, 1000*time.Millisecond)
} }
func collectCkmStates(world ecs.World, mapId int32) ([]*state_proto.CkmState, error) {
uidStructure := memory.QueryUidStructure[*memory.StationUidStructure](mapId)
var ckmStates []*state_proto.CkmState
for id, structure := range uidStructure.CkmIds {
entry, ok := entity.GetEntityByUid(world, structure.Uid)
if ok {
circuit := component.CkmCircuitType.Get(entry)
mgj := component.BitStateType.Get(circuit.MGJ).Val
ckmParam := appcomponent.CkmParamType.Get(entry)
if ckmParam == nil {
ckmParam = &request_proto.CkmParam{}
}
stateLoss := entry.HasComponent(component.CkmStateLossTag)
ckmStates = append(ckmStates, &state_proto.CkmState{
Id: id,
Mgj: mgj,
Param: ckmParam,
StateLoss: stateLoss,
})
}
}
return ckmStates, nil
}
// 收集应答器状态 // 收集应答器状态
func collectBaliseStates(world ecs.World, mapId int32) ([]*state_proto.BaliseState, error) { func collectBaliseStates(world ecs.World, mapId int32) ([]*state_proto.BaliseState, error) {
uidStructure := memory.QueryUidStructure[*memory.StationUidStructure](mapId) uidStructure := memory.QueryUidStructure[*memory.StationUidStructure](mapId)

@ -1 +1 @@
Subproject commit 9c420a826ce6a387384ff3b16f2097036f1d094d Subproject commit 8086bc2c8c61fe43878051544624aff69aaacbc2