列车控制支持门模式更新
All checks were successful
local-test分支打包构建docker并发布运行 / Docker-Build (push) Successful in 3m15s

This commit is contained in:
tiger_zhou 2024-08-22 13:12:03 +08:00
parent f8517f0ead
commit fa600673a6
11 changed files with 1627 additions and 1389 deletions

File diff suppressed because it is too large Load Diff

View File

@ -74,6 +74,7 @@ type TccKey_TccKeyType int32
const ( const (
TccKey_driverControllerActivationClint TccKey_TccKeyType = 0 //司控器激活端 TccKey_driverControllerActivationClint TccKey_TccKeyType = 0 //司控器激活端
TccKey_frontAndRearDirectionalControl TccKey_TccKeyType = 1 //前后方向控制 TccKey_frontAndRearDirectionalControl TccKey_TccKeyType = 1 //前后方向控制
TccKey_trainDoorMode TccKey_TccKeyType = 2 //列车门模式
) )
// Enum value maps for TccKey_TccKeyType. // Enum value maps for TccKey_TccKeyType.
@ -81,10 +82,12 @@ var (
TccKey_TccKeyType_name = map[int32]string{ TccKey_TccKeyType_name = map[int32]string{
0: "driverControllerActivationClint", 0: "driverControllerActivationClint",
1: "frontAndRearDirectionalControl", 1: "frontAndRearDirectionalControl",
2: "trainDoorMode",
} }
TccKey_TccKeyType_value = map[string]int32{ TccKey_TccKeyType_value = map[string]int32{
"driverControllerActivationClint": 0, "driverControllerActivationClint": 0,
"frontAndRearDirectionalControl": 1, "frontAndRearDirectionalControl": 1,
"trainDoorMode": 2,
} }
) )
@ -591,7 +594,7 @@ var file_tccGraphics_proto_rawDesc = []byte{
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1a, 0x0a,
0x08, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
0x08, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x06, 0x54, 0x63, 0x08, 0x66, 0x6f, 0x6e, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x06, 0x54, 0x63,
0x63, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61,
0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63,
@ -600,37 +603,38 @@ var file_tccGraphics_proto_rawDesc = []byte{
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x63, 0x63, 0x47, 0x72, 0x61, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x74, 0x63, 0x63, 0x47, 0x72, 0x61,
0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x63, 0x63, 0x4b, 0x65, 0x79, 0x2e, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x63, 0x63, 0x4b, 0x65, 0x79, 0x2e,
0x54, 0x63, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x54, 0x63, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
0x22, 0x55, 0x0a, 0x0a, 0x54, 0x63, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x22, 0x68, 0x0a, 0x0a, 0x54, 0x63, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23,
0x0a, 0x1f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x0a, 0x1f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x6e, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x69, 0x6e,
0x74, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x52, 0x74, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x52,
0x65, 0x61, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x65, 0x61, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x10, 0x01, 0x22, 0x50, 0x0a, 0x09, 0x54, 0x63, 0x63, 0x48, 0x61, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x69, 0x6e,
0x6e, 0x64, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x44, 0x6f, 0x6f, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x10, 0x02, 0x22, 0x50, 0x0a, 0x09, 0x54, 0x63,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x63, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x08, 0x54, 0x63, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65,
0x63, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xd6, 0x01, 0x0a,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x08, 0x54, 0x63, 0x63, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6d,
0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x61, 0x70,
0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x6c, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f,
0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x3f,
0x1f, 0x2e, 0x74, 0x63, 0x63, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44, 0x61, 0x74, 0x61, 0x0a, 0x0a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01,
0x2e, 0x54, 0x63, 0x63, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x74, 0x63, 0x63, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x44,
0x52, 0x0a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x63, 0x63, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f,
0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x6c, 0x6f, 0x72, 0x52, 0x0a, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12,
0x08, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x22, 0x20, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04,
0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4c, 0x65, 0x76, 0x65,
0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74,
0x74, 0x65, 0x2a, 0x2f, 0x0a, 0x0f, 0x54, 0x63, 0x63, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c,
0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x09, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x10, 0x00, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2a, 0x2f, 0x0a, 0x0f, 0x54, 0x63, 0x63, 0x45, 0x6c, 0x65, 0x6d,
0x12, 0x07, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x62, 0x6c, 0x75, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x09, 0x0a, 0x05, 0x67, 0x72, 0x65, 0x65,
0x65, 0x10, 0x02, 0x42, 0x2d, 0x5a, 0x2b, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x63, 0x6e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d, 0x72, 0x74, 0x73, 0x74, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x62, 0x6c, 0x75, 0x65, 0x10, 0x02, 0x42, 0x2d, 0x5a, 0x2b, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e,
0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x6b, 0x2e, 0x63, 0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d, 0x72, 0x74, 0x73, 0x74, 0x73, 0x2d,
0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (

View File

@ -542,6 +542,7 @@ const (
TrainControl_DRIVER_KEY_SWITCH TrainControl_TrainControlType = 1 //驾驶端钥匙 TrainControl_DRIVER_KEY_SWITCH TrainControl_TrainControlType = 1 //驾驶端钥匙
TrainControl_DIRECTION_KEY_SWITCH TrainControl_TrainControlType = 2 //方向钥匙 TrainControl_DIRECTION_KEY_SWITCH TrainControl_TrainControlType = 2 //方向钥匙
TrainControl_HANDLER TrainControl_TrainControlType = 3 //手柄 TrainControl_HANDLER TrainControl_TrainControlType = 3 //手柄
TrainControl_TRAIN_DOOR_MODE_CHANGE TrainControl_TrainControlType = 4 //列车门模式
) )
// Enum value maps for TrainControl_TrainControlType. // Enum value maps for TrainControl_TrainControlType.
@ -551,12 +552,14 @@ var (
1: "DRIVER_KEY_SWITCH", 1: "DRIVER_KEY_SWITCH",
2: "DIRECTION_KEY_SWITCH", 2: "DIRECTION_KEY_SWITCH",
3: "HANDLER", 3: "HANDLER",
4: "TRAIN_DOOR_MODE_CHANGE",
} }
TrainControl_TrainControlType_value = map[string]int32{ TrainControl_TrainControlType_value = map[string]int32{
"EMERGENT_BUTTON": 0, "EMERGENT_BUTTON": 0,
"DRIVER_KEY_SWITCH": 1, "DRIVER_KEY_SWITCH": 1,
"DIRECTION_KEY_SWITCH": 2, "DIRECTION_KEY_SWITCH": 2,
"HANDLER": 3, "HANDLER": 3,
"TRAIN_DOOR_MODE_CHANGE": 4,
} }
) )
@ -587,52 +590,52 @@ func (TrainControl_TrainControlType) EnumDescriptor() ([]byte, []int) {
return file_request_proto_rawDescGZIP(), []int{14, 0} return file_request_proto_rawDescGZIP(), []int{14, 0}
} }
type TrainControl_Direction int32 type TrainControl_KeyLocation int32
const ( const (
TrainControl_BACKWARD TrainControl_Direction = 0 //后退 TrainControl_KL_END TrainControl_KeyLocation = 0 //方向:后退 门模式:mm模式
TrainControl_FORWARD TrainControl_Direction = 1 //前进 TrainControl_KL_FONT TrainControl_KeyLocation = 1 //方向:前进 门模式:AA模式
TrainControl_NEUTRALWARD TrainControl_Direction = 2 //中位 TrainControl_KL_CENTER TrainControl_KeyLocation = 2 //方向:中位 门模式:AM模式
) )
// Enum value maps for TrainControl_Direction. // Enum value maps for TrainControl_KeyLocation.
var ( var (
TrainControl_Direction_name = map[int32]string{ TrainControl_KeyLocation_name = map[int32]string{
0: "BACKWARD", 0: "KL_END",
1: "FORWARD", 1: "KL_FONT",
2: "NEUTRALWARD", 2: "KL_CENTER",
} }
TrainControl_Direction_value = map[string]int32{ TrainControl_KeyLocation_value = map[string]int32{
"BACKWARD": 0, "KL_END": 0,
"FORWARD": 1, "KL_FONT": 1,
"NEUTRALWARD": 2, "KL_CENTER": 2,
} }
) )
func (x TrainControl_Direction) Enum() *TrainControl_Direction { func (x TrainControl_KeyLocation) Enum() *TrainControl_KeyLocation {
p := new(TrainControl_Direction) p := new(TrainControl_KeyLocation)
*p = x *p = x
return p return p
} }
func (x TrainControl_Direction) String() string { func (x TrainControl_KeyLocation) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
} }
func (TrainControl_Direction) Descriptor() protoreflect.EnumDescriptor { func (TrainControl_KeyLocation) Descriptor() protoreflect.EnumDescriptor {
return file_request_proto_enumTypes[11].Descriptor() return file_request_proto_enumTypes[11].Descriptor()
} }
func (TrainControl_Direction) Type() protoreflect.EnumType { func (TrainControl_KeyLocation) Type() protoreflect.EnumType {
return &file_request_proto_enumTypes[11] return &file_request_proto_enumTypes[11]
} }
func (x TrainControl_Direction) Number() protoreflect.EnumNumber { func (x TrainControl_KeyLocation) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x) return protoreflect.EnumNumber(x)
} }
// Deprecated: Use TrainControl_Direction.Descriptor instead. // Deprecated: Use TrainControl_KeyLocation.Descriptor instead.
func (TrainControl_Direction) EnumDescriptor() ([]byte, []int) { func (TrainControl_KeyLocation) EnumDescriptor() ([]byte, []int) {
return file_request_proto_rawDescGZIP(), []int{14, 1} return file_request_proto_rawDescGZIP(), []int{14, 1}
} }
@ -1688,7 +1691,7 @@ type TrainControl struct {
ControlType TrainControl_TrainControlType `protobuf:"varint,4,opt,name=controlType,proto3,enum=request.TrainControl_TrainControlType" json:"controlType,omitempty"` ControlType TrainControl_TrainControlType `protobuf:"varint,4,opt,name=controlType,proto3,enum=request.TrainControl_TrainControlType" json:"controlType,omitempty"`
ControlButton *TrainControl_ControlButton `protobuf:"bytes,5,opt,name=controlButton,proto3" json:"controlButton,omitempty"` // 控制按钮 ControlButton *TrainControl_ControlButton `protobuf:"bytes,5,opt,name=controlButton,proto3" json:"controlButton,omitempty"` // 控制按钮
DriverKey *TrainControl_DriverKeySwitch `protobuf:"bytes,6,opt,name=driverKey,proto3" json:"driverKey,omitempty"` DriverKey *TrainControl_DriverKeySwitch `protobuf:"bytes,6,opt,name=driverKey,proto3" json:"driverKey,omitempty"`
DirKey *TrainControl_DirectionKeySwitch `protobuf:"bytes,7,opt,name=dirKey,proto3" json:"dirKey,omitempty"` //方向 SwitchKey *TrainControl_SwitchKeyChange `protobuf:"bytes,7,opt,name=switchKey,proto3" json:"switchKey,omitempty"` //方向/门模式
Handler *TrainControl_PushHandler `protobuf:"bytes,8,opt,name=handler,proto3" json:"handler,omitempty"` //手柄 Handler *TrainControl_PushHandler `protobuf:"bytes,8,opt,name=handler,proto3" json:"handler,omitempty"` //手柄
} }
@ -1766,9 +1769,9 @@ func (x *TrainControl) GetDriverKey() *TrainControl_DriverKeySwitch {
return nil return nil
} }
func (x *TrainControl) GetDirKey() *TrainControl_DirectionKeySwitch { func (x *TrainControl) GetSwitchKey() *TrainControl_SwitchKeyChange {
if x != nil { if x != nil {
return x.DirKey return x.SwitchKey
} }
return nil return nil
} }
@ -2259,16 +2262,16 @@ func (x *TrainControl_DriverKeySwitch) GetVal() bool {
return false return false
} }
type TrainControl_DirectionKeySwitch struct { type TrainControl_SwitchKeyChange struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Val uint32 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` //0=后1=前,2=中位 Val uint32 `protobuf:"varint,1,opt,name=val,proto3" json:"val,omitempty"` //0=后(门模式:MM)1=前(门模式:AA),2=中位(门模式:AM)
} }
func (x *TrainControl_DirectionKeySwitch) Reset() { func (x *TrainControl_SwitchKeyChange) Reset() {
*x = TrainControl_DirectionKeySwitch{} *x = TrainControl_SwitchKeyChange{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_request_proto_msgTypes[24] mi := &file_request_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -2276,13 +2279,13 @@ func (x *TrainControl_DirectionKeySwitch) Reset() {
} }
} }
func (x *TrainControl_DirectionKeySwitch) String() string { func (x *TrainControl_SwitchKeyChange) String() string {
return protoimpl.X.MessageStringOf(x) return protoimpl.X.MessageStringOf(x)
} }
func (*TrainControl_DirectionKeySwitch) ProtoMessage() {} func (*TrainControl_SwitchKeyChange) ProtoMessage() {}
func (x *TrainControl_DirectionKeySwitch) ProtoReflect() protoreflect.Message { func (x *TrainControl_SwitchKeyChange) ProtoReflect() protoreflect.Message {
mi := &file_request_proto_msgTypes[24] mi := &file_request_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil { if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -2294,12 +2297,12 @@ func (x *TrainControl_DirectionKeySwitch) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x) return mi.MessageOf(x)
} }
// Deprecated: Use TrainControl_DirectionKeySwitch.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControl_SwitchKeyChange.ProtoReflect.Descriptor instead.
func (*TrainControl_DirectionKeySwitch) Descriptor() ([]byte, []int) { func (*TrainControl_SwitchKeyChange) Descriptor() ([]byte, []int) {
return file_request_proto_rawDescGZIP(), []int{14, 3} return file_request_proto_rawDescGZIP(), []int{14, 3}
} }
func (x *TrainControl_DirectionKeySwitch) GetVal() uint32 { func (x *TrainControl_SwitchKeyChange) GetVal() uint32 {
if x != nil { if x != nil {
return x.Val return x.Val
} }
@ -2482,7 +2485,7 @@ var file_request_proto_rawDesc = []byte{
0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x2e, 0x50, 0x73, 0x64, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x2e, 0x50, 0x73, 0x64, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c,
0x74, 0x22, 0xa2, 0x06, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x74, 0x22, 0xbd, 0x06, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72,
0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x6f, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x49, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x49,
@ -2502,89 +2505,90 @@ var file_request_proto_rawDesc = []byte{
0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54,
0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x2e, 0x44, 0x72, 0x69, 0x76,
0x65, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x09, 0x64, 0x72, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x09, 0x64, 0x72, 0x69,
0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x06, 0x64, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68,
0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x71, 0x75,
0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 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, 0x3b, 0x0a, 0x07, 0x68, 0x61, 0x6e, 0x64,
0x6c, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52, 0x07, 0x68, 0x61, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x6e, 0x64, 0x6c, 0x65, 0x72, 0x1a, 0x27, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x07, 0x68,
0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72,
0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, 0x28, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
0x0a, 0x0e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x72, 0x6f, 0x6c, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52,
0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x07, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x1a, 0x27, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74,
0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, 0x23, 0x0a, 0x0f, 0x44, 0x72, 0x69, 0x76, 0x72, 0x6f, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74,
0x65, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76,
0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x26, 0x0a, 0x65, 0x1a, 0x28, 0x0a, 0x0e, 0x45, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x74,
0x12, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20,
0x74, 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, 0x23, 0x0a, 0x0f, 0x44,
0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x10,
0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c,
0x1a, 0x23, 0x0a, 0x0f, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x43, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x1f, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x1f, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e,
0x64, 0x6c, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x65, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x05, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x81, 0x01, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x69, 0x6e,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x45,
0x45, 0x52, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x4d, 0x45, 0x52, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x55, 0x54, 0x54, 0x4f, 0x4e, 0x10, 0x00,
0x15, 0x0a, 0x11, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x57, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x53,
0x49, 0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x49, 0x52, 0x45, 0x43,
0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x02, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10,
0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x52, 0x10, 0x03, 0x22, 0x37, 0x0a, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1a,
0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x41, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x44, 0x4f, 0x4f, 0x52, 0x5f, 0x4d, 0x4f, 0x44,
0x43, 0x4b, 0x57, 0x41, 0x52, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x4f, 0x52, 0x57, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x04, 0x22, 0x35, 0x0a, 0x0b, 0x4b, 0x65,
0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x41, 0x4c, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x4c, 0x5f,
0x57, 0x41, 0x52, 0x44, 0x10, 0x02, 0x22, 0xc6, 0x01, 0x0a, 0x0f, 0x43, 0x6b, 0x6d, 0x4f, 0x70, 0x45, 0x4e, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x4c, 0x5f, 0x46, 0x4f, 0x4e, 0x54,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4b, 0x4c, 0x5f, 0x43, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10,
0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x02, 0x22, 0xc6, 0x01, 0x0a, 0x0f, 0x43, 0x6b, 0x6d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69,
0x52, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74,
0x0a, 0x05, 0x6d, 0x61, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6d,
0x61, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x70,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x70, 0x49, 0x64, 0x12,
0x12, 0x34, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x09, 0x6f,
0x6d, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x6d, 0x2e, 0x4f, 0x70, 0x65,
0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x43, 0x6b, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x6e, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
0x82, 0x01, 0x0a, 0x03, 0x43, 0x6b, 0x6d, 0x22, 0x29, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x6d, 0x50, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x82, 0x01, 0x0a, 0x03, 0x43,
0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x6b, 0x6d, 0x22, 0x29, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x10, 0x01, 0x22, 0x27, 0x0a, 0x05, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x0d, 0x0a, 0x09, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d,
0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x5f, 0x4b, 0x4d, 0x10, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x10, 0x01, 0x22, 0x27, 0x0a,
0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x5f, 0x47, 0x4d, 0x10, 0x02, 0x22, 0x27, 0x0a, 0x05, 0x46, 0x05, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x5f, 0x4e, 0x4f, 0x4e, 0x45,
0x61, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x5f, 0x4b, 0x4d, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04,
0x00, 0x12, 0x11, 0x0a, 0x0d, 0x46, 0x41, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x4c, 0x6f, 0x46, 0x5f, 0x47, 0x4d, 0x10, 0x02, 0x22, 0x27, 0x0a, 0x05, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12,
0x73, 0x73, 0x10, 0x01, 0x22, 0x5e, 0x0a, 0x08, 0x43, 0x6b, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d,
0x12, 0x28, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x41, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x4c, 0x6f, 0x73, 0x73, 0x10, 0x01, 0x22,
0x12, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x6d, 0x2e, 0x46, 0x6f, 0x5e, 0x0a, 0x08, 0x43, 0x6b, 0x6d, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x05, 0x66,
0x72, 0x63, 0x65, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x66, 0x61, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x65, 0x71,
0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x6d, 0x2e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x05,
0x65, 0x73, 0x74, 0x2e, 0x43, 0x6b, 0x6d, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02,
0x61, 0x75, 0x6c, 0x74, 0x22, 0xc6, 0x01, 0x0a, 0x0f, 0x58, 0x63, 0x6a, 0x4f, 0x70, 0x65, 0x72, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43,
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6b, 0x6d, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22,
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0xc6, 0x01, 0x0a, 0x0f, 0x58, 0x63, 0x6a, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x65, 0x71, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
0x6d, 0x61, 0x70, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x70, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6d, 0x75, 0x6c,
0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x70, 0x49, 0x64,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x61, 0x70, 0x49, 0x64, 0x12, 0x1a, 0x0a,
0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52,
0x0e, 0x32, 0x16, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x63, 0x6a, 0x2e, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x09, 0x6f, 0x70, 0x65,
0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x72,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x63, 0x6a, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61,
0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
0x6a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x54, 0x0a, 0x27, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
0x03, 0x58, 0x63, 0x6a, 0x22, 0x29, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x63, 0x6a, 0x50, 0x61, 0x72, 0x61,
0x6e, 0x12, 0x0d, 0x0a, 0x09, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x6d, 0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x54, 0x0a, 0x03, 0x58, 0x63, 0x6a, 0x22,
0x12, 0x0d, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x10, 0x01, 0x22, 0x29, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0d, 0x0a, 0x09,
0x22, 0x0a, 0x05, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x5f, 0x4e, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53,
0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x5f, 0x46, 0x61, 0x75, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x10, 0x01, 0x22, 0x22, 0x0a, 0x05, 0x46, 0x61,
0x74, 0x10, 0x01, 0x22, 0x34, 0x0a, 0x08, 0x58, 0x63, 0x6a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00,
0x28, 0x0a, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x5f, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x10, 0x01, 0x22, 0x34,
0x2e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x63, 0x6a, 0x2e, 0x46, 0x61, 0x75, 0x0a, 0x08, 0x58, 0x63, 0x6a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x05, 0x66, 0x61,
0x6c, 0x74, 0x52, 0x05, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x30, 0x5a, 0x2e, 0x6a, 0x6f, 0x79, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x72, 0x65, 0x71, 0x75,
0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x63, 0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d, 0x72, 0x74, 0x73, 0x65, 0x73, 0x74, 0x2e, 0x58, 0x63, 0x6a, 0x2e, 0x46, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x66,
0x74, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x30, 0x5a, 0x2e, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e,
0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x63, 0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d, 0x72, 0x74, 0x73, 0x74, 0x73, 0x2d, 0x73, 0x65,
0x74, 0x6f, 0x33, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
} }
var ( var (
@ -2613,7 +2617,7 @@ var file_request_proto_goTypes = []interface{}{
(Psd_Force)(0), // 8: request.Psd.Force (Psd_Force)(0), // 8: request.Psd.Force
(Psd_Fault)(0), // 9: request.Psd.Fault (Psd_Fault)(0), // 9: request.Psd.Fault
(TrainControl_TrainControlType)(0), // 10: request.TrainControl.TrainControlType (TrainControl_TrainControlType)(0), // 10: request.TrainControl.TrainControlType
(TrainControl_Direction)(0), // 11: request.TrainControl.Direction (TrainControl_KeyLocation)(0), // 11: request.TrainControl.KeyLocation
(Ckm_Operation)(0), // 12: request.Ckm.Operation (Ckm_Operation)(0), // 12: request.Ckm.Operation
(Ckm_Force)(0), // 13: request.Ckm.Force (Ckm_Force)(0), // 13: request.Ckm.Force
(Ckm_Fault)(0), // 14: request.Ckm.Fault (Ckm_Fault)(0), // 14: request.Ckm.Fault
@ -2643,7 +2647,7 @@ var file_request_proto_goTypes = []interface{}{
(*TrainControl_ControlButton)(nil), // 38: request.TrainControl.ControlButton (*TrainControl_ControlButton)(nil), // 38: request.TrainControl.ControlButton
(*TrainControl_EmergentButton)(nil), // 39: request.TrainControl.EmergentButton (*TrainControl_EmergentButton)(nil), // 39: request.TrainControl.EmergentButton
(*TrainControl_DriverKeySwitch)(nil), // 40: request.TrainControl.DriverKeySwitch (*TrainControl_DriverKeySwitch)(nil), // 40: request.TrainControl.DriverKeySwitch
(*TrainControl_DirectionKeySwitch)(nil), // 41: request.TrainControl.DirectionKeySwitch (*TrainControl_SwitchKeyChange)(nil), // 41: request.TrainControl.SwitchKeyChange
(*TrainControl_PushHandler)(nil), // 42: request.TrainControl.PushHandler (*TrainControl_PushHandler)(nil), // 42: request.TrainControl.PushHandler
} }
var file_request_proto_depIdxs = []int32{ var file_request_proto_depIdxs = []int32{
@ -2664,7 +2668,7 @@ var file_request_proto_depIdxs = []int32{
10, // 14: request.TrainControl.controlType:type_name -> request.TrainControl.TrainControlType 10, // 14: request.TrainControl.controlType:type_name -> request.TrainControl.TrainControlType
38, // 15: request.TrainControl.controlButton:type_name -> request.TrainControl.ControlButton 38, // 15: request.TrainControl.controlButton:type_name -> request.TrainControl.ControlButton
40, // 16: request.TrainControl.driverKey:type_name -> request.TrainControl.DriverKeySwitch 40, // 16: request.TrainControl.driverKey:type_name -> request.TrainControl.DriverKeySwitch
41, // 17: request.TrainControl.dirKey:type_name -> request.TrainControl.DirectionKeySwitch 41, // 17: request.TrainControl.switchKey:type_name -> request.TrainControl.SwitchKeyChange
42, // 18: request.TrainControl.handler:type_name -> request.TrainControl.PushHandler 42, // 18: request.TrainControl.handler:type_name -> request.TrainControl.PushHandler
12, // 19: request.CkmOperationReq.operation:type_name -> request.Ckm.Operation 12, // 19: request.CkmOperationReq.operation:type_name -> request.Ckm.Operation
34, // 20: request.CkmOperationReq.param:type_name -> request.CkmParam 34, // 20: request.CkmOperationReq.param:type_name -> request.CkmParam
@ -2975,7 +2979,7 @@ func file_request_proto_init() {
} }
} }
file_request_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { file_request_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControl_DirectionKeySwitch); i { switch v := v.(*TrainControl_SwitchKeyChange); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:

View File

@ -5074,7 +5074,8 @@ type TrainControlState struct {
Buttons map[string]*TrainControlState_ControlButton `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Buttons map[string]*TrainControlState_ControlButton `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
DriverKey []*TrainControlState_DriverKeySwitch `protobuf:"bytes,2,rep,name=driverKey,proto3" json:"driverKey,omitempty"` //驾驶端激活 DriverKey []*TrainControlState_DriverKeySwitch `protobuf:"bytes,2,rep,name=driverKey,proto3" json:"driverKey,omitempty"` //驾驶端激活
DirKey *TrainControlState_DirectionKeySwitch `protobuf:"bytes,3,opt,name=dirKey,proto3" json:"dirKey,omitempty"` //接车运行方向 SwitchKeyMap map[string]*TrainControlState_SwitchKeyChange `protobuf:"bytes,3,rep,name=switchKeyMap,proto3" json:"switchKeyMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// DirectionKeySwitch dirKey = 3; //接车运行方向
PushHandler *TrainControlState_PushHandler `protobuf:"bytes,4,opt,name=pushHandler,proto3" json:"pushHandler,omitempty"` //牵引制动手柄 PushHandler *TrainControlState_PushHandler `protobuf:"bytes,4,opt,name=pushHandler,proto3" json:"pushHandler,omitempty"` //牵引制动手柄
LightMaps map[string]*TrainControlState_ControlLight `protobuf:"bytes,5,rep,name=lightMaps,proto3" json:"lightMaps,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` LightMaps map[string]*TrainControlState_ControlLight `protobuf:"bytes,5,rep,name=lightMaps,proto3" json:"lightMaps,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
LineInitTimeStamp12 int64 `protobuf:"varint,6,opt,name=lineInitTimeStamp12,proto3" json:"lineInitTimeStamp12,omitempty"` //12号线列出初始化时间戳 LineInitTimeStamp12 int64 `protobuf:"varint,6,opt,name=lineInitTimeStamp12,proto3" json:"lineInitTimeStamp12,omitempty"` //12号线列出初始化时间戳
@ -5127,9 +5128,9 @@ func (x *TrainControlState) GetDriverKey() []*TrainControlState_DriverKeySwitch
return nil return nil
} }
func (x *TrainControlState) GetDirKey() *TrainControlState_DirectionKeySwitch { func (x *TrainControlState) GetSwitchKeyMap() map[string]*TrainControlState_SwitchKeyChange {
if x != nil { if x != nil {
return x.DirKey return x.SwitchKeyMap
} }
return nil return nil
} }
@ -5170,7 +5171,7 @@ type TrainControlStateMsg struct {
Buttons []*TrainControlState_ControlButton `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty"` Buttons []*TrainControlState_ControlButton `protobuf:"bytes,1,rep,name=buttons,proto3" json:"buttons,omitempty"`
DriverKey []*TrainControlState_DriverKeySwitch `protobuf:"bytes,2,rep,name=driverKey,proto3" json:"driverKey,omitempty"` //驾驶端激活 DriverKey []*TrainControlState_DriverKeySwitch `protobuf:"bytes,2,rep,name=driverKey,proto3" json:"driverKey,omitempty"` //驾驶端激活
DirKey *TrainControlState_DirectionKeySwitch `protobuf:"bytes,3,opt,name=dirKey,proto3" json:"dirKey,omitempty"` //接车运行方向 SwitchKeys []*TrainControlState_SwitchKeyChange `protobuf:"bytes,3,rep,name=switchKeys,proto3" json:"switchKeys,omitempty"` //接车运行方向
PushHandler *TrainControlState_PushHandler `protobuf:"bytes,4,opt,name=pushHandler,proto3" json:"pushHandler,omitempty"` //牵引制动手柄 PushHandler *TrainControlState_PushHandler `protobuf:"bytes,4,opt,name=pushHandler,proto3" json:"pushHandler,omitempty"` //牵引制动手柄
Lights []*TrainControlState_ControlLight `protobuf:"bytes,5,rep,name=lights,proto3" json:"lights,omitempty"` Lights []*TrainControlState_ControlLight `protobuf:"bytes,5,rep,name=lights,proto3" json:"lights,omitempty"`
} }
@ -5221,9 +5222,9 @@ func (x *TrainControlStateMsg) GetDriverKey() []*TrainControlState_DriverKeySwit
return nil return nil
} }
func (x *TrainControlStateMsg) GetDirKey() *TrainControlState_DirectionKeySwitch { func (x *TrainControlStateMsg) GetSwitchKeys() []*TrainControlState_SwitchKeyChange {
if x != nil { if x != nil {
return x.DirKey return x.SwitchKeys
} }
return nil return nil
} }
@ -5488,7 +5489,7 @@ type TrainControlState_ControlButton struct {
func (x *TrainControlState_ControlButton) Reset() { func (x *TrainControlState_ControlButton) Reset() {
*x = TrainControlState_ControlButton{} *x = TrainControlState_ControlButton{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[46] mi := &file_device_state_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -5501,7 +5502,7 @@ func (x *TrainControlState_ControlButton) String() string {
func (*TrainControlState_ControlButton) ProtoMessage() {} func (*TrainControlState_ControlButton) ProtoMessage() {}
func (x *TrainControlState_ControlButton) ProtoReflect() protoreflect.Message { func (x *TrainControlState_ControlButton) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[46] mi := &file_device_state_proto_msgTypes[47]
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 {
@ -5514,7 +5515,7 @@ func (x *TrainControlState_ControlButton) ProtoReflect() protoreflect.Message {
// Deprecated: Use TrainControlState_ControlButton.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState_ControlButton.ProtoReflect.Descriptor instead.
func (*TrainControlState_ControlButton) Descriptor() ([]byte, []int) { func (*TrainControlState_ControlButton) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{37, 2} return file_device_state_proto_rawDescGZIP(), []int{37, 3}
} }
func (x *TrainControlState_ControlButton) GetId() uint32 { func (x *TrainControlState_ControlButton) GetId() uint32 {
@ -5543,7 +5544,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[47] mi := &file_device_state_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -5556,7 +5557,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[47] mi := &file_device_state_proto_msgTypes[48]
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 {
@ -5569,7 +5570,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{37, 3} return file_device_state_proto_rawDescGZIP(), []int{37, 4}
} }
func (x *TrainControlState_DriverKeySwitch) GetId() uint32 { func (x *TrainControlState_DriverKeySwitch) GetId() uint32 {
@ -5586,32 +5587,32 @@ func (x *TrainControlState_DriverKeySwitch) GetVal() bool {
return false return false
} }
type TrainControlState_DirectionKeySwitch struct { type TrainControlState_SwitchKeyChange struct {
state protoimpl.MessageState state protoimpl.MessageState
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
Val uint32 `protobuf:"varint,2,opt,name=val,proto3" json:"val,omitempty"` //0=后1=前,2=中位 Val uint32 `protobuf:"varint,2,opt,name=val,proto3" json:"val,omitempty"` //0=后(mm)1=前(AA),2=中位(AM)
} }
func (x *TrainControlState_DirectionKeySwitch) Reset() { func (x *TrainControlState_SwitchKeyChange) Reset() {
*x = TrainControlState_DirectionKeySwitch{} *x = TrainControlState_SwitchKeyChange{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[48] mi := &file_device_state_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
} }
func (x *TrainControlState_DirectionKeySwitch) String() string { func (x *TrainControlState_SwitchKeyChange) String() string {
return protoimpl.X.MessageStringOf(x) return protoimpl.X.MessageStringOf(x)
} }
func (*TrainControlState_DirectionKeySwitch) ProtoMessage() {} func (*TrainControlState_SwitchKeyChange) ProtoMessage() {}
func (x *TrainControlState_DirectionKeySwitch) ProtoReflect() protoreflect.Message { func (x *TrainControlState_SwitchKeyChange) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[48] mi := &file_device_state_proto_msgTypes[49]
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 {
@ -5622,19 +5623,19 @@ func (x *TrainControlState_DirectionKeySwitch) ProtoReflect() protoreflect.Messa
return mi.MessageOf(x) return mi.MessageOf(x)
} }
// Deprecated: Use TrainControlState_DirectionKeySwitch.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState_SwitchKeyChange.ProtoReflect.Descriptor instead.
func (*TrainControlState_DirectionKeySwitch) Descriptor() ([]byte, []int) { func (*TrainControlState_SwitchKeyChange) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{37, 4} return file_device_state_proto_rawDescGZIP(), []int{37, 5}
} }
func (x *TrainControlState_DirectionKeySwitch) GetId() uint32 { func (x *TrainControlState_SwitchKeyChange) GetId() uint32 {
if x != nil { if x != nil {
return x.Id return x.Id
} }
return 0 return 0
} }
func (x *TrainControlState_DirectionKeySwitch) GetVal() uint32 { func (x *TrainControlState_SwitchKeyChange) GetVal() uint32 {
if x != nil { if x != nil {
return x.Val return x.Val
} }
@ -5654,7 +5655,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[49] mi := &file_device_state_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -5667,7 +5668,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[49] mi := &file_device_state_proto_msgTypes[50]
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 {
@ -5680,7 +5681,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{37, 5} return file_device_state_proto_rawDescGZIP(), []int{37, 6}
} }
func (x *TrainControlState_PushHandler) GetId() uint32 { func (x *TrainControlState_PushHandler) GetId() uint32 {
@ -5709,7 +5710,7 @@ type TrainControlState_ControlLight struct {
func (x *TrainControlState_ControlLight) Reset() { func (x *TrainControlState_ControlLight) Reset() {
*x = TrainControlState_ControlLight{} *x = TrainControlState_ControlLight{}
if protoimpl.UnsafeEnabled { if protoimpl.UnsafeEnabled {
mi := &file_device_state_proto_msgTypes[50] mi := &file_device_state_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -5722,7 +5723,7 @@ func (x *TrainControlState_ControlLight) String() string {
func (*TrainControlState_ControlLight) ProtoMessage() {} func (*TrainControlState_ControlLight) ProtoMessage() {}
func (x *TrainControlState_ControlLight) ProtoReflect() protoreflect.Message { func (x *TrainControlState_ControlLight) ProtoReflect() protoreflect.Message {
mi := &file_device_state_proto_msgTypes[50] mi := &file_device_state_proto_msgTypes[51]
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 {
@ -5735,7 +5736,7 @@ func (x *TrainControlState_ControlLight) ProtoReflect() protoreflect.Message {
// Deprecated: Use TrainControlState_ControlLight.ProtoReflect.Descriptor instead. // Deprecated: Use TrainControlState_ControlLight.ProtoReflect.Descriptor instead.
func (*TrainControlState_ControlLight) Descriptor() ([]byte, []int) { func (*TrainControlState_ControlLight) Descriptor() ([]byte, []int) {
return file_device_state_proto_rawDescGZIP(), []int{37, 6} return file_device_state_proto_rawDescGZIP(), []int{37, 7}
} }
func (x *TrainControlState_ControlLight) GetId() uint32 { func (x *TrainControlState_ControlLight) GetId() uint32 {
@ -6713,7 +6714,7 @@ var file_device_state_proto_rawDesc = []byte{
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x61, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61,
0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x07, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x8d, 0x08, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x62,
0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
@ -6723,88 +6724,96 @@ var file_device_state_proto_rawDesc = []byte{
0x28, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 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, 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, 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, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x4e, 0x0a, 0x0c, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x79, 0x4d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x61,
0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53,
0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x4d, 0x61,
0x68, 0x52, 0x06, 0x64, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x75, 0x73, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65,
0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64,
0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x61, 0x74,
0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74,
0x64, 0x6c, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52,
0x72, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x18, 0x05, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x09,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x27, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e,
0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6c, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x4d,
0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x69, 0x6e, 0x65, 0x61, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x4d,
0x49, 0x6e, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x31, 0x32, 0x18, 0x61, 0x70, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x54,
0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x31, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x31, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x52, 0x13, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74,
0x6e, 0x65, 0x31, 0x32, 0x43, 0x6f, 0x6e, 0x6e, 0x45, 0x72, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x61, 0x6d, 0x70, 0x31, 0x32, 0x12, 0x24, 0x0a, 0x0d, 0x6c, 0x69, 0x6e, 0x65, 0x31, 0x32, 0x43,
0x08, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x65, 0x31, 0x32, 0x43, 0x6f, 0x6e, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x6e, 0x6e, 0x45, 0x72, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x69,
0x1a, 0x62, 0x0a, 0x0c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x6e, 0x65, 0x31, 0x32, 0x43, 0x6f, 0x6e, 0x6e, 0x45, 0x72, 0x72, 0x1a, 0x62, 0x0a, 0x0c, 0x42,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a,
0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
0x72, 0x6f, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0e, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 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, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x52, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x0d, 0x43, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61,
0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73,
0x65, 0x64, 0x1a, 0x33, 0x0a, 0x0f, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x53,
0x77, 0x69, 0x74, 0x63, 0x68, 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, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x36, 0x0a, 0x12, 0x44, 0x69, 0x72, 0x65, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, 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,
0x1a, 0x30, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74,
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, 0x08, 0x52, 0x03, 0x76,
0x61, 0x6c, 0x22, 0xec, 0x02, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74,
0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x40, 0x0a, 0x07, 0x62,
0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73,
0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x75, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x75,
0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
0x09, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x69, 0x0a, 0x11, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x70, 0x45,
0x32, 0x28, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x44, 0x72, 0x69, 0x76, 0x65, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x09, 0x64, 0x72, 0x69, 0x76, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72,
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, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52,
0x63, 0x68, 0x52, 0x06, 0x64, 0x69, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x75, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x63, 0x0a, 0x0e, 0x4c, 0x69,
0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x67, 0x68, 0x74, 0x4d, 0x61, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
0x24, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3b,
0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e,
0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72,
0x65, 0x72, 0x12, 0x3d, 0x0a, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c,
0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x67, 0x68, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x37, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x52, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64,
0x73, 0x2a, 0x37, 0x0a, 0x0b, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
0x12, 0x07, 0x0a, 0x03, 0x41, 0x6e, 0x79, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x78, 0x6c, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x1a, 0x33, 0x0a, 0x0f, 0x44, 0x72, 0x69, 0x76,
0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x10, 0x02, 0x12, 0x0a, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69,
0x0a, 0x06, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x10, 0x03, 0x42, 0x67, 0x0a, 0x25, 0x63, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76,
0x75, 0x62, 0x2e, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x62, 0x6a, 0x72, 0x74, 0x73, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x1a, 0x33, 0x0a,
0x73, 0x2e, 0x61, 0x74, 0x73, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x0f, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x74, 0x6f, 0x73, 0x42, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64,
0x50, 0x72, 0x6f, 0x74, 0x6f, 0x5a, 0x2c, 0x6a, 0x6f, 0x79, 0x6c, 0x69, 0x6e, 0x6b, 0x2e, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x76,
0x6c, 0x75, 0x62, 0x2f, 0x62, 0x6a, 0x2d, 0x72, 0x74, 0x73, 0x74, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x61, 0x6c, 0x1a, 0x2f, 0x0a, 0x0b, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65,
0x76, 0x65, 0x72, 0x2f, 0x64, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69,
0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
0x76, 0x61, 0x6c, 0x1a, 0x30, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69,
0x67, 0x68, 0x74, 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, 0x08,
0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0xf1, 0x02, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43,
0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x4d, 0x73, 0x67, 0x12, 0x40,
0x0a, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x26, 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, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x42, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x74, 0x74, 0x6f, 0x6e, 0x73,
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, 0x48, 0x0a, 0x0a, 0x73, 0x77, 0x69, 0x74,
0x63, 0x68, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x03, 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, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65, 0x79,
0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4b, 0x65,
0x79, 0x73, 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, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x52, 0x0b, 0x70,
0x75, 0x73, 0x68, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x06, 0x6c, 0x69,
0x67, 0x68, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 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, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4c, 0x69, 0x67, 0x68,
0x74, 0x52, 0x06, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x73, 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 (
@ -6820,7 +6829,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, 51) var file_device_state_proto_msgTypes = make([]protoimpl.MessageInfo, 52)
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
@ -6873,34 +6882,35 @@ var file_device_state_proto_goTypes = []interface{}{
(*VobcBtmState_VobcBtmHistoryState)(nil), // 48: state.VobcBtmState.VobcBtmHistoryState (*VobcBtmState_VobcBtmHistoryState)(nil), // 48: state.VobcBtmState.VobcBtmHistoryState
(*StationQc_State)(nil), // 49: state.StationQc.State (*StationQc_State)(nil), // 49: state.StationQc.State
nil, // 50: state.TrainControlState.ButtonsEntry nil, // 50: state.TrainControlState.ButtonsEntry
nil, // 51: state.TrainControlState.LightMapsEntry nil, // 51: state.TrainControlState.SwitchKeyMapEntry
(*TrainControlState_ControlButton)(nil), // 52: state.TrainControlState.ControlButton nil, // 52: state.TrainControlState.LightMapsEntry
(*TrainControlState_DriverKeySwitch)(nil), // 53: state.TrainControlState.DriverKeySwitch (*TrainControlState_ControlButton)(nil), // 53: state.TrainControlState.ControlButton
(*TrainControlState_DirectionKeySwitch)(nil), // 54: state.TrainControlState.DirectionKeySwitch (*TrainControlState_DriverKeySwitch)(nil), // 54: state.TrainControlState.DriverKeySwitch
(*TrainControlState_PushHandler)(nil), // 55: state.TrainControlState.PushHandler (*TrainControlState_SwitchKeyChange)(nil), // 55: state.TrainControlState.SwitchKeyChange
(*TrainControlState_ControlLight)(nil), // 56: state.TrainControlState.ControlLight (*TrainControlState_PushHandler)(nil), // 56: state.TrainControlState.PushHandler
(*request_proto.PointsParam)(nil), // 57: request.PointsParam (*TrainControlState_ControlLight)(nil), // 57: state.TrainControlState.ControlLight
(*request_proto.SignalParam)(nil), // 58: request.SignalParam (*request_proto.PointsParam)(nil), // 58: request.PointsParam
(*common_proto.TrainDynamicConfig)(nil), // 59: common.TrainDynamicConfig (*request_proto.SignalParam)(nil), // 59: request.SignalParam
(*common_proto.TrainEndsState)(nil), // 60: common.TrainEndsState (*common_proto.TrainDynamicConfig)(nil), // 60: common.TrainDynamicConfig
(*request_proto.PsdParam)(nil), // 61: request.PsdParam (*common_proto.TrainEndsState)(nil), // 61: common.TrainEndsState
(*data_proto.KilometerSystem)(nil), // 62: graphicData.KilometerSystem (*request_proto.PsdParam)(nil), // 62: request.PsdParam
(*request_proto.CkmParam)(nil), // 63: request.CkmParam (*data_proto.KilometerSystem)(nil), // 63: graphicData.KilometerSystem
(*request_proto.XcjParam)(nil), // 64: request.XcjParam (*request_proto.CkmParam)(nil), // 64: request.CkmParam
(*request_proto.XcjParam)(nil), // 65: request.XcjParam
} }
var file_device_state_proto_depIdxs = []int32{ var file_device_state_proto_depIdxs = []int32{
57, // 0: state.SwitchState.param:type_name -> request.PointsParam 58, // 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
58, // 2: state.SignalState.param:type_name -> request.SignalParam 59, // 2: state.SignalState.param:type_name -> request.SignalParam
45, // 3: state.SignalState.relayStateMap:type_name -> state.SignalState.RelayStateMapEntry 45, // 3: state.SignalState.relayStateMap:type_name -> state.SignalState.RelayStateMapEntry
25, // 4: state.PlatformState.spksState:type_name -> state.ReplyState 25, // 4: state.PlatformState.spksState:type_name -> state.ReplyState
32, // 5: state.PlatformState.mkxJState:type_name -> state.MkxJState 32, // 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
19, // 7: state.TrainState.dynamicState:type_name -> state.TrainDynamicState 19, // 7: state.TrainState.dynamicState:type_name -> state.TrainDynamicState
20, // 8: state.TrainState.vobcState:type_name -> state.TrainVobcState 20, // 8: state.TrainState.vobcState:type_name -> state.TrainVobcState
59, // 9: state.TrainState.trainDynamicConfig:type_name -> common.TrainDynamicConfig 60, // 9: state.TrainState.trainDynamicConfig:type_name -> common.TrainDynamicConfig
60, // 10: state.TrainState.trainEndsA:type_name -> common.TrainEndsState 61, // 10: state.TrainState.trainEndsA:type_name -> common.TrainEndsState
60, // 11: state.TrainState.trainEndsB:type_name -> common.TrainEndsState 61, // 11: state.TrainState.trainEndsB:type_name -> common.TrainEndsState
22, // 12: state.TrainState.btmState:type_name -> state.BTMState 22, // 12: state.TrainState.btmState:type_name -> state.BTMState
43, // 13: state.TrainState.tcc:type_name -> state.TrainControlState 43, // 13: state.TrainState.tcc:type_name -> state.TrainControlState
14, // 14: state.TrainState.connState:type_name -> state.TrainConnState 14, // 14: state.TrainState.connState:type_name -> state.TrainConnState
@ -6916,13 +6926,13 @@ var file_device_state_proto_depIdxs = []int32{
22, // 24: state.TrainMapState.btmState:type_name -> state.BTMState 22, // 24: state.TrainMapState.btmState:type_name -> state.BTMState
14, // 25: state.TrainMapState.connState:type_name -> state.TrainConnState 14, // 25: state.TrainMapState.connState:type_name -> state.TrainConnState
30, // 26: state.PsdState.asdStates:type_name -> state.AsdState 30, // 26: state.PsdState.asdStates:type_name -> state.AsdState
61, // 27: state.PsdState.param:type_name -> request.PsdParam 62, // 27: state.PsdState.param:type_name -> request.PsdParam
25, // 28: state.MkxJState.replyState:type_name -> state.ReplyState 25, // 28: state.MkxJState.replyState:type_name -> state.ReplyState
62, // 29: state.BaliseState.km:type_name -> graphicData.KilometerSystem 63, // 29: state.BaliseState.km:type_name -> graphicData.KilometerSystem
49, // 30: state.StationQc.qdStates:type_name -> state.StationQc.State 49, // 30: state.StationQc.qdStates:type_name -> state.StationQc.State
49, // 31: state.StationQc.cjStates:type_name -> state.StationQc.State 49, // 31: state.StationQc.cjStates:type_name -> state.StationQc.State
63, // 32: state.CkmState.param:type_name -> request.CkmParam 64, // 32: state.CkmState.param:type_name -> request.CkmParam
64, // 33: state.XcjState.param:type_name -> request.XcjParam 65, // 33: state.XcjState.param:type_name -> request.XcjParam
21, // 34: state.VariationStatus.updatedTrain:type_name -> state.TrainMapState 21, // 34: state.VariationStatus.updatedTrain:type_name -> state.TrainMapState
9, // 35: state.VariationStatus.updatedSwitch:type_name -> state.SwitchState 9, // 35: state.VariationStatus.updatedSwitch:type_name -> state.SwitchState
7, // 36: state.VariationStatus.updatedSection:type_name -> state.SectionState 7, // 36: state.VariationStatus.updatedSection:type_name -> state.SectionState
@ -6951,23 +6961,24 @@ var file_device_state_proto_depIdxs = []int32{
4, // 59: state.SimulationThirdPartyApiServiceState.type:type_name -> state.SimulationThirdPartyApiService.Type 4, // 59: state.SimulationThirdPartyApiServiceState.type:type_name -> state.SimulationThirdPartyApiService.Type
5, // 60: state.SimulationThirdPartyApiServiceState.state:type_name -> state.SimulationThirdPartyApiService.State 5, // 60: state.SimulationThirdPartyApiServiceState.state:type_name -> state.SimulationThirdPartyApiService.State
50, // 61: state.TrainControlState.buttons:type_name -> state.TrainControlState.ButtonsEntry 50, // 61: state.TrainControlState.buttons:type_name -> state.TrainControlState.ButtonsEntry
53, // 62: state.TrainControlState.driverKey:type_name -> state.TrainControlState.DriverKeySwitch 54, // 62: state.TrainControlState.driverKey:type_name -> state.TrainControlState.DriverKeySwitch
54, // 63: state.TrainControlState.dirKey:type_name -> state.TrainControlState.DirectionKeySwitch 51, // 63: state.TrainControlState.switchKeyMap:type_name -> state.TrainControlState.SwitchKeyMapEntry
55, // 64: state.TrainControlState.pushHandler:type_name -> state.TrainControlState.PushHandler 56, // 64: state.TrainControlState.pushHandler:type_name -> state.TrainControlState.PushHandler
51, // 65: state.TrainControlState.lightMaps:type_name -> state.TrainControlState.LightMapsEntry 52, // 65: state.TrainControlState.lightMaps:type_name -> state.TrainControlState.LightMapsEntry
52, // 66: state.TrainControlStateMsg.buttons:type_name -> state.TrainControlState.ControlButton 53, // 66: state.TrainControlStateMsg.buttons:type_name -> state.TrainControlState.ControlButton
53, // 67: state.TrainControlStateMsg.driverKey:type_name -> state.TrainControlState.DriverKeySwitch 54, // 67: state.TrainControlStateMsg.driverKey:type_name -> state.TrainControlState.DriverKeySwitch
54, // 68: state.TrainControlStateMsg.dirKey:type_name -> state.TrainControlState.DirectionKeySwitch 55, // 68: state.TrainControlStateMsg.switchKeys:type_name -> state.TrainControlState.SwitchKeyChange
55, // 69: state.TrainControlStateMsg.pushHandler:type_name -> state.TrainControlState.PushHandler 56, // 69: state.TrainControlStateMsg.pushHandler:type_name -> state.TrainControlState.PushHandler
56, // 70: state.TrainControlStateMsg.lights:type_name -> state.TrainControlState.ControlLight 57, // 70: state.TrainControlStateMsg.lights:type_name -> state.TrainControlState.ControlLight
48, // 71: state.VobcBtmState.HistoryEntry.value:type_name -> state.VobcBtmState.VobcBtmHistoryState 48, // 71: state.VobcBtmState.HistoryEntry.value:type_name -> state.VobcBtmState.VobcBtmHistoryState
52, // 72: state.TrainControlState.ButtonsEntry.value:type_name -> state.TrainControlState.ControlButton 53, // 72: state.TrainControlState.ButtonsEntry.value:type_name -> state.TrainControlState.ControlButton
56, // 73: state.TrainControlState.LightMapsEntry.value:type_name -> state.TrainControlState.ControlLight 55, // 73: state.TrainControlState.SwitchKeyMapEntry.value:type_name -> state.TrainControlState.SwitchKeyChange
74, // [74:74] is the sub-list for method output_type 57, // 74: state.TrainControlState.LightMapsEntry.value:type_name -> state.TrainControlState.ControlLight
74, // [74:74] is the sub-list for method input_type 75, // [75:75] is the sub-list for method output_type
74, // [74:74] is the sub-list for extension type_name 75, // [75:75] is the sub-list for method input_type
74, // [74:74] is the sub-list for extension extendee 75, // [75:75] is the sub-list for extension type_name
0, // [0:74] is the sub-list for field type_name 75, // [75:75] is the sub-list for extension extendee
0, // [0:75] is the sub-list for field type_name
} }
func init() { file_device_state_proto_init() } func init() { file_device_state_proto_init() }
@ -7480,7 +7491,7 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_ControlButton); i { switch v := v.(*TrainControlState_ControlButton); i {
case 0: case 0:
return &v.state return &v.state
@ -7492,7 +7503,7 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[48].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
@ -7504,20 +7515,8 @@ func file_device_state_proto_init() {
return nil return nil
} }
} }
file_device_state_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_DirectionKeySwitch); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_PushHandler); i { switch v := v.(*TrainControlState_SwitchKeyChange); i {
case 0: case 0:
return &v.state return &v.state
case 1: case 1:
@ -7529,6 +7528,18 @@ func file_device_state_proto_init() {
} }
} }
file_device_state_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { file_device_state_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_PushHandler); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_device_state_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TrainControlState_ControlLight); i { switch v := v.(*TrainControlState_ControlLight); i {
case 0: case 0:
return &v.state return &v.state
@ -7547,7 +7558,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: 51, NumMessages: 52,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View File

@ -70,7 +70,11 @@ func NewTrainControlMs(vs *memory.VerifySimulation, mapId int32) ms_api.MsgTask
for _, button := range ttcc.Buttons { for _, button := range ttcc.Buttons {
buttons = append(buttons, button) buttons = append(buttons, button)
} }
tcc := &state_proto.TrainControlStateMsg{Buttons: buttons, DriverKey: ttcc.DriverKey, DirKey: ttcc.DirKey, PushHandler: ttcc.PushHandler, Lights: lights} sks := make([]*state_proto.TrainControlState_SwitchKeyChange, 0)
for _, sk := range ttcc.SwitchKeyMap {
sks = append(sks, sk)
}
tcc := &state_proto.TrainControlStateMsg{Buttons: buttons, DriverKey: ttcc.DriverKey, SwitchKeys: sks, PushHandler: ttcc.PushHandler, Lights: lights}
err := mqtt.GetMsgClient().PubTrainControlState(vs.SimulationId, trainId, tcc) err := mqtt.GetMsgClient().PubTrainControlState(vs.SimulationId, trainId, tcc)
if err != nil { if err != nil {
slog.Error("发送列车控制mqtt失败", err) slog.Error("发送列车控制mqtt失败", err)

View File

@ -32,7 +32,7 @@ type BtmAntennaRunningInfo struct {
const ( const (
//BtmAntennaOffsetHead = int64(1000) //车载BTM天线距车头端点的距离mm //BtmAntennaOffsetHead = int64(1000) //车载BTM天线距车头端点的距离mm
BtmAntennaOffsetHead = int64(-1000) //车载BTM天线距车头端点的距离mm BtmAntennaOffsetHead = int64(0) //车载BTM天线距车头端点的距离mm
) )
// TrainHeadPositionInfo 列车车头运行位置信息 // TrainHeadPositionInfo 列车车头运行位置信息
@ -86,8 +86,7 @@ func (t *BaliseDetector) newDetect(wd *component.WorldData, repo *repository.Rep
curAntennaRi2 := t.createBtmAntennaRunningInfo(wd, repo, th2) //上次车头 curAntennaRi2 := t.createBtmAntennaRunningInfo(wd, repo, th2) //上次车头
var startBalises []*repository.Transponder var startBalises []*repository.Transponder
//startBalises = t.searchBalisesFromBetweenLinkPosition(repo, th.Up, curAntennaRi2.LinkId, th2.LinkOffset, th.LinkOffset) //startBalises = t.searchBalisesFromBetweenLinkPosition(repo, th.Up, curAntennaRi.LinkId, th2.LinkOffset, th.LinkOffset)
startBalises = t.searchBalisesFromBetweenLinkPosition(repo, th.Up, curAntennaRi.LinkId, curAntennaRi2.LinkOffset, curAntennaRi.LinkOffset) startBalises = t.searchBalisesFromBetweenLinkPosition(repo, th.Up, curAntennaRi.LinkId, curAntennaRi2.LinkOffset, curAntennaRi.LinkOffset)
balises := make([]*repository.Transponder, 0) balises := make([]*repository.Transponder, 0)
@ -106,8 +105,12 @@ func (t *BaliseDetector) newDetect(wd *component.WorldData, repo *repository.Rep
} }
if len(balises) > 0 { if len(balises) > 0 {
balise := balises[0] balise := balises[0]
//slog.Info(fmt.Sprintf("-----------------id:%v ,offset:%v, up: %v,linkeId:%v ,headoffset:%v,tailOffset:%v", balise.Id(), balise.LinkPosition().Offset(), th.Up, curAntennaRi.LinkId, curAntennaRi.LinkOffset, curAntennaRi2.LinkOffset))
telegram, utel := t.rcvTelegram(wd, balise.Id()) telegram, utel := t.rcvTelegram(wd, balise.Id())
t.addNewExpectedBalise(balise, btmCache, telegram, utel) if t.addNewExpectedBalise(balise, btmCache, telegram, utel) {
//slog.Info(fmt.Sprintf("+++++++++++++id:%v ,offset:%v, up: %v,linkeId:%v ,headoffset:%v,tailOffset:%v", balise.Id(), balise.LinkPosition().Offset(), th.Up, curAntennaRi.LinkId, curAntennaRi.LinkOffset, curAntennaRi2.LinkOffset))
}
} }
} }
@ -501,6 +504,34 @@ func (t *BaliseDetector) searchBalisesFromLinkPosition(repo *repository.Reposito
} }
// 列车车头端点运行信息转换为车载BTM天线中心点运行信息 // 列车车头端点运行信息转换为车载BTM天线中心点运行信息
func (t *BaliseDetector) createBtmAntennaRunningInfo2(wd *component.WorldData, isSameLink bool, repo *repository.Repository, head *TrainHeadPositionInfo) *BtmAntennaRunningInfo {
headLink := repo.FindLink(head.Link)
if head.Up {
if isSameLink { //车头与BTM天线在同一个轨道上
return &BtmAntennaRunningInfo{Up: head.Up, LinkId: head.Link, LinkOffset: head.LinkOffset + int64(math.Abs(float64(BtmAntennaOffsetHead))), Speed: head.Speed, Acceleration: head.Acceleration}
} else { //车头与BTM天线在同一个轨道上
nextLinkPort := t.getNextLink(wd, repo, head.Link, !head.Up)
nextLink := nextLinkPort.Link()
if nextLinkPort.IsPortA() {
return &BtmAntennaRunningInfo{Up: false, LinkId: nextLink.Id(), LinkOffset: BtmAntennaOffsetHead - head.LinkOffset, Speed: head.Speed, Acceleration: head.Acceleration}
} else {
return &BtmAntennaRunningInfo{Up: true, LinkId: nextLink.Id(), LinkOffset: nextLink.Length() - (BtmAntennaOffsetHead - head.LinkOffset), Speed: head.Speed, Acceleration: head.Acceleration}
}
}
} else {
if isSameLink { //车头与BTM天线在同一个轨道上
return &BtmAntennaRunningInfo{Up: head.Up, LinkId: head.Link, LinkOffset: head.LinkOffset + BtmAntennaOffsetHead, Speed: head.Speed, Acceleration: head.Acceleration}
} else {
nextLinkPort := t.getNextLink(wd, repo, head.Link, !head.Up)
nextLink := nextLinkPort.Link()
if nextLinkPort.IsPortA() {
return &BtmAntennaRunningInfo{Up: false, LinkId: nextLink.Id(), LinkOffset: BtmAntennaOffsetHead - headLink.Length() + head.LinkOffset, Speed: head.Speed, Acceleration: head.Acceleration}
} else {
return &BtmAntennaRunningInfo{Up: true, LinkId: nextLink.Id(), LinkOffset: nextLink.Length() - (BtmAntennaOffsetHead - headLink.Length() + head.LinkOffset), Speed: head.Speed, Acceleration: head.Acceleration}
}
}
}
}
func (t *BaliseDetector) createBtmAntennaRunningInfo(wd *component.WorldData, repo *repository.Repository, head *TrainHeadPositionInfo) *BtmAntennaRunningInfo { func (t *BaliseDetector) createBtmAntennaRunningInfo(wd *component.WorldData, repo *repository.Repository, head *TrainHeadPositionInfo) *BtmAntennaRunningInfo {
headLink := repo.FindLink(head.Link) headLink := repo.FindLink(head.Link)
if head.Up { if head.Up {

View File

@ -222,9 +222,9 @@ const (
DRIVER_ACTIVE_REPORT DRIVER_ACTIVE_REPORT
//制动重故障按钮 //制动重故障按钮
BRAKE_HEAVY_FAULT BRAKE_HEAVY_FAULT
//左门状态按钮 //左门状态
LEFT_DOOR_STATE LEFT_DOOR_STATE
//右门状态按钮 //右门状态
RIGHT_DOOR_STATE RIGHT_DOOR_STATE
//唤醒按钮 //唤醒按钮
WAKE_UP WAKE_UP
@ -249,7 +249,6 @@ const (
ATP_CUT ATP_CUT
//AA自动开关门 //AA自动开关门
DOOR_MODE_AA DOOR_MODE_AA
//AM自开人关 //AM自开人关
DOOR_MODE_AM DOOR_MODE_AM
//MM人开人关 //MM人开人关

View File

@ -383,7 +383,7 @@ func (d *trainPcSimService) sendTrainLocationAndSpeedTask(ctx context.Context) {
trainClient.updateState(connState) trainClient.updateState(connState)
s1, _ := d.pluseSpeed(train) s1, _ := d.pluseSpeed(train)
runDir := uint16(2) runDir := uint16(2)
if train.Tcc.DirKey.Val == 1 { if train.VobcState.DirectionForward {
runDir = 1 runDir = 1
} }
disPluse := pluseCountSpeed(train.WheelDiameter, trainClient.speedPlace.PulseCount1) disPluse := pluseCountSpeed(train.WheelDiameter, trainClient.speedPlace.PulseCount1)
@ -540,7 +540,9 @@ func (d *trainPcSimService) SendTrainControlMsg(train *state_proto.TrainState, b
} }
for _, msg := range baseMessage { for _, msg := range baseMessage {
d.sendData(trainClient.tcpClient, msg.Encode()) dd := msg.Encode()
//slog.Info(fmt.Sprintf("发送列车控制信息:%x", dd))
d.sendData(trainClient.tcpClient, dd)
} }
} }
func (d *trainPcSimService) sendData(client *tcp.TcpClient, data []byte) { func (d *trainPcSimService) sendData(client *tcp.TcpClient, data []byte) {

View File

@ -2,6 +2,7 @@ package memory
import ( import (
"joylink.club/bj-rtsts-server/dto/data_proto" "joylink.club/bj-rtsts-server/dto/data_proto"
"joylink.club/bj-rtsts-server/dto/request_proto"
"joylink.club/bj-rtsts-server/dto/state_proto" "joylink.club/bj-rtsts-server/dto/state_proto"
"joylink.club/bj-rtsts-server/third_party/message" "joylink.club/bj-rtsts-server/third_party/message"
) )
@ -100,16 +101,13 @@ func findTrainTccGraphicDataHandler(tccG *data_proto.TccGraphicStorage, id uint3
func initTrainVobc(trainLoad int64, trainIsUp bool) (*state_proto.TrainVobcState, uint32) { func initTrainVobc(trainLoad int64, trainIsUp bool) (*state_proto.TrainVobcState, uint32) {
vobc := &state_proto.TrainVobcState{TrainLoad: int64(trainLoad), BrakingStatus: true, BrakeForce: DEFAULT_BRAKE_FORCE * 100, DirectionForward: true, vobc := &state_proto.TrainVobcState{TrainLoad: int64(trainLoad), BrakingStatus: true, BrakeForce: DEFAULT_BRAKE_FORCE * 100, DirectionForward: true,
AllDoorClose: true, ObstacleCheckBtn: true, RightDoorCloseCommand: true, LeftDoorCloseCommand: true, BrakeHeavyFault: true, AtpCutSwitch: true, AllDoorClose: true, ObstacleCheckBtn: true /*RightDoorCloseCommand: true, LeftDoorCloseCommand: true,*/, BrakeHeavyFault: true, AtpCutSwitch: true,
ConfirmBtn: true, AtpPowerOnBtn: true, ConfirmBtn: true, AtpPowerOnBtn: true, DoorModeMM: true,
} }
var trainActDir uint32 = 0 var trainActDir uint32 = 0
if trainIsUp { if trainIsUp {
//vobc.Tc1Active = true
trainActDir = 1 trainActDir = 1
} else { } else {
//vobc.Tc2Active = true
trainActDir = 2 trainActDir = 2
} }
return vobc, trainActDir return vobc, trainActDir
@ -136,7 +134,7 @@ func initTrainTcc(vs *VerifySimulation) *state_proto.TrainControlState {
for _, b := range tccGI.TccButtons { for _, b := range tccGI.TccButtons {
btn := &state_proto.TrainControlState_ControlButton{Id: b.Common.Id, Passed: false} btn := &state_proto.TrainControlState_ControlButton{Id: b.Common.Id, Passed: false}
switch b.Code { switch b.Code {
case ATPQCKG, GZM, GYM, ZAWTGJC, ZDZGZ, ATPSD, MSQR: case ATPQCKG /*GZM, GYM,*/, ZAWTGJC, ZDZGZ, ATPSD, MSQR:
btn.Passed = true btn.Passed = true
} }
btns[b.Code] = btn btns[b.Code] = btn
@ -149,6 +147,7 @@ func initTrainTcc(vs *VerifySimulation) *state_proto.TrainControlState {
} }
} }
ds := make([]*state_proto.TrainControlState_DriverKeySwitch, 0) ds := make([]*state_proto.TrainControlState_DriverKeySwitch, 0)
tcc.SwitchKeyMap = make(map[string]*state_proto.TrainControlState_SwitchKeyChange, 0)
for _, b := range tccGI.TccKeys { for _, b := range tccGI.TccKeys {
if b.GetType() == data_proto.TccKey_driverControllerActivationClint { if b.GetType() == data_proto.TccKey_driverControllerActivationClint {
val := false val := false
@ -159,7 +158,10 @@ func initTrainTcc(vs *VerifySimulation) *state_proto.TrainControlState {
}*/ }*/
ds = append(ds, &state_proto.TrainControlState_DriverKeySwitch{Id: b.Common.Id, Val: val}) ds = append(ds, &state_proto.TrainControlState_DriverKeySwitch{Id: b.Common.Id, Val: val})
} else if b.GetType() == data_proto.TccKey_frontAndRearDirectionalControl { } else if b.GetType() == data_proto.TccKey_frontAndRearDirectionalControl {
tcc.DirKey = &state_proto.TrainControlState_DirectionKeySwitch{Id: b.Common.Id, Val: uint32(message.IsTrue(true))} tcc.SwitchKeyMap[b.Code] = &state_proto.TrainControlState_SwitchKeyChange{Id: b.Common.Id, Val: uint32(message.IsTrue(true))}
} else if b.GetType() == data_proto.TccKey_trainDoorMode {
tcc.SwitchKeyMap[b.Code] = &state_proto.TrainControlState_SwitchKeyChange{Id: b.Common.Id, Val: uint32(request_proto.TrainControl_KL_END.Number())}
} }
} }
tcc.DriverKey = ds tcc.DriverKey = ds

View File

@ -73,8 +73,6 @@ func AddTrainStateNew(vs *VerifySimulation, status *state_proto.TrainState, conf
linkId, loffset := QueryLinkAndOffsetByDevice(vs.Repo, uid, status.DevicePort, status.HeadOffset) linkId, loffset := QueryLinkAndOffsetByDevice(vs.Repo, uid, status.DevicePort, status.HeadOffset)
// link上的运行方向、设备上的运行方向 // link上的运行方向、设备上的运行方向
up, pointTo := QueryUpAndABByDevice(vs.Repo, uid, status.DevicePort, status.TrainRunUp) up, pointTo := QueryUpAndABByDevice(vs.Repo, uid, status.DevicePort, status.TrainRunUp)
//up, pointTo, _ = QueryDirectionAndABByDevice(vs.Repo, uid, status.DevicePort, status.TrainRunUp)
//fmt.Println(up2, pointTo2)
// 车头所在公里标 // 车头所在公里标
kilometer := CalcTrainKilometer(vs.Repo, uid, status.DevicePort, status.TrainRunUp, status.HeadOffset) kilometer := CalcTrainKilometer(vs.Repo, uid, status.DevicePort, status.TrainRunUp, status.HeadOffset)
@ -111,8 +109,6 @@ func AddTrainStateNew(vs *VerifySimulation, status *state_proto.TrainState, conf
vobc, _ := initTrainVobc(int64(tl), status.TrainRunUp) vobc, _ := initTrainVobc(int64(tl), status.TrainRunUp)
status.VobcState = vobc status.VobcState = vobc
//status.TrainActiveDirection = trainActDir
status.Tcc = initTrainTcc(vs) status.Tcc = initTrainTcc(vs)
status.VobcBtm = &state_proto.VobcBtmState{TelegramState: make([]*state_proto.VobcBtmState_TelegramState, 3), History: make(map[uint32]*state_proto.VobcBtmState_VobcBtmHistoryState)} status.VobcBtm = &state_proto.VobcBtmState{TelegramState: make([]*state_proto.VobcBtmState_TelegramState, 3), History: make(map[uint32]*state_proto.VobcBtmState_VobcBtmHistoryState)}
//slog.Debug("列车初始化", "trainIndex", trainIndex, "linkId", linkId, "loffset", loffset) //slog.Debug("列车初始化", "trainIndex", trainIndex, "linkId", linkId, "loffset", loffset)
@ -123,7 +119,6 @@ func AddTrainStateNew(vs *VerifySimulation, status *state_proto.TrainState, conf
LinkOffset: uint32(loffset), LinkOffset: uint32(loffset),
Speed: status.Speed / 3.6, Speed: status.Speed / 3.6,
Up: status.Up, Up: status.Up,
//Up: status.TrainRunUp,
TrainOperationConfig: CreateMsgTrainConfig(int(trainIndex), status.TrainLength, configTrainData), TrainOperationConfig: CreateMsgTrainConfig(int(trainIndex), status.TrainLength, configTrainData),
}) })
if err != nil { if err != nil {

View File

@ -45,7 +45,7 @@ func ControlTrainUpdate(s *VerifySimulation, ct *request_proto.TrainControl) {
baseMsg = trainControlDriverKey(sta, ct.DriverKey, ct.DeviceId, tccGraphicData) baseMsg = trainControlDriverKey(sta, ct.DriverKey, ct.DeviceId, tccGraphicData)
train_pc_sim.Default().SendDriverActive(sta) train_pc_sim.Default().SendDriverActive(sta)
} else if ct.ControlType == request_proto.TrainControl_DIRECTION_KEY_SWITCH { } else if ct.ControlType == request_proto.TrainControl_DIRECTION_KEY_SWITCH {
baseMsg = trainControlDirKey(sta.DynamicState.Speed, vobc, tcc, ct.DirKey, ct.DeviceId, tccGraphicData) baseMsg = trainControlDirKey(sta.DynamicState.Speed, vobc, tcc, ct.SwitchKey, ct.DeviceId, tccGraphicData)
//此处先注释,根据现场调试情况 2024-4-16 //此处先注释,根据现场调试情况 2024-4-16
train_pc_sim.Default().SendTrainDirection(sta, sta.VobcState.DirectionForward, sta.VobcState.DirectionBackward) train_pc_sim.Default().SendTrainDirection(sta, sta.VobcState.DirectionForward, sta.VobcState.DirectionBackward)
} else if ct.ControlType == request_proto.TrainControl_HANDLER { } else if ct.ControlType == request_proto.TrainControl_HANDLER {
@ -60,12 +60,28 @@ func ControlTrainUpdate(s *VerifySimulation, ct *request_proto.TrainControl) {
isTraction := ct.Handler.Val > 0 //是否制动 isTraction := ct.Handler.Val > 0 //是否制动
baseMsg = trainControlHandle(vobc, tcc, ct.Handler, ct.DeviceId, tccGraphicData) baseMsg = trainControlHandle(vobc, tcc, ct.Handler, ct.DeviceId, tccGraphicData)
train_pc_sim.Default().SendHandleSwitch(oldTraction, oldBrakeForce, isTraction, sta) train_pc_sim.Default().SendHandleSwitch(oldTraction, oldBrakeForce, isTraction, sta)
} else if ct.ControlType == request_proto.TrainControl_TRAIN_DOOR_MODE_CHANGE {
baseMsg = trainDoorModeChangeHandle(vobc, tcc, ct.SwitchKey, ct.DeviceId, tccGraphicData)
} }
if vobc.DirectionForward && vobc.TractionForce == 0 { if vobc.DirectionForward && vobc.TractionForce == 0 {
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DIR_ZERO_FORWARD, 1}}) baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DIR_ZERO_FORWARD, 1}})
} else { } else {
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DIR_ZERO_FORWARD, 0}}) baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DIR_ZERO_FORWARD, 0}})
} }
if vobc.LeftDoorOpenCommand || vobc.RightDoorOpenCommand {
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_LOCK_STATE, 0}})
if vobc.LeftDoorOpenCommand {
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.LEFT_DOOR_STATE, 1}})
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.RIGHT_DOOR_STATE, 0}})
} else if vobc.RightDoorOpenCommand {
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.LEFT_DOOR_STATE, 0}})
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.RIGHT_DOOR_STATE, 1}})
}
}
if vobc.LeftDoorCloseCommand && vobc.RightDoorCloseCommand {
baseMsg = append(baseMsg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_LOCK_STATE, 1}})
}
if !vobc.DirectionForward && !vobc.DirectionBackward { if !vobc.DirectionForward && !vobc.DirectionBackward {
vobc.TractionStatus = false vobc.TractionStatus = false
vobc.TractionForce = 0 vobc.TractionForce = 0
@ -92,16 +108,16 @@ func trainControlButton(vobc *state_proto.TrainVobcState, buttonMap map[string]*
return controlEBBtn(vobc, active, btn) return controlEBBtn(vobc, active, btn)
case ATPQCKG: //atp切除 case ATPQCKG: //atp切除
return controlAtpBtn(vobc, active, btn) return controlAtpBtn(vobc, active, btn)
/* case "WBJJZDFK": //外部紧急制动反馈 case KZM, KYM: //开左门按钮
return controlOutEbReportBtn(vobc, active, btn)*/ return controlDoorOpenBtn(vobc, active, btn, graphicBtn.Code == KZM)
case KZM: //开左门按钮
return controlLeftDoorBtn(vobc, active, btn) case GZM, GYM: //关左门按钮
case GZM: //关左门按钮 return controlDoorCloseBtn(vobc, active, btn, graphicBtn.Code == KZM)
return controlLeftDoorCloseBtn(vobc, active, btn) //return controlLeftDoorCloseBtn(vobc, active, btn)
case KYM: //开右门按钮 //case KYM: //开右门按钮
return controlRightDoorBtn(vobc, active, btn) // return controlRightDoorBtn(vobc, active, btn)
case GYM: //关右门按钮 //case GYM: //关右门按钮
return controlRightDoorCloseBtn(vobc, active, btn) // return controlRightDoorCloseBtn(vobc, active, btn)
case ZF: //折返按钮 case ZF: //折返按钮
return controlReverseBtn(vobc, active, btn) return controlReverseBtn(vobc, active, btn)
case QZMYX: //强制门允许 case QZMYX: //强制门允许
@ -158,6 +174,45 @@ func controlAtpBtn(vobc *state_proto.TrainVobcState, active bool, tccBtn *state_
tccBtn.Passed = active tccBtn.Passed = active
return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.ATP_CUT, status}}} return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.ATP_CUT, status}}}
} }
func controlDoorCloseBtn(vobc *state_proto.TrainVobcState, active bool, tccBtn *state_proto.TrainControlState_ControlButton, isLeft bool) []message.TrainPcSimBaseMessage {
status := message.IsTrue(active)
tccBtn.Passed = active
var doorAct byte = message.CLOSE_LEFT_DOOR
var doorState byte = message.LEFT_DOOR_STATE
if isLeft {
vobc.LeftDoorCloseCommand = active
} else {
vobc.RightDoorCloseCommand = active
doorAct = message.CLOSE_RIGHT_DOOR
doorState = message.RIGHT_DOOR_STATE
}
return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{doorAct, status}},
{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{doorState, 0}},
}
}
// 开车门
func controlDoorOpenBtn(vobc *state_proto.TrainVobcState, active bool, tccBtn *state_proto.TrainControlState_ControlButton, isLeft bool) []message.TrainPcSimBaseMessage {
status := message.IsTrue(active)
msg := make([]message.TrainPcSimBaseMessage, 0)
tccBtn.Passed = active
var doorAct byte = message.LEFT_OPEN_DOOR
var doorState byte = message.LEFT_DOOR_STATE
if isLeft {
vobc.LeftDoorOpenCommand = active
} else {
vobc.RightDoorOpenCommand = active
doorAct = message.OPEN_RIGHT_DOOR
doorState = message.RIGHT_DOOR_STATE
}
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{doorAct, status}})
if active {
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_LOCK_STATE, 0}})
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{doorState, status}})
}
return msg
}
// 开左门按钮 // 开左门按钮
func controlLeftDoorBtn(vobc *state_proto.TrainVobcState, active bool, tccBtn *state_proto.TrainControlState_ControlButton) []message.TrainPcSimBaseMessage { func controlLeftDoorBtn(vobc *state_proto.TrainVobcState, active bool, tccBtn *state_proto.TrainControlState_ControlButton) []message.TrainPcSimBaseMessage {
@ -167,7 +222,9 @@ func controlLeftDoorBtn(vobc *state_proto.TrainVobcState, active bool, tccBtn *s
} }
vobc.LeftDoorOpenCommand = active vobc.LeftDoorOpenCommand = active
tccBtn.Passed = active tccBtn.Passed = active
return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.LEFT_OPEN_DOOR, status}}} return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.LEFT_OPEN_DOOR, status}},
{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.LEFT_DOOR_STATE, status}},
}
} }
@ -334,27 +391,25 @@ func controlSleepBtn(vobc *state_proto.TrainVobcState, active bool, tccBtn *stat
} }
// 列车方向 // 列车方向
func trainControlDirKey(trainSpeed int32, vobc *state_proto.TrainVobcState, tcc *state_proto.TrainControlState, request *request_proto.TrainControl_DirectionKeySwitch, deviceId uint32, tccGraphic *data_proto.TccGraphicStorage) []message.TrainPcSimBaseMessage { func trainControlDirKey(trainSpeed int32, vobc *state_proto.TrainVobcState, tcc *state_proto.TrainControlState, request *request_proto.TrainControl_SwitchKeyChange, deviceId uint32, tccGraphic *data_proto.TccGraphicStorage) []message.TrainPcSimBaseMessage {
_, find := findTrainTccGraphicDataKey(tccGraphic, deviceId) dirKey, find := findTrainTccGraphicDataKey(tccGraphic, deviceId)
if !find { if !find {
slog.Error("未找到对应的列车方向键deviceId:", deviceId) slog.Error("未找到对应的列车方向键deviceId:", deviceId)
panic(sys_error.New("未找到对应的列车方向键")) panic(sys_error.New("未找到对应的列车方向键"))
} }
if tcc.DirKey == nil {
tcc.DirKey = &state_proto.TrainControlState_DirectionKeySwitch{Id: deviceId} direction := request_proto.TrainControl_KeyLocation(request.Val)
}
direction := request_proto.TrainControl_Direction(request.Val)
if trainSpeed > 0 { if trainSpeed > 0 {
panic(sys_error.New("列车未停稳时,不能变更方向")) panic(sys_error.New("列车未停稳时,不能变更方向"))
} }
vobc.DirectionBackward = false vobc.DirectionBackward = false
vobc.DirectionForward = false vobc.DirectionForward = false
if direction == request_proto.TrainControl_FORWARD { if direction == request_proto.TrainControl_KL_FONT {
vobc.DirectionForward = true vobc.DirectionForward = true
} else if direction == request_proto.TrainControl_BACKWARD { } else if direction == request_proto.TrainControl_KL_END {
vobc.DirectionBackward = true vobc.DirectionBackward = true
} }
tcc.DirKey.Val = request.Val tcc.SwitchKeyMap[dirKey.Code].Val = request.Val
return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.HANDLE_BACKWORD, message.IsTrue(vobc.DirectionBackward)}}, return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.HANDLE_BACKWORD, message.IsTrue(vobc.DirectionBackward)}},
{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.HANDLE_FORWORD, message.IsTrue(vobc.DirectionForward)}}} {Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.HANDLE_FORWORD, message.IsTrue(vobc.DirectionForward)}}}
} }
@ -399,6 +454,31 @@ func trainControlDriverKey(train *state_proto.TrainState, request *request_proto
return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.KEY_STATE, message.IsTrue(request.Val)}}} return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.KEY_STATE, message.IsTrue(request.Val)}}}
} }
func trainDoorModeChangeHandle(vobc *state_proto.TrainVobcState, tcc *state_proto.TrainControlState, request *request_proto.TrainControl_SwitchKeyChange, deviceId uint32, tccGraphic *data_proto.TccGraphicStorage) []message.TrainPcSimBaseMessage {
sk, find := findTrainTccGraphicDataHandler(tccGraphic, deviceId)
if !find {
slog.Error("未找到对应的牵引制动手柄设备deviceId:", deviceId)
return nil
}
msg := make([]message.TrainPcSimBaseMessage, 0)
kl := request_proto.TrainControl_KeyLocation(request.Val)
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_MODE_AA, 0}})
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_MODE_AM, 0}})
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_MODE_MM, 0}})
switch kl {
case request_proto.TrainControl_KL_END:
vobc.DoorModeMM = true
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_MODE_AA, 1}})
case request_proto.TrainControl_KL_CENTER:
vobc.DoorModeAM = true
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_MODE_AM, 1}})
case request_proto.TrainControl_KL_FONT:
msg = append(msg, message.TrainPcSimBaseMessage{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.DOOR_MODE_MM, 1}})
vobc.DoorModeAA = true
}
tcc.SwitchKeyMap[sk.Code].Val = request.Val
return msg
}
// 列车牵引控制 // 列车牵引控制
func trainControlHandle(vobc *state_proto.TrainVobcState, tcc *state_proto.TrainControlState, request *request_proto.TrainControl_PushHandler, deviceId uint32, tccGraphic *data_proto.TccGraphicStorage) []message.TrainPcSimBaseMessage { func trainControlHandle(vobc *state_proto.TrainVobcState, tcc *state_proto.TrainControlState, request *request_proto.TrainControl_PushHandler, deviceId uint32, tccGraphic *data_proto.TccGraphicStorage) []message.TrainPcSimBaseMessage {
@ -422,16 +502,19 @@ func trainControlHandle(vobc *state_proto.TrainVobcState, tcc *state_proto.Train
notBreak := byte(0) notBreak := byte(0)
var zeroState byte = 0 var zeroState byte = 0
var brakeState byte = 0 var brakeState byte = 0
var traction byte = 0
if request.Val > 0 { if request.Val > 0 {
vobc.TractionStatus = true vobc.TractionStatus = true
vobc.TractionForce = int64(float32(request.Val)/100*DEFAULT_TRAIN_TRACTION) * 100 vobc.TractionForce = int64(float32(request.Val)/100*DEFAULT_TRAIN_TRACTION) * 100
notBreak = 1 notBreak = 1
traction = 1
} else if request.Val < 0 { } else if request.Val < 0 {
vobc.BrakingStatus = true vobc.BrakingStatus = true
vobc.BrakeForce = int64(math.Abs(float64(request.Val))/100*DEFAULT_BRAKE_FORCE) * 100 vobc.BrakeForce = int64(math.Abs(float64(request.Val))/100*DEFAULT_BRAKE_FORCE) * 100
vobc.EmergencyBrakingStatus = false vobc.EmergencyBrakingStatus = false
jjzdBtn.Passed = false jjzdBtn.Passed = false
brakeState = 0 brakeState = 1
} else { } else {
zeroState = 1 zeroState = 1
} }
@ -443,7 +526,8 @@ func trainControlHandle(vobc *state_proto.TrainVobcState, tcc *state_proto.Train
return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.HANDLE_TO_ZERO, zeroState}}, return []message.TrainPcSimBaseMessage{{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.HANDLE_TO_ZERO, zeroState}},
{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.TRAIN_BRAKE_STATE, brakeState}}, {Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.TRAIN_BRAKE_STATE, brakeState}},
/*{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.OUTER_EMERGENCY_BRAKE, 1}},*/ /*{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.OUTER_EMERGENCY_BRAKE, 1}},*/
{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.NOT_BREAK, notBreak}}} {Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{message.NOT_BREAK, notBreak}},
{Type: message.SENDER_TRAIN_OUTR_INFO, Data: []byte{38, traction}}}
} }
func (s *VerifySimulation) GetConnTrain2() []*state_proto.TrainState { func (s *VerifySimulation) GetConnTrain2() []*state_proto.TrainState {
@ -715,6 +799,7 @@ func (s *VerifySimulation) TrainBtmQuery2(train *state_proto.TrainState, data []
} else { } else {
balise, dsn, bc, mc = can_btm.Default().FindBaliseByNotSend(train) balise, dsn, bc, mc = can_btm.Default().FindBaliseByNotSend(train)
} }
balise, dsn, bc, mc = can_btm.Default().FindBaliseByNotSend(train)
cl := clock(atpReq) cl := clock(atpReq)
btmRepFrame := createBtmStatus(trainAtm.CanId.ID4, balise, atpReq, cl, dsn, bc, mc) btmRepFrame := createBtmStatus(trainAtm.CanId.ID4, balise, atpReq, cl, dsn, bc, mc)
timeSyncF := message.NewBtmTimeSyncCheckFrame(trainAtm.CanId.ID4) timeSyncF := message.NewBtmTimeSyncCheckFrame(trainAtm.CanId.ID4)
@ -725,14 +810,15 @@ func (s *VerifySimulation) TrainBtmQuery2(train *state_proto.TrainState, data []
queryData = append(queryData, btmRepFrame.EncodeBtmAtp().Encode()...) queryData = append(queryData, btmRepFrame.EncodeBtmAtp().Encode()...)
queryData = append(queryData, timeSyncF.EncodeBtmAtp().Encode()...) queryData = append(queryData, timeSyncF.EncodeBtmAtp().Encode()...)
train_pc_sim.Default().SendBaliseData(train, message.RECIVE_TRAIN_BTM_NOT_DATA, queryData) train_pc_sim.Default().SendBaliseData(train, message.RECIVE_TRAIN_BTM_NOT_DATA, queryData)
//slog.Info(fmt.Sprintf("接受应答器查询:%x发送无应答器数据,id:%v,数据:%X", data, trainAtm.CanId.ID4, queryData))
} else { } else {
logstr := "" logstr := ""
if atpReq.IsResend() { if atpReq.IsResend() {
logstr = fmt.Sprintf("准备重新发送应答id:%v,接受时间:%v,发送时间:%v , 数据:%v 经过:%v,解报文:%v", balise.BaliseId, ts, time.Now().UnixMilli(), balise.Telegram, bc, mc) logstr = fmt.Sprintf("准备重新发送应答id:%v,接受时间:%v,发送时间:%v , 数据:%v 经过:%v,解报文:%v,接受应答器报文:%X", balise.BaliseId, ts, time.Now().UnixMilli(), balise.Telegram, bc, mc, data)
} else if !balise.IsSend { } else if !balise.IsSend {
balise.IsSend = true balise.IsSend = true
logstr = fmt.Sprintf("准备发送应答id:%v,接受时间:%v,发送时间:%v , 数据:%v 经过:%v,解报文:%v", balise.BaliseId, ts, time.Now().UnixMilli(), balise.Telegram, bc, mc) logstr = fmt.Sprintf("准备发送应答id:%v,接受时间:%v,发送时间:%v , 数据:%v 经过:%v,解报文:%v,接受应答器报文:%X", balise.BaliseId, ts, time.Now().UnixMilli(), balise.Telegram, bc, mc, data)
} else { } else {
return return
} }
@ -782,7 +868,6 @@ func clock(atpReq *message.AtpRequestFrame) can_btm.BtmClock {
func (s *VerifySimulation) ObtainTrainDigitalMockDataForStatus(train *state_proto.TrainState) []message.TrainPcSimBaseMessage { func (s *VerifySimulation) ObtainTrainDigitalMockDataForStatus(train *state_proto.TrainState) []message.TrainPcSimBaseMessage {
msgArr := make([]message.TrainPcSimBaseMessage, 0) msgArr := make([]message.TrainPcSimBaseMessage, 0)
vs := train.VobcState vs := train.VobcState
tcc := train.Tcc
if vs.Tc1Active || vs.Tc2Active { if vs.Tc1Active || vs.Tc2Active {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.KEY_STATE, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //钥匙激活 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.KEY_STATE, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //钥匙激活
@ -801,24 +886,20 @@ func (s *VerifySimulation) ObtainTrainDigitalMockDataForStatus(train *state_prot
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.OUTER_EMERGENCY_BRAKE, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //紧急制动 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.OUTER_EMERGENCY_BRAKE, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //紧急制动
} }
dir := request_proto.TrainControl_Direction(tcc.DirKey.Val) if vs.DirectionForward {
/*if vs.DirectionForward && vs.TractionForce == 0 {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DIR_ZERO_FORWARD, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //手柄零位方向向前
} else*/if dir == request_proto.TrainControl_FORWARD {
//msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DIR_ZERO_FORWARD, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //手柄零位方向向前
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_FORWORD, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_FORWORD, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_BACKWORD, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_BACKWORD, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制
} else if dir == request_proto.TrainControl_BACKWARD { } else if vs.DirectionForward {
//msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DIR_ZERO_FORWARD, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //手柄零位方向向前
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_FORWORD, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_FORWORD, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_BACKWORD, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.HANDLE_BACKWORD, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //方向手柄向前控制
} }
if vs.RightDoorCloseCommand { /*if vs.RightDoorCloseCommand {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.CLOSE_RIGHT_DOOR, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //关右门按钮 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.CLOSE_RIGHT_DOOR, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //关右门按钮
} }
if vs.LeftDoorCloseCommand { if vs.LeftDoorCloseCommand {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.CLOSE_LEFT_DOOR, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //关左门按钮 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.CLOSE_LEFT_DOOR, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //关左门按钮
} }*/
if vs.AllDoorClose { if vs.AllDoorClose {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DOOR_LOCK_STATE, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //车门锁闭状态 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DOOR_LOCK_STATE, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //车门锁闭状态
} }
@ -840,6 +921,14 @@ func (s *VerifySimulation) ObtainTrainDigitalMockDataForStatus(train *state_prot
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.LIFE_DOOR, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //逃生门状态 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.LIFE_DOOR, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //逃生门状态
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.EMERGENT_HANDLE_DOWN, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //紧急手柄拉下 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.EMERGENT_HANDLE_DOWN, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //紧急手柄拉下
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.TRAIN_TRACTION_CUTED, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //紧急手柄拉下 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.TRAIN_TRACTION_CUTED, 1}, Type: message.SENDER_TRAIN_OUTR_INFO}) //紧急手柄拉下
if vs.DoorModeAA {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DOOR_MODE_AA, 1}, Type: message.SENDER_TRAIN_OUTR_INFO})
} else if vs.DoorModeAM {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DOOR_MODE_AM, 1}, Type: message.SENDER_TRAIN_OUTR_INFO})
} else if vs.DoorModeMM {
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.DOOR_MODE_MM, 1}, Type: message.SENDER_TRAIN_OUTR_INFO})
}
return msgArr return msgArr
} }
func (s *VerifySimulation) ObtainTrainDigitalMockData(train *state_proto.TrainState) []message.TrainPcSimBaseMessage { func (s *VerifySimulation) ObtainTrainDigitalMockData(train *state_proto.TrainState) []message.TrainPcSimBaseMessage {
@ -847,6 +936,7 @@ func (s *VerifySimulation) ObtainTrainDigitalMockData(train *state_proto.TrainSt
stateArr := s.ObtainTrainDigitalMockDataForStatus(train) stateArr := s.ObtainTrainDigitalMockDataForStatus(train)
msgArr = append(msgArr, stateArr...) msgArr = append(msgArr, stateArr...)
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.ATO_SEND_TRAIN, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //ATO发车按钮 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.ATO_SEND_TRAIN, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //ATO发车按钮
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.LEFT_DOOR_STATE, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //左门状态按钮 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.LEFT_DOOR_STATE, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //左门状态按钮
msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.RIGHT_DOOR_STATE, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //列车完整性 msgArr = append(msgArr, message.TrainPcSimBaseMessage{Data: []byte{message.RIGHT_DOOR_STATE, 0}, Type: message.SENDER_TRAIN_OUTR_INFO}) //列车完整性