content: package com.genersoft.iot.vmp.jt1078.bean;
  
  import com.genersoft.iot.vmp.jt1078.bean.common.ConfigAttribute;
  import com.genersoft.iot.vmp.jt1078.bean.config.*;
  import io.swagger.v3.oas.annotations.media.Schema;
  import lombok.Data;
  
  /**
   * JT 终端参数设置
   */
  @Schema(description = "JT终端参数设置")
  @Data
  public class JTDeviceConfig {
  
      @ConfigAttribute(id = 0x1, type="Long", description = "终端心跳发送间隔,单位为秒(s)")
      private Long keepaliveInterval;
  
      @ConfigAttribute(id = 0x2, type="Long", description = "TCP消息应答超时时间,单位为秒(s)")
      private Long tcpResponseTimeout;
  
      @ConfigAttribute(id = 0x3, type="Long", description = "TCP消息重传次数")
      private Long tcpRetransmissionCount;
  
      @ConfigAttribute(id = 0x4, type="Long", description = "UDP消息应答超时时间,单位为秒(s)")
      private Long udpResponseTimeout;
  
      @ConfigAttribute(id = 0x5, type="Long", description = "UDP消息重传次数")
      private Long udpRetransmissionCount;
  
      @ConfigAttribute(id = 0x6, type="Long", description = "SMS 消息应答超时时间,单位为秒(s)")
      private Long smsResponseTimeout;
  
      @ConfigAttribute(id = 0x7, type="Long", description = "SMS 消息重传次数")
      private Long smsRetransmissionCount;
  
      @ConfigAttribute(id = 0x10, type="String", description = "主服务器APN无线通信拨号访问点,若网络制式为 CDMA,则该处 为 PPP拨号号码")
      private String apnMaster;
  
      @ConfigAttribute(id = 0x11, type="String", description = "主服务器无线通信拨号用户名")
      private String dialingUsernameMaster;
  
      @ConfigAttribute(id = 0x12, type="String", description = "主服务器无线通信拨号密码")
      private String dialingPasswordMaster;
  
      @ConfigAttribute(id = 0x13, type="String", description = "主服务器地址IP或域名,以冒号分割主机和端口 多个服务器使用分号分割")
      private String addressMaster;
  
      @ConfigAttribute(id = 0x14, type="String", description = "备份服务器APN")
      private String apnBackup;
  
      @ConfigAttribute(id = 0x15, type="String", description = "备份服务器无线通信拨号用户名")
      private String dialingUsernameBackup;
  
      @ConfigAttribute(id = 0x16, type="String", description = "备份服务器无线通信拨号密码")
      private String dialingPasswordBackup;
  
      @ConfigAttribute(id = 0x17, type="String", description = "备用服务器备份地址IP或域名,以冒号分割主机和端口 多个服务器使用分号分割")
      private String addressBackup;
  
      @ConfigAttribute(id = 0x1a, type="String", description = "道路运输证IC卡认证主服务器IP地址或域名")
      private String addressIcMaster;
  
      @ConfigAttribute(id = 0x1b, type="Long", description = "道路运输证IC卡认证主服务器TCP端口")
      private Long tcpPortIcMaster;
  
      @ConfigAttribute(id = 0x1c, type="Long", description = "道路运输证IC卡认证主服务器UDP端口")
      private Long udpPortIcMaster;
  
      @ConfigAttribute(id = 0x1d, type="String", description = "道路运输证IC卡认证备份服务器IP地址或域名,端口同主服务器")
      private String addressIcBackup;
  
      @ConfigAttribute(id = 0x20, type="Long", description = "位置汇报策略, 0定时汇报 1定距汇报 2定时和定距汇报")
      private Long locationReportingStrategy;
  
      @ConfigAttribute(id = 0x21, type="Long", description = "位置汇报方案,0根据ACC状态 1根据登录状态和ACC状态,先判断登录状态,若登录再根据ACC状态")
      private Long locationReportingPlan;
  
      @ConfigAttribute(id = 0x22, type="Long", description = "驾驶员未登录汇报时间间隔,单位为秒,值大于零")
      private Long reportingIntervalOffline;
  
      @ConfigAttribute(id = 0x23, type="String", description = "从服务器 APN# 该值为空时 !终端应使用主服务器相同配置")
      private String apnSlave;
  
      @ConfigAttribute(id = 0x24, type="String", description = "从服务器无线通信拨号用户名 #  该值为空时 !终端应使用主服务器 相同配置")
      private String dialingUsernameSlave;
  
      @ConfigAttribute(id = 0x25, type="String", description = "从服务器无线通信拨号密码 #  该值为空时 !终端应使用主服务器相 同配置")
      private String dialingPasswordSlave;
  
      @ConfigAttribute(id = 0x26, type="String", description = "从服务器备份地址 IP或域名 !主机和端口用冒号分割 !多个服务器 使用分号分割")
      private String addressSlave;
  
      @ConfigAttribute(id = 0x27, type="Long", description = "休眠时汇报时间间隔 单位为秒 值大于0")
      private Long reportingIntervalDormancy;
  
      @ConfigAttribute(id = 0x28, type="Long", description = "紧急报警时汇报时间间隔 单位为秒 值大于0")
      private Long reportingIntervalEmergencyAlarm;
  
      @ConfigAttribute(id = 0x29, type="Long", description = "缺省时间汇报间隔 单位为秒 值大于0")
      private Long reportingIntervalDefault;
  
      @ConfigAttribute(id = 0x2c, type="Long", description = "缺省距离汇报间隔 单位为米 值大于0")
      private Long reportingDistanceDefault;
  
      @ConfigAttribute(id = 0x2d, type="Long", description = "驾驶员未登录汇报距离间隔 单位为米 值大于0")
      private Long reportingDistanceOffline;
  
      @ConfigAttribute(id = 0x2e, type="Long", description = "休眠时汇报距离间隔 单位为米 值大于0")
      private Long reportingDistanceDormancy;
  
      @ConfigAttribute(id = 0x2f, type="Long", description = "紧急报警时汇报距离间隔 单位为米 值大于0")
      private Long reportingDistanceEmergencyAlarm;
  
      @ConfigAttribute(id = 0x30, type="Long", description = "拐点补传角度 ,值小于180")
      private Long inflectionPointAngle;
  
      @ConfigAttribute(id = 0x31, type="Integer", description = "电子围栏半径(非法位移國值) ,单位为米(m)")
      private Integer fenceRadius;
  
      @ConfigAttribute(id = 0x32, type="IllegalDrivingPeriods", description = "违规行驶时段范围 ,精确到分")
      private JTIllegalDrivingPeriods illegalDrivingPeriods;
  
      @ConfigAttribute(id = 0x40, type="String", description = "监控平台电话号码")
      private String platformPhoneNumber;
  
      @ConfigAttribute(id = 0x41, type="String", description = "复位电话号码 ,可采用此电话号码拨打终端电话让终端复位")
      private String phoneNumberForReset;
  
      @ConfigAttribute(id = 0x42, type="String", description = "恢复出厂设置电话号码 ,可采用此电话号码拨打终端电话让终端恢 复出厂设置")
      private String phoneNumberForFactoryReset;
  
      @ConfigAttribute(id = 0x42, type="String", description = "监控平台 SMS 电话号码")
      private String phoneNumberForSms;
  
      @ConfigAttribute(id = 0x44, type="String", description = "接收终端 SMS 文本报警号码")
      private String phoneNumberForReceiveTextAlarm;
  
      @ConfigAttribute(id = 0x45, type="Long", description = "终端电话接听策略 。0:自动接听；1:ACC ON时自动接听 ,OFF时手动接听")
      private Long phoneAnsweringPolicy;
  
      @ConfigAttribute(id = 0x46, type="Long", description = "每次最长通话时间 ,单位为秒(s) ,0 为不允许通话 ,0xFFFFFFFF为不限制")
      private Long longestCallTimeForPerSession;
  
      @ConfigAttribute(id = 0x47, type="Long", description = "当月最长通话时间 ,单位为秒(s) ,0 为不允许通话 ,0xFFFFFFFF为 不限制")
      private Long longestCallTimeInMonth;
  
      @ConfigAttribute(id = 0x48, type="String", description = "监听电话号码")
      private String phoneNumbersForListen;
  
      @ConfigAttribute(id = 0x49, type="String", description = "监管平台特权短信号码")
      private String privilegedSMSNumber;
  
      @ConfigAttribute(id = 0x50, type="AlarmSign", description = "报警屏蔽字 ,与位置信息汇报消息中的报警标志相对应 ,相应位为 1 则相应报警被屏蔽")
      private JTAlarmSign alarmMaskingWord;
  
      @ConfigAttribute(id = 0x51, type="AlarmSign", description = "报警发送文本 SMS 开关 , 与位置信息汇报消息中的报警标志相对 应 ,相应位为1 则相应报警时发送文本 SMS")
      private JTAlarmSign alarmSendsTextSmsSwitch;
  
      @ConfigAttribute(id = 0x52, type="AlarmSign", description = "报警拍摄开关 ,与位置信息汇报消息中的报警标志相对应 ,相应位为 1 则相应报警时摄像头拍摄")
      private JTAlarmSign alarmShootingSwitch;
  
      @ConfigAttribute(id = 0x53, type="AlarmSign", description = "报警拍摄存储标志 ,与位置信息汇报消息中的报警标志相对应 ,相应 位为1 则对相应报警时拍的照片进行存储 ,否则实时上传")
      private JTAlarmSign alarmShootingStorageFlags;
  
      @ConfigAttribute(id = 0x54, type="AlarmSign", description = "关键标志 ,与位置信息汇报消息中的报警标志相对应 ,相应位为 1 则 对相应报警为关键报警")
      private JTAlarmSign KeySign;
  
      @ConfigAttribute(id = 0x55, type="Long", description = "最高速度 ,单位为千米每小时(km/h)")
      private Long maxSpeed;
  
      @ConfigAttribute(id = 0x56, type="Long", description = "超速持续时间 ,单位为秒(s)")
      private Long overSpeedDuration;
  
      @ConfigAttribute(id = 0x57, type="Long", description = "连续驾驶时间门限 单位为秒(s)")
      private Long continuousDrivingTimeThreshold;
  
      @ConfigAttribute(id = 0x58, type="Long", description = "当天累计驾驶时间门限 单位为秒(s)")
      private Long cumulativeDrivingTimeThresholdForTheDay;
  
      @ConfigAttribute(id = 0x59, type="Long", description = "最小休息时间 单位为秒(s)")
      private Long minimumBreakTime;
  
      @ConfigAttribute(id = 0x5a, type="Long", description = "最长停车时间 单位为秒(s)")
      private Long maximumParkingTime;
  
      @ConfigAttribute(id = 0x5b, type="Integer", description = "超速预警差值 单位为1/10 千米每小时(1/10km/h)")
      private Integer overSpeedWarningDifference;
  
      @ConfigAttribute(id = 0x5c, type="Integer", description = "疲劳驾驶预警差值 单位为秒 值大于零")
      private Integer drowsyDrivingWarningDifference;
  
      @ConfigAttribute(id = 0x5d, type="CollisionAlarmParams", description = "碰撞报警参数设置")
      private JTCollisionAlarmParams collisionAlarmParams;
  
      @ConfigAttribute(id = 0x5e, type="Integer", description = "侧翻报警参数设置:侧翻角度,单位为度,默认为30")
      private Integer rolloverAlarm;
  
      @ConfigAttribute(id = 0x64, type="CameraTimer", description = "定时拍照控制")
      private JTCameraTimer cameraTimer;
  
      @ConfigAttribute(id = 0x70, type="Long", description = "图像/视频质量 设置范围为1~10 1表示最优质量")
      private Long qualityForVideo;
  
      @ConfigAttribute(id = 0x71, type="Long", description = "亮度，设置范围为0 ~ 255")
      private Long brightness;
  
      @ConfigAttribute(id = 0x72, type="Long", description = "对比度，设置范围为0 ~ 127")
      private Long contrastRatio;
  
      @ConfigAttribute(id = 0x73, type="Long", description = "饱和度，设置范围为0 ~ 127")
      private Long saturation;
  
      @ConfigAttribute(id = 0x74, type="Long", description = "色度，设置范围为0 ~ 255")
      private Long chroma;
  
      @ConfigAttribute(id = 0x75, type="VideoParam", description = "音视频参数设置")
      private JTVideoParam videoParam;
  
      @ConfigAttribute(id = 0x76, type="ChannelListParam", description = "音视频通道列表设置")
      private JTChannelListParam channelListParam;
  
      @ConfigAttribute(id = 0x77, type="ChannelParam", description = "单独视频通道参数设置")
      private JTChannelParam channelParam;
  
      @ConfigAttribute(id = 0x79, type="AlarmRecordingParam", description = "特殊报警录像参数设置")
      private JTAlarmRecordingParam alarmRecordingParam;
  
      @ConfigAttribute(id = 0x7a, type="VideoAlarmBit", description = "视频相关报警屏蔽字")
      private JTVideoAlarmBit videoAlarmBit;
  
      @ConfigAttribute(id = 0x7b, type="AnalyzeAlarmParam", description = "图像分析报警参数设置")
      private JTAnalyzeAlarmParam analyzeAlarmParam;
  
      @ConfigAttribute(id = 0x7c, type="AwakenParam", description = "终端休眠唤醒模式设置")
      private JTAwakenParam awakenParam;
  
      @ConfigAttribute(id = 0x80, type="Long", description = "车辆里程表读数，单位'1/10km")
      private Long mileage;
  
      @ConfigAttribute(id = 0x81, type="Integer", description = "车辆所在的省域ID")
      private Integer provincialId;
  
      @ConfigAttribute(id = 0x82, type="Integer", description = "车辆所在的市域ID")
      private Integer cityId;
  
      @ConfigAttribute(id = 0x83, type="String", description = "公安交通管理部门颁发的机动车号牌")
      private String licensePlate;
  
      @ConfigAttribute(id = 0x84, type="Short", description = "车牌颜色,值按照JT/T697-7.2014中的规定,未上牌车辆填0")
      private Short licensePlateColor;
  
      @ConfigAttribute(id = 0x90, type="GnssPositioningMode", description = "GNSS定位模式")
      private JTGnssPositioningMode gnssPositioningMode;
  
      @ConfigAttribute(id = 0x91, type="Short", description = "GNSS 波特率,定义如下: 0: 4800, 1:9600,  2：19200, 3:38400,  4:57600, 5:115200")
      private Short gnssBaudRate;
  
      @ConfigAttribute(id = 0x92, type="Short", description = "GNSS 模块详细定位数据输出频率,定义如下: 0: 500ms, 1:1000ms(默认值),  2：2000ms, 3:3000ms,  4:4000ms")
      private Short gnssOutputFrequency;
  
          @ConfigAttribute(id = 0x93, type="Long", description = "GNSS 模块详细定位数据采集频率 ,单位为秒(s) ,默认为1")
      private Long gnssCollectionFrequency;
  
      @ConfigAttribute(id = 0x94, type="Short", description = "GNSS 模块详细定位数据上传方式:,定义如下: " +
              "0: 本地存储 ,不上传(默认值) , " +
              "1:按时间间隔上传,  " +
              "2：按距离间隔上传, " +
              "11:按累计时间上传 ,达到传输时间后自动停止上传,  " +
              "12:按累计距离上传 ,达到距离后自动停止上传,  " +
              "13:按累计条数上传 ,达到上传条数后自动停止上传")
      private Short gnssDataUploadMethod;
  
      @ConfigAttribute(id = 0x95, type="Long", description = "GNSS 模块详细定位数据上传设置:,定义如下: " +
              "1:单位为秒(s),  " +
              "2：单位为米(m) , " +
              "11:单位为 秒(s),  " +
              "12:单位为米(m),  " +
              "13:单位 为条")
      private Long gnssDataUploadMethodUnit;
  
      @ConfigAttribute(id = 0x100, type="Long", description = "CAN总线通道1 采集时间间隔 ,单位为毫秒(ms) ,0 表示不采集")
      private Long canCollectionTimeForChannel1;
  
      @ConfigAttribute(id = 0x101, type="Integer", description = "CAN总线通道1 上传时间间隔 ,单位为秒(s) ,0 表示不上传")
      private Integer canUploadIntervalForChannel1;
  
      @ConfigAttribute(id = 0x102, type="Long", description = "CAN总线通道2 采集时间间隔 ,单位为毫秒(ms) ,0 表示不采集")
      private Long canCollectionTimeForChannel2;
  
      @ConfigAttribute(id = 0x103, type="Integer", description = "CAN总线通道2 上传时间间隔 ,单位为秒(s) ,0 表示不上传")
      private Integer canUploadIntervalForChannel2;
  
      @Override
      public String toString() {
          return "JTDeviceConfig{" +
                  "终端心跳发送间隔： " + keepaliveInterval + "秒" +
                  ", TCP消息应答超时时间：" + tcpResponseTimeout + "秒" +
                  ", TCP消息重传次数： " + tcpRetransmissionCount + "秒"  +
                  ", UDP消息应答超时时间： " + udpResponseTimeout +
                  ", UDP消息重传次数： " + udpRetransmissionCount +
                  ", SMS 消息应答超时时间： " + smsResponseTimeout  + "秒"  +
                  ", SMS 消息重传次数： " + smsRetransmissionCount +
                  ", 主服务器APN无线通信拨号访问点： " + apnMaster + '\'' +
                  ", 主服务器无线通信拨号用户名： " + dialingUsernameMaster  +
                  ", 主服务器无线通信拨号密码： " + dialingPasswordMaster  +
                  ", 主服务器地址IP或域名： " + addressMaster  +
                  ", 备份服务器APN： " + apnBackup  +
                  ", 备份服务器无线通信拨号用户名： " + dialingUsernameBackup  +
                  ", 备份服务器无线通信拨号密码： " + dialingPasswordBackup  +
                  ", 备用服务器备份地址IP或域名： " + addressBackup  +
                  ", 道路运输证IC卡认证主服务器IP地址或域名： " + addressIcMaster  +
                  ", 道路运输证IC卡认证主服务器TCP端口： " + tcpPortIcMaster +
                  ", 道路运输证IC卡认证主服务器UDP端口： " + udpPortIcMaster +
                  ", 道路运输证IC卡认证备份服务器IP地址或域名： " + addressIcBackup  +
                  ", 位置汇报策略： " + locationReportingStrategy +
                  ", 位置汇报方案： " + locationReportingPlan +
                  ", 驾驶员未登录汇报时间间隔： " + reportingIntervalOffline + "秒"   +
                  ", 从服务器 APN： " + apnSlave  +
                  ", 从服务器无线通信拨号密码： " + dialingUsernameSlave  +
                  ", 从服务器备份地址 IP或域名： " + dialingPasswordSlave  +
                  ", 从服务器备份地址 IP或域名： " + addressSlave  +
                  ", reportingIntervalDormancy： " + reportingIntervalDormancy +
                  ", reportingIntervalEmergencyAlarm： " + reportingIntervalEmergencyAlarm +
                  ", reportingIntervalDefault： " + reportingIntervalDefault +
                  ", reportingDistanceDefault： " + reportingDistanceDefault +
                  ", reportingDistanceOffline： " + reportingDistanceOffline +
                  ", reportingDistanceDormancy： " + reportingDistanceDormancy +
                  ", reportingDistanceEmergencyAlarm： " + reportingDistanceEmergencyAlarm +
                  ", inflectionPointAngle： " + inflectionPointAngle +
                  ", fenceRadius： " + fenceRadius +
                  ", illegalDrivingPeriods： " + illegalDrivingPeriods +
                  ", platformPhoneNumber： " + platformPhoneNumber  +
                  ", phoneNumberForReset： " + phoneNumberForReset  +
                  ", phoneNumberForFactoryReset： " + phoneNumberForFactoryReset  +
                  ", phoneNumberForSms： " + phoneNumberForSms  +
                  ", phoneNumberForReceiveTextAlarm： " + phoneNumberForReceiveTextAlarm  +
                  ", phoneAnsweringPolicy： " + phoneAnsweringPolicy +
                  ", longestCallTimeForPerSession： " + longestCallTimeForPerSession +
                  ", longestCallTimeInMonth： " + longestCallTimeInMonth +
                  ", phoneNumbersForListen： " + phoneNumbersForListen  +
                  ", privilegedSMSNumber： " + privilegedSMSNumber  +
                  ", alarmMaskingWord： " + alarmMaskingWord +
                  ", alarmSendsTextSmsSwitch： " + alarmSendsTextSmsSwitch +
                  ", alarmShootingSwitch： " + alarmShootingSwitch +
                  ", alarmShootingStorageFlags： " + alarmShootingStorageFlags +
                  ", KeySign： " + KeySign +
                  ", topSpeed： " + maxSpeed +
                  ", overSpeedDuration： " + overSpeedDuration +
                  ", continuousDrivingTimeThreshold： " + continuousDrivingTimeThreshold +
                  ", cumulativeDrivingTimeThresholdForTheDay： " + cumulativeDrivingTimeThresholdForTheDay +
                  ", minimumBreakTime： " + minimumBreakTime +
                  ", maximumParkingTime： " + maximumParkingTime +
                  ", overSpeedWarningDifference： " + overSpeedWarningDifference +
                  ", drowsyDrivingWarningDifference： " + drowsyDrivingWarningDifference +
                  ", collisionAlarmParams： " + collisionAlarmParams +
                  ", rolloverAlarm： " + rolloverAlarm +
                  ", cameraTimer： " + cameraTimer +
                  ", qualityForVideo： " + qualityForVideo +
                  ", brightness： " + brightness +
                  ", contrastRatio： " + contrastRatio +
                  ", saturation： " + saturation +
                  ", chroma： " + chroma +
                  ", mileage： " + mileage +
                  ", provincialId： " + provincialId +
                  ", cityId： " + cityId +
                  ", licensePlate： " + licensePlate  +
                  ", licensePlateColor： " + licensePlateColor +
                  ", gnssPositioningMode： " + gnssPositioningMode +
                  ", gnssBaudRate： " + gnssBaudRate +
                  ", gnssOutputFrequency： " + gnssOutputFrequency +
                  ", gnssCollectionFrequency： " + gnssCollectionFrequency +
                  ", gnssDataUploadMethod： " + gnssDataUploadMethod +
                  ", gnssDataUploadMethodUnit： " + gnssDataUploadMethodUnit +
                  ", canCollectionTimeForChannel1： " + canCollectionTimeForChannel1 +
                  ", canUploadIntervalForChannel1： " + canUploadIntervalForChannel1 +
                  ", canCollectionTimeForChannel2： " + canCollectionTimeForChannel2 +
                  ", canUploadIntervalForChannel2： " + canUploadIntervalForChannel2 +
                  '}';
      }
  }
  