[2.13.0-arch-opt]rm v2x unuse

This commit is contained in:
zhongchao
2023-01-14 12:16:08 +08:00
parent 34c1dcab09
commit 63d9459352
786 changed files with 26660 additions and 3430 deletions

View File

@@ -48,7 +48,7 @@ adb shell am broadcast -a com.obu.test_light_recognized --ei obuStates 1 --ei ob
// (旧版本)使用命令行触发各种测试场景演示
adb shell am broadcast -a com.v2x.test_panel_control --ei sceneType 1
adb shell am broadcast -a com.v2x.test_panel_control --ei sceneType 1
adb shell am broadcast -a com.v2x.test_panel_control --ez TextPanelOpenStatus true --ei TextPanelOpenType 11

View File

@@ -66,6 +66,7 @@ import java.util.TimerTask;
import bag_manager.BagManagerOuterClass;
import chassis.ChassisStatesOuterClass;
import chassis.VehicleStateOuterClass;
import function_state_management.FunctionStates;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
@@ -469,6 +470,11 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
getHandler().sendMessage(message);
}
@Override
public void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState) {
}
@Override
public void onChassisStates(MessagePad.Header header, ChassisStatesOuterClass.ChassisStates chassisStates) {

View File

@@ -0,0 +1,69 @@
syntax = "proto2";
package bag_manager;
enum BagStat{
SUCCEED = 0;
EXECUTING = 1;
EXECUTEERROR = 2;
COPYERROR = 3;
MERGEERROR = 4;
UPLOADCOSERROR = 5;
}
// 上传cos桶状态
message UploadCosStat{
required uint64 key = 1;
required uint32 stat = 2; // 0-成功 1-执行中 2-copy过程失败 3-合并过程失败 4-上传过程失败
optional string message = 3; // 失败时的具体描述
}
//空间使用情况
message SpaceInfo{
optional string directory = 1; // 路径名,为空表示总空间,否则表示对应的/home/mogo/data/bags下的子目录
optional uint64 total = 2; // 总空间
optional uint64 free = 3; // 可用空间
optional uint64 used = 4; // 已用空间
}
// bag目录空间使用情况
message BagSpaceInfo{
optional string host = 1; // 主机名
optional SpaceInfo diskSpaceInfo = 2; // 硬盘空间信息
repeated SpaceInfo BagDirsSpaceInfo = 3; // /home/mogo/data/bags下各子空间信息
}
// bag附加信息(录音,备注,接管信息)
message BagDescription{
optional string description = 1; // bag接管描述或重命名信息
optional bool hasAudio = 2; // 此bag是否具有录音文件
optional string audioUrl = 3; // bag附加录音文件的文件名
optional bool reportBI = 4; //上报BI状态
}
// 各主机上报的包信息
message SubBag {
required uint64 key = 1; // bag key值
required string host = 2; // 主机名
optional uint64 size = 3; // 此子包的大小
}
// 单个key值对应的包信息
message BagInfo{
required uint64 key = 1; // bag key值
optional uint64 totalSize = 2; // 所有子包或合并后的包的总大小
optional string timestamp = 3; // 时间戳
optional string bagPath = 4; // bag所在路径
optional bool mergeStat = 5; // 合并状态
optional bool uploadStat = 6; // 上传cos桶状态
optional BagDescription description = 7; // 包描述信息
repeated SubBag subBags = 8; // 子包信息
}
// 包管理请求
message BagManager{
required uint32 reqType = 1; // 请求类型:0-invalid 1-获取空间使用信息 2-遍历所有bag 3-上传cos 4-删除bag 5-为bag添加附加信息
optional uint64 keyReq = 2; // 要操作的包的key值,发送请求且reqType=(3,4,5)时有效
optional BagDescription descReq = 3; // 更新包附加信息,发送请求且reqType=5时有效
repeated BagSpaceInfo spaceInfoResp = 4; // 空间使用信息,获取响应且reqType=1时有效
repeated BagInfo bagsInfoResp = 5; // 包信息列表,获取响应且reqType=2时有效
optional UploadCosStat uploadCosResp = 6; //反馈上传cos桶结果,获取响应且reqType=3时有效
}

View File

@@ -0,0 +1,102 @@
syntax = "proto2";
package chassis;
enum GearPosition {
GEAR_NONE = 0;
GEAR_N = 1;
GEAR_R = 2;
GEAR_P = 3;
GEAR_D = 4;
}
enum LightSwitch {
LIGHT_NONE = 0;
LIGHT_LEFT = 1;
LIGHT_RIGHT = 2;
LIGHT_FLASH = 3;
LIGHT_MANUAL = 4;
LIGHT_AUTO = 5;
}
enum PilotMode {
MODE_MANUAL = 0;
MODE_AUTO_DRIVE = 1;
MODE_STEER_ONLY = 2;
MODE_SPEED_ONLY = 3;
MODE_REMOTE_DRIVE = 6;
MODE_TELECONTROL_DRIVE = 7;
MODE_INVALID = 8;
}
enum LongitudeDrivingMode {
ManualMode = 0;
AutomaticStandby = 1;
AutomaticAcceleration = 2;
AutomaticDeceleration = 3;
}
enum EPSSteeringMode {
Manual = 0;
Automatic = 1;
ManualFromInterference = 2;
ManualFromEPSFailure = 3;
TemporaryInhibited = 4;
}
enum EPBWorkStatus {
EPBSTATUS_NONE = 0;
EPBSTATUS_LOCKED = 1;
EPBSTATUS_RELEASED = 2;
EPBSTATUS_LOCKED_FAIL = 3;
EPBSTATUS_RELEASE_FAIL = 4;
EPBSTATUS_FAULT = 5;
}
enum VehicleTakeOverStatus {
None_TakeOver = 0;
Vehicle_TakeOver = 1;
Longitude_TakeOver = 2;
Latteral_TakeOver = 3;
}
enum VehicleFaultLevel {
None_Fault = 0;
General_Fault = 1;
Serious_Fault = 2;
Critical_Fault = 3;
}
enum VehicleControlMode {
VehicleControl_Manual = 0;
VehicleControl_Nonemanualdefault = 1;
VehicleControl_Autostandby = 2;
VehicleControl_Autoactive = 3;
VehicleControl_Remotestandby = 4;
VehicleControl_Remoteactive = 5;
VehicleControl_Telecontrolstandby = 6;
VehicleControl_Telecontrolactive = 7;
VehicleControl_Fault = 8;
}
enum VehicleWireControlModeRequest {
NoneWireControl = 0;
WireControl = 1;
}
enum CleanSystemControlMode {
Clean_Off_Line = 0;
Clean_Ready = 1;
Clean_Work_Standby = 2;
Clean_Sweeping_Standby = 3;
Clean_Sweeping_Both_Side_Work = 4;
Clean_Sweeping_Left_Work = 5;
Clean_Sweeping_Right_Work = 6;
Clean_WashSweep_Standby = 7;
Clean_WashSweep_Both_Side_Work = 8;
Clean_WashSweep_Left_Work = 9;
Clean_WashSweep_Right_Wrok = 10;
Clean_PureWash_Standby = 11;
Clean_PureWash_Both_Side_Work = 12;
Clean_PureWash_Left_Work = 13;
Clean_PureWash_Right_Work = 14;
}

View File

@@ -0,0 +1,194 @@
syntax = "proto2";
package chassis;
import "chassis.proto";
import "header.proto";
enum EPBWorkStates {
EPB_STATE_NONE = 0;
EPB_STATE_LOCKING = 1;
EPB_STATE_LOCKED = 2;
EPB_STATE_RELEASING = 3;
EPB_STATE_RELEASED = 4;
EPB_STATE_LOCKED_FAIL = 5;
EPB_STATE_RELEASE_FAIL = 6;
EPB_STATE_FAULT = 7;
}
enum VehicleFaultLevels {
NONE_FAULT = 0;
GENERAL_FAULT = 1;
SERIOUS_FAULT = 2;
CRITICAL_FAULT = 3;
}
message VehicleMotionStates {
optional float speed = 1 [default = 0]; // vehicle speed in m/s
optional float angular_speed = 2 [default = 0]; // vehicle angular speeed in rad/s
optional float acceleration = 3 [default = 0]; // vehicle acceleration in m/s^2
optional float longitude_acceleration = 4 [default = 0]; // vehicle longitudinal acceleration in m/s^2
optional float lateral_acceleration = 5 [default = 0]; // vehicle lateral acceleration in m/s^2
}
message DrivingSystemStates {
optional uint32 driving_enable_state = 1 [default = 0]; // vehicle driving system wirecontrol enable state
optional float throttle_response_position = 2 [default = 0]; // vehicle throttle response with control command in percentage [0, 100]
optional bool acceleration_pedal_inference_state = 3 [default = false]; // manual intervention status of acceleration pedal
optional float acceleration_pedal_inference_position = 4 [default = 0];// manual intervention opening of acceleration pedal in percentage [0, 100]
}
message BMSSystemStates {
optional float bms_total_voltage = 1 [default = 0]; // total output voltage of power battery in V
optional float bms_total_current = 2 [default = 0]; // total output current of power battery in A
optional float bms_soc = 3 [default = 0]; // residual SOC value of power battery
optional VehicleFaultLevels bms_system_fault_state = 4 [default = NONE_FAULT]; // fault states of the power battery system
}
message MCUSystemStates {
optional float mcu_motor_speed = 1 [default = 0]; // driving motor speed in rpm
optional float mcu_motor_torque = 2 [default = 0]; // driving motor output torque in nm
optional float mcu_motor_voltage = 3 [default = 0]; // driving motor input voltage in V
optional float mcu_motor_current = 4 [default = 0]; // driving motor output current in A
optional VehicleFaultLevels mcu_system_fault_state = 5 [default = NONE_FAULT]; // fault states of the mcu system
}
message EngineSystemStates {
optional float engine_speed = 1 [default = 0]; // engine speed in rpm
optional float remaining_oil = 2 [default = 0]; // current actual remaining oil
optional VehicleFaultLevels engine_system_fault_state = 3 [default = NONE_FAULT]; // fault states of the engine system
}
message BrakeSystemStates {
optional uint32 brake_enable_sts = 1 [default = 0]; // vehicle brake system wirecontrol enable state
optional bool brake_pedal_inference_state = 2 [default = false]; // manual intervention status of brake pedal
optional bool brake_pedal_state = 3 [default = false]; // the status of the brake pedal. if it is true, it means the brake pedal is depressed
optional float brake_pedal_inference_position = 4 [default = 0]; // manual intervention opening of brake pedal in percentage [0, 100]
optional float average_brake_pressure = 5 [default = 0]; // Average brake pressure feedback in kPa
optional VehicleFaultLevels brake_system_fault_state = 6 [default = NONE_FAULT]; // fault states of the brake system
optional float brake_pedal_response_position = 7 [default = 0]; // Brake pedal opening for chassis response in percentage [0, 100]
}
message SteerSystemStates {
optional uint32 steer_enable_state = 1 [default = 0]; // vehicle steer system wirecontrol enable state
optional uint32 eps_work_mode_state = 2 [default = 0]; // eps system work mode states
optional float steering_wheel_angle = 3 [default = 0]; // steering angle in degrees
optional float steering_wheel_speed = 4 [default = 0]; // steering speed in degree/s
optional bool steering_wheel_inference_state = 5 [default = false]; // manual intervention status of steering wheel
optional float steering_wheel_inference_torque = 6 [default = 0];// manual intervention torque of steering wheel in nm
optional float front_left_wheel_angle = 7 [default = 0]; // front left wheel angle
optional float front_right_wheel_angle = 8 [default = 0]; // front right wheel angle
optional VehicleFaultLevels steer_system_fault_state = 9 [default = NONE_FAULT]; // fault states of the steer system
}
message GearSystemStates {
optional uint32 gear_enable_state = 1 [default = 0]; // vehicle gear system wirecontrol enable state
optional GearPosition gear_position = 2 [default = GEAR_NONE]; // vehicle real gear position
optional bool gear_switch_inference_state = 3 [default = false]; // manual intervention status of gear switch
optional VehicleFaultLevels gear_system_fault_state = 4 [default = NONE_FAULT]; // fault states of the gear system
}
message EPBSystemStates {
optional uint32 epb_enable_state = 1 [default = 0]; // vehicle EPB system wirecontrol enable state
optional EPBWorkStates epb_work_state = 2 [default = EPB_STATE_NONE]; // EPB work status
optional bool epb_switch_inference_state = 3 [default = false]; // manual intervention status of EPB switch
optional VehicleFaultLevels epb_system_fault_state = 4 [default = NONE_FAULT]; // fault states of the EPB system
}
message BCMSystemStates {
optional LightSwitch turn_light_state = 1 [default = LIGHT_NONE]; // real turn light status
optional uint32 horn_state = 2 [default = 0]; // real horn status 0-off 1-open 2-reserved 3-reserved
optional uint32 highbeam_state = 3 [default = 0]; // real highbeam status 0-off 1-open 2-reserved 3-reserved
optional uint32 lowbeam_state = 4 [default = 0]; // real lowbeam status 0-off 1-open 2-reserved 3-reserved
optional uint32 front_foglight_state = 5 [default = 0]; // real front foglight status 0-off 1-open 2-reserved 3-reserved
optional uint32 back_foglight_state = 6 [default = 0]; // real back foglight status 0-off 1-open 2-reserved 3-reserved
optional uint32 clearance_lamps_state = 7 [default = 0]; // real clearance lamps status 0-off 1-open 2-reserved 3-reserved
optional uint32 alarm_light_state = 8 [default = 0]; // real alarm light status 0-off 1-open 2-reserved 3-reserved
optional uint32 position_light_state = 9 [default = 0]; // position light status 0-off 1-open 2-reserved 3-reserved
optional uint32 driver_door_state = 10 [default = 0]; // real driver door status 0-off 1-open 2-reserved 3-reserved
optional uint32 brake_light_state = 11 [default = 0]; // real brake light status 0-off 1-open 2-reserved 3-reserved
optional uint32 daytime_runing_light_state = 13 [default = 0]; // real daytime running light status 0-off 1-open 2-reserved 3-reserved
optional uint32 driver_safty_belt_state = 14 [default = 0]; // real driver safty belf status 0-off 1-open 2-reserved 3-reserved
optional uint32 front_hood_open_state = 15 [default = 0]; // real front hood opening status 0-off 1-open 2-reserved 3-reserved
optional uint32 wipers_work_state = 16 [default = 0]; // real wipers work status 0-off 1-open 2-reserved 3-reserved
optional uint32 wipers_work_intermittent_gear = 17 [default = 0]; // real wipers work gear
}
message SweeperFuTianTaskSystemStates {
optional bool secu_rem_ctrl_sts = 1 [default = false]; // 远程控制使能信号
optional bool secu_mot_work_sts = 2 [default = false]; // 电机启停控制状态信号
optional bool secu_dup_tail_door_open_sts = 3 [default = false]; // 垃圾箱尾门开状态信号
optional bool secu_dup_tail_door_close_sts = 4 [default = false]; // 垃圾箱尾门关状态信号
optional bool secu_auto_dup_tail_tip_sts = 5 [default = false]; // 垃圾箱倾翻状态信号
optional bool secu_dup_tail_ret_sts = 6 [default = false]; // 垃圾箱回位状态信号
optional bool secu_work_stand_sts = 7 [default = false]; // 标准作业状态信号
optional bool secu_work_strong_sts = 8 [default = false]; // 强力作业状态信号
optional bool secu_suctionnozzlebaffle_sts = 9 [default = false]; // 吸嘴挡板开状态信号
optional bool secu_dusk_close_sts = 10 [default = false]; // 降尘关闭状态信号
optional bool secu_work_left_sts = 11 [default = false]; // 左侧作业状态信号
optional bool secu_work_on_bothsides_sts = 12 [default = false]; // 两侧作业状态信号
optional bool secu_work_right_sts = 13 [default = false]; // 右侧作业状态信号
optional bool secu_work_ton_sts = 14 [default = false]; // 纯吸作业状态信号
optional bool secu_work_spray_gun_sts = 15 [default = false]; // 喷雾喷枪作业状态信号
optional bool secu_work_enc_des_sts = 16 [default = false]; // 箱体清淤作业状态信号
optional bool secu_mod_wash_sweep_sts = 17 [default = false]; // 洗扫模式状态信号
optional bool secu_mod_wash_sts = 18 [default = false]; // 纯洗模式状态信号
optional bool secu_sweepdisk_red_sts = 19 [default = false]; // 扫盘减速开关状态信号
optional bool secu_sweepdisk_acc_sts = 20 [default = false]; // 扫盘加速开关状态信号
optional bool secu_arrowlight_sts = 21 [default = false]; // 箭头灯开关状态信号
optional bool secu_floodlight_sts = 22 [default = false]; // 照明灯开关状态信号
optional bool secu_work_cleaning_sts = 23 [default = false]; // 保洁作业状态信号
optional bool secu_clean_music_sts = 24 [default = false]; // 音乐开关状态信号
optional bool secu_motor_oil_com_fail = 25 [default = false]; // 油泵电机通讯失败报警
optional bool secu_motor_water_com_fail = 26 [default = false]; // 水泵电机通讯失败报警
optional bool secu_motor_air_com_fail = 27 [default = false]; // 风机电机通讯失败报警
optional bool secu_fan_fault = 28 [default = false]; // 散热风扇故障报警
optional bool secu_chassis_com_fail = 29 [default = false]; // 底盘通讯失败报警
optional bool secu_panel_com_fail = 30 [default = false]; // 操作面板通讯失败报警
optional bool secu_oillevel_check = 31 [default = false]; // 液压油位低请停机检查报警信号
optional bool secu_oilstmjam_check = 32 [default = false]; // 液压油滤堵塞请停机检查报警信号
optional bool secu_water_valve_close = 33 [default = false]; // 出水阀门关闭不能清洗作业报警信号
optional bool secu_clean_water_tank_low = 34 [default = false]; // 清水箱水位低不能清洗作业报警信号
optional bool secu_sewage_water_tank_full = 35 [default = false]; // 污水箱满请停止作业报警信号
optional bool secu_coolwatertemp_high = 36 [default = false]; // 水温过高请停机检查报警信号
optional bool secu_coolwater_less = 37 [default = false]; // 冷却液位低报警信号
optional bool secu_tail_gate_open = 38 [default = false]; // 尾门打开接近开关
optional bool secu_manual_intervention_sts = 39 [default = false]; // 提示是否有人为介入
optional bool secu_ready_finish_sts = 40 [default = false]; // 上装ready完成
optional float secu_sweepdisk_speed = 41 [default = 0]; // 扫盘转速
}
message TaskSystemStates {
optional SweeperFuTianTaskSystemStates sweeper_futian_task_system_states = 1;
}
message ChassisAutopilotAssistanceInformation {
optional PilotMode chassis_pilot_mode_state = 1 [default = MODE_MANUAL];
optional bool Emergency_Stop_Switch_state = 2 [default = false]; // 急停开关状态
optional bool vehicle_pilot_switch_state = 3 [default = false]; // 车辆自动驾驶开关状态
optional float vehicle_low_voltage_battery_voltage = 4; // 车辆低压蓄电池电压
optional float vehicle_remaining_mileage = 5; // 车辆剩余续航里程
}
message VehicleChassisFaultInformation {
optional VehicleFaultLevels vehiclefaultlevel = 1 [default = NONE_FAULT]; // 整车故障状态
}
message ChassisStates {
optional common.Header header = 1;
optional VehicleMotionStates vehicle_motion_states = 2;
optional DrivingSystemStates driving_system_states = 3;
optional BrakeSystemStates brake_system_states = 4;
optional SteerSystemStates steer_system_states = 5;
optional GearSystemStates gear_system_states = 6;
optional EPBSystemStates epb_system_states = 7;
optional BCMSystemStates bcm_system_states = 8;
optional BMSSystemStates bms_system_states = 9;
optional MCUSystemStates mcu_system_states = 10;
optional EngineSystemStates engine_system_states = 11;
optional ChassisAutopilotAssistanceInformation chassis_autopilot_assistance_information = 12;
optional TaskSystemStates task_system_states = 13;
optional VehicleChassisFaultInformation vehicle_chassis_fault_information = 14;
}

View File

@@ -0,0 +1,50 @@
syntax = "proto2";
package function_state_management;
import "header.proto";
enum PilotDrivingFunctionState {
PILOT_DRIVING_OFF = 0;
PILOT_DRIVING_STANDBY = 1;
PILOT_DRIVING_ACTIVE = 2;
PILOT_DRIVING_LON_ACTIVE = 3;
PILOT_DRIVING_LAT_ACTIVE = 4;
PILOT_DRIVING_TAKEOVER = 5;
PILOT_DRIVING_OVERRIDE = 6;
PILOT_DRIVING_WARNING = 7;
PILOT_DRIVING_DEGRADED_RUNNING = 8;
PILOT_DRIVING_SAFTY_STOP = 9;
}
enum ParallelDrivingFunctionState {
PARALLEL_DRIVING_OFF = 0;
PARALLEL_DRIVING_STANDBY = 1;
PARALLEL_DRIVING_ACTIVE = 2;
PARALLEL_DRIVING_LON_ACTIVE = 3;
PARALLEL_DRIVING_LAT_ACTIVE = 4;
PARALLEL_DRIVING_TAKEOVER = 5;
PARALLEL_DRIVING_OVERRIDE = 6;
PARALLEL_DRIVING_WARNING = 7;
PARALLEL_DRIVING_DEGRADED_RUNNING = 8;
PARALLEL_DRIVING_SAFTY_STOP = 9;
}
enum TelecontrolDrivingFunctionState {
TELECONTROL_DRIVING_OFF = 0;
TELECONTROL_DRIVING_STANDBY = 1;
TELECONTROL_DRIVING_ACTIVE = 2;
TELECONTROL_DRIVING_LON_ACTIVE = 3;
TELECONTROL_DRIVING_LAT_ACTIVE = 4;
TELECONTROL_DRIVING_TAKEOVER = 5;
TELECONTROL_DRIVING_OVERRIDE = 6;
TELECONTROL_DRIVING_WARNING = 7;
TELECONTROL_DRIVING_DEGRADED_RUNNING = 8;
TELECONTROL_DRIVING_SAFTY_STOP = 9;
}
message FSMFunctionStates {
optional common.Header header = 1;
optional PilotDrivingFunctionState pilot_driving_function_state = 2;
optional ParallelDrivingFunctionState parallel_driving_function_state = 3;
optional TelecontrolDrivingFunctionState telecontrol_driving_function_state = 4;
}

View File

@@ -0,0 +1,84 @@
syntax = "proto2";
package geometry;
message Vector3 {
optional double x = 1;
optional double y = 2;
optional double z = 3;
}
message Vector3f {
optional float x = 1;
optional float y = 2;
optional float z = 3;
}
message Point2D {
optional double x = 1 [default = nan];
optional double y = 2 [default = nan];
}
message Point3D {
optional double x = 1 [default = nan];
optional double y = 2 [default = nan];
optional double z = 3 [default = nan];
}
message Trace {
optional double timestamp = 1;
optional Point3D position = 2;
optional Point3D velocity = 3;
optional Point3D acceleration = 4;
optional Point3D heading = 5;
}
message PointLLH {
// Longitude in degrees, ranging from -180 to 180.
optional double lon = 1 [default = nan];
// Latitude in degrees, ranging from -90 to 90.
optional double lat = 2 [default = nan];
// WGS-84 ellipsoid height in meters.
optional double height = 3 [default = 0.0];
}
message Point {
optional double x = 1;
optional double y = 2;
optional double z = 3;
}
message Quaternion {
optional double x = 1 [default = nan];
optional double y = 2 [default = nan];
optional double z = 3 [default = nan];;
optional double w = 4 [default = nan];
}
message Polygon {
repeated Point points = 1;
}
message Transform {
optional Vector3 translation = 1;
optional Quaternion rotation = 2;
}
//pose in free space, composed of position and orientation
message Pose {
optional Point position = 1;
optional Quaternion orientation = 2;
}
//acceleration in free space broken into its linear and angular parts
message Accel {
optional Vector3 linear = 1;
optional Vector3 angular = 2;
}
//velocity in free space broken into its linear and angular parts
message Twist {
optional Vector3 linear = 1;
optional Vector3 angular = 2;
}

View File

@@ -0,0 +1,155 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option go_package = "github.com/golang/protobuf/ptypes/any";
option java_package = "com.google.protobuf";
option java_outer_classname = "AnyProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
// `Any` contains an arbitrary serialized protocol buffer message along with a
// URL that describes the type of the serialized message.
//
// Protobuf library provides support to pack/unpack Any values in the form
// of utility functions or additional generated methods of the Any type.
//
// Example 1: Pack and unpack a message in C++.
//
// Foo foo = ...;
// Any any;
// any.PackFrom(foo);
// ...
// if (any.UnpackTo(&foo)) {
// ...
// }
//
// Example 2: Pack and unpack a message in Java.
//
// Foo foo = ...;
// Any any = Any.pack(foo);
// ...
// if (any.is(Foo.class)) {
// foo = any.unpack(Foo.class);
// }
//
// Example 3: Pack and unpack a message in Python.
//
// foo = Foo(...)
// any = Any()
// any.Pack(foo)
// ...
// if any.Is(Foo.DESCRIPTOR):
// any.Unpack(foo)
// ...
//
// Example 4: Pack and unpack a message in Go
//
// foo := &pb.Foo{...}
// any, err := ptypes.MarshalAny(foo)
// ...
// foo := &pb.Foo{}
// if err := ptypes.UnmarshalAny(any, foo); err != nil {
// ...
// }
//
// The pack methods provided by protobuf library will by default use
// 'type.googleapis.com/full.type.name' as the type URL and the unpack
// methods only use the fully qualified type name after the last '/'
// in the type URL, for example "foo.bar.com/x/y.z" will yield type
// name "y.z".
//
//
// JSON
// ====
// The JSON representation of an `Any` value uses the regular
// representation of the deserialized, embedded message, with an
// additional field `@type` which contains the type URL. Example:
//
// package google.profile;
// message Person {
// string first_name = 1;
// string last_name = 2;
// }
//
// {
// "@type": "type.googleapis.com/google.profile.Person",
// "firstName": <string>,
// "lastName": <string>
// }
//
// If the embedded message type is well-known and has a custom JSON
// representation, that representation will be embedded adding a field
// `value` which holds the custom JSON in addition to the `@type`
// field. Example (for message [google.protobuf.Duration][]):
//
// {
// "@type": "type.googleapis.com/google.protobuf.Duration",
// "value": "1.212s"
// }
//
message Any {
// A URL/resource name that uniquely identifies the type of the serialized
// protocol buffer message. This string must contain at least
// one "/" character. The last segment of the URL's path must represent
// the fully qualified name of the type (as in
// `path/google.protobuf.Duration`). The name should be in a canonical form
// (e.g., leading "." is not accepted).
//
// In practice, teams usually precompile into the binary all types that they
// expect it to use in the context of Any. However, for URLs which use the
// scheme `http`, `https`, or no scheme, one can optionally set up a type
// server that maps type URLs to message definitions as follows:
//
// * If no scheme is provided, `https` is assumed.
// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
// value in binary format, or produce an error.
// * Applications are allowed to cache lookup results based on the
// URL, or have them precompiled into a binary to avoid any
// lookup. Therefore, binary compatibility needs to be preserved
// on changes to types. (Use versioned type names to manage
// breaking changes.)
//
// Note: this functionality is not currently available in the official
// protobuf release, and it is not used for type URLs beginning with
// type.googleapis.com.
//
// Schemes other than `http`, `https` (or the empty scheme) might be
// used with implementation specific semantics.
//
string type_url = 1;
// Must be a valid serialized protocol buffer of the above specified type.
bytes value = 2;
}

View File

@@ -0,0 +1,210 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
import "google/protobuf/source_context.proto";
import "google/protobuf/type.proto";
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option java_package = "com.google.protobuf";
option java_outer_classname = "ApiProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
option go_package = "google.golang.org/genproto/protobuf/api;api";
// Api is a light-weight descriptor for an API Interface.
//
// Interfaces are also described as "protocol buffer services" in some contexts,
// such as by the "service" keyword in a .proto file, but they are different
// from API Services, which represent a concrete implementation of an interface
// as opposed to simply a description of methods and bindings. They are also
// sometimes simply referred to as "APIs" in other contexts, such as the name of
// this message itself. See https://cloud.google.com/apis/design/glossary for
// detailed terminology.
message Api {
// The fully qualified name of this interface, including package name
// followed by the interface's simple name.
string name = 1;
// The methods of this interface, in unspecified order.
repeated Method methods = 2;
// Any metadata attached to the interface.
repeated Option options = 3;
// A version string for this interface. If specified, must have the form
// `major-version.minor-version`, as in `1.10`. If the minor version is
// omitted, it defaults to zero. If the entire version field is empty, the
// major version is derived from the package name, as outlined below. If the
// field is not empty, the version in the package name will be verified to be
// consistent with what is provided here.
//
// The versioning schema uses [semantic
// versioning](http://semver.org) where the major version number
// indicates a breaking change and the minor version an additive,
// non-breaking change. Both version numbers are signals to users
// what to expect from different versions, and should be carefully
// chosen based on the product plan.
//
// The major version is also reflected in the package name of the
// interface, which must end in `v<major-version>`, as in
// `google.feature.v1`. For major versions 0 and 1, the suffix can
// be omitted. Zero major versions must only be used for
// experimental, non-GA interfaces.
//
//
string version = 4;
// Source context for the protocol buffer service represented by this
// message.
SourceContext source_context = 5;
// Included interfaces. See [Mixin][].
repeated Mixin mixins = 6;
// The source syntax of the service.
Syntax syntax = 7;
}
// Method represents a method of an API interface.
message Method {
// The simple name of this method.
string name = 1;
// A URL of the input message type.
string request_type_url = 2;
// If true, the request is streamed.
bool request_streaming = 3;
// The URL of the output message type.
string response_type_url = 4;
// If true, the response is streamed.
bool response_streaming = 5;
// Any metadata attached to the method.
repeated Option options = 6;
// The source syntax of this method.
Syntax syntax = 7;
}
// Declares an API Interface to be included in this interface. The including
// interface must redeclare all the methods from the included interface, but
// documentation and options are inherited as follows:
//
// - If after comment and whitespace stripping, the documentation
// string of the redeclared method is empty, it will be inherited
// from the original method.
//
// - Each annotation belonging to the service config (http,
// visibility) which is not set in the redeclared method will be
// inherited.
//
// - If an http annotation is inherited, the path pattern will be
// modified as follows. Any version prefix will be replaced by the
// version of the including interface plus the [root][] path if
// specified.
//
// Example of a simple mixin:
//
// package google.acl.v1;
// service AccessControl {
// // Get the underlying ACL object.
// rpc GetAcl(GetAclRequest) returns (Acl) {
// option (google.api.http).get = "/v1/{resource=**}:getAcl";
// }
// }
//
// package google.storage.v2;
// service Storage {
// rpc GetAcl(GetAclRequest) returns (Acl);
//
// // Get a data record.
// rpc GetData(GetDataRequest) returns (Data) {
// option (google.api.http).get = "/v2/{resource=**}";
// }
// }
//
// Example of a mixin configuration:
//
// apis:
// - name: google.storage.v2.Storage
// mixins:
// - name: google.acl.v1.AccessControl
//
// The mixin construct implies that all methods in `AccessControl` are
// also declared with same name and request/response types in
// `Storage`. A documentation generator or annotation processor will
// see the effective `Storage.GetAcl` method after inherting
// documentation and annotations as follows:
//
// service Storage {
// // Get the underlying ACL object.
// rpc GetAcl(GetAclRequest) returns (Acl) {
// option (google.api.http).get = "/v2/{resource=**}:getAcl";
// }
// ...
// }
//
// Note how the version in the path pattern changed from `v1` to `v2`.
//
// If the `root` field in the mixin is specified, it should be a
// relative path under which inherited HTTP paths are placed. Example:
//
// apis:
// - name: google.storage.v2.Storage
// mixins:
// - name: google.acl.v1.AccessControl
// root: acls
//
// This implies the following inherited HTTP annotation:
//
// service Storage {
// // Get the underlying ACL object.
// rpc GetAcl(GetAclRequest) returns (Acl) {
// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
// }
// ...
// }
message Mixin {
// The fully qualified name of the interface which is included.
string name = 1;
// If non-empty specifies a path under which inherited HTTP paths
// are rooted.
string root = 2;
}

View File

@@ -0,0 +1,178 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Author: kenton@google.com (Kenton Varda)
//
// WARNING: The plugin interface is currently EXPERIMENTAL and is subject to
// change.
//
// protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is
// just a program that reads a CodeGeneratorRequest from stdin and writes a
// CodeGeneratorResponse to stdout.
//
// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead
// of dealing with the raw protocol defined here.
//
// A plugin executable needs only to be placed somewhere in the path. The
// plugin should be named "protoc-gen-$NAME", and will then be used when the
// flag "--${NAME}_out" is passed to protoc.
syntax = "proto2";
package google.protobuf.compiler;
option java_package = "com.google.protobuf.compiler";
option java_outer_classname = "PluginProtos";
option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go";
import "google/protobuf/descriptor.proto";
// The version number of protocol compiler.
message Version {
optional int32 major = 1;
optional int32 minor = 2;
optional int32 patch = 3;
// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
// be empty for mainline stable releases.
optional string suffix = 4;
}
// An encoded CodeGeneratorRequest is written to the plugin's stdin.
message CodeGeneratorRequest {
// The .proto files that were explicitly listed on the command-line. The
// code generator should generate code only for these files. Each file's
// descriptor will be included in proto_file, below.
repeated string file_to_generate = 1;
// The generator parameter passed on the command-line.
optional string parameter = 2;
// FileDescriptorProtos for all files in files_to_generate and everything
// they import. The files will appear in topological order, so each file
// appears before any file that imports it.
//
// protoc guarantees that all proto_files will be written after
// the fields above, even though this is not technically guaranteed by the
// protobuf wire format. This theoretically could allow a plugin to stream
// in the FileDescriptorProtos and handle them one by one rather than read
// the entire set into memory at once. However, as of this writing, this
// is not similarly optimized on protoc's end -- it will store all fields in
// memory at once before sending them to the plugin.
//
// Type names of fields and extensions in the FileDescriptorProto are always
// fully qualified.
repeated FileDescriptorProto proto_file = 15;
// The version number of protocol compiler.
optional Version compiler_version = 3;
}
// The plugin writes an encoded CodeGeneratorResponse to stdout.
message CodeGeneratorResponse {
// Error message. If non-empty, code generation failed. The plugin process
// should exit with status code zero even if it reports an error in this way.
//
// This should be used to indicate errors in .proto files which prevent the
// code generator from generating correct code. Errors which indicate a
// problem in protoc itself -- such as the input CodeGeneratorRequest being
// unparseable -- should be reported by writing a message to stderr and
// exiting with a non-zero status code.
optional string error = 1;
// A bitmask of supported features that the code generator supports.
// This is a bitwise "or" of values from the Feature enum.
optional uint64 supported_features = 2;
// Sync with code_generator.h.
enum Feature {
FEATURE_NONE = 0;
FEATURE_PROTO3_OPTIONAL = 1;
}
// Represents a single generated file.
message File {
// The file name, relative to the output directory. The name must not
// contain "." or ".." components and must be relative, not be absolute (so,
// the file cannot lie outside the output directory). "/" must be used as
// the path separator, not "\".
//
// If the name is omitted, the content will be appended to the previous
// file. This allows the generator to break large files into small chunks,
// and allows the generated text to be streamed back to protoc so that large
// files need not reside completely in memory at one time. Note that as of
// this writing protoc does not optimize for this -- it will read the entire
// CodeGeneratorResponse before writing files to disk.
optional string name = 1;
// If non-empty, indicates that the named file should already exist, and the
// content here is to be inserted into that file at a defined insertion
// point. This feature allows a code generator to extend the output
// produced by another code generator. The original generator may provide
// insertion points by placing special annotations in the file that look
// like:
// @@protoc_insertion_point(NAME)
// The annotation can have arbitrary text before and after it on the line,
// which allows it to be placed in a comment. NAME should be replaced with
// an identifier naming the point -- this is what other generators will use
// as the insertion_point. Code inserted at this point will be placed
// immediately above the line containing the insertion point (thus multiple
// insertions to the same point will come out in the order they were added).
// The double-@ is intended to make it unlikely that the generated code
// could contain things that look like insertion points by accident.
//
// For example, the C++ code generator places the following line in the
// .pb.h files that it generates:
// // @@protoc_insertion_point(namespace_scope)
// This line appears within the scope of the file's package namespace, but
// outside of any particular class. Another plugin can then specify the
// insertion_point "namespace_scope" to generate additional classes or
// other declarations that should be placed in this scope.
//
// Note that if the line containing the insertion point begins with
// whitespace, the same whitespace will be added to every line of the
// inserted text. This is useful for languages like Python, where
// indentation matters. In these languages, the insertion point comment
// should be indented the same amount as any inserted code will need to be
// in order to work correctly in that context.
//
// The code generator that generates the initial file and the one which
// inserts into it must both run as part of a single invocation of protoc.
// Code generators are executed in the order in which they appear on the
// command line.
//
// If |insertion_point| is present, |name| must also be present.
optional string insertion_point = 2;
// The file contents.
optional string content = 15;
}
repeated File file = 15;
}

View File

@@ -0,0 +1,909 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Author: kenton@google.com (Kenton Varda)
// Based on original Protocol Buffers design by
// Sanjay Ghemawat, Jeff Dean, and others.
//
// The messages in this file describe the definitions found in .proto files.
// A valid .proto file can be translated directly to a FileDescriptorProto
// without any other information (e.g. without reading its imports).
syntax = "proto2";
package google.protobuf;
option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
option java_package = "com.google.protobuf";
option java_outer_classname = "DescriptorProtos";
option csharp_namespace = "Google.Protobuf.Reflection";
option objc_class_prefix = "GPB";
option cc_enable_arenas = true;
// descriptor.proto must be optimized for speed because reflection-based
// algorithms don't work during bootstrapping.
option optimize_for = SPEED;
// The protocol compiler can output a FileDescriptorSet containing the .proto
// files it parses.
message FileDescriptorSet {
repeated FileDescriptorProto file = 1;
}
// Describes a complete .proto file.
message FileDescriptorProto {
optional string name = 1; // file name, relative to root of source tree
optional string package = 2; // e.g. "foo", "foo.bar", etc.
// Names of files imported by this file.
repeated string dependency = 3;
// Indexes of the public imported files in the dependency list above.
repeated int32 public_dependency = 10;
// Indexes of the weak imported files in the dependency list.
// For Google-internal migration only. Do not use.
repeated int32 weak_dependency = 11;
// All top-level definitions in this file.
repeated DescriptorProto message_type = 4;
repeated EnumDescriptorProto enum_type = 5;
repeated ServiceDescriptorProto service = 6;
repeated FieldDescriptorProto extension = 7;
optional FileOptions options = 8;
// This field contains optional information about the original source code.
// You may safely remove this entire field without harming runtime
// functionality of the descriptors -- the information is needed only by
// development tools.
optional SourceCodeInfo source_code_info = 9;
// The syntax of the proto file.
// The supported values are "proto2" and "proto3".
optional string syntax = 12;
}
// Describes a message type.
message DescriptorProto {
optional string name = 1;
repeated FieldDescriptorProto field = 2;
repeated FieldDescriptorProto extension = 6;
repeated DescriptorProto nested_type = 3;
repeated EnumDescriptorProto enum_type = 4;
message ExtensionRange {
optional int32 start = 1; // Inclusive.
optional int32 end = 2; // Exclusive.
optional ExtensionRangeOptions options = 3;
}
repeated ExtensionRange extension_range = 5;
repeated OneofDescriptorProto oneof_decl = 8;
optional MessageOptions options = 7;
// Range of reserved tag numbers. Reserved tag numbers may not be used by
// fields or extension ranges in the same message. Reserved ranges may
// not overlap.
message ReservedRange {
optional int32 start = 1; // Inclusive.
optional int32 end = 2; // Exclusive.
}
repeated ReservedRange reserved_range = 9;
// Reserved field names, which may not be used by fields in the same message.
// A given name may only be reserved once.
repeated string reserved_name = 10;
}
message ExtensionRangeOptions {
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
// Describes a field within a message.
message FieldDescriptorProto {
enum Type {
// 0 is reserved for errors.
// Order is weird for historical reasons.
TYPE_DOUBLE = 1;
TYPE_FLOAT = 2;
// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
// negative values are likely.
TYPE_INT64 = 3;
TYPE_UINT64 = 4;
// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
// negative values are likely.
TYPE_INT32 = 5;
TYPE_FIXED64 = 6;
TYPE_FIXED32 = 7;
TYPE_BOOL = 8;
TYPE_STRING = 9;
// Tag-delimited aggregate.
// Group type is deprecated and not supported in proto3. However, Proto3
// implementations should still be able to parse the group wire format and
// treat group fields as unknown fields.
TYPE_GROUP = 10;
TYPE_MESSAGE = 11; // Length-delimited aggregate.
// New in version 2.
TYPE_BYTES = 12;
TYPE_UINT32 = 13;
TYPE_ENUM = 14;
TYPE_SFIXED32 = 15;
TYPE_SFIXED64 = 16;
TYPE_SINT32 = 17; // Uses ZigZag encoding.
TYPE_SINT64 = 18; // Uses ZigZag encoding.
}
enum Label {
// 0 is reserved for errors
LABEL_OPTIONAL = 1;
LABEL_REQUIRED = 2;
LABEL_REPEATED = 3;
}
optional string name = 1;
optional int32 number = 3;
optional Label label = 4;
// If type_name is set, this need not be set. If both this and type_name
// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
optional Type type = 5;
// For message and enum types, this is the name of the type. If the name
// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
// rules are used to find the type (i.e. first the nested types within this
// message are searched, then within the parent, on up to the root
// namespace).
optional string type_name = 6;
// For extensions, this is the name of the type being extended. It is
// resolved in the same manner as type_name.
optional string extendee = 2;
// For numeric types, contains the original text representation of the value.
// For booleans, "true" or "false".
// For strings, contains the default text contents (not escaped in any way).
// For bytes, contains the C escaped value. All bytes >= 128 are escaped.
// TODO(kenton): Base-64 encode?
optional string default_value = 7;
// If set, gives the index of a oneof in the containing type's oneof_decl
// list. This field is a member of that oneof.
optional int32 oneof_index = 9;
// JSON name of this field. The value is set by protocol compiler. If the
// user has set a "json_name" option on this field, that option's value
// will be used. Otherwise, it's deduced from the field's name by converting
// it to camelCase.
optional string json_name = 10;
optional FieldOptions options = 8;
// If true, this is a proto3 "optional". When a proto3 field is optional, it
// tracks presence regardless of field type.
//
// When proto3_optional is true, this field must be belong to a oneof to
// signal to old proto3 clients that presence is tracked for this field. This
// oneof is known as a "synthetic" oneof, and this field must be its sole
// member (each proto3 optional field gets its own synthetic oneof). Synthetic
// oneofs exist in the descriptor only, and do not generate any API. Synthetic
// oneofs must be ordered after all "real" oneofs.
//
// For message fields, proto3_optional doesn't create any semantic change,
// since non-repeated message fields always track presence. However it still
// indicates the semantic detail of whether the user wrote "optional" or not.
// This can be useful for round-tripping the .proto file. For consistency we
// give message fields a synthetic oneof also, even though it is not required
// to track presence. This is especially important because the parser can't
// tell if a field is a message or an enum, so it must always create a
// synthetic oneof.
//
// Proto2 optional fields do not set this flag, because they already indicate
// optional with `LABEL_OPTIONAL`.
optional bool proto3_optional = 17;
}
// Describes a oneof.
message OneofDescriptorProto {
optional string name = 1;
optional OneofOptions options = 2;
}
// Describes an enum type.
message EnumDescriptorProto {
optional string name = 1;
repeated EnumValueDescriptorProto value = 2;
optional EnumOptions options = 3;
// Range of reserved numeric values. Reserved values may not be used by
// entries in the same enum. Reserved ranges may not overlap.
//
// Note that this is distinct from DescriptorProto.ReservedRange in that it
// is inclusive such that it can appropriately represent the entire int32
// domain.
message EnumReservedRange {
optional int32 start = 1; // Inclusive.
optional int32 end = 2; // Inclusive.
}
// Range of reserved numeric values. Reserved numeric values may not be used
// by enum values in the same enum declaration. Reserved ranges may not
// overlap.
repeated EnumReservedRange reserved_range = 4;
// Reserved enum value names, which may not be reused. A given name may only
// be reserved once.
repeated string reserved_name = 5;
}
// Describes a value within an enum.
message EnumValueDescriptorProto {
optional string name = 1;
optional int32 number = 2;
optional EnumValueOptions options = 3;
}
// Describes a service.
message ServiceDescriptorProto {
optional string name = 1;
repeated MethodDescriptorProto method = 2;
optional ServiceOptions options = 3;
}
// Describes a method of a service.
message MethodDescriptorProto {
optional string name = 1;
// Input and output type names. These are resolved in the same way as
// FieldDescriptorProto.type_name, but must refer to a message type.
optional string input_type = 2;
optional string output_type = 3;
optional MethodOptions options = 4;
// Identifies if client streams multiple client messages
optional bool client_streaming = 5 [default = false];
// Identifies if server streams multiple server messages
optional bool server_streaming = 6 [default = false];
}
// ===================================================================
// Options
// Each of the definitions above may have "options" attached. These are
// just annotations which may cause code to be generated slightly differently
// or may contain hints for code that manipulates protocol messages.
//
// Clients may define custom options as extensions of the *Options messages.
// These extensions may not yet be known at parsing time, so the parser cannot
// store the values in them. Instead it stores them in a field in the *Options
// message called uninterpreted_option. This field must have the same name
// across all *Options messages. We then use this field to populate the
// extensions when we build a descriptor, at which point all protos have been
// parsed and so all extensions are known.
//
// Extension numbers for custom options may be chosen as follows:
// * For options which will only be used within a single application or
// organization, or for experimental options, use field numbers 50000
// through 99999. It is up to you to ensure that you do not use the
// same number for multiple options.
// * For options which will be published and used publicly by multiple
// independent entities, e-mail protobuf-global-extension-registry@google.com
// to reserve extension numbers. Simply provide your project name (e.g.
// Objective-C plugin) and your project website (if available) -- there's no
// need to explain how you intend to use them. Usually you only need one
// extension number. You can declare multiple options with only one extension
// number by putting them in a sub-message. See the Custom Options section of
// the docs for examples:
// https://developers.google.com/protocol-buffers/docs/proto#options
// If this turns out to be popular, a web service will be set up
// to automatically assign option numbers.
message FileOptions {
// Sets the Java package where classes generated from this .proto will be
// placed. By default, the proto package is used, but this is often
// inappropriate because proto packages do not normally start with backwards
// domain names.
optional string java_package = 1;
// If set, all the classes from the .proto file are wrapped in a single
// outer class with the given name. This applies to both Proto1
// (equivalent to the old "--one_java_file" option) and Proto2 (where
// a .proto always translates to a single class, but you may want to
// explicitly choose the class name).
optional string java_outer_classname = 8;
// If set true, then the Java code generator will generate a separate .java
// file for each top-level message, enum, and service defined in the .proto
// file. Thus, these types will *not* be nested inside the outer class
// named by java_outer_classname. However, the outer class will still be
// generated to contain the file's getDescriptor() method as well as any
// top-level extensions defined in the file.
optional bool java_multiple_files = 10 [default = false];
// This option does nothing.
optional bool java_generate_equals_and_hash = 20 [deprecated=true];
// If set true, then the Java2 code generator will generate code that
// throws an exception whenever an attempt is made to assign a non-UTF-8
// byte sequence to a string field.
// Message reflection will do the same.
// However, an extension field still accepts non-UTF-8 byte sequences.
// This option has no effect on when used with the lite runtime.
optional bool java_string_check_utf8 = 27 [default = false];
// Generated classes can be optimized for speed or code size.
enum OptimizeMode {
SPEED = 1; // Generate complete code for parsing, serialization,
// etc.
CODE_SIZE = 2; // Use ReflectionOps to implement these methods.
LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
}
optional OptimizeMode optimize_for = 9 [default = SPEED];
// Sets the Go package where structs generated from this .proto will be
// placed. If omitted, the Go package will be derived from the following:
// - The basename of the package import path, if provided.
// - Otherwise, the package statement in the .proto file, if present.
// - Otherwise, the basename of the .proto file, without extension.
optional string go_package = 11;
// Should generic services be generated in each language? "Generic" services
// are not specific to any particular RPC system. They are generated by the
// main code generators in each language (without additional plugins).
// Generic services were the only kind of service generation supported by
// early versions of google.protobuf.
//
// Generic services are now considered deprecated in favor of using plugins
// that generate code specific to your particular RPC system. Therefore,
// these default to false. Old code which depends on generic services should
// explicitly set them to true.
optional bool cc_generic_services = 16 [default = false];
optional bool java_generic_services = 17 [default = false];
optional bool py_generic_services = 18 [default = false];
optional bool php_generic_services = 42 [default = false];
// Is this file deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for everything in the file, or it will be completely ignored; in the very
// least, this is a formalization for deprecating files.
optional bool deprecated = 23 [default = false];
// Enables the use of arenas for the proto messages in this file. This applies
// only to generated classes for C++.
optional bool cc_enable_arenas = 31 [default = true];
// Sets the objective c class prefix which is prepended to all objective c
// generated classes from this .proto. There is no default.
optional string objc_class_prefix = 36;
// Namespace for generated classes; defaults to the package.
optional string csharp_namespace = 37;
// By default Swift generators will take the proto package and CamelCase it
// replacing '.' with underscore and use that to prefix the types/symbols
// defined. When this options is provided, they will use this value instead
// to prefix the types/symbols defined.
optional string swift_prefix = 39;
// Sets the php class prefix which is prepended to all php generated classes
// from this .proto. Default is empty.
optional string php_class_prefix = 40;
// Use this option to change the namespace of php generated classes. Default
// is empty. When this option is empty, the package name will be used for
// determining the namespace.
optional string php_namespace = 41;
// Use this option to change the namespace of php generated metadata classes.
// Default is empty. When this option is empty, the proto file name will be
// used for determining the namespace.
optional string php_metadata_namespace = 44;
// Use this option to change the package of ruby generated classes. Default
// is empty. When this option is not set, the package name will be used for
// determining the ruby package.
optional string ruby_package = 45;
// The parser stores options it doesn't recognize here.
// See the documentation for the "Options" section above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message.
// See the documentation for the "Options" section above.
extensions 1000 to max;
reserved 38;
}
message MessageOptions {
// Set true to use the old proto1 MessageSet wire format for extensions.
// This is provided for backwards-compatibility with the MessageSet wire
// format. You should not use this for any other reason: It's less
// efficient, has fewer features, and is more complicated.
//
// The message must be defined exactly as follows:
// message Foo {
// option message_set_wire_format = true;
// extensions 4 to max;
// }
// Note that the message cannot have any defined fields; MessageSets only
// have extensions.
//
// All extensions of your type must be singular messages; e.g. they cannot
// be int32s, enums, or repeated messages.
//
// Because this is an option, the above two restrictions are not enforced by
// the protocol compiler.
optional bool message_set_wire_format = 1 [default = false];
// Disables the generation of the standard "descriptor()" accessor, which can
// conflict with a field of the same name. This is meant to make migration
// from proto1 easier; new code should avoid fields named "descriptor".
optional bool no_standard_descriptor_accessor = 2 [default = false];
// Is this message deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for the message, or it will be completely ignored; in the very least,
// this is a formalization for deprecating messages.
optional bool deprecated = 3 [default = false];
// Whether the message is an automatically generated map entry type for the
// maps field.
//
// For maps fields:
// map<KeyType, ValueType> map_field = 1;
// The parsed descriptor looks like:
// message MapFieldEntry {
// option map_entry = true;
// optional KeyType key = 1;
// optional ValueType value = 2;
// }
// repeated MapFieldEntry map_field = 1;
//
// Implementations may choose not to generate the map_entry=true message, but
// use a native map in the target language to hold the keys and values.
// The reflection APIs in such implementations still need to work as
// if the field is a repeated message field.
//
// NOTE: Do not set the option in .proto files. Always use the maps syntax
// instead. The option should only be implicitly set by the proto compiler
// parser.
optional bool map_entry = 7;
reserved 8; // javalite_serializable
reserved 9; // javanano_as_lite
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
message FieldOptions {
// The ctype option instructs the C++ code generator to use a different
// representation of the field than it normally would. See the specific
// options below. This option is not yet implemented in the open source
// release -- sorry, we'll try to include it in a future version!
optional CType ctype = 1 [default = STRING];
enum CType {
// Default mode.
STRING = 0;
CORD = 1;
STRING_PIECE = 2;
}
// The packed option can be enabled for repeated primitive fields to enable
// a more efficient representation on the wire. Rather than repeatedly
// writing the tag and type for each element, the entire array is encoded as
// a single length-delimited blob. In proto3, only explicit setting it to
// false will avoid using packed encoding.
optional bool packed = 2;
// The jstype option determines the JavaScript type used for values of the
// field. The option is permitted only for 64 bit integral and fixed types
// (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
// is represented as JavaScript string, which avoids loss of precision that
// can happen when a large value is converted to a floating point JavaScript.
// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
// use the JavaScript "number" type. The behavior of the default option
// JS_NORMAL is implementation dependent.
//
// This option is an enum to permit additional types to be added, e.g.
// goog.math.Integer.
optional JSType jstype = 6 [default = JS_NORMAL];
enum JSType {
// Use the default type.
JS_NORMAL = 0;
// Use JavaScript strings.
JS_STRING = 1;
// Use JavaScript numbers.
JS_NUMBER = 2;
}
// Should this field be parsed lazily? Lazy applies only to message-type
// fields. It means that when the outer message is initially parsed, the
// inner message's contents will not be parsed but instead stored in encoded
// form. The inner message will actually be parsed when it is first accessed.
//
// This is only a hint. Implementations are free to choose whether to use
// eager or lazy parsing regardless of the value of this option. However,
// setting this option true suggests that the protocol author believes that
// using lazy parsing on this field is worth the additional bookkeeping
// overhead typically needed to implement it.
//
// This option does not affect the public interface of any generated code;
// all method signatures remain the same. Furthermore, thread-safety of the
// interface is not affected by this option; const methods remain safe to
// call from multiple threads concurrently, while non-const methods continue
// to require exclusive access.
//
//
// Note that implementations may choose not to check required fields within
// a lazy sub-message. That is, calling IsInitialized() on the outer message
// may return true even if the inner message has missing required fields.
// This is necessary because otherwise the inner message would have to be
// parsed in order to perform the check, defeating the purpose of lazy
// parsing. An implementation which chooses not to check required fields
// must be consistent about it. That is, for any particular sub-message, the
// implementation must either *always* check its required fields, or *never*
// check its required fields, regardless of whether or not the message has
// been parsed.
optional bool lazy = 5 [default = false];
// Is this field deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for accessors, or it will be completely ignored; in the very least, this
// is a formalization for deprecating fields.
optional bool deprecated = 3 [default = false];
// For Google-internal migration only. Do not use.
optional bool weak = 10 [default = false];
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
reserved 4; // removed jtype
}
message OneofOptions {
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
message EnumOptions {
// Set this option to true to allow mapping different tag names to the same
// value.
optional bool allow_alias = 2;
// Is this enum deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for the enum, or it will be completely ignored; in the very least, this
// is a formalization for deprecating enums.
optional bool deprecated = 3 [default = false];
reserved 5; // javanano_as_lite
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
message EnumValueOptions {
// Is this enum value deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for the enum value, or it will be completely ignored; in the very least,
// this is a formalization for deprecating enum values.
optional bool deprecated = 1 [default = false];
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
message ServiceOptions {
// Note: Field numbers 1 through 32 are reserved for Google's internal RPC
// framework. We apologize for hoarding these numbers to ourselves, but
// we were already using them long before we decided to release Protocol
// Buffers.
// Is this service deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for the service, or it will be completely ignored; in the very least,
// this is a formalization for deprecating services.
optional bool deprecated = 33 [default = false];
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
message MethodOptions {
// Note: Field numbers 1 through 32 are reserved for Google's internal RPC
// framework. We apologize for hoarding these numbers to ourselves, but
// we were already using them long before we decided to release Protocol
// Buffers.
// Is this method deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for the method, or it will be completely ignored; in the very least,
// this is a formalization for deprecating methods.
optional bool deprecated = 33 [default = false];
// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
// or neither? HTTP based RPC implementation may choose GET verb for safe
// methods, and PUT verb for idempotent methods instead of the default POST.
enum IdempotencyLevel {
IDEMPOTENCY_UNKNOWN = 0;
NO_SIDE_EFFECTS = 1; // implies idempotent
IDEMPOTENT = 2; // idempotent, but may have side effects
}
optional IdempotencyLevel idempotency_level = 34
[default = IDEMPOTENCY_UNKNOWN];
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
// A message representing a option the parser does not recognize. This only
// appears in options protos created by the compiler::Parser class.
// DescriptorPool resolves these when building Descriptor objects. Therefore,
// options protos in descriptor objects (e.g. returned by Descriptor::options(),
// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
// in them.
message UninterpretedOption {
// The name of the uninterpreted option. Each string represents a segment in
// a dot-separated name. is_extension is true iff a segment represents an
// extension (denoted with parentheses in options specs in .proto files).
// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
// "foo.(bar.baz).qux".
message NamePart {
required string name_part = 1;
required bool is_extension = 2;
}
repeated NamePart name = 2;
// The value of the uninterpreted option, in whatever type the tokenizer
// identified it as during parsing. Exactly one of these should be set.
optional string identifier_value = 3;
optional uint64 positive_int_value = 4;
optional int64 negative_int_value = 5;
optional double double_value = 6;
optional bytes string_value = 7;
optional string aggregate_value = 8;
}
// ===================================================================
// Optional source code info
// Encapsulates information about the original source file from which a
// FileDescriptorProto was generated.
message SourceCodeInfo {
// A Location identifies a piece of source code in a .proto file which
// corresponds to a particular definition. This information is intended
// to be useful to IDEs, code indexers, documentation generators, and similar
// tools.
//
// For example, say we have a file like:
// message Foo {
// optional string foo = 1;
// }
// Let's look at just the field definition:
// optional string foo = 1;
// ^ ^^ ^^ ^ ^^^
// a bc de f ghi
// We have the following locations:
// span path represents
// [a,i) [ 4, 0, 2, 0 ] The whole field definition.
// [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
// [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
// [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
// [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
//
// Notes:
// - A location may refer to a repeated field itself (i.e. not to any
// particular index within it). This is used whenever a set of elements are
// logically enclosed in a single code segment. For example, an entire
// extend block (possibly containing multiple extension definitions) will
// have an outer location whose path refers to the "extensions" repeated
// field without an index.
// - Multiple locations may have the same path. This happens when a single
// logical declaration is spread out across multiple places. The most
// obvious example is the "extend" block again -- there may be multiple
// extend blocks in the same scope, each of which will have the same path.
// - A location's span is not always a subset of its parent's span. For
// example, the "extendee" of an extension declaration appears at the
// beginning of the "extend" block and is shared by all extensions within
// the block.
// - Just because a location's span is a subset of some other location's span
// does not mean that it is a descendant. For example, a "group" defines
// both a type and a field in a single declaration. Thus, the locations
// corresponding to the type and field and their components will overlap.
// - Code which tries to interpret locations should probably be designed to
// ignore those that it doesn't understand, as more types of locations could
// be recorded in the future.
repeated Location location = 1;
message Location {
// Identifies which part of the FileDescriptorProto was defined at this
// location.
//
// Each element is a field number or an index. They form a path from
// the root FileDescriptorProto to the place where the definition. For
// example, this path:
// [ 4, 3, 2, 7, 1 ]
// refers to:
// file.message_type(3) // 4, 3
// .field(7) // 2, 7
// .name() // 1
// This is because FileDescriptorProto.message_type has field number 4:
// repeated DescriptorProto message_type = 4;
// and DescriptorProto.field has field number 2:
// repeated FieldDescriptorProto field = 2;
// and FieldDescriptorProto.name has field number 1:
// optional string name = 1;
//
// Thus, the above path gives the location of a field name. If we removed
// the last element:
// [ 4, 3, 2, 7 ]
// this path refers to the whole field declaration (from the beginning
// of the label to the terminating semicolon).
repeated int32 path = 1 [packed = true];
// Always has exactly three or four elements: start line, start column,
// end line (optional, otherwise assumed same as start line), end column.
// These are packed into a single field for efficiency. Note that line
// and column numbers are zero-based -- typically you will want to add
// 1 to each before displaying to a user.
repeated int32 span = 2 [packed = true];
// If this SourceCodeInfo represents a complete declaration, these are any
// comments appearing before and after the declaration which appear to be
// attached to the declaration.
//
// A series of line comments appearing on consecutive lines, with no other
// tokens appearing on those lines, will be treated as a single comment.
//
// leading_detached_comments will keep paragraphs of comments that appear
// before (but not connected to) the current element. Each paragraph,
// separated by empty lines, will be one comment element in the repeated
// field.
//
// Only the comment content is provided; comment markers (e.g. //) are
// stripped out. For block comments, leading whitespace and an asterisk
// will be stripped from the beginning of each line other than the first.
// Newlines are included in the output.
//
// Examples:
//
// optional int32 foo = 1; // Comment attached to foo.
// // Comment attached to bar.
// optional int32 bar = 2;
//
// optional string baz = 3;
// // Comment attached to baz.
// // Another line attached to baz.
//
// // Comment attached to qux.
// //
// // Another line attached to qux.
// optional double qux = 4;
//
// // Detached comment for corge. This is not leading or trailing comments
// // to qux or corge because there are blank lines separating it from
// // both.
//
// // Detached comment for corge paragraph 2.
//
// optional string corge = 5;
// /* Block comment attached
// * to corge. Leading asterisks
// * will be removed. */
// /* Block comment attached to
// * grault. */
// optional int32 grault = 6;
//
// // ignored detached comments.
optional string leading_comments = 3;
optional string trailing_comments = 4;
repeated string leading_detached_comments = 6;
}
}
// Describes the relationship between generated code and its original source
// file. A GeneratedCodeInfo message is associated with only one generated
// source file, but may contain references to different source .proto files.
message GeneratedCodeInfo {
// An Annotation connects some span of text in generated code to an element
// of its generating .proto file.
repeated Annotation annotation = 1;
message Annotation {
// Identifies the element in the original source .proto file. This field
// is formatted the same as SourceCodeInfo.Location.path.
repeated int32 path = 1 [packed = true];
// Identifies the filesystem path to the original source .proto.
optional string source_file = 2;
// Identifies the starting offset in bytes in the generated code
// that relates to the identified object.
optional int32 begin = 3;
// Identifies the ending offset in bytes in the generated code that
// relates to the identified offset. The end offset should be one past
// the last relevant byte (so the length of the text = end - begin).
optional int32 end = 4;
}
}

View File

@@ -0,0 +1,116 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option cc_enable_arenas = true;
option go_package = "github.com/golang/protobuf/ptypes/duration";
option java_package = "com.google.protobuf";
option java_outer_classname = "DurationProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
// A Duration represents a signed, fixed-length span of time represented
// as a count of seconds and fractions of seconds at nanosecond
// resolution. It is independent of any calendar and concepts like "day"
// or "month". It is related to Timestamp in that the difference between
// two Timestamp values is a Duration and it can be added or subtracted
// from a Timestamp. Range is approximately +-10,000 years.
//
// # Examples
//
// Example 1: Compute Duration from two Timestamps in pseudo code.
//
// Timestamp start = ...;
// Timestamp end = ...;
// Duration duration = ...;
//
// duration.seconds = end.seconds - start.seconds;
// duration.nanos = end.nanos - start.nanos;
//
// if (duration.seconds < 0 && duration.nanos > 0) {
// duration.seconds += 1;
// duration.nanos -= 1000000000;
// } else if (duration.seconds > 0 && duration.nanos < 0) {
// duration.seconds -= 1;
// duration.nanos += 1000000000;
// }
//
// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
//
// Timestamp start = ...;
// Duration duration = ...;
// Timestamp end = ...;
//
// end.seconds = start.seconds + duration.seconds;
// end.nanos = start.nanos + duration.nanos;
//
// if (end.nanos < 0) {
// end.seconds -= 1;
// end.nanos += 1000000000;
// } else if (end.nanos >= 1000000000) {
// end.seconds += 1;
// end.nanos -= 1000000000;
// }
//
// Example 3: Compute Duration from datetime.timedelta in Python.
//
// td = datetime.timedelta(days=3, minutes=10)
// duration = Duration()
// duration.FromTimedelta(td)
//
// # JSON Mapping
//
// In JSON format, the Duration type is encoded as a string rather than an
// object, where the string ends in the suffix "s" (indicating seconds) and
// is preceded by the number of seconds, with nanoseconds expressed as
// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
// microsecond should be expressed in JSON format as "3.000001s".
//
//
message Duration {
// Signed seconds of the span of time. Must be from -315,576,000,000
// to +315,576,000,000 inclusive. Note: these bounds are computed from:
// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
int64 seconds = 1;
// Signed fractions of a second at nanosecond resolution of the span
// of time. Durations less than one second are represented with a 0
// `seconds` field and a positive or negative `nanos` field. For durations
// of one second or more, a non-zero value for the `nanos` field must be
// of the same sign as the `seconds` field. Must be from -999,999,999
// to +999,999,999 inclusive.
int32 nanos = 2;
}

View File

@@ -0,0 +1,52 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option go_package = "github.com/golang/protobuf/ptypes/empty";
option java_package = "com.google.protobuf";
option java_outer_classname = "EmptyProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
option cc_enable_arenas = true;
// A generic empty message that you can re-use to avoid defining duplicated
// empty messages in your APIs. A typical example is to use it as the request
// or the response type of an API method. For instance:
//
// service Foo {
// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
// }
//
// The JSON representation for `Empty` is empty JSON object `{}`.
message Empty {}

View File

@@ -0,0 +1,245 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option java_package = "com.google.protobuf";
option java_outer_classname = "FieldMaskProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
option go_package = "google.golang.org/genproto/protobuf/field_mask;field_mask";
option cc_enable_arenas = true;
// `FieldMask` represents a set of symbolic field paths, for example:
//
// paths: "f.a"
// paths: "f.b.d"
//
// Here `f` represents a field in some root message, `a` and `b`
// fields in the message found in `f`, and `d` a field found in the
// message in `f.b`.
//
// Field masks are used to specify a subset of fields that should be
// returned by a get operation or modified by an update operation.
// Field masks also have a custom JSON encoding (see below).
//
// # Field Masks in Projections
//
// When used in the context of a projection, a response message or
// sub-message is filtered by the API to only contain those fields as
// specified in the mask. For example, if the mask in the previous
// example is applied to a response message as follows:
//
// f {
// a : 22
// b {
// d : 1
// x : 2
// }
// y : 13
// }
// z: 8
//
// The result will not contain specific values for fields x,y and z
// (their value will be set to the default, and omitted in proto text
// output):
//
//
// f {
// a : 22
// b {
// d : 1
// }
// }
//
// A repeated field is not allowed except at the last position of a
// paths string.
//
// If a FieldMask object is not present in a get operation, the
// operation applies to all fields (as if a FieldMask of all fields
// had been specified).
//
// Note that a field mask does not necessarily apply to the
// top-level response message. In case of a REST get operation, the
// field mask applies directly to the response, but in case of a REST
// list operation, the mask instead applies to each individual message
// in the returned resource list. In case of a REST custom method,
// other definitions may be used. Where the mask applies will be
// clearly documented together with its declaration in the API. In
// any case, the effect on the returned resource/resources is required
// behavior for APIs.
//
// # Field Masks in Update Operations
//
// A field mask in update operations specifies which fields of the
// targeted resource are going to be updated. The API is required
// to only change the values of the fields as specified in the mask
// and leave the others untouched. If a resource is passed in to
// describe the updated values, the API ignores the values of all
// fields not covered by the mask.
//
// If a repeated field is specified for an update operation, new values will
// be appended to the existing repeated field in the target resource. Note that
// a repeated field is only allowed in the last position of a `paths` string.
//
// If a sub-message is specified in the last position of the field mask for an
// update operation, then new value will be merged into the existing sub-message
// in the target resource.
//
// For example, given the target message:
//
// f {
// b {
// d: 1
// x: 2
// }
// c: [1]
// }
//
// And an update message:
//
// f {
// b {
// d: 10
// }
// c: [2]
// }
//
// then if the field mask is:
//
// paths: ["f.b", "f.c"]
//
// then the result will be:
//
// f {
// b {
// d: 10
// x: 2
// }
// c: [1, 2]
// }
//
// An implementation may provide options to override this default behavior for
// repeated and message fields.
//
// In order to reset a field's value to the default, the field must
// be in the mask and set to the default value in the provided resource.
// Hence, in order to reset all fields of a resource, provide a default
// instance of the resource and set all fields in the mask, or do
// not provide a mask as described below.
//
// If a field mask is not present on update, the operation applies to
// all fields (as if a field mask of all fields has been specified).
// Note that in the presence of schema evolution, this may mean that
// fields the client does not know and has therefore not filled into
// the request will be reset to their default. If this is unwanted
// behavior, a specific service may require a client to always specify
// a field mask, producing an error if not.
//
// As with get operations, the location of the resource which
// describes the updated values in the request message depends on the
// operation kind. In any case, the effect of the field mask is
// required to be honored by the API.
//
// ## Considerations for HTTP REST
//
// The HTTP kind of an update operation which uses a field mask must
// be set to PATCH instead of PUT in order to satisfy HTTP semantics
// (PUT must only be used for full updates).
//
// # JSON Encoding of Field Masks
//
// In JSON, a field mask is encoded as a single string where paths are
// separated by a comma. Fields name in each path are converted
// to/from lower-camel naming conventions.
//
// As an example, consider the following message declarations:
//
// message Profile {
// User user = 1;
// Photo photo = 2;
// }
// message User {
// string display_name = 1;
// string address = 2;
// }
//
// In proto a field mask for `Profile` may look as such:
//
// mask {
// paths: "user.display_name"
// paths: "photo"
// }
//
// In JSON, the same mask is represented as below:
//
// {
// mask: "user.displayName,photo"
// }
//
// # Field Masks and Oneof Fields
//
// Field masks treat fields in oneofs just as regular fields. Consider the
// following message:
//
// message SampleMessage {
// oneof test_oneof {
// string name = 4;
// SubMessage sub_message = 9;
// }
// }
//
// The field mask can be:
//
// mask {
// paths: "name"
// }
//
// Or:
//
// mask {
// paths: "sub_message"
// }
//
// Note that oneof type names ("test_oneof" in this case) cannot be used in
// paths.
//
// ## Field Mask Verification
//
// The implementation of any API method which has a FieldMask type field in the
// request should verify the included field paths, and return an
// `INVALID_ARGUMENT` error if any path is unmappable.
message FieldMask {
// The set of field mask paths.
repeated string paths = 1;
}

View File

@@ -0,0 +1,48 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option java_package = "com.google.protobuf";
option java_outer_classname = "SourceContextProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
option go_package = "google.golang.org/genproto/protobuf/source_context;source_context";
// `SourceContext` represents information about the source of a
// protobuf element, like the file in which it is defined.
message SourceContext {
// The path-qualified name of the .proto file that contained the associated
// protobuf element. For example: `"google/protobuf/source_context.proto"`.
string file_name = 1;
}

View File

@@ -0,0 +1,95 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option cc_enable_arenas = true;
option go_package = "github.com/golang/protobuf/ptypes/struct;structpb";
option java_package = "com.google.protobuf";
option java_outer_classname = "StructProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
// `Struct` represents a structured data value, consisting of fields
// which map to dynamically typed values. In some languages, `Struct`
// might be supported by a native representation. For example, in
// scripting languages like JS a struct is represented as an
// object. The details of that representation are described together
// with the proto support for the language.
//
// The JSON representation for `Struct` is JSON object.
message Struct {
// Unordered map of dynamically typed values.
map<string, Value> fields = 1;
}
// `Value` represents a dynamically typed value which can be either
// null, a number, a string, a boolean, a recursive struct value, or a
// list of values. A producer of value is expected to set one of that
// variants, absence of any variant indicates an error.
//
// The JSON representation for `Value` is JSON value.
message Value {
// The kind of value.
oneof kind {
// Represents a null value.
NullValue null_value = 1;
// Represents a double value.
double number_value = 2;
// Represents a string value.
string string_value = 3;
// Represents a boolean value.
bool bool_value = 4;
// Represents a structured value.
Struct struct_value = 5;
// Represents a repeated `Value`.
ListValue list_value = 6;
}
}
// `NullValue` is a singleton enumeration to represent the null value for the
// `Value` type union.
//
// The JSON representation for `NullValue` is JSON `null`.
enum NullValue {
// Null value.
NULL_VALUE = 0;
}
// `ListValue` is a wrapper around a repeated field of values.
//
// The JSON representation for `ListValue` is JSON array.
message ListValue {
// Repeated field of dynamically typed values.
repeated Value values = 1;
}

View File

@@ -0,0 +1,138 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option cc_enable_arenas = true;
option go_package = "github.com/golang/protobuf/ptypes/timestamp";
option java_package = "com.google.protobuf";
option java_outer_classname = "TimestampProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
// A Timestamp represents a point in time independent of any time zone or local
// calendar, encoded as a count of seconds and fractions of seconds at
// nanosecond resolution. The count is relative to an epoch at UTC midnight on
// January 1, 1970, in the proleptic Gregorian calendar which extends the
// Gregorian calendar backwards to year one.
//
// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
// second table is needed for interpretation, using a [24-hour linear
// smear](https://developers.google.com/time/smear).
//
// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
// restricting to that range, we ensure that we can convert to and from [RFC
// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
//
// # Examples
//
// Example 1: Compute Timestamp from POSIX `time()`.
//
// Timestamp timestamp;
// timestamp.set_seconds(time(NULL));
// timestamp.set_nanos(0);
//
// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
//
// struct timeval tv;
// gettimeofday(&tv, NULL);
//
// Timestamp timestamp;
// timestamp.set_seconds(tv.tv_sec);
// timestamp.set_nanos(tv.tv_usec * 1000);
//
// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
//
// FILETIME ft;
// GetSystemTimeAsFileTime(&ft);
// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
//
// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
// Timestamp timestamp;
// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
//
// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
//
// long millis = System.currentTimeMillis();
//
// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
// .setNanos((int) ((millis % 1000) * 1000000)).build();
//
//
// Example 5: Compute Timestamp from current time in Python.
//
// timestamp = Timestamp()
// timestamp.GetCurrentTime()
//
// # JSON Mapping
//
// In JSON format, the Timestamp type is encoded as a string in the
// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
// where {year} is always expressed using four digits while {month}, {day},
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
// is required. A proto3 JSON serializer should always use UTC (as indicated by
// "Z") when printing the Timestamp type and a proto3 JSON parser should be
// able to accept both UTC and other timezones (as indicated by an offset).
//
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
// 01:30 UTC on January 15, 2017.
//
// In JavaScript, one can convert a Date object to this format using the
// standard
// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
// method. In Python, a standard `datetime.datetime` object can be converted
// to this format using
// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
// the Joda Time's [`ISODateTimeFormat.dateTime()`](
// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
// ) to obtain a formatter capable of generating timestamps in this format.
//
//
message Timestamp {
// Represents seconds of UTC time since Unix epoch
// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
// 9999-12-31T23:59:59Z inclusive.
int64 seconds = 1;
// Non-negative fractions of a second at nanosecond resolution. Negative
// second values with fractions must still have non-negative nanos values
// that count forward in time. Must be from 0 to 999,999,999
// inclusive.
int32 nanos = 2;
}

View File

@@ -0,0 +1,187 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
import "google/protobuf/any.proto";
import "google/protobuf/source_context.proto";
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option cc_enable_arenas = true;
option java_package = "com.google.protobuf";
option java_outer_classname = "TypeProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
option go_package = "google.golang.org/genproto/protobuf/ptype;ptype";
// A protocol buffer message type.
message Type {
// The fully qualified message name.
string name = 1;
// The list of fields.
repeated Field fields = 2;
// The list of types appearing in `oneof` definitions in this type.
repeated string oneofs = 3;
// The protocol buffer options.
repeated Option options = 4;
// The source context.
SourceContext source_context = 5;
// The source syntax.
Syntax syntax = 6;
}
// A single field of a message type.
message Field {
// Basic field types.
enum Kind {
// Field type unknown.
TYPE_UNKNOWN = 0;
// Field type double.
TYPE_DOUBLE = 1;
// Field type float.
TYPE_FLOAT = 2;
// Field type int64.
TYPE_INT64 = 3;
// Field type uint64.
TYPE_UINT64 = 4;
// Field type int32.
TYPE_INT32 = 5;
// Field type fixed64.
TYPE_FIXED64 = 6;
// Field type fixed32.
TYPE_FIXED32 = 7;
// Field type bool.
TYPE_BOOL = 8;
// Field type string.
TYPE_STRING = 9;
// Field type group. Proto2 syntax only, and deprecated.
TYPE_GROUP = 10;
// Field type message.
TYPE_MESSAGE = 11;
// Field type bytes.
TYPE_BYTES = 12;
// Field type uint32.
TYPE_UINT32 = 13;
// Field type enum.
TYPE_ENUM = 14;
// Field type sfixed32.
TYPE_SFIXED32 = 15;
// Field type sfixed64.
TYPE_SFIXED64 = 16;
// Field type sint32.
TYPE_SINT32 = 17;
// Field type sint64.
TYPE_SINT64 = 18;
}
// Whether a field is optional, required, or repeated.
enum Cardinality {
// For fields with unknown cardinality.
CARDINALITY_UNKNOWN = 0;
// For optional fields.
CARDINALITY_OPTIONAL = 1;
// For required fields. Proto2 syntax only.
CARDINALITY_REQUIRED = 2;
// For repeated fields.
CARDINALITY_REPEATED = 3;
};
// The field type.
Kind kind = 1;
// The field cardinality.
Cardinality cardinality = 2;
// The field number.
int32 number = 3;
// The field name.
string name = 4;
// The field type URL, without the scheme, for message or enumeration
// types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
string type_url = 6;
// The index of the field type in `Type.oneofs`, for message or enumeration
// types. The first type has index 1; zero means the type is not in the list.
int32 oneof_index = 7;
// Whether to use alternative packed wire representation.
bool packed = 8;
// The protocol buffer options.
repeated Option options = 9;
// The field JSON name.
string json_name = 10;
// The string value of the default value of this field. Proto2 syntax only.
string default_value = 11;
}
// Enum type definition.
message Enum {
// Enum type name.
string name = 1;
// Enum value definitions.
repeated EnumValue enumvalue = 2;
// Protocol buffer options.
repeated Option options = 3;
// The source context.
SourceContext source_context = 4;
// The source syntax.
Syntax syntax = 5;
}
// Enum value definition.
message EnumValue {
// Enum value name.
string name = 1;
// Enum value number.
int32 number = 2;
// Protocol buffer options.
repeated Option options = 3;
}
// A protocol buffer option, which can be attached to a message, field,
// enumeration, etc.
message Option {
// The option's name. For protobuf built-in options (options defined in
// descriptor.proto), this is the short name. For example, `"map_entry"`.
// For custom options, it should be the fully-qualified name. For example,
// `"google.api.http"`.
string name = 1;
// The option's value packed in an Any message. If the value is a primitive,
// the corresponding wrapper type defined in google/protobuf/wrappers.proto
// should be used. If the value is an enum, it should be stored as an int32
// value using the google.protobuf.Int32Value type.
Any value = 2;
}
// The syntax in which a protocol buffer element is defined.
enum Syntax {
// Syntax `proto2`.
SYNTAX_PROTO2 = 0;
// Syntax `proto3`.
SYNTAX_PROTO3 = 1;
}

View File

@@ -0,0 +1,123 @@
// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc. All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Wrappers for primitive (non-message) types. These types are useful
// for embedding primitives in the `google.protobuf.Any` type and for places
// where we need to distinguish between the absence of a primitive
// typed field and its default value.
//
// These wrappers have no meaningful use within repeated fields as they lack
// the ability to detect presence on individual elements.
// These wrappers have no meaningful use within a map or a oneof since
// individual entries of a map or fields of a oneof can already detect presence.
syntax = "proto3";
package google.protobuf;
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option cc_enable_arenas = true;
option go_package = "github.com/golang/protobuf/ptypes/wrappers";
option java_package = "com.google.protobuf";
option java_outer_classname = "WrappersProto";
option java_multiple_files = true;
option objc_class_prefix = "GPB";
// Wrapper message for `double`.
//
// The JSON representation for `DoubleValue` is JSON number.
message DoubleValue {
// The double value.
double value = 1;
}
// Wrapper message for `float`.
//
// The JSON representation for `FloatValue` is JSON number.
message FloatValue {
// The float value.
float value = 1;
}
// Wrapper message for `int64`.
//
// The JSON representation for `Int64Value` is JSON string.
message Int64Value {
// The int64 value.
int64 value = 1;
}
// Wrapper message for `uint64`.
//
// The JSON representation for `UInt64Value` is JSON string.
message UInt64Value {
// The uint64 value.
uint64 value = 1;
}
// Wrapper message for `int32`.
//
// The JSON representation for `Int32Value` is JSON number.
message Int32Value {
// The int32 value.
int32 value = 1;
}
// Wrapper message for `uint32`.
//
// The JSON representation for `UInt32Value` is JSON number.
message UInt32Value {
// The uint32 value.
uint32 value = 1;
}
// Wrapper message for `bool`.
//
// The JSON representation for `BoolValue` is JSON `true` and `false`.
message BoolValue {
// The bool value.
bool value = 1;
}
// Wrapper message for `string`.
//
// The JSON representation for `StringValue` is JSON string.
message StringValue {
// The string value.
string value = 1;
}
// Wrapper message for `bytes`.
//
// The JSON representation for `BytesValue` is JSON string.
message BytesValue {
// The bytes value.
bytes value = 1;
}

View File

@@ -0,0 +1,23 @@
syntax = "proto2";
package common;
message Time {
optional uint32 sec = 1;
optional uint32 nsec = 2;
}
message Header {
// Sequence number for each message. Each module maintains its own counter for
// sequence_num, always starting from 1 on boot.
optional uint32 seq = 1;
// Message publishing time in seconds.
optional Time stamp = 2;
// frame id
optional string frame_id = 3;
// Module name.
optional string module_name = 4;
}

View File

@@ -0,0 +1,589 @@
syntax = "proto3";
package mogo.telematics.pad;
import "geometry.proto";
enum ProtocolVersion
{
Defaultver = 0;
CurrentVersion = 10; //每次修改proto文件增加1
}
enum MessageType
{
MsgTypeDefault = 0;
MsgTypePlanningDecisionState = 0x00001; //planning决策状态, 透传
MsgTypeSweeperTaskIndexData = 0x00002; //清扫车指标数据
MsgTypeObuWarningData = 0x00003; //obu预警事件
MsgTypeTrajectory = 0x10000; //局部轨迹,车前引导线
MsgTypeTrackedObjects = 0x10001; //障碍物信息
MsgTypeGnssInfo = 0x10002; //惯导信息
MsgTypeVehicleState = 0x10003; //底盘信息, 透传底盘状态pb参考底盘
MsgTypeAutopilotState = 0x10004; //自动驾驶状态
MsgTypeReportMessage = 0x10005; //监控事件报告
MsgTypePerceptionTrafficLight = 0x10006; //感知红绿灯
MsgTypePredictionObstacleTrajectory = 0x10007; //他车轨迹预测
MsgTypePointCloud = 0x10008; //点云透传
MsgTypePlanningObjects = 0x10009; //planning障碍物
MsgTypeOBU = 0x1000a; //OBU
MsgTypeChassisStates = 0x1000b; //重构后的底盘状态, 透传
MsgTypeFunctionStates = 0x1000c; //重构后的功能状态, 透传
MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求
MsgTypeBasicInfoResp = 0x10101; //自动驾驶设备基础信息应答
MsgTypeSetAutopilotModeReq = 0x10102; //设置自动驾驶模式
MsgTypeSetDemoModeReq = 0x10103; //设置演示模式
MsgTypeCarConfigReq = 0x10104; //车机基础信息请求
MsgTypeCarConfigResp = 0x10105; //车机基础信息应答
MsgTypeRecordCause = 0x10106; //记录人工接管原因
MsgTypeRecordData = 0x10107; //数据采集请求
MsgTypeRecordResult = 0x10108; //数据采集结果
MsgTypeSetAutopilotSpeedReq = 0x10109; //设置自动驾驶最大速度
MsgTypeGlobalPathReq = 0x1010a; //自动驾驶路径请求
MsgTypeGlobalPathResp = 0x1010b; //自动驾驶路径应答
MsgTypeTrafficLightData = 0x1010c; //发送红绿灯数据到工控机
MsgTypeWarn = 0x1010d; //预警数据
MsgTypeArrivalNotification = 0x1010e; //到站提醒
MsgTypeSystemCmdReq = 0x1010f; //系统命令请求, 比如系统重启,启用新镜像
MsgTypeTrajectoryDownloadReq = 0x10110; //轨迹下载请求
MsgTypeStatusQueryReq = 0x10111; //状态查询请求
MsgTypeStatusQueryResp = 0x10112; //状态查询应答
MsgTypeSetRainModeReq = 0x10113; //设置雨天模式
MsgTypeRecordDataConfigReq = 0x10114; //数据采集配置查询请求
MsgTypeRecordDataConfigResp = 0x10115; //数据采集配置查询应答
MsgTypeOperatorCmdReq = 0x10116; //操控指令
MsgTypeSubscribeDataReq = 0x10117; //数据订阅、取消订阅请求
MsgTypeSpecialVehicleTaskCmd = 0x10118; //特种车辆命令
MsgTypeSetParamReq = 0x10119; //设置参数命令
MsgTypeTripInfoEvent = 0x1011a; //行程信息
MsgTypeBagManagerCmd = 0x1011b; //bag管理
MsgTypePlanningCmd = 0x1011c; //给planning的指令
}
message Header
{
uint64 msgID = 1; //消息唯一id自增
MessageType msgType = 2; //消息类型
double timestamp = 3; //消息发送时间, 单位:秒
double sourceTimestamp = 4; //数据源消息发送时间, 单位:秒
}
// message definition for MsgTypeTrajectory
message TrajectoryPoint
{
double longitude = 1;
double latitude = 2;
double altitude = 3;
double time = 4; //时间, 单位:秒
double velocity = 5; //速度, m/s
double acceleration = 6; //加速度, m/s^2
double theta = 7; //速度方向
double kappa = 8; //曲率
double accumulatedDis = 9; //从起点到目前的总距离
double reversedAccumulatedDis = 10; //从当前到终点的距离
}
message Trajectory
{
repeated TrajectoryPoint points = 1;
}
// message definition for MsgTypeTrackedObjects
message SubSource
{
uint32 source = 1; // TrackedSource=1:1-lidar 2-camera 3-radar 4-vidar 5-falcon
// TrackedSource=2:1-v2v_bsm 2-v2i_rsm 3-v2v_ssm 4-v2n_rsm 5-v2n_rsi 6-v2i_ssm
string id = 2; //HEX_string -bsm_id
}
message TrackedSource
{
uint32 source = 1; // 1-car 2-v2x
repeated SubSource sub_source = 2;
}
message TrackedObject
{
uint32 type = 1; //物体类型, 0:Background, 1:Person, 2:Bicycle, 3:Car, 4:MotorCycle,
//5:TrafficSign, 6:Bus, 7:CellPhone, 8:Truck, 9:Bottle, 10:TrafficLight,
//11:Rider, 12:TriangleRoadblock, 13:WarningTriangle, 100:Unknown,
//501:RoadWork_occupy_0501, 502:RoadWork_break_0502
double longitude = 2; //经度
double latitude = 3; //纬度
double altitude = 4; //海拔
double systemTime = 5; //系统时间 单位秒s
double satelliteTime = 6; //gps时间 单位秒s
uint32 uuid = 7; //车辆id
string carID = 8; //车牌id
string color = 9; //车辆颜色
double heading = 10; //车辆朝向
double speed = 11; //车辆速度
uint32 drawLevel = 12; //危险等级 1 绿,2 黄,3 红
double driverTime = 13; //驱动感知时间, abandoned
repeated TrackedSource tracked_source = 14;
repeated Location polygon = 15;
geometry.Point center = 16;
}
message TrackedObjects
{
repeated TrackedObject objs = 1;
}
// message definition for MsgTypeGnssInfo
message GnssInfo
{
double longitude = 1; //经度
double latitude = 2; //纬度
double altitude = 3; //海拔
double heading = 4; //航向角
double acceleration = 5; //加速度
double yawRate = 6; //曲率
double gnssSpeed = 7; //惯导车速 m/s
double vehicleSpeed = 8; //车辆车速 m/s
double satelliteTime = 9; //gps时间 单位秒s
double systemTime = 10; //系统时间 单位秒s
}
// message definition for MessageType: MsgTypeVehicleState
// refer to VehicleState in vehicle_state.proto
// message definition for MessageType: MsgTypeAutopilotState
message AutopilotState
{
uint32 state = 1; //0: 不可用(abandoned), 1:ready, 2:自动驾驶中, 7:平行驾驶中
uint32 camera = 2; //camera节点状态 1:开启0:关闭
uint32 radar = 3; //雷达节点状态 1:开启0:关闭
uint32 rtk = 4; //RTK节点状态 1:开启0:关闭
uint32 autopilotMode = 5; //自动驾驶状态 0: 非自动驾驶1: 自动驾驶, 6:平行驾驶
double speed = 6; //惯导车速 m/s
string reason = 7; //不可用原因(abandoned)
}
// message definition for MessageType: MsgTypeReportMessage
// refer to mogo_report_msg.proto
// message definition for MessageType: MsgTypePerceptionTrafficLight
// refer to traffic_light.proto
// message definition for MessageType: MsgTypePredictionObstacleTrajectory
// refer to prediction.proto
// message definition for MessageType: MsgTypePointCloud
// refer to mogo_point_cloud.proto
// message definition for MessageType: MsgTypePlanningObjects
message PlanningObject
{
uint32 uuid = 1;
uint32 type = 2; //影响自车决策的类型, 和感知的障碍物类型不是一回事 0是leading障碍物1是避障和择机的障碍物
}
message PlanningObjects
{
repeated PlanningObject objs = 1;
}
// message definition for MessageType: MsgTypeOBU
// refer to obu.proto
// message definition for MsgTypeTrajectoryDownloadReq
message Line
{
uint64 lineId = 1; //路线id默认-1
string trajUrl = 2; //轨迹文件下载的cos url默认“”
string trajMd5 = 3; //轨迹文件md5默认“”
string stopUrl = 4; //打点文件下载的cos url默认“”
string stopMd5 = 5; //轨迹文件md5默认“”
uint64 timestamp = 6; //上传轨迹完成时间戳(ms)用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖
string vehicleModel = 7; //车型号如红旗H9默认“”暂不加入校验逻辑、用于人工排查问题
string trajUrl_dpqp = 8; //轨迹文件下载的cos url默认“”
string trajMd5_dpqp = 9; //轨迹文件md5默认“”
string stopUrl_dpqp = 10; //打点文件下载的cos url默认“”
string stopMd5_dpqp = 11; //轨迹文件md5默认“”
uint64 timestamp_dpqp = 12; //上传轨迹完成时间戳(ms)用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖
}
message TrajectoryDownloadReq
{
Line line = 1; //路线
}
// message definition for MessageType: MsgTypeBasicInfoReq
message BasicInfoReq
{
}
// message definition for MessageType: MsgTypeBasicInfoRsp
message BasicInfoResp
{
string sn = 1;
uint32 environment = 2; //1: 研发环境, 2:测试环境, 3:生产环境 4:演示环境
uint32 role = 3; //客户端角色0: 司机屏1: 乘客屏2: 调试屏
}
// message definition for MsgTypeSetAutopilotModeReq
message Location
{
double longitude = 1;
double latitude = 2;
double altitude = 3;
double heading = 4;
}
message RouteInfo
{
Location startLocation = 1;
string startName = 2;
Location endLocation = 3;
string endName = 4;
repeated Location wayPoints = 5;
double speedLimit = 6; //单位: km/h
uint32 vehicleType = 7;
bool isSpeakVoice = 8; //abandoned
uint32 routeID = 9;
string routeName = 10;
Line line = 11; //路线信息
}
message SetAutopilotModeReq
{
uint32 mode = 1; //1: enter autopilot mode, 0: quit autopilot mode
uint32 source = 2; //命令来源: 0: pad模拟, 1: aicloud业务
RouteInfo routeInfo = 3; //自动驾驶路径信息
}
// message definition for MsgTypeSetDemoModeReq
message SetDemoModeReq
{
uint32 enable = 1; //1: enable, 0: disable
}
// message definition for MsgTypeCarConfigReq
message CarConfigReq
{
}
// message definition for MsgTypeCarConfigResp
message CarConfigResp
{
string dockVersion = 1;
string plateNumber = 2; //车牌
string macAddress = 3;
ProtocolVersion protocolVersion = 4; //通信协议版本
double speedLimit = 5; //自动驾驶限速, 单位m/s
double maxSpeedLimit = 6; //最大自动驾驶限速, 单位m/s
double minAcceleration = 7; //最小加速度, 单位m/s²
double maxAcceleration = 8; //最大加速度, 单位m/s²
}
// message definition for MsgTypeRecordCause
message RecordCause
{
uint64 key = 1; //bag key 唯一标识
string filename = 2; //文件路径
string reason = 3; //接管原因
string reasonID = 4; //接管原因id
}
// message definition for MsgTypeRecordData
message RecordData
{
uint32 id = 1; //采集id
uint32 duration = 2; //采集时间长
uint32 type = 3; //采集类型, 1:badcase, 2: map; 3: rests
bool isRecord = 4; //采集指令, true: 采集, false: 停止采集
bool sustain = 5; //是否持续采集
uint32 bduration = 6; //前溯时长
repeated string topics = 7; //topic列表
}
// message definition for MsgTypeRecordResult
// refer to RecordPanel in record_panel.proto
// message definition for MsgTypeSetAutopilotSpeedReq
message SetAutopilotSpeedReq
{
double speedLimit = 1; //最大车辆速度, 单位m/s
}
// message definition for MsgTypeGlobalPathReq
message GlobalPathReq
{
}
// message definition for MsgTypeGlobalPathResp
message GlobalPathResp
{
repeated Location wayPoints = 1;
}
// message definition for MsgTypeTrafficLightData
message TrafficLightStatus
{
string phaseNo = 1; //相位编号
string color = 2; //灯态: 红灯-R绿灯-G绿闪-FG黄-YB-黑
int32 remain = 3; //倒计时-秒
}
message TrafficLightDetail
{
TrafficLightStatus left = 1; //左灯
TrafficLightStatus mid = 2; //中间灯
TrafficLightStatus right = 3; //右灯
}
message TrafficLightData
{
string crossID = 1; //roadID
double latitude = 2;
double longitude = 3;
string heading = 4; //红绿灯方向
string direction = 5; //路的航向角
int32 lightId = 6; //红绿灯ID
int32 laneNo = 7; //车道号
int32 arrowNo = 8; //当前车道对应地面要素转向
int32 flashYellow = 9; //黄灯总时间
TrafficLightDetail laneDetail = 10; //灯态具体信息
uint64 timestamp = 11;//当前卫星时间, 单位: ms
}
// message definition for MsgTypeWarn
message Warn
{
uint32 type = 1; //16: 小心行人, 17: 前车起步, 18: 左车道偏离, 19: 右车道偏离
//20: 保持车距/小心前车, 23:摩托车碰撞
//40: 禁止掉头, 41: 禁止左转, 42: 禁止右转, 43: 禁止鸣喇叭, 44: 禁止通行, 45: 限速%d
string content = 2; //words describe type
uint32 level = 3; //1:low 2:high
string value = 4; //reserved
}
// message definition for MsgTypeArrivalNotification
message ArrivalNotification
{
uint32 carType = 1; //abandoned
Location endLocation = 2;
}
// message definition for MsgTypeSystemCmdReq
enum SystemCmdType
{
SYSTEMCMD_NONE = 0;
SYSTEMCMD_REBOOT = 1;
}
message SystemCmdReq
{
SystemCmdType cmdType = 1; //
}
// message definition for MsgTypeStatusQueryReq
message StatusQueryReq
{
}
// message definition for MsgTypeStatusQueryResp
// refer to system_status_info.proto
// message definition for MsgTypeSetRainModeReq
message SetRainModeReq
{
uint32 enable = 1; //1: enable, 0: disable
}
// message definition for MsgTypeRecordDataConfigReq
message RecordDataConfigReq
{
uint32 reqType = 1; // 0: all, 1:获取当前所有topic列表, 2:配置需要预加载的topic组合
uint32 recordType = 2; // 0:不需要修改内置类型的topic组合, 1:需要修改内置类型的topic组合
repeated string topicsNeedToCache = 3;
}
// message definition for MsgTypeRecordDataConfigResp
message RecordDataType
{
uint32 id = 1; //采集类型id
string desc = 2; //采集类型描述
repeated string topics = 3; //采集类型必须采集的topic列表
}
message RecordDataConfig
{
repeated RecordDataType recordTypes = 1;
repeated string allTopics = 2; //当前所有topic列表
}
// message definition for MsgTypeSubscribeDataReq
message SubscribeDataReq
{
uint32 role = 1; //客户端角色0: 司机屏1: 乘客屏2: 调试屏
uint32 reqType = 2; //1:订阅, 2:取消订阅
repeated uint32 dataTypes = 3; //订阅/取消订阅的消息类型列表, 透传的消息类型参考配置列表其他消息类型见MsgType
}
// message definition for MsgTypeOperatorCmdReq
enum OperatorCmdType
{
OPERATOR_CMD_NONE = 0;
OPERATOR_CMD_CHANGE_LANE = 1;
OPERATOR_CMD_SET_ACCELERATED_SPEED = 2;
OPERATOR_CMD_SET_HORN = 3;
}
message OperatorCmdReq
{
OperatorCmdType cmdType = 1;
double value = 2; //OPERATOR_CMD_CHANGE_LANE: 1: left 2: right
//OPERATOR_CMD_SET_ACCELERATED_SPEED: accelerated speed
//OPERATOR_CMD_SET_HORN: 1: honk 2: stop honking
}
//message definition for MsgTypePlanningDecisionState
enum DrivingState
{
NO_AUTODRIVING = 0; //不在自动驾驶状态
LANKE_KEEP = 1; //车道保持状态
TRAFFIC_LIGHT = 2; //红绿灯通行状态: driving_action1 表示停止动作driving_action:2 表示通行动作
FOLLOW_LANE_CHANGE_LEFT = 3; //follow全局择机向左变道状态: driving_action1 表示触发变道driving_action:2 表示择机保持driving_action:3 表示变道完成
FOLLOW_LANE_CHANGE_RIGHT = 4; //follow全局择机向右变道状态: driving_action1 表示触发变道driving_action:2 表示择机保持driving_action:3 表示变道完成
AUTO_LANE_CHANGE_LEFT = 5; //主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT = 6; //主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT = 7; //主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT = 8; //主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
START_UP = 9; //起步状态: driving_action1 表示正常启动driving_action:2 表示择机起步
PULL_OVER = 10; //靠边停车状态: driving_action1 表示正常靠边停车driving_action:2 表示择机靠边停车
UN_PROTECTED_INTERSECTION = 11; //路口预测响应状态: driving_action1 表示触发了预测响应
AUTO_LANE_CHANGE_LEFT_V2N = 12; //V2N主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT_V2N = 13; //V2N主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_V2N = 14; //V2N主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_V2N = 15; //V2N主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_V2N = 16; //V2N正在等待变道避让施工场景/静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶;
AUTO_LANE_CHANGE_LEFT_RSI = 17; //V2N RSI主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT_RSI = 18; //V2N RSI主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_RSI = 19; //V2N RSI主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_RSI = 20; //V2N RSI主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_RSI = 21; //V2N RSI正在等待变道避让施工场景/静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶;
AUTO_LANE_CHANGE_LEFT_RSM = 22; //V2N RSM主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT_RSM = 23; //V2N RSM主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_RSM = 24; //V2N RSM主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_RSM = 25; //V2N RSM主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_RSM = 26; //V2N RSM正在等待变道避让施工场景/静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶;
AUTO_LANE_CHANGE_LEFT_RSI_TRIANGLE = 27; //V2N 三角锥主动向左变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
AUTO_LANE_CHANGE_RIGHT_RSI_TRIANGLE = 28; //V2N 三角锥主动向右变道状态: driving_action1 表示触发变道driving_action:2 表示执行变道driving_action:3 表示变道取消driving_action:4 表示变道完成
LANE_AVOID_LEFT_RSI_TRIANGLE = 29; //V2N 三角锥主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
LANE_AVOID_RIGHT_RSI_TRIANGLE = 30; //V2N 三角锥主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
WAITING_RSI_TRIANGLE = 31; //V2N 三角锥正在等待变道避让施工场景/静止障碍物: driving_action1 表示正在等待driving_action:2 表示等待超时请求平行驾驶
}
enum DrivingAction
{
DRIVING_Action_STATE_NONE = 0;
DRIVING_ACTION_STATE_ONE = 1;
DRIVING_ACTION_STATE_TWO = 2;
DRIVING_ACTION_STATE_THREE = 3;
DRIVING_ACTION_STATE_FOUR = 4;
DRIVING_ACTION_STATE_FIVE = 5;
DRIVING_ACTION_STATE_SIX = 6;
DRIVING_ACTION_STATE_SEVEN = 7;
DRIVING_ACTION_STATE_EIGHT = 8;
DRIVING_ACTION_STATE_NINE = 9;
}
message DrivingActionMsg
{
DrivingState driving_state = 1;
DrivingAction driving_action = 2;
}
enum ParkScenarioDrivingState
{
PARK_SENARIO_NO_AUTODRIVING = 0; //不在自动驾驶状态
PARK_SENARIO_LANKE_KEEP = 1; //车道保持状态
PARK_SENARIO_LANE_AVOID_LEFT = 2; //主动向左绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
PARK_SENARIO_LANE_AVOID_RIGHT = 3; //主动向右绕行状态: driving_action1 表示触发绕行driving_action:2 表示执行绕行driving_action:3 表示绕行取消driving_action:4 表示绕行完成
PARK_SENARIO_START_UP = 4; //起步状态: driving_action1 表示正常启动driving_action:2 表示择机起步;
PARK_SENARIO_PULL_OVER = 5; //站点停车状态: driving_action1 表示正常站点停车driving_action:2 表示择机站点停车;
PARK_SENARIO_FORCE_PULL_OVER_ON = 6; //响应触发靠边停车状态: driving_action1 表示开始靠边停车driving_action:2 表示靠边停车成功3靠边停车失败;
PARK_SENARIO_FORCE_PULL_OVER_OFF = 7; //不响应触发靠边停车状态: driving_action1 表示距离前方站点100mdriving_action:2 表示距离路口100m3 正在变道 。。。
}
message ParkScenarioDrivingAction
{
ParkScenarioDrivingState driving_state = 1; //决策场景
DrivingAction driving_action = 2; //决策场景状态
}
message ParkScenarioPlanningAction
{
ParkScenarioDrivingAction action_msg = 1; //决策场景(包含场景以及响应状态)
double destination_acc = 2; //驾驶的意图(规划期望的加速或者减速值)
}
message PlanningActionMsg
{
DrivingActionMsg action_msg = 1;
double destination_acc = 2; //驾驶的意图(规划期望的加速或者减速值)
ParkScenarioPlanningAction park_scenario_action = 3;
}
//message definition for MsgTypeSpecialVehicleTaskCmd
//refer to special_vehicle_task_cmd.proto for details
//message definition for MsgTypeSetParamReq
message SetOneParam
{
uint32 type = 1; // 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s)
string value = 2; // 转成字符串的值
}
message SetParamReq
{
repeated SetOneParam reqs = 1;
}
//message definition for MsgTypeTripInfoEvent
message TripInfoEvent
{
uint32 type = 1; //事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警
string lineName = 2; //路线名
string departureStopName = 3; //出站站点名
string arrivalStopName = 4; //下一站到达站点名
bool isLastStop = 5; //下一站到达站是否最终站
}
//message definition for MsgTypeChassisStates
//refer to chassis_states.proto for details
//message definition for MsgTypeFunctionStates
//refer to function_states.proto for details
//message definition for MsgTypeSweeperTaskIndexData
//refer to robo_sweeper_task_index.proto for details
//message definition for MsgTypeObuWarningData
//refer to obu_warning_event.proto for details
//message definition for MsgTypeBagManagerCmd
//refer to bag_manager.proto for details
//message definition for MsgTypePlanningCmd
message PullOverCmd
{
uint32 cmd = 1; //0: default 1: 靠边停车 2:重新起步
}
message PlanningCmd
{
PullOverCmd pullOverCmd = 1;
}

View File

@@ -0,0 +1,17 @@
syntax="proto2";
package rule_segement;
import "header.proto";
message MogoPointCloud
{
optional common.Header header = 1;
optional double self_longitude = 2;
optional double self_latitude = 3;
optional double self_altitude = 4;
optional double self_roll = 5;
optional double self_pitch = 6;
optional double self_yaw = 7;
repeated int32 add_data = 8 [packed=true];
optional double newgpstimestamp = 9;
}

View File

@@ -0,0 +1,21 @@
syntax = "proto2";
package mogo_msg;
message MogoMsgTimestamp {
required fixed32 sec = 1;
required fixed32 nsec = 2;
}
message MogoReportMessage {
required MogoMsgTimestamp timestamp = 1; //来自消息源的时间戳,转发消息时不应修改
required string src = 2; //消息来源
required string level = 3; //error info
optional string msg = 4; //研发自己看的信息;对标准日志来说就是日志内容
optional string code = 5; //error日志中的错误原因这是一个类似宏的受约束字段用字符串的目的是便于排查问题时查看
repeated string result = 6; //带来的后果例如pad无法启动驾驶远程驾驶无法启动等可供监控后台做错误分类pad无法理解code时也可参考此字段
repeated string actions = 16; //试验性字段。消息发出者希望触发的动作例如触发短信报警自动创建工单要求pad弹框等
}

View File

@@ -0,0 +1,88 @@
syntax = "proto2";
package mogo.v2x;
message VerticalOffset_PB{
oneof VerticalOffset{
int32 offset1 = 1;
int32 offset2 = 2;
int32 offset3 = 3;
int32 offset4 = 4;
int32 offset5 = 5;
int32 offset6 = 6;
int32 elevation = 7;
}
}
message VehicleSize_PB {
required int32 width = 1;
required int32 length = 2;
optional int32 height = 3;
}
message AccelerationSet4Way_PB {
required int32 lon = 1;
required int32 lat = 2;
required int32 vert = 3;
required int32 yaw = 4;
}
//////////////////////////////////////////////////////////////////
//经纬度偏差,来描述一个坐标点的相对位置。约定偏差值等于真实值减去参考值。
//提供了 7 种尺度的描述方式
message PositionOffsetLL_PB{
oneof PositionOffsetLL{
Position_LL_24B position_LL1 = 1;
Position_LL_28B position_LL2 = 2;
Position_LL_32B position_LL3 = 3;
Position_LL_36B position_LL4 = 4;
Position_LL_44B position_LL5 = 5;
Position_LL_48B position_LL6 = 6;
Position_LLmD_64b position_LatLon = 7;
}
}
message Position_LL_24B{
// (-2048..2047)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_28B{
// (-8192..8191)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_32B{
// (-32768..32767)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_36B{
// (-131072..131071)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_44B{
// (-2097152..2097151)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LL_48B{
// (-8388608..8388607)
required int64 lon = 1;
required int64 lat = 2;
}
message Position_LLmD_64b{
// 定义经度数值。东经为正,西经为负。
//分辨率为1e-7°。
required int64 lon = 1;
required int64 lat = 2;
}
//////////////////////////////////////////////////////////////////
message PositionOffsetLLV_PB{
required PositionOffsetLL_PB offsetLL = 1;
optional VerticalOffset_PB offsetV = 2;
}

View File

@@ -0,0 +1,17 @@
syntax = "proto3";
package mogo.telematics.pad;
//第三方OBU接入
import "header.proto";
enum Type{
Default = 0;
DF_OBU = 1;//宜宾东风OBU msg格式:Json字符串
}
message Obu
{
common.Header header = 1;
Type type = 2;//第三方类型 目前只有东风OBU
bytes msg = 3;//OBU 数据
}

View File

@@ -0,0 +1,117 @@
syntax = "proto3";
package mogo.v2x;
import "header.proto";
import "mogo_v2x.proto";
message RsiWarning {
int32 unitMask = 1; /* 描述所属字段有效性 */
int32 sceneType = 2; /* 预警类型0无效1限速信息2道路危险3车内标牌4前方拥堵 */
PositionOffsetLLV_PB position = 3; /* 交通标志/事件位置信息 */
int32 signSerialNum = 4; /* 交通标志类型序号根据预警类型匹配0无效参照国标《GB 5768.2-2009中“交通标志中文名称索引》表序号 */
int32 eventSerialNum = 5; /* 交通事件类型序号根据预警类型匹配0无效参考国标《GB/T 29100-2012》中定义的事件分类代码 */
int32 speedMaxLimit = 6; /* 建议最大车速,单位(0.02m/s) */
int32 speedMinLimit = 7; /* 建议最小车速,单位(0.02m/s) */
int32 eventRadius = 8; /* 交通事件触发半径根据预警类型匹配0无效单位(0.1m) */
int32 warningLevel = 9; /* 预警等级0无效1DETECTED2INFORM3WARNING */
int32 targetPosition = 10; /* 目标方位参考mg_rti_target_position_t */
int32 distance = 11; /* 预警触发时与自车之间的距离,单位(0.01m) */
}
//预警事件 RSI Warning event
message RsiWarningData {
int32 status = 1; /* 状态信息0更新1添加2删除 */
//int32 warning_num = 2; /* 预警信息数量 */
repeated RsiWarning warningMsg = 2; /* 预警信息集合 */
}
message participant{
int32 ptcType = 1; /* 交通参与者类型0未知1机动车2非机动车3行人4OBU自身 */
int32 ptcID = 2; /* 临时ID取值范围(1..255) */
int32 source = 3; /* 监测信息来源0未知1RSU自身2V2X广播3视频传感器4微波雷达5地磁线圈传感器6激光雷达传感器7两类或以上感知数据融合 */
int64 secMark = 4; /* UTC时间单位(ms) */
int64 latitude = 5; /* 维度,单位(1e-7°) */
int64 longitude = 6; /* 经度,单位(1e-7°) */
int64 elevation = 7; /* 海拔,单位(0.1m) */
int64 speed = 8; /* 速度,单位(0.02m/s) */
int32 heading = 9; /* 航向角,单位(0.0125°) */
AccelerationSet4Way_PB accFourAxes = 10; /* 四轴加速度 */
VehicleSize_PB ptcSize = 11; /* 交通参与者尺寸信息 */
int32 vehicleClass = 12; /* 车辆类型参考《OBU软件SDK使用文档》附录A中的表1 */
int32 targetPosition = 13; /* 目标方位参考mg_veh_target_position_t */
}
message ParticipantWarningData{
int32 unitMask = 1; /* 描述所属字段有效性 */
int32 status = 2; /* 状态信息0更新1添加2删除 */
int32 warningType = 3; /* 预警类型0前向碰撞预警1交叉路口碰撞预警2左转辅助预警3盲区预警4变道预警
5逆向超车预警6紧急制动预警7异常车辆提醒8失控车辆预警9紧急车辆预警10弱势交通参与者碰撞预警 */
int32 warningLevel = 4; /* 预警等级0无效1DETECTED2INFORM3WARNING */
int32 warningPriority = 5; /* 预警优先级默认为0预留 */
}
message DateTime{
int32 year = 1; /* 年份 */
int32 month = 2; /* 月份 */
int32 day = 3; /* 日期 */
int32 hour = 4; /* 小时 */
int32 minute = 5; /* 分钟 */
int32 millisecond = 6; /* 毫秒 */
int32 offset = 7; /* 定义与UTC时间的分钟差 */
}
message ParticipantWarning{
int32 unitMask = 1; /* 描述所属字段有效性 */
repeated ParticipantWarningData warningData = 2;
DateTime warningTime = 3; /* 预警触发时间 */
int32 distance = 4; /* 预警触发时与自车之间的距离,单位(0.01m) */
}
//RSM Warning Msg
message RsmWarningData{
int32 status = 1; /* 状态信息0更新1添加2删除 */
participant participantOfOne = 2; /* 弱势交通参与者信息 */
ParticipantWarning warningMsg = 3; /* 弱势交通参与者预警信息 */
}
message SpatLight{
int32 phaseID = 1; /* 信号灯相位ID */
int32 maneuvers = 2; /* 允许转向关系bit0直行bit1左转bit2右转bit3掉头 */
int32 light = 3; /* 灯色0不可用1黑色2红闪3红色4绿闪5permissive_green6protected_green7黄色8黄闪 */
int32 countDown = 4; /* 灯色倒计时,单位(0.1s) */
int32 suggestMaxSpeed = 5; /* 建议最大车速,单位(0.02m/s) */
int32 suggestMinSpeed = 6; /* 建议最小车速,单位(0.02m/s) */
}
//SPAT Msg
message SpatWarningData{
int32 status = 1; /* 状态信息0更新1添加2删除 */
int32 warningType = 2; /* 预警类型信息 */
repeated SpatLight lights = 3; /* 灯色信息集合 */
}
message NodeID{
int32 region = 1;/* 定义地图中划分区域的ID号 */
int32 id = 2; /* 定义地图节点ID */
}
message MapMatchData{
int32 status = 1;/* 状态信息0更新1添加2删除 */
int32 unitMask = 2;/* 描述所属字段有效性 */
NodeID currentNodeID = 3;/* 前方节点信息 */
NodeID upstreamNodeID = 4;/* 上游节点信息 */
int32 matchingLaneID = 5;/* 匹配车道ID0无效 */
int32 speedMaxLimit = 6;/* 建议最大车速,单位(0.02m/s) */
int32 speedMinLimit = 7;/* 建议最小车速,单位(0.02m/s) */
}
message ObuWarningData{
common.Header header = 1;
int32 msgDataType = 2; /*1:rsiEvent; 2:rsmEvent; 3:spatEvent; 4:mapMatchData*/
RsiWarningData rsiEvent = 3;
RsmWarningData rsmEvent = 4;
SpatWarningData spatEvent = 5;
MapMatchData mapMatchData = 6;
}

View File

@@ -0,0 +1,33 @@
syntax = "proto2";
package prediction;
// common
import "header.proto";
import "geometry.proto";
// estimated obstacle intent
message mPredictionObject {
optional int64 m_nid =1; //target id
optional int32 m_nquality =2; //target tracking life quality
optional int32 classtype =3; //target classtype
optional int32 m_preconfidence=4; //target predciton confidence
repeated geometry.Point prediction_trajectory = 5; //target prediction trajectory :vector : meter
repeated geometry.Point prediction_pose = 6; //targe prediciton pose vector angle:°
optional geometry.Vector3 objsize = 7; //length width height :meter
}
message mPredictionObjects {
optional common.Header header = 1;
optional int32 m_nnum0 =2; // all target number
optional int64 allcyclenum =3;//process cycle number
optional double m_ftime=4; //time stamp
optional double fdeltat=5; // deltatime prediciton time stamp default:0.1s
repeated mPredictionObject objs=6; //obj capcity
}

View File

@@ -0,0 +1,35 @@
syntax = "proto2";
package record_cache;
import "header.proto";
message RecordItem {
optional string topic = 1; //topic name of record data
optional int32 nums = 2; //quantity of this topic's data
}
message TriggerInfo {
required bool auto_trig = 1; //trigger mode: true - auto trig when autopilot mode turn to handle | false - subscribe topic to trig
optional string trig_topic = 2; //name of topic used to trig(mode is 0 available)
optional string trig_msg = 3; //topic message(mode is 0 available)
}
message RecordPanel {
optional common.Header header = 1;
optional int32 stat = 2; //record stat100 - record succeed,auto stop | 101 - record succeed,handle stop | 200 - record failed
optional int64 disk_free = 3; //disk space available
optional int64 total_size = 4; //space used by bag
optional string timestamp = 5; //timestamp
optional float duration = 6; //data duration
optional TriggerInfo triggerinfo = 7; //information of trigger
optional string filename = 8; //bag's filename
repeated RecordItem records = 9; //information of each topic's record
optional string note = 10; //other message(warn,error or other message included)
optional int32 type = 11;
optional int32 id = 12;
required uint64 key = 13;
repeated string topics = 14;
}

View File

@@ -0,0 +1,24 @@
syntax = "proto3";
package planning;
import "header.proto";
message RoboSweeperTaskIndex {
common.Header header = 1;
uint32 edge_clean_state = 2; // 贴边工作状态 0--非贴边作业 1--靠右贴边作业, 2靠左贴边作业
uint32 edge_clean_avoid = 3; // 清扫绕障状态 0非绕障状态 , 1绕障状态
double loc_utm_x = 4; // 自车RTK定位utm坐标下 x值
double loc_utm_y = 5; // 自车RTK定位utm坐标下 y值
double loc_lon = 6; // 自车RTK定位经度
double loc_lat= 7; // 自车RTK定位纬度
double ref_edge_point_x = 8; // 投影边沿点utm坐标下 x值
double ref_edge_point_y = 9; // 投影边沿点utm坐标下 y值
double ref_edge_point_lon = 10; // 投影边沿点经度
double ref_edge_point_lat = 11; // 投影边沿点纬度
double dist_to_ref_edge_point = 12; // 自车到投影边沿点的距离 正值为在投影边沿点的右边 ,负值为在投影边沿点的右边
uint32 clean_mode = 13; // 清扫作业模式 1纯扫 2--洗扫, 3--纯洗, 4--纯吸
uint32 clean_direction = 14; // 清扫方向 1--两侧, 2--左侧, 3--右侧
uint32 clean_intensity= 15; // 作业强度 1标准 2--强力
}

View File

@@ -0,0 +1,49 @@
syntax = "proto2";
package chassis;
import "header.proto";
message RoboSweeperFuTianCleanCmd {
optional uint32 clean_open_requirement = 1 [default = 0]; // 清扫作业开启需求 0--no req 1--Req_clean_work, 2--No_clean_work
optional uint32 clean_mode_requirement = 2 [default = 0]; // 清扫作业模式需求 0--no req, 1--Sweeping mode, 2--Wash sweeper mode, 3--Pure wash mode, 4--Pure draw mode, 5--close clean mode
optional uint32 clean_direction_requirement = 3 [default = 0]; // 清扫方向需求指 0--no req, 1--both side work, 2--left side work, 3--right side work, 4--close side work
optional uint32 clean_intensity_requirement = 4 [default = 0]; // 作业强度需求 0--no req, 1--stand clean work, 2--strong clean work
optional uint32 dusk_close_requirement = 5 [default = 0]; // 降尘关闭需求 0--no req, 1--close dusk, 2--open dusk
optional uint32 suction_nozzlefle_open_requirement = 6 [default = 0]; // 吸嘴挡板需求 0--no req, 1--open, 2--close
optional uint32 spray_gun_open_requirement = 7 [default = 0]; // 喷雾枪需求 0--no req, 1--open, 2--close
optional uint32 sweepdisk_speed_requirement = 8 [default = 0]; // 扫盘加速需求 0--no req, 1--decelerate req, 2--accelerate req扫盘加速需求每点一次为加速一次每次加速为5%pwm
}
message RoboSweeperFuTianTaskCmd {
optional RoboSweeperFuTianCleanCmd robo_sweeper_futian_clean_cmd = 1; // 福田清扫车清扫作业指令
}
message RoboVanSkywellTaskCmd {
optional uint32 door_cmd = 1 [default = 0]; //1: 开门 2:关门
optional uint32 horn_cmd = 2 [default = 0]; //1:开始鸣笛 2:停止鸣笛
}
message RoboBusJinlvM1Cmd {
optional uint32 air_conditioner_cmd = 1; //0: default, 1: 开启空调, 2: 关闭空调
optional uint32 air_conditioner_mode_cmd = 2; //模式 0: default, 1: 自动模式, 2: 制冷模式, 3: 通风模式(仅送风,无温度)
optional uint32 air_conditioner_wind_speed_cmd = 3; //风速 0: default, 1: 1档2: 2档3:3档
optional uint32 air_conditioner_temperature_cmd = 4; //温度 0: default, 16-26: 温度
optional uint32 header_cmd = 5; //0: default, 1: 开启暖风机, 2: 关闭暖风机
optional uint32 header_wind_speed_cmd = 6; //风速 0: default, 1: 1档2: 2档
optional uint32 main_lamp1_cmd = 7; //0: default, 1: 开启顶灯1, 2: 关闭顶灯1
optional uint32 main_lamp2_cmd = 8; //0: default, 1: 开启顶灯2, 2: 关闭顶灯2
optional uint32 small_lamp_cmd = 9; //0: default, 1: 开启小灯(氛围灯), 2: 关闭小灯(氛围灯)
optional uint32 front_door_cmd = 10; //0: default, 1: 开启车门, 2: 关闭车门
}
message SpecialVehicleTaskCmd {
optional common.Header header = 1;
optional RoboSweeperFuTianTaskCmd robo_sweeper_futian_task_cmd = 2; // 福田清扫车业务指令
optional RoboVanSkywellTaskCmd robo_van_skywell_task_cmd = 3; // 开沃小巴业务指令
optional RoboBusJinlvM1Cmd robo_bus_jinlv_m1_cmd = 4; //金旅定制车m1指令
}

View File

@@ -0,0 +1,64 @@
syntax = "proto2";
package system_master;
enum SystemState {
SYS_STARTING = 0; //系统正在启动
SYS_RUNNING = 1; //系统运行中
SYS_EXITING = 2; //系统正在关闭 例如重启
SYS_FAULT = 3; //系统异常
PILOT_READY = 4; //自动驾驶准备就绪,轨迹下载完成,可以开始自动驾驶
AUTO_PILOT_STARTING = 5; //正在开始自动驾驶 自动驾驶命令已下发,正在启动中
AUTO_PILOT_RUNNING = 6; //自动驾驶运行中
REMOTE_PILOT_STARTING = 7; //平行驾驶启动中
REMOTE_PILOT_RUNNING = 8; //平行驾驶运行中
}
enum HealthState {
NORMAL = 0;//正常
FAULT = 1;//异常
UNKNOW = 2;//未知
}
message HealthInfo{
required string name = 1; //node name
required HealthState state = 2; //health state
optional string code = 3; //code 与系统事件错误码对应,如有该错误填写,没有不填
optional string desc = 4; //补充描述,用于未知情况
}
message TopicInfo{
optional string name = 1; //topic name
optional int32 hz = 2; //Topic发送的频率
}
message DropTopic{
required int32 sum = 1; //dropped topic sum 有多少个Topic掉帧
repeated TopicInfo topic = 2;
}
message NodeInfo{
optional string node_name = 1; //node name
optional string launch_name = 2; //launch name
optional int32 state = 3; //0未知状态None1依赖未就绪Waiting2启动中Starting3运行running4停止stopping5无法启动状态6人为启动状态7人为关闭状态
}
message NodeFaultList{
required int32 sum = 1; //下述node总数
repeated NodeInfo node = 2;
}
message StatusInfo {
required SystemState sys_state=1; // 当前系统状态
repeated HealthInfo health_info=2; // 健康检查状态信息
optional DropTopic topic_drop_info=3; // topic 掉频信息, 如有掉频添加没有不添加
optional string reserved = 4; // 用于表示idle模式'idle' 表示idle模式 'work' 表示正常工作
// add by liyl 20220907
optional int32 pilot_mode = 5; // 0: manaul 1: autopilot 2: RemotePilot
optional string map_version = 6; // MAP 版本信息
optional string master_version = 7; // system_master 版本信息
optional bool auto_pilot_ready = 8; // 自动驾驶状态就绪, 20221111增加
optional bool remote_pilot_ready = 9; // 平行驾驶状态就绪
optional NodeFaultList auto_pilot_unready_list = 10; //20221128 增加
optional NodeFaultList remote_pilot_unready_list = 11; //20221128 增加
}

View File

@@ -0,0 +1,38 @@
syntax = "proto2";
package perception;
import "header.proto";
enum LightType {
TYPE_DEFAULT = 0;
TYPE_VEHICLE = 1;//机动车道
TYPE_BICYLE = 2;//自行车道
TYPE_PEDSTRIAN = 3;//行人道
TYPE_LANE = 5;//车道
}
enum LightState {
STATE_OFF = 0;//没检测到灯
STATE_RED = 1;
STATE_YELLOW = 2;
STATE_GREEN = 3;
STATE_FLASH = 4;//闪烁
}
message TrafficLight {
optional int64 id = 1;
optional LightType type = 2 [default = TYPE_DEFAULT];//灯所处的车道类型
optional LightState state = 3 [default = STATE_OFF];//灯态
optional float duration = 4; // seconds since the last state changed
}
//触发方式120m以内会有信号但远的时候可能不准越近越准
//straight left right u_turn 同一时间只有会有一个触发
message TrafficLights {
optional common.Header header = 1;
optional TrafficLight straight = 2;//直行灯
optional TrafficLight left = 3;//左转灯
optional TrafficLight right = 4;//右转灯
optional TrafficLight u_turn = 5;//掉头灯
}

View File

@@ -0,0 +1,143 @@
syntax = "proto2";
package chassis;
import "header.proto";
import "chassis.proto";
message SweeperFuTianCleanSystemState {
optional bool secu_rem_ctrl_sts = 1 [default = false]; // 远程控制使能信号
optional bool secu_mot_work_sts = 2 [default = false]; // 电机启停控制状态信号
optional bool secu_dup_tail_door_open_sts = 3 [default = false]; // 垃圾箱尾门开状态信号
optional bool secu_dup_tail_door_close_sts = 4 [default = false]; // 垃圾箱尾门关状态信号
optional bool secu_auto_dup_tail_tip_sts = 5 [default = false]; // 垃圾箱倾翻状态信号
optional bool secu_dup_tail_ret_sts = 6 [default = false]; // 垃圾箱回位状态信号
optional bool secu_work_stand_sts = 7 [default = false]; // 标准作业状态信号
optional bool secu_work_strong_sts = 8 [default = false]; // 强力作业状态信号
optional bool secu_suctionnozzlebaffle_sts = 9 [default = false]; // 吸嘴挡板开状态信号
optional bool secu_dusk_close_sts = 10 [default = false]; // 降尘关闭状态信号
optional bool secu_work_left_sts = 11 [default = false]; // 左侧作业状态信号
optional bool secu_work_on_bothsides_sts = 12 [default = false]; // 两侧作业状态信号
optional bool secu_work_right_sts = 13 [default = false]; // 右侧作业状态信号
optional bool secu_work_ton_sts = 14 [default = false]; // 纯吸作业状态信号
optional bool secu_work_spray_gun_sts = 15 [default = false]; // 喷雾喷枪作业状态信号
optional bool secu_work_enc_des_sts = 16 [default = false]; // 箱体清淤作业状态信号
optional bool secu_mod_wash_sweep_sts = 17 [default = false]; // 洗扫模式状态信号
optional bool secu_mod_wash_sts = 18 [default = false]; // 纯洗模式状态信号
optional bool secu_sweepdisk_red_sts = 19 [default = false]; // 扫盘减速开关状态信号
optional bool secu_sweepdisk_acc_sts = 20 [default = false]; // 扫盘加速开关状态信号
optional bool secu_arrowlight_sts = 21 [default = false]; // 箭头灯开关状态信号
optional bool secu_floodlight_sts = 22 [default = false]; // 照明灯开关状态信号
optional bool secu_work_cleaning_sts = 23 [default = false]; // 保洁作业状态信号
optional bool secu_clean_music_sts = 24 [default = false]; // 音乐开关状态信号
optional bool secu_motor_oil_com_fail = 25 [default = false]; // 油泵电机通讯失败报警
optional bool secu_motor_water_com_fail = 26 [default = false]; // 水泵电机通讯失败报警
optional bool secu_motor_air_com_fail = 27 [default = false]; // 风机电机通讯失败报警
optional bool secu_fan_fault = 28 [default = false]; // 散热风扇故障报警
optional bool secu_chassis_com_fail = 29 [default = false]; // 底盘通讯失败报警
optional bool secu_panel_com_fail = 30 [default = false]; // 操作面板通讯失败报警
optional bool secu_oillevel_check = 31 [default = false]; // 液压油位低请停机检查报警信号
optional bool secu_oilstmjam_check = 32 [default = false]; // 液压油滤堵塞请停机检查报警信号
optional bool secu_water_valve_close = 33 [default = false]; // 出水阀门关闭不能清洗作业报警信号
optional bool secu_clean_water_tank_low = 34 [default = false]; // 清水箱水位低不能清洗作业报警信号
optional bool secu_sewage_water_tank_full = 35 [default = false]; // 污水箱满请停止作业报警信号
optional bool secu_coolwatertemp_high = 36 [default = false]; // 水温过高请停机检查报警信号
optional bool secu_coolwater_less = 37 [default = false]; // 冷却液位低报警信号
optional bool secu_tail_gate_open = 38 [default = false]; // 尾门打开接近开关
optional bool secu_manual_intervention_sts = 39 [default = false]; // 提示是否有人为介入
optional bool secu_ready_finish_sts = 40 [default = false]; // 上装ready完成
optional float secu_sweepdisk_speed = 41 [default = 0]; // 扫盘转速
}
message RoboTaxiState {
optional bool veh_rta_recover = 1 [default = false]; // 车辆可进入自动驾驶标志位,不可进入时一定时间内恢复可自动进入
optional bool veh_rta_no_recover = 2 [default = false]; // 车辆可进入自动驾驶标志位,不可进入时恢复无法自动进入
}
message RoboBusState {
optional bool reserved = 1; // 预留
}
message AirConditionerState {
optional bool is_on = 1; //是否开启
optional uint32 mode = 2; //模式, 1: 自动模式, 2: 制冷模式, 3: 通风模式(仅送风,无温度)
optional uint32 temperature = 3; //温度
optional uint32 wind_speed = 4; //风速, 1-3: 1-3档
}
message HeaterState {
optional bool is_on = 1; //是否开启
optional uint32 wind_speed = 2; //风速, 1-2: 1-2档
}
message DoorState {
optional bool is_on = 1; //是否开启
}
message LightState {
optional bool is_on = 1; //是否开启
optional uint32 color = 2; //颜色
}
message RoboBusJinlvM1State {
optional AirConditionerState air_conditioner_state = 1; //空调
optional HeaterState heater_state = 2; //暖风机
optional DoorState front_door_state = 3; //车门
optional LightState main_lamp1_state = 4; //顶灯1
optional LightState main_lamp2_state = 5; //顶灯2
optional LightState small_lamp_state = 6; //小灯(氛围灯)
}
message VehicleState {
optional common.Header header = 1;
optional chassis.PilotMode pilot_mode = 2 [default = MODE_MANUAL];
optional float steering = 3 [default = 0]; // steering angle in degrees
optional float speed = 4 [default = 0]; // speed in m/s
optional float accel = 5 [default = 0]; // target acceleration in m/s^2
optional float throttle = 6 [default = 0]; // target throttle in percentage [0, 100]
optional float brake = 7 [default = 0]; // target brake in percentage [0, 100]
optional chassis.GearPosition gear = 8 [default = GEAR_NONE];
optional chassis.LightSwitch light = 9 [default = LIGHT_NONE];
//TODO: move to chassis
optional bool horn = 10 [default = false]; //鸣笛
optional bool highbeam = 11 [default = false]; //远光灯
optional bool lowbeam = 12 [default = false]; //近光灯
optional bool foglight = 13 [default = false]; //雾灯
optional bool clearance_lamps = 14 [default = false]; //示廓灯
optional bool warn_light = 15 [default = false]; //报警灯
optional bool parking_brake = 16 [default = false];
optional chassis.LongitudeDrivingMode longitude_driving_mode = 20;
optional chassis.EPSSteeringMode eps_steering_mode = 21;
optional uint32 steering_sign = 22;
optional bool steer_inference = 23 [default = false]; //方向盘干预
optional bool brake_inference = 24 [default = false]; //制动踏板干预
optional bool accel_inference = 25 [default = false]; //加速踏板干预
optional bool gear_switch_inference = 26 [default = false]; //档位切换干预
optional bool location_missing = 27 [default = false]; //未收到定位
optional bool trajectory_missing = 28 [default = false]; //未收到轨迹
optional bool chassis_status_missing = 29 [default = false]; //未收到车辆底盘反馈信息
optional bool brake_light_status = 30 [default = false]; //自驾模式下制动灯状态
optional bool pilot_mode_condition_met = 31 [default = false];
optional float steeringSpd = 32 [default = 0]; // steering angle speed in degrees/s
optional float leftFrontWheelAngle = 33 [default = 0];//左前轮角度deg,左负右正
optional float rightFrontWheelAngle = 34 [default = 0]; //右前轮角度deg,左负右正
optional chassis.EPBWorkStatus epb = 35 [default = EPBSTATUS_NONE]; // EPB工作状态
optional chassis.VehicleTakeOverStatus vehicletakeoverstatus = 36 [default = None_TakeOver]; // 车辆人工接管状态
optional bool Emergency_Stop_Switch = 37 [default = false]; // 急停开关状态
optional chassis.VehicleFaultLevel vehiclefaultlevel = 38 [default = None_Fault]; // 整车故障状态
optional float bms_soc = 40 [default = 0]; // 电量百分比范围 0~100
optional float fuel_value = 41 [default = 0]; // 油车剩余油量
optional SweeperFuTianCleanSystemState sweeper_futian_clean_system_state = 200; // 福田清扫车上装状态信息
optional RoboTaxiState robo_taxi_state = 201; // taxi状态
optional RoboBusState robo_bus_state = 202; // bus状态
optional RoboBusJinlvM1State robo_bus_jinlv_m1_state = 203; //金旅定制车m1状态
}

View File

@@ -0,0 +1,18 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.zhjt.mogo_core_function_devatools;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "com.zhjt.mogo_core_function_devatools";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "com.zhjt.mogo_core_function_devatools";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "0.0.58.10";
}

View File

@@ -0,0 +1,19 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.zhjt.mogo_core_function_devatools.DevaToolsProvider;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER.
*/
public class ARouter$$Group$$deva implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/deva/tools", RouteMeta.build(RouteType.PROVIDER, DevaToolsProvider.class, "/deva/tools", "deva", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,19 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IProviderGroup;
import com.zhjt.mogo_core_function_devatools.DevaToolsProvider;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER.
*/
public class ARouter$$Providers$$mogocorefunctiondevatools implements IProviderGroup {
@Override
public void loadInto(Map<String, RouteMeta> providers) {
providers.put("com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider", RouteMeta.build(RouteType.PROVIDER, DevaToolsProvider.class, "/deva/tools", "deva", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.alibaba.android.arouter.facade.template.IRouteRoot;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER.
*/
public class ARouter$$Root$$mogocorefunctiondevatools implements IRouteRoot {
@Override
public void loadInto(Map<String, Class<? extends IRouteGroup>> routes) {
routes.put("deva", ARouter$$Group$$deva.class);
}
}

View File

@@ -0,0 +1,176 @@
package com.zhjt.mogo_core_function_devatools.badcase.repository.db;
import androidx.annotation.NonNull;
import androidx.room.DatabaseConfiguration;
import androidx.room.InvalidationTracker;
import androidx.room.RoomOpenHelper;
import androidx.room.RoomOpenHelper.Delegate;
import androidx.room.RoomOpenHelper.ValidationResult;
import androidx.room.migration.AutoMigrationSpec;
import androidx.room.migration.Migration;
import androidx.room.util.DBUtil;
import androidx.room.util.TableInfo;
import androidx.room.util.TableInfo.Column;
import androidx.room.util.TableInfo.ForeignKey;
import androidx.room.util.TableInfo.Index;
import androidx.sqlite.db.SupportSQLiteDatabase;
import androidx.sqlite.db.SupportSQLiteOpenHelper;
import androidx.sqlite.db.SupportSQLiteOpenHelper.Callback;
import androidx.sqlite.db.SupportSQLiteOpenHelper.Configuration;
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.dao.IBadCaseRecordDao;
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.dao.IBadCaseRecordDao_Impl;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.lang.SuppressWarnings;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@SuppressWarnings({"unchecked", "deprecation"})
public final class BadCaseDb_Impl extends BadCaseDb {
private volatile IBadCaseRecordDao _iBadCaseRecordDao;
@Override
protected SupportSQLiteOpenHelper createOpenHelper(DatabaseConfiguration configuration) {
final SupportSQLiteOpenHelper.Callback _openCallback = new RoomOpenHelper(configuration, new RoomOpenHelper.Delegate(1) {
@Override
public void createAllTables(SupportSQLiteDatabase _db) {
_db.execSQL("CREATE TABLE IF NOT EXISTS `record` (`disk_free` INTEGER NOT NULL, `duration` REAL NOT NULL, `file_name` TEXT, `note` TEXT, `key` TEXT, `stat` INTEGER NOT NULL, `type` INTEGER NOT NULL, `id` INTEGER NOT NULL, `timestamp` TEXT NOT NULL, `total` INTEGER, `consumed` INTEGER NOT NULL, PRIMARY KEY(`timestamp`))");
_db.execSQL("CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)");
_db.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b18a4ec36f03771ed46f95b414bff91b')");
}
@Override
public void dropAllTables(SupportSQLiteDatabase _db) {
_db.execSQL("DROP TABLE IF EXISTS `record`");
if (mCallbacks != null) {
for (int _i = 0, _size = mCallbacks.size(); _i < _size; _i++) {
mCallbacks.get(_i).onDestructiveMigration(_db);
}
}
}
@Override
protected void onCreate(SupportSQLiteDatabase _db) {
if (mCallbacks != null) {
for (int _i = 0, _size = mCallbacks.size(); _i < _size; _i++) {
mCallbacks.get(_i).onCreate(_db);
}
}
}
@Override
public void onOpen(SupportSQLiteDatabase _db) {
mDatabase = _db;
internalInitInvalidationTracker(_db);
if (mCallbacks != null) {
for (int _i = 0, _size = mCallbacks.size(); _i < _size; _i++) {
mCallbacks.get(_i).onOpen(_db);
}
}
}
@Override
public void onPreMigrate(SupportSQLiteDatabase _db) {
DBUtil.dropFtsSyncTriggers(_db);
}
@Override
public void onPostMigrate(SupportSQLiteDatabase _db) {
}
@Override
protected RoomOpenHelper.ValidationResult onValidateSchema(SupportSQLiteDatabase _db) {
final HashMap<String, TableInfo.Column> _columnsRecord = new HashMap<String, TableInfo.Column>(11);
_columnsRecord.put("disk_free", new TableInfo.Column("disk_free", "INTEGER", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("duration", new TableInfo.Column("duration", "REAL", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("file_name", new TableInfo.Column("file_name", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("note", new TableInfo.Column("note", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("key", new TableInfo.Column("key", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("stat", new TableInfo.Column("stat", "INTEGER", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("type", new TableInfo.Column("type", "INTEGER", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("id", new TableInfo.Column("id", "INTEGER", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("timestamp", new TableInfo.Column("timestamp", "TEXT", true, 1, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("total", new TableInfo.Column("total", "INTEGER", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsRecord.put("consumed", new TableInfo.Column("consumed", "INTEGER", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
final HashSet<TableInfo.ForeignKey> _foreignKeysRecord = new HashSet<TableInfo.ForeignKey>(0);
final HashSet<TableInfo.Index> _indicesRecord = new HashSet<TableInfo.Index>(0);
final TableInfo _infoRecord = new TableInfo("record", _columnsRecord, _foreignKeysRecord, _indicesRecord);
final TableInfo _existingRecord = TableInfo.read(_db, "record");
if (! _infoRecord.equals(_existingRecord)) {
return new RoomOpenHelper.ValidationResult(false, "record(com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord).\n"
+ " Expected:\n" + _infoRecord + "\n"
+ " Found:\n" + _existingRecord);
}
return new RoomOpenHelper.ValidationResult(true, null);
}
}, "b18a4ec36f03771ed46f95b414bff91b", "56a6881a09666fd043231f13280fc24d");
final SupportSQLiteOpenHelper.Configuration _sqliteConfig = SupportSQLiteOpenHelper.Configuration.builder(configuration.context)
.name(configuration.name)
.callback(_openCallback)
.build();
final SupportSQLiteOpenHelper _helper = configuration.sqliteOpenHelperFactory.create(_sqliteConfig);
return _helper;
}
@Override
protected InvalidationTracker createInvalidationTracker() {
final HashMap<String, String> _shadowTablesMap = new HashMap<String, String>(0);
HashMap<String, Set<String>> _viewTables = new HashMap<String, Set<String>>(0);
return new InvalidationTracker(this, _shadowTablesMap, _viewTables, "record");
}
@Override
public void clearAllTables() {
super.assertNotMainThread();
final SupportSQLiteDatabase _db = super.getOpenHelper().getWritableDatabase();
try {
super.beginTransaction();
_db.execSQL("DELETE FROM `record`");
super.setTransactionSuccessful();
} finally {
super.endTransaction();
_db.query("PRAGMA wal_checkpoint(FULL)").close();
if (!_db.inTransaction()) {
_db.execSQL("VACUUM");
}
}
}
@Override
protected Map<Class<?>, List<Class<?>>> getRequiredTypeConverters() {
final HashMap<Class<?>, List<Class<?>>> _typeConvertersMap = new HashMap<Class<?>, List<Class<?>>>();
_typeConvertersMap.put(IBadCaseRecordDao.class, IBadCaseRecordDao_Impl.getRequiredConverters());
return _typeConvertersMap;
}
@Override
public Set<Class<? extends AutoMigrationSpec>> getRequiredAutoMigrationSpecs() {
final HashSet<Class<? extends AutoMigrationSpec>> _autoMigrationSpecsSet = new HashSet<Class<? extends AutoMigrationSpec>>();
return _autoMigrationSpecsSet;
}
@Override
public List<Migration> getAutoMigrations(
@NonNull Map<Class<? extends AutoMigrationSpec>, AutoMigrationSpec> autoMigrationSpecsMap) {
return Arrays.asList();
}
@Override
public IBadCaseRecordDao dao() {
if (_iBadCaseRecordDao != null) {
return _iBadCaseRecordDao;
} else {
synchronized(this) {
if(_iBadCaseRecordDao == null) {
_iBadCaseRecordDao = new IBadCaseRecordDao_Impl(this);
}
return _iBadCaseRecordDao;
}
}
}
}

View File

@@ -0,0 +1,229 @@
package com.zhjt.mogo_core_function_devatools.badcase.repository.db.dao;
import android.database.Cursor;
import android.os.CancellationSignal;
import androidx.room.CoroutinesRoom;
import androidx.room.EntityDeletionOrUpdateAdapter;
import androidx.room.EntityInsertionAdapter;
import androidx.room.RoomDatabase;
import androidx.room.RoomSQLiteQuery;
import androidx.room.util.CursorUtil;
import androidx.room.util.DBUtil;
import androidx.sqlite.db.SupportSQLiteStatement;
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord;
import java.lang.Class;
import java.lang.Exception;
import java.lang.Integer;
import java.lang.Long;
import java.lang.Object;
import java.lang.Override;
import java.lang.String;
import java.lang.SuppressWarnings;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Callable;
import kotlin.coroutines.Continuation;
@SuppressWarnings({"unchecked", "deprecation"})
public final class IBadCaseRecordDao_Impl implements IBadCaseRecordDao {
private final RoomDatabase __db;
private final EntityInsertionAdapter<AutoPilotRecord> __insertionAdapterOfAutoPilotRecord;
private final EntityDeletionOrUpdateAdapter<AutoPilotRecord> __deletionAdapterOfAutoPilotRecord;
public IBadCaseRecordDao_Impl(RoomDatabase __db) {
this.__db = __db;
this.__insertionAdapterOfAutoPilotRecord = new EntityInsertionAdapter<AutoPilotRecord>(__db) {
@Override
public String createQuery() {
return "INSERT OR REPLACE INTO `record` (`disk_free`,`duration`,`file_name`,`note`,`key`,`stat`,`type`,`id`,`timestamp`,`total`,`consumed`) VALUES (?,?,?,?,?,?,?,?,?,?,?)";
}
@Override
public void bind(SupportSQLiteStatement stmt, AutoPilotRecord value) {
stmt.bindLong(1, value.getDiskFree());
stmt.bindDouble(2, value.getDuration());
if (value.getFileName() == null) {
stmt.bindNull(3);
} else {
stmt.bindString(3, value.getFileName());
}
if (value.getNote() == null) {
stmt.bindNull(4);
} else {
stmt.bindString(4, value.getNote());
}
if (value.getKey() == null) {
stmt.bindNull(5);
} else {
stmt.bindString(5, value.getKey());
}
stmt.bindLong(6, value.getStat());
stmt.bindLong(7, value.getType());
stmt.bindLong(8, value.getId());
if (value.getTimestamp() == null) {
stmt.bindNull(9);
} else {
stmt.bindString(9, value.getTimestamp());
}
if (value.getTotal() == null) {
stmt.bindNull(10);
} else {
stmt.bindLong(10, value.getTotal());
}
final int _tmp = value.getConsumed() ? 1 : 0;
stmt.bindLong(11, _tmp);
}
};
this.__deletionAdapterOfAutoPilotRecord = new EntityDeletionOrUpdateAdapter<AutoPilotRecord>(__db) {
@Override
public String createQuery() {
return "DELETE FROM `record` WHERE `timestamp` = ?";
}
@Override
public void bind(SupportSQLiteStatement stmt, AutoPilotRecord value) {
if (value.getTimestamp() == null) {
stmt.bindNull(1);
} else {
stmt.bindString(1, value.getTimestamp());
}
}
};
}
@Override
public Object insertRecord(final AutoPilotRecord record,
final Continuation<? super Long> continuation) {
return CoroutinesRoom.execute(__db, true, new Callable<Long>() {
@Override
public Long call() throws Exception {
__db.beginTransaction();
try {
long _result = __insertionAdapterOfAutoPilotRecord.insertAndReturnId(record);
__db.setTransactionSuccessful();
return _result;
} finally {
__db.endTransaction();
}
}
}, continuation);
}
@Override
public Object deleteRecord(final AutoPilotRecord record,
final Continuation<? super Integer> continuation) {
return CoroutinesRoom.execute(__db, true, new Callable<Integer>() {
@Override
public Integer call() throws Exception {
int _total = 0;
__db.beginTransaction();
try {
_total +=__deletionAdapterOfAutoPilotRecord.handle(record);
__db.setTransactionSuccessful();
return _total;
} finally {
__db.endTransaction();
}
}
}, continuation);
}
@Override
public Object getAllUnConsumedRecords(
final Continuation<? super List<AutoPilotRecord>> continuation) {
final String _sql = "SELECT * FROM record ORDER BY timestamp ASC";
final RoomSQLiteQuery _statement = RoomSQLiteQuery.acquire(_sql, 0);
final CancellationSignal _cancellationSignal = DBUtil.createCancellationSignal();
return CoroutinesRoom.execute(__db, false, _cancellationSignal, new Callable<List<AutoPilotRecord>>() {
@Override
public List<AutoPilotRecord> call() throws Exception {
final Cursor _cursor = DBUtil.query(__db, _statement, false, null);
try {
final int _cursorIndexOfDiskFree = CursorUtil.getColumnIndexOrThrow(_cursor, "disk_free");
final int _cursorIndexOfDuration = CursorUtil.getColumnIndexOrThrow(_cursor, "duration");
final int _cursorIndexOfFileName = CursorUtil.getColumnIndexOrThrow(_cursor, "file_name");
final int _cursorIndexOfNote = CursorUtil.getColumnIndexOrThrow(_cursor, "note");
final int _cursorIndexOfKey = CursorUtil.getColumnIndexOrThrow(_cursor, "key");
final int _cursorIndexOfStat = CursorUtil.getColumnIndexOrThrow(_cursor, "stat");
final int _cursorIndexOfType = CursorUtil.getColumnIndexOrThrow(_cursor, "type");
final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
final int _cursorIndexOfTimestamp = CursorUtil.getColumnIndexOrThrow(_cursor, "timestamp");
final int _cursorIndexOfTotal = CursorUtil.getColumnIndexOrThrow(_cursor, "total");
final int _cursorIndexOfConsumed = CursorUtil.getColumnIndexOrThrow(_cursor, "consumed");
final List<AutoPilotRecord> _result = new ArrayList<AutoPilotRecord>(_cursor.getCount());
while(_cursor.moveToNext()) {
final AutoPilotRecord _item;
_item = new AutoPilotRecord();
final long _tmpDiskFree;
_tmpDiskFree = _cursor.getLong(_cursorIndexOfDiskFree);
_item.setDiskFree(_tmpDiskFree);
final double _tmpDuration;
_tmpDuration = _cursor.getDouble(_cursorIndexOfDuration);
_item.setDuration(_tmpDuration);
final String _tmpFileName;
if (_cursor.isNull(_cursorIndexOfFileName)) {
_tmpFileName = null;
} else {
_tmpFileName = _cursor.getString(_cursorIndexOfFileName);
}
_item.setFileName(_tmpFileName);
final String _tmpNote;
if (_cursor.isNull(_cursorIndexOfNote)) {
_tmpNote = null;
} else {
_tmpNote = _cursor.getString(_cursorIndexOfNote);
}
_item.setNote(_tmpNote);
final String _tmpKey;
if (_cursor.isNull(_cursorIndexOfKey)) {
_tmpKey = null;
} else {
_tmpKey = _cursor.getString(_cursorIndexOfKey);
}
_item.setKey(_tmpKey);
final int _tmpStat;
_tmpStat = _cursor.getInt(_cursorIndexOfStat);
_item.setStat(_tmpStat);
final int _tmpType;
_tmpType = _cursor.getInt(_cursorIndexOfType);
_item.setType(_tmpType);
final int _tmpId;
_tmpId = _cursor.getInt(_cursorIndexOfId);
_item.setId(_tmpId);
final String _tmpTimestamp;
if (_cursor.isNull(_cursorIndexOfTimestamp)) {
_tmpTimestamp = null;
} else {
_tmpTimestamp = _cursor.getString(_cursorIndexOfTimestamp);
}
_item.setTimestamp(_tmpTimestamp);
final Long _tmpTotal;
if (_cursor.isNull(_cursorIndexOfTotal)) {
_tmpTotal = null;
} else {
_tmpTotal = _cursor.getLong(_cursorIndexOfTotal);
}
_item.setTotal(_tmpTotal);
final boolean _tmpConsumed;
final int _tmp;
_tmp = _cursor.getInt(_cursorIndexOfConsumed);
_tmpConsumed = _tmp != 0;
_item.setConsumed(_tmpConsumed);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
_statement.release();
}
}
}, continuation);
}
public static List<Class<?>> getRequiredConverters() {
return Collections.emptyList();
}
}

View File

@@ -0,0 +1,197 @@
package com.zhjt.mogo_core_function_devatools.monitor.db;
import android.database.Cursor;
import androidx.room.EntityInsertionAdapter;
import androidx.room.RoomDatabase;
import androidx.room.RoomSQLiteQuery;
import androidx.room.util.CursorUtil;
import androidx.room.util.DBUtil;
import androidx.sqlite.db.SupportSQLiteStatement;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.lang.SuppressWarnings;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@SuppressWarnings({"unchecked", "deprecation"})
public final class MonitorDao_Impl implements MonitorDao {
private final RoomDatabase __db;
private final EntityInsertionAdapter<CpuInfo> __insertionAdapterOfCpuInfo;
private final EntityInsertionAdapter<MemInfo> __insertionAdapterOfMemInfo;
public MonitorDao_Impl(RoomDatabase __db) {
this.__db = __db;
this.__insertionAdapterOfCpuInfo = new EntityInsertionAdapter<CpuInfo>(__db) {
@Override
public String createQuery() {
return "INSERT OR REPLACE INTO `t_cpu` (`id`,`save_time`,`cpu_percent`) VALUES (nullif(?, 0),?,?)";
}
@Override
public void bind(SupportSQLiteStatement stmt, CpuInfo value) {
stmt.bindLong(1, value.getUuid());
if (value.getSaveTime() == null) {
stmt.bindNull(2);
} else {
stmt.bindString(2, value.getSaveTime());
}
stmt.bindDouble(3, value.getCpuPercent());
}
};
this.__insertionAdapterOfMemInfo = new EntityInsertionAdapter<MemInfo>(__db) {
@Override
public String createQuery() {
return "INSERT OR REPLACE INTO `t_memory` (`id`,`save_time`,`total_pss`,`dalvik_pss`,`native_pss`,`other_pss`) VALUES (nullif(?, 0),?,?,?,?,?)";
}
@Override
public void bind(SupportSQLiteStatement stmt, MemInfo value) {
stmt.bindLong(1, value.getUuid());
if (value.getSaveTime() == null) {
stmt.bindNull(2);
} else {
stmt.bindString(2, value.getSaveTime());
}
stmt.bindDouble(3, value.getTotalPss());
stmt.bindDouble(4, value.getDalvikPss());
stmt.bindDouble(5, value.getNativePss());
stmt.bindDouble(6, value.getOtherPss());
}
};
}
@Override
public void saveCpu(final CpuInfo info) {
__db.assertNotSuspendingTransaction();
__db.beginTransaction();
try {
__insertionAdapterOfCpuInfo.insert(info);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public void saveAllCpuInfos(final CpuInfo... cpuInfo) {
__db.assertNotSuspendingTransaction();
__db.beginTransaction();
try {
__insertionAdapterOfCpuInfo.insert(cpuInfo);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public void saveMemory(final MemInfo info) {
__db.assertNotSuspendingTransaction();
__db.beginTransaction();
try {
__insertionAdapterOfMemInfo.insert(info);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public void saveAllMemInfos(final MemInfo... memInfo) {
__db.assertNotSuspendingTransaction();
__db.beginTransaction();
try {
__insertionAdapterOfMemInfo.insert(memInfo);
__db.setTransactionSuccessful();
} finally {
__db.endTransaction();
}
}
@Override
public List<CpuInfo> getAllCPUById(final long id) {
final String _sql = "SELECT * FROM t_cpu WHERE id =?";
final RoomSQLiteQuery _statement = RoomSQLiteQuery.acquire(_sql, 1);
int _argIndex = 1;
_statement.bindLong(_argIndex, id);
__db.assertNotSuspendingTransaction();
final Cursor _cursor = DBUtil.query(__db, _statement, false, null);
try {
final int _cursorIndexOfUuid = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
final int _cursorIndexOfSaveTime = CursorUtil.getColumnIndexOrThrow(_cursor, "save_time");
final int _cursorIndexOfCpuPercent = CursorUtil.getColumnIndexOrThrow(_cursor, "cpu_percent");
final List<CpuInfo> _result = new ArrayList<CpuInfo>(_cursor.getCount());
while(_cursor.moveToNext()) {
final CpuInfo _item;
final long _tmpUuid;
_tmpUuid = _cursor.getLong(_cursorIndexOfUuid);
final String _tmpSaveTime;
if (_cursor.isNull(_cursorIndexOfSaveTime)) {
_tmpSaveTime = null;
} else {
_tmpSaveTime = _cursor.getString(_cursorIndexOfSaveTime);
}
final double _tmpCpuPercent;
_tmpCpuPercent = _cursor.getDouble(_cursorIndexOfCpuPercent);
_item = new CpuInfo(_tmpUuid,_tmpSaveTime,_tmpCpuPercent);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
_statement.release();
}
}
@Override
public List<MemInfo> getAllMemById(final long id) {
final String _sql = "SELECT * FROM t_memory WHERE id =?";
final RoomSQLiteQuery _statement = RoomSQLiteQuery.acquire(_sql, 1);
int _argIndex = 1;
_statement.bindLong(_argIndex, id);
__db.assertNotSuspendingTransaction();
final Cursor _cursor = DBUtil.query(__db, _statement, false, null);
try {
final int _cursorIndexOfUuid = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
final int _cursorIndexOfSaveTime = CursorUtil.getColumnIndexOrThrow(_cursor, "save_time");
final int _cursorIndexOfTotalPss = CursorUtil.getColumnIndexOrThrow(_cursor, "total_pss");
final int _cursorIndexOfDalvikPss = CursorUtil.getColumnIndexOrThrow(_cursor, "dalvik_pss");
final int _cursorIndexOfNativePss = CursorUtil.getColumnIndexOrThrow(_cursor, "native_pss");
final int _cursorIndexOfOtherPss = CursorUtil.getColumnIndexOrThrow(_cursor, "other_pss");
final List<MemInfo> _result = new ArrayList<MemInfo>(_cursor.getCount());
while(_cursor.moveToNext()) {
final MemInfo _item;
final long _tmpUuid;
_tmpUuid = _cursor.getLong(_cursorIndexOfUuid);
final String _tmpSaveTime;
if (_cursor.isNull(_cursorIndexOfSaveTime)) {
_tmpSaveTime = null;
} else {
_tmpSaveTime = _cursor.getString(_cursorIndexOfSaveTime);
}
final double _tmpTotalPss;
_tmpTotalPss = _cursor.getDouble(_cursorIndexOfTotalPss);
final double _tmpDalvikPss;
_tmpDalvikPss = _cursor.getDouble(_cursorIndexOfDalvikPss);
final double _tmpNativePss;
_tmpNativePss = _cursor.getDouble(_cursorIndexOfNativePss);
final double _tmpOtherPss;
_tmpOtherPss = _cursor.getDouble(_cursorIndexOfOtherPss);
_item = new MemInfo(_tmpUuid,_tmpSaveTime,_tmpTotalPss,_tmpDalvikPss,_tmpNativePss,_tmpOtherPss);
_result.add(_item);
}
return _result;
} finally {
_cursor.close();
_statement.release();
}
}
public static List<Class<?>> getRequiredConverters() {
return Collections.emptyList();
}
}

View File

@@ -0,0 +1,185 @@
package com.zhjt.mogo_core_function_devatools.monitor.db;
import androidx.annotation.NonNull;
import androidx.room.DatabaseConfiguration;
import androidx.room.InvalidationTracker;
import androidx.room.RoomOpenHelper;
import androidx.room.RoomOpenHelper.Delegate;
import androidx.room.RoomOpenHelper.ValidationResult;
import androidx.room.migration.AutoMigrationSpec;
import androidx.room.migration.Migration;
import androidx.room.util.DBUtil;
import androidx.room.util.TableInfo;
import androidx.room.util.TableInfo.Column;
import androidx.room.util.TableInfo.ForeignKey;
import androidx.room.util.TableInfo.Index;
import androidx.sqlite.db.SupportSQLiteDatabase;
import androidx.sqlite.db.SupportSQLiteOpenHelper;
import androidx.sqlite.db.SupportSQLiteOpenHelper.Callback;
import androidx.sqlite.db.SupportSQLiteOpenHelper.Configuration;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.lang.SuppressWarnings;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@SuppressWarnings({"unchecked", "deprecation"})
public final class MonitorDb_Impl extends MonitorDb {
private volatile MonitorDao _monitorDao;
@Override
protected SupportSQLiteOpenHelper createOpenHelper(DatabaseConfiguration configuration) {
final SupportSQLiteOpenHelper.Callback _openCallback = new RoomOpenHelper(configuration, new RoomOpenHelper.Delegate(1) {
@Override
public void createAllTables(SupportSQLiteDatabase _db) {
_db.execSQL("CREATE TABLE IF NOT EXISTS `t_cpu` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `save_time` TEXT, `cpu_percent` REAL NOT NULL)");
_db.execSQL("CREATE TABLE IF NOT EXISTS `t_memory` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `save_time` TEXT NOT NULL, `total_pss` REAL NOT NULL, `dalvik_pss` REAL NOT NULL, `native_pss` REAL NOT NULL, `other_pss` REAL NOT NULL)");
_db.execSQL("CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)");
_db.execSQL("INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '5a9b09e5d73e022e24bc1b433755467e')");
}
@Override
public void dropAllTables(SupportSQLiteDatabase _db) {
_db.execSQL("DROP TABLE IF EXISTS `t_cpu`");
_db.execSQL("DROP TABLE IF EXISTS `t_memory`");
if (mCallbacks != null) {
for (int _i = 0, _size = mCallbacks.size(); _i < _size; _i++) {
mCallbacks.get(_i).onDestructiveMigration(_db);
}
}
}
@Override
protected void onCreate(SupportSQLiteDatabase _db) {
if (mCallbacks != null) {
for (int _i = 0, _size = mCallbacks.size(); _i < _size; _i++) {
mCallbacks.get(_i).onCreate(_db);
}
}
}
@Override
public void onOpen(SupportSQLiteDatabase _db) {
mDatabase = _db;
internalInitInvalidationTracker(_db);
if (mCallbacks != null) {
for (int _i = 0, _size = mCallbacks.size(); _i < _size; _i++) {
mCallbacks.get(_i).onOpen(_db);
}
}
}
@Override
public void onPreMigrate(SupportSQLiteDatabase _db) {
DBUtil.dropFtsSyncTriggers(_db);
}
@Override
public void onPostMigrate(SupportSQLiteDatabase _db) {
}
@Override
protected RoomOpenHelper.ValidationResult onValidateSchema(SupportSQLiteDatabase _db) {
final HashMap<String, TableInfo.Column> _columnsTCpu = new HashMap<String, TableInfo.Column>(3);
_columnsTCpu.put("id", new TableInfo.Column("id", "INTEGER", true, 1, null, TableInfo.CREATED_FROM_ENTITY));
_columnsTCpu.put("save_time", new TableInfo.Column("save_time", "TEXT", false, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsTCpu.put("cpu_percent", new TableInfo.Column("cpu_percent", "REAL", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
final HashSet<TableInfo.ForeignKey> _foreignKeysTCpu = new HashSet<TableInfo.ForeignKey>(0);
final HashSet<TableInfo.Index> _indicesTCpu = new HashSet<TableInfo.Index>(0);
final TableInfo _infoTCpu = new TableInfo("t_cpu", _columnsTCpu, _foreignKeysTCpu, _indicesTCpu);
final TableInfo _existingTCpu = TableInfo.read(_db, "t_cpu");
if (! _infoTCpu.equals(_existingTCpu)) {
return new RoomOpenHelper.ValidationResult(false, "t_cpu(com.zhjt.mogo_core_function_devatools.monitor.db.CpuInfo).\n"
+ " Expected:\n" + _infoTCpu + "\n"
+ " Found:\n" + _existingTCpu);
}
final HashMap<String, TableInfo.Column> _columnsTMemory = new HashMap<String, TableInfo.Column>(6);
_columnsTMemory.put("id", new TableInfo.Column("id", "INTEGER", true, 1, null, TableInfo.CREATED_FROM_ENTITY));
_columnsTMemory.put("save_time", new TableInfo.Column("save_time", "TEXT", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsTMemory.put("total_pss", new TableInfo.Column("total_pss", "REAL", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsTMemory.put("dalvik_pss", new TableInfo.Column("dalvik_pss", "REAL", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsTMemory.put("native_pss", new TableInfo.Column("native_pss", "REAL", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
_columnsTMemory.put("other_pss", new TableInfo.Column("other_pss", "REAL", true, 0, null, TableInfo.CREATED_FROM_ENTITY));
final HashSet<TableInfo.ForeignKey> _foreignKeysTMemory = new HashSet<TableInfo.ForeignKey>(0);
final HashSet<TableInfo.Index> _indicesTMemory = new HashSet<TableInfo.Index>(0);
final TableInfo _infoTMemory = new TableInfo("t_memory", _columnsTMemory, _foreignKeysTMemory, _indicesTMemory);
final TableInfo _existingTMemory = TableInfo.read(_db, "t_memory");
if (! _infoTMemory.equals(_existingTMemory)) {
return new RoomOpenHelper.ValidationResult(false, "t_memory(com.zhjt.mogo_core_function_devatools.monitor.db.MemInfo).\n"
+ " Expected:\n" + _infoTMemory + "\n"
+ " Found:\n" + _existingTMemory);
}
return new RoomOpenHelper.ValidationResult(true, null);
}
}, "5a9b09e5d73e022e24bc1b433755467e", "9230993362df0e38f6ba1f461ea1ba9a");
final SupportSQLiteOpenHelper.Configuration _sqliteConfig = SupportSQLiteOpenHelper.Configuration.builder(configuration.context)
.name(configuration.name)
.callback(_openCallback)
.build();
final SupportSQLiteOpenHelper _helper = configuration.sqliteOpenHelperFactory.create(_sqliteConfig);
return _helper;
}
@Override
protected InvalidationTracker createInvalidationTracker() {
final HashMap<String, String> _shadowTablesMap = new HashMap<String, String>(0);
HashMap<String, Set<String>> _viewTables = new HashMap<String, Set<String>>(0);
return new InvalidationTracker(this, _shadowTablesMap, _viewTables, "t_cpu","t_memory");
}
@Override
public void clearAllTables() {
super.assertNotMainThread();
final SupportSQLiteDatabase _db = super.getOpenHelper().getWritableDatabase();
try {
super.beginTransaction();
_db.execSQL("DELETE FROM `t_cpu`");
_db.execSQL("DELETE FROM `t_memory`");
super.setTransactionSuccessful();
} finally {
super.endTransaction();
_db.query("PRAGMA wal_checkpoint(FULL)").close();
if (!_db.inTransaction()) {
_db.execSQL("VACUUM");
}
}
}
@Override
protected Map<Class<?>, List<Class<?>>> getRequiredTypeConverters() {
final HashMap<Class<?>, List<Class<?>>> _typeConvertersMap = new HashMap<Class<?>, List<Class<?>>>();
_typeConvertersMap.put(MonitorDao.class, MonitorDao_Impl.getRequiredConverters());
return _typeConvertersMap;
}
@Override
public Set<Class<? extends AutoMigrationSpec>> getRequiredAutoMigrationSpecs() {
final HashSet<Class<? extends AutoMigrationSpec>> _autoMigrationSpecsSet = new HashSet<Class<? extends AutoMigrationSpec>>();
return _autoMigrationSpecsSet;
}
@Override
public List<Migration> getAutoMigrations(
@NonNull Map<Class<? extends AutoMigrationSpec>, AutoMigrationSpec> autoMigrationSpecsMap) {
return Arrays.asList();
}
@Override
public MonitorDao monitorDao() {
if (_monitorDao != null) {
return _monitorDao;
} else {
synchronized(this) {
if(_monitorDao == null) {
_monitorDao = new MonitorDao_Impl(this);
}
return _monitorDao;
}
}
}
}

View File

@@ -0,0 +1,109 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: badcase.proto
package com.zhjt.mogo_core_function_devatools.badcase.generated;
public interface BadCausesOrBuilder extends
// @@protoc_insertion_point(interface_extends:BadCauses)
com.google.protobuf.MessageOrBuilder {
/**
* <code>int64 lastModified = 1;</code>
* @return The lastModified.
*/
long getLastModified();
/**
* <pre>
*被动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivenData = 2;</code>
*/
java.util.List<com.zhjt.mogo_core_function_devatools.badcase.generated.Cause>
getDrivenDataList();
/**
* <pre>
*被动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivenData = 2;</code>
*/
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause getDrivenData(int index);
/**
* <pre>
*被动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivenData = 2;</code>
*/
int getDrivenDataCount();
/**
* <pre>
*被动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivenData = 2;</code>
*/
java.util.List<? extends com.zhjt.mogo_core_function_devatools.badcase.generated.CauseOrBuilder>
getDrivenDataOrBuilderList();
/**
* <pre>
*被动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivenData = 2;</code>
*/
com.zhjt.mogo_core_function_devatools.badcase.generated.CauseOrBuilder getDrivenDataOrBuilder(
int index);
/**
* <code>int32 taskId = 3;</code>
* @return The taskId.
*/
int getTaskId();
/**
* <pre>
*主动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivingData = 4;</code>
*/
java.util.List<com.zhjt.mogo_core_function_devatools.badcase.generated.Cause>
getDrivingDataList();
/**
* <pre>
*主动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivingData = 4;</code>
*/
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause getDrivingData(int index);
/**
* <pre>
*主动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivingData = 4;</code>
*/
int getDrivingDataCount();
/**
* <pre>
*主动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivingData = 4;</code>
*/
java.util.List<? extends com.zhjt.mogo_core_function_devatools.badcase.generated.CauseOrBuilder>
getDrivingDataOrBuilderList();
/**
* <pre>
*主动触发BadCase数据
* </pre>
*
* <code>repeated .Cause drivingData = 4;</code>
*/
com.zhjt.mogo_core_function_devatools.badcase.generated.CauseOrBuilder getDrivingDataOrBuilder(
int index);
}

View File

@@ -0,0 +1,63 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: badcase.proto
package com.zhjt.mogo_core_function_devatools.badcase.generated;
public final class BadCausesProto {
private BadCausesProto() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
registerAllExtensions(
(com.google.protobuf.ExtensionRegistryLite) registry);
}
static final com.google.protobuf.Descriptors.Descriptor
internal_static_BadCauses_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_BadCauses_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_Cause_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_Cause_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
return descriptor;
}
private static com.google.protobuf.Descriptors.FileDescriptor
descriptor;
static {
java.lang.String[] descriptorData = {
"\n\rbadcase.proto\"j\n\tBadCauses\022\024\n\014lastModi" +
"fied\030\001 \001(\003\022\032\n\ndrivenData\030\002 \003(\0132\006.Cause\022\016" +
"\n\006taskId\030\003 \001(\005\022\033\n\013drivingData\030\004 \003(\0132\006.Ca" +
"use\"4\n\005Cause\022\n\n\002id\030\001 \001(\t\022\016\n\006reason\030\002 \001(\t" +
"\022\017\n\007channel\030\003 \001(\tBK\n7com.zhjt.mogo_core_" +
"function_devatools.badcase.generatedB\016Ba" +
"dCausesProtoP\001b\006proto3"
};
descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
});
internal_static_BadCauses_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_BadCauses_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_BadCauses_descriptor,
new java.lang.String[] { "LastModified", "DrivenData", "TaskId", "DrivingData", });
internal_static_Cause_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_Cause_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_Cause_descriptor,
new java.lang.String[] { "Id", "Reason", "Channel", });
}
// @@protoc_insertion_point(outer_class_scope)
}

View File

@@ -0,0 +1,833 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: badcase.proto
package com.zhjt.mogo_core_function_devatools.badcase.generated;
/**
* Protobuf type {@code Cause}
*/
public final class Cause extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:Cause)
CauseOrBuilder {
private static final long serialVersionUID = 0L;
// Use Cause.newBuilder() to construct.
private Cause(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private Cause() {
id_ = "";
reason_ = "";
channel_ = "";
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new Cause();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private Cause(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
this();
if (extensionRegistry == null) {
throw new java.lang.NullPointerException();
}
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
case 10: {
java.lang.String s = input.readStringRequireUtf8();
id_ = s;
break;
}
case 18: {
java.lang.String s = input.readStringRequireUtf8();
reason_ = s;
break;
}
case 26: {
java.lang.String s = input.readStringRequireUtf8();
channel_ = s;
break;
}
default: {
if (!parseUnknownField(
input, unknownFields, extensionRegistry, tag)) {
done = true;
}
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
e).setUnfinishedMessage(this);
} finally {
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.zhjt.mogo_core_function_devatools.badcase.generated.BadCausesProto.internal_static_Cause_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.zhjt.mogo_core_function_devatools.badcase.generated.BadCausesProto.internal_static_Cause_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause.class, com.zhjt.mogo_core_function_devatools.badcase.generated.Cause.Builder.class);
}
public static final int ID_FIELD_NUMBER = 1;
private volatile java.lang.Object id_;
/**
* <code>string id = 1;</code>
* @return The id.
*/
@java.lang.Override
public java.lang.String getId() {
java.lang.Object ref = id_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
id_ = s;
return s;
}
}
/**
* <code>string id = 1;</code>
* @return The bytes for id.
*/
@java.lang.Override
public com.google.protobuf.ByteString
getIdBytes() {
java.lang.Object ref = id_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
id_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
public static final int REASON_FIELD_NUMBER = 2;
private volatile java.lang.Object reason_;
/**
* <code>string reason = 2;</code>
* @return The reason.
*/
@java.lang.Override
public java.lang.String getReason() {
java.lang.Object ref = reason_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
reason_ = s;
return s;
}
}
/**
* <code>string reason = 2;</code>
* @return The bytes for reason.
*/
@java.lang.Override
public com.google.protobuf.ByteString
getReasonBytes() {
java.lang.Object ref = reason_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
reason_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
public static final int CHANNEL_FIELD_NUMBER = 3;
private volatile java.lang.Object channel_;
/**
* <code>string channel = 3;</code>
* @return The channel.
*/
@java.lang.Override
public java.lang.String getChannel() {
java.lang.Object ref = channel_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
channel_ = s;
return s;
}
}
/**
* <code>string channel = 3;</code>
* @return The bytes for channel.
*/
@java.lang.Override
public com.google.protobuf.ByteString
getChannelBytes() {
java.lang.Object ref = channel_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
channel_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
private byte memoizedIsInitialized = -1;
@java.lang.Override
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
memoizedIsInitialized = 1;
return true;
}
@java.lang.Override
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
if (!getIdBytes().isEmpty()) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
}
if (!getReasonBytes().isEmpty()) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 2, reason_);
}
if (!getChannelBytes().isEmpty()) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 3, channel_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (!getIdBytes().isEmpty()) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
}
if (!getReasonBytes().isEmpty()) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, reason_);
}
if (!getChannelBytes().isEmpty()) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, channel_);
}
size += unknownFields.getSerializedSize();
memoizedSize = size;
return size;
}
@java.lang.Override
public boolean equals(final java.lang.Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof com.zhjt.mogo_core_function_devatools.badcase.generated.Cause)) {
return super.equals(obj);
}
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause other = (com.zhjt.mogo_core_function_devatools.badcase.generated.Cause) obj;
if (!getId()
.equals(other.getId())) return false;
if (!getReason()
.equals(other.getReason())) return false;
if (!getChannel()
.equals(other.getChannel())) return false;
if (!unknownFields.equals(other.unknownFields)) return false;
return true;
}
@java.lang.Override
public int hashCode() {
if (memoizedHashCode != 0) {
return memoizedHashCode;
}
int hash = 41;
hash = (19 * hash) + getDescriptor().hashCode();
hash = (37 * hash) + ID_FIELD_NUMBER;
hash = (53 * hash) + getId().hashCode();
hash = (37 * hash) + REASON_FIELD_NUMBER;
hash = (53 * hash) + getReason().hashCode();
hash = (37 * hash) + CHANNEL_FIELD_NUMBER;
hash = (53 * hash) + getChannel().hashCode();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
@java.lang.Override
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder() {
return DEFAULT_INSTANCE.toBuilder();
}
public static Builder newBuilder(com.zhjt.mogo_core_function_devatools.badcase.generated.Cause prototype) {
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
}
@java.lang.Override
public Builder toBuilder() {
return this == DEFAULT_INSTANCE
? new Builder() : new Builder().mergeFrom(this);
}
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
* Protobuf type {@code Cause}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:Cause)
com.zhjt.mogo_core_function_devatools.badcase.generated.CauseOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return com.zhjt.mogo_core_function_devatools.badcase.generated.BadCausesProto.internal_static_Cause_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return com.zhjt.mogo_core_function_devatools.badcase.generated.BadCausesProto.internal_static_Cause_fieldAccessorTable
.ensureFieldAccessorsInitialized(
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause.class, com.zhjt.mogo_core_function_devatools.badcase.generated.Cause.Builder.class);
}
// Construct using com.zhjt.mogo_core_function_devatools.badcase.generated.Cause.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
}
}
@java.lang.Override
public Builder clear() {
super.clear();
id_ = "";
reason_ = "";
channel_ = "";
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return com.zhjt.mogo_core_function_devatools.badcase.generated.BadCausesProto.internal_static_Cause_descriptor;
}
@java.lang.Override
public com.zhjt.mogo_core_function_devatools.badcase.generated.Cause getDefaultInstanceForType() {
return com.zhjt.mogo_core_function_devatools.badcase.generated.Cause.getDefaultInstance();
}
@java.lang.Override
public com.zhjt.mogo_core_function_devatools.badcase.generated.Cause build() {
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public com.zhjt.mogo_core_function_devatools.badcase.generated.Cause buildPartial() {
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause result = new com.zhjt.mogo_core_function_devatools.badcase.generated.Cause(this);
result.id_ = id_;
result.reason_ = reason_;
result.channel_ = channel_;
onBuilt();
return result;
}
@java.lang.Override
public Builder clone() {
return super.clone();
}
@java.lang.Override
public Builder setField(
com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value) {
return super.setField(field, value);
}
@java.lang.Override
public Builder clearField(
com.google.protobuf.Descriptors.FieldDescriptor field) {
return super.clearField(field);
}
@java.lang.Override
public Builder clearOneof(
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
return super.clearOneof(oneof);
}
@java.lang.Override
public Builder setRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
int index, java.lang.Object value) {
return super.setRepeatedField(field, index, value);
}
@java.lang.Override
public Builder addRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value) {
return super.addRepeatedField(field, value);
}
@java.lang.Override
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof com.zhjt.mogo_core_function_devatools.badcase.generated.Cause) {
return mergeFrom((com.zhjt.mogo_core_function_devatools.badcase.generated.Cause)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(com.zhjt.mogo_core_function_devatools.badcase.generated.Cause other) {
if (other == com.zhjt.mogo_core_function_devatools.badcase.generated.Cause.getDefaultInstance()) return this;
if (!other.getId().isEmpty()) {
id_ = other.id_;
onChanged();
}
if (!other.getReason().isEmpty()) {
reason_ = other.reason_;
onChanged();
}
if (!other.getChannel().isEmpty()) {
channel_ = other.channel_;
onChanged();
}
this.mergeUnknownFields(other.unknownFields);
onChanged();
return this;
}
@java.lang.Override
public final boolean isInitialized() {
return true;
}
@java.lang.Override
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
com.zhjt.mogo_core_function_devatools.badcase.generated.Cause parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (com.zhjt.mogo_core_function_devatools.badcase.generated.Cause) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private java.lang.Object id_ = "";
/**
* <code>string id = 1;</code>
* @return The id.
*/
public java.lang.String getId() {
java.lang.Object ref = id_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
id_ = s;
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <code>string id = 1;</code>
* @return The bytes for id.
*/
public com.google.protobuf.ByteString
getIdBytes() {
java.lang.Object ref = id_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
id_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <code>string id = 1;</code>
* @param value The id to set.
* @return This builder for chaining.
*/
public Builder setId(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
id_ = value;
onChanged();
return this;
}
/**
* <code>string id = 1;</code>
* @return This builder for chaining.
*/
public Builder clearId() {
id_ = getDefaultInstance().getId();
onChanged();
return this;
}
/**
* <code>string id = 1;</code>
* @param value The bytes for id to set.
* @return This builder for chaining.
*/
public Builder setIdBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
checkByteStringIsUtf8(value);
id_ = value;
onChanged();
return this;
}
private java.lang.Object reason_ = "";
/**
* <code>string reason = 2;</code>
* @return The reason.
*/
public java.lang.String getReason() {
java.lang.Object ref = reason_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
reason_ = s;
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <code>string reason = 2;</code>
* @return The bytes for reason.
*/
public com.google.protobuf.ByteString
getReasonBytes() {
java.lang.Object ref = reason_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
reason_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <code>string reason = 2;</code>
* @param value The reason to set.
* @return This builder for chaining.
*/
public Builder setReason(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
reason_ = value;
onChanged();
return this;
}
/**
* <code>string reason = 2;</code>
* @return This builder for chaining.
*/
public Builder clearReason() {
reason_ = getDefaultInstance().getReason();
onChanged();
return this;
}
/**
* <code>string reason = 2;</code>
* @param value The bytes for reason to set.
* @return This builder for chaining.
*/
public Builder setReasonBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
checkByteStringIsUtf8(value);
reason_ = value;
onChanged();
return this;
}
private java.lang.Object channel_ = "";
/**
* <code>string channel = 3;</code>
* @return The channel.
*/
public java.lang.String getChannel() {
java.lang.Object ref = channel_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
channel_ = s;
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <code>string channel = 3;</code>
* @return The bytes for channel.
*/
public com.google.protobuf.ByteString
getChannelBytes() {
java.lang.Object ref = channel_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
channel_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <code>string channel = 3;</code>
* @param value The channel to set.
* @return This builder for chaining.
*/
public Builder setChannel(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
channel_ = value;
onChanged();
return this;
}
/**
* <code>string channel = 3;</code>
* @return This builder for chaining.
*/
public Builder clearChannel() {
channel_ = getDefaultInstance().getChannel();
onChanged();
return this;
}
/**
* <code>string channel = 3;</code>
* @param value The bytes for channel to set.
* @return This builder for chaining.
*/
public Builder setChannelBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
checkByteStringIsUtf8(value);
channel_ = value;
onChanged();
return this;
}
@java.lang.Override
public final Builder setUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
}
@java.lang.Override
public final Builder mergeUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.mergeUnknownFields(unknownFields);
}
// @@protoc_insertion_point(builder_scope:Cause)
}
// @@protoc_insertion_point(class_scope:Cause)
private static final com.zhjt.mogo_core_function_devatools.badcase.generated.Cause DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new com.zhjt.mogo_core_function_devatools.badcase.generated.Cause();
}
public static com.zhjt.mogo_core_function_devatools.badcase.generated.Cause getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<Cause>
PARSER = new com.google.protobuf.AbstractParser<Cause>() {
@java.lang.Override
public Cause parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new Cause(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<Cause> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<Cause> getParserForType() {
return PARSER;
}
@java.lang.Override
public com.zhjt.mogo_core_function_devatools.badcase.generated.Cause getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@@ -0,0 +1,45 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: badcase.proto
package com.zhjt.mogo_core_function_devatools.badcase.generated;
public interface CauseOrBuilder extends
// @@protoc_insertion_point(interface_extends:Cause)
com.google.protobuf.MessageOrBuilder {
/**
* <code>string id = 1;</code>
* @return The id.
*/
java.lang.String getId();
/**
* <code>string id = 1;</code>
* @return The bytes for id.
*/
com.google.protobuf.ByteString
getIdBytes();
/**
* <code>string reason = 2;</code>
* @return The reason.
*/
java.lang.String getReason();
/**
* <code>string reason = 2;</code>
* @return The bytes for reason.
*/
com.google.protobuf.ByteString
getReasonBytes();
/**
* <code>string channel = 3;</code>
* @return The channel.
*/
java.lang.String getChannel();
/**
* <code>string channel = 3;</code>
* @return The bytes for channel.
*/
com.google.protobuf.ByteString
getChannelBytes();
}

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zhjt.mogo_core_function_devatools"
android:versionCode="1"
android:versionName="0.0.58.10" >
<uses-sdk
android:minSdkVersion="27"
android:targetSdkVersion="27" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
</manifest>

View File

@@ -0,0 +1 @@
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.0.58.10","enabled":true,"outputFile":"mogo-core-function-devatools-debug.aar","fullName":"debug","baseName":"debug"},"path":"AndroidManifest.xml","properties":{"packageId":"com.zhjt.mogo_core_function_devatools","split":""}}]

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/emarrow/Documents/androidProject/MoGoEagleEye/libraries/mogo-adas-data/src/main/jniLibs"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/emarrow/Documents/androidProject/MoGoEagleEye/libraries/mogo-adas-data/src/debug/jniLibs"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/emarrow/Documents/androidProject/MoGoEagleEye/libraries/mogo-adas-data/src/main/shaders"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/emarrow/Documents/androidProject/MoGoEagleEye/libraries/mogo-adas-data/src/debug/shaders"/></dataSet></merger>

View File

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/emarrow/Documents/androidProject/MoGoEagleEye/libraries/mogo-adas-data/src/main/assets"/><source path="/Users/emarrow/Documents/androidProject/MoGoEagleEye/libraries/mogo-adas-data/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/emarrow/Documents/androidProject/MoGoEagleEye/libraries/mogo-adas-data/src/debug/assets"/></dataSet></merger>

View File

@@ -0,0 +1,63 @@
#Wed Jan 11 22:51:40 CST 2023
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_normal.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_bad_case_normal.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/template_list_bg.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/template_list_bg.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_status_bar.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/layout_status_bar.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bad_case_search_bg.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/bad_case_search_bg.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_can_disable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_can_disable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_rtk_good.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_rtk_good.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_audio_bg.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_audio_bg.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_select.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_bad_case_select.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_trace_unkown.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_trace_unkown.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_track_enable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_track_enable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_case_topic_list.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/dialog_case_topic_list.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_rtk_error.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_rtk_error.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_expand.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_expand.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_num_bg.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_num_bg.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_route_enable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_route_enable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_slam_good.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_slam_good.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/ai_collect_title_bg.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/ai_collect_title_bg.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ap_badcase_default.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_ap_badcase_default.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_ipc_enable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_ipc_enable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/rv_scroll_bar_track.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/rv_scroll_bar_track.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/badcase_radio_button_style.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/badcase_radio_button_style.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_rtk_inaccurate.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_rtk_inaccurate.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_audio_select.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_bad_case_audio_select.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/badcase_record_edit_bg.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/badcase_record_edit_bg.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_case_list.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/item_case_list.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/case_list_select.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/case_list_select.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_delect.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_bad_case_delect.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_gps_disable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_gps_disable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/case_list_selector.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/case_list_selector.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_gps_enable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_gps_enable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_badcase_config.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/layout_badcase_config.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_can_enable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_can_enable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_select.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_ai_select.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_search.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_bad_case_search.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/case_list_normal.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/case_list_normal.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ap_badcase_check.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_ap_badcase_check.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_ipc_disable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_ipc_disable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_un_fold.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_un_fold.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_audio.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_audio.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_topic_list.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/item_topic_list.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_rtk_not_credible.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_rtk_not_credible.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_net_enable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_net_enable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_net_disable.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_net_disable.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/dialog_case_list.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/dialog_case_list.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/flex_divider.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/flex_divider.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bad_case_selector.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/bad_case_selector.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_ai_data_collect.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/view_ai_data_collect.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/ai_collect_selector.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/ai_collect_selector.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/shape_size_check_false.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/shape_size_check_false.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_passive_bad_case.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/view_passive_bad_case.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/item_record_template.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/item_record_template.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/bad_case_dialog_bg.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/bad_case_dialog_bg.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_status_bar_item.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/layout_status_bar_item.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/shape_size_check_true.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/shape_size_check_true.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_dev_status_rtk_unknow.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_dev_status_rtk_unknow.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_cancel_bg.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_cancel_bg.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/rv_scroll_bar_thumb.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/rv_scroll_bar_thumb.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_ai_normal.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_ai_normal.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/save_button_bg.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/save_button_bg.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/report_button_bg.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable/report_button_bg.xml
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/drawable-xhdpi/icon_bad_case_audio_normal.png=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/drawable-xhdpi-v4/icon_bad_case_audio_normal.png
/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_initiative_bad_case.xml=/Users/emarrow/Documents/androidProject/MoGoEagleEye/core/function-impl/mogo-core-function-devatools/build/intermediates/packaged_res/debug/layout/view_initiative_bad_case.xml

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="feed_back_badcase_count_down_job" type="id"/>
<item name="feed_back_badcase_job" type="id"/>
<item name="feed_back_badcase_tag" type="id"/>
<item name="feed_back_badcase_taskid_tag" type="id"/>
<style name="bad_case_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/bad_case_dialog_bg</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="rv_vertical_style">
<item name="android:scrollbarSize">5dp</item>
<item name="android:scrollbars">horizontal</item>
<item name="android:scrollbarThumbVertical">@drawable/rv_scroll_bar_thumb</item>
<item name="android:scrollbarTrackVertical">@drawable/rv_scroll_bar_track</item>
</style>
</resources>

Some files were not shown because too many files have changed in this diff Show More