syntax = "proto3";
package SDF;

message ADF_EventTimeInfo{
  uint64 startTime = 1; // 事件开始时间      #增改
  uint64 endTime = 2; //事件结束事件     #增改
  float startTimeConfidence = 3;  //开始时间置信度     #增删改
  float endTimeConfidence = 4;  //结束时间置信度     #增删改
  uint64 updateTime = 5;  //最近更新时间     #仅由系统内部写入
}

message ADF_EventInfoSource{
  /*
  从右到左,每一个信息源类型占用2个Bit:
  00: 状态未知, 01: 无该信息源, 10: 该信息源存在但无上报, 11: 该信息源存在并使用中.
  0-1bit 移动终端上报
  2-3bit 路侧端上报
  4-5bit 车端上报
  6-7bit 云端服务上报
  8-9bit 云端用户上报
  10-11bit 特殊用户上报
   */
  uint64 sourceType = 1;//事件来源
  string sourceTerminalID = 2; // 上报端 - 移动终端ID
  string sourceVehicleID = 3; // 上报端 - 车端ID
  string sourceRoadSideID = 4; // 上报端 - 路侧端ID
  string sourceProviderID = 5; // 上报端 - 云端服务ID
  string sourceUserID = 6; // 上报端 - 用户ID
}

// 描述交通信号灯的实时灯色，灯色剩余时长的数据结构     #增删改
message ADF_TrafficLightPhaseStage{
  enum TrafficLightColorType{
    UNKNOWN = 0; // 未知状态（离线）
    BLACK = 1; // 黑灯 （不可用/故障）
    RED = 2; // 红灯 （目前不可通行）
    RED_FLASH = 3; // 闪烁红灯
    YELLOW = 4; // 黄灯
    YELLOW_FLASH = 5; //闪烁黄灯
    GREEN = 6; // 绿灯
    GREEN_FLASH = 7; // 闪烁绿灯
  }
  TrafficLightColorType lightColor = 1; //当前灯色
  uint64 switchingTime = 2; // 灯色切换时间戳，单位秒。若为0，默认开始时间+持续600s。
  TrafficLightColorType nextColor = 3; // 下一个灯色
}

//信号灯实时相位信息     #增删改
message EDF_TrafficLightRealTimeInfo{
  string eventID = 1; // 事件ID    #仅由系统分配
  string trafficLightID = 2; // 关联信号灯ID     #整体增写入时必选
  string lightBulbID = 3; // 关联信号灯灯泡ID     #整体增写入时可选
  ADF_EventTimeInfo timeInfo = 4; //时间信息,仅使用其中的"最近更新时间字段"     #仅由系统更新
  ADF_TrafficLightPhaseStage phaseStage = 5; //实时灯色, 灯色剩余时长及变更计划
  ADF_EventInfoSource eventInfoSource = 6; //事件信息来源     #仅由系统写入
}

//动态图层信息
message TrafficLightLayer
{
  repeated EDF_TrafficLightRealTimeInfo trafficLightRealTimeInfoLayer = 1;
}

message RequestSequence
{
  string requestID = 1; // 服务器分配的ID 和eventID相同 // 仅add 有
  repeated EDF_TrafficLightRealTimeInfo listOfRequest = 2;
}

message TrafficLightLayerResponse
{
  int32 errorCode = 1;
  RequestSequence requestSequence = 2;
}