From 3667807a7b7418efc090ee3fa6a6b734bc3080bf Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Wed, 13 Sep 2023 20:36:29 +0800
Subject: [PATCH] Merge branch 'develop' of http://s16s652780.51mypc.cn:49896/r/yskj/iot_drone_web into develop

---
 src/types/device.ts |  423 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 372 insertions(+), 51 deletions(-)

diff --git a/src/types/device.ts b/src/types/device.ts
index 8a77512..d220acc 100644
--- a/src/types/device.ts
+++ b/src/types/device.ts
@@ -1,16 +1,213 @@
-import { EDeviceTypeName } from ".";
+import { commonColor } from '/@/utils/color'
+import { NightLightsStateEnum, DistanceLimitStatus, ObstacleAvoidance } from './device-setting'
+import { AlarmModeEnum, BatteryStoreModeEnum, DroneBatteryStateEnum, FourGLinkStateEnum, SdrLinkStateEnum, LinkWorkModeEnum } from './airport-tsa'
+import { CameraMode } from '/@/types/live-stream'
+
+export interface DeviceValue {
+  key: string; // 'domain-type-subtype'
+  domain: string; // 表示一个领域,作为一个命名空间,暂时分 飞机类-0, 负载类-1,RC类-2,机场类-3 4种
+  type: number; // 设备类型枚举
+  sub_type: number; // 设备类型枚举 负载一般表示镜头
+}
+
+// domain
+export enum DOMAIN {
+  DRONE = '0', // 飞行器
+  PAYLOAD = '1', // 负载
+  RC = '2', // 遥控
+  DOCK = '3', // 机场
+}
+
+// DJI飞机类型
+export enum DRONE_TYPE {
+  M30 = 67,
+  M300 = 60,
+  Mavic3EnterpriseAdvanced= 77,
+  M350 = 89,
+}
+
+// DJI负载类型枚举值
+export enum PAYLOAD_TYPE {
+  FPV = 39,
+  H20 = 42,
+  H20T = 43,
+  H20N = 61,
+  EP600 = 50,
+  EP800 = 90742,
+  M30D = 52,
+  M30T = 53,
+  XT2 = 26,
+  XTS = 41,
+  Z30 = 20,
+  DockTopCamera = 165,
+
+  M3E = 66,
+  M3T = 67,
+  // UNKNOWN = 65535
+}
+
+// RC type
+export enum RC_TYPE {
+  RC = 56,
+  RCPlus = 119,
+  RC144 = 144,
+}
+
+// DOCK type
+export enum DOCK_TYPE {
+  Dock = 1,
+}
+
+// 设备sub_type 从0升序
+export enum DEVICE_SUB_TYPE {
+  ZERO,
+  ONE,
+  TWO,
+  THREE,
+  UNKNOWN = 65535,
+}
+
+export const DEVICE_MODEL_KEY = {
+  M30: `${DOMAIN.DRONE}-${DRONE_TYPE.M30}-${DEVICE_SUB_TYPE.ZERO}`,
+  M30T: `${DOMAIN.DRONE}-${DRONE_TYPE.M30}-${DEVICE_SUB_TYPE.ONE}`,
+
+  M3E: `${DOMAIN.DRONE}-${DRONE_TYPE.Mavic3EnterpriseAdvanced}-${DEVICE_SUB_TYPE.ZERO}`,
+  M3T: `${DOMAIN.DRONE}-${DRONE_TYPE.Mavic3EnterpriseAdvanced}-${DEVICE_SUB_TYPE.ONE}`,
+
+  M300: `${DOMAIN.DRONE}-${DRONE_TYPE.M300}-${DEVICE_SUB_TYPE.ZERO}`,
+  M350: `${DOMAIN.DRONE}-${DRONE_TYPE.M350}-${DEVICE_SUB_TYPE.ZERO}`,
+
+  FPV: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.FPV}-${DEVICE_SUB_TYPE.ZERO}`,
+  H20: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.H20}-${DEVICE_SUB_TYPE.ZERO}`,
+  H20T: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.H20T}-${DEVICE_SUB_TYPE.ZERO}`,
+  H20N: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.H20N}-${DEVICE_SUB_TYPE.ZERO}`,
+  EP600: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.EP600}-${DEVICE_SUB_TYPE.UNKNOWN}`,
+  EP800: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.EP800}-${DEVICE_SUB_TYPE.ZERO}`,
+  M30Camera: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.M30D}-${DEVICE_SUB_TYPE.ZERO}`,
+  M30TCamera: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.M30T}-${DEVICE_SUB_TYPE.ZERO}`,
+
+  M3ECamera: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.M3E}-${DEVICE_SUB_TYPE.ZERO}`,
+  M3TCamera: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.M3T}-${DEVICE_SUB_TYPE.ZERO}`,
+  // M3MCamera: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.M3M}-${DEVICE_SUB_TYPE.ZERO}`,
+
+  XT2: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.XT2}-${DEVICE_SUB_TYPE.ZERO}`,
+  XTS: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.XTS}-${DEVICE_SUB_TYPE.ZERO}`,
+  Z30: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.Z30}-${DEVICE_SUB_TYPE.ZERO}`,
+  DockTopCamera: `${DOMAIN.PAYLOAD}-${PAYLOAD_TYPE.DockTopCamera}-${DEVICE_SUB_TYPE.ZERO}`,
+
+  RC: `${DOMAIN.RC}-${RC_TYPE.RC}-${DEVICE_SUB_TYPE.ZERO}`,
+  RCPlus: `${DOMAIN.RC}-${RC_TYPE.RCPlus}-${DEVICE_SUB_TYPE.ZERO}`,
+
+  Dock: `${DOMAIN.DOCK}-${DOCK_TYPE.Dock}-${DEVICE_SUB_TYPE.ZERO}`,
+}
+
+export const DEVICE_NAME = {
+  // drone
+  [DEVICE_MODEL_KEY.M30]: 'M30',
+  [DEVICE_MODEL_KEY.M30T]: 'M30T',
+  [DEVICE_MODEL_KEY.M3E]: 'Mavic 3E',
+  [DEVICE_MODEL_KEY.M3T]: 'Mavic 3T',
+  // [DEVICE_MODEL_KEY.M3M]: 'Mavic 3M',
+  [DEVICE_MODEL_KEY.M300]: 'M300 RTK',
+  [DEVICE_MODEL_KEY.M350]: 'M350 RTK',
+
+  // payload
+  [DEVICE_MODEL_KEY.FPV]: 'FPV',
+  [DEVICE_MODEL_KEY.H20]: 'H20',
+  [DEVICE_MODEL_KEY.H20T]: 'H20T',
+  [DEVICE_MODEL_KEY.H20N]: 'H20N',
+  [DEVICE_MODEL_KEY.EP600]: 'P1',
+  [DEVICE_MODEL_KEY.EP800]: 'L1',
+  [DEVICE_MODEL_KEY.M30Camera]: 'M30 Camera',
+  [DEVICE_MODEL_KEY.M30TCamera]: 'M30T Camera',
+  [DEVICE_MODEL_KEY.M3ECamera]: 'Mavic 3E',
+  [DEVICE_MODEL_KEY.M3TCamera]: 'Mavic 3T',
+  // [DEVICE_MODEL_KEY.M3MCamera]: 'Mavic 3M',
+  [DEVICE_MODEL_KEY.XT2]: 'XT2',
+  [DEVICE_MODEL_KEY.XTS]: 'XTS',
+  [DEVICE_MODEL_KEY.Z30]: 'Z30',
+  [DEVICE_MODEL_KEY.DockTopCamera]: 'Dock Camera',
+
+  // rc
+  [DEVICE_MODEL_KEY.RC]: 'RC',
+  [DEVICE_MODEL_KEY.RCPlus]: 'RC Plus',
+
+  // dock
+  [DEVICE_MODEL_KEY.Dock]: 'Dock',
+}
+
+// 控制权
+export enum ControlSource {
+  A = 'A',
+  B = 'B'
+}
+
+export interface PayloadInfo {
+  index: number,
+  model: string,
+  control_source?: ControlSource,
+  payload_sn?: string,
+  payload_index?: string,
+  payload_name?: string,
+}
+
+// 设备信息
+export interface OnlineDevice {
+  model: string,
+  callsign: string,
+  sn: string,
+  mode: number,
+  gateway: {
+    model: string,
+    callsign: string,
+    sn: string,
+    domain: string,
+  },
+  payload: PayloadInfo[]
+}
+
+// 固件升级类型
+export enum DeviceFirmwareTypeEnum {
+  ToUpgraded = 3, // 普通升级
+  ConsistencyUpgrade =2, // 一致性升级
+}
+
+// 固件升级状态
+export enum DeviceFirmwareStatusEnum {
+  None = 1, // 无需升级
+  ToUpgraded = 2, // 待升级
+  ConsistencyUpgrade = 3, // 一致性升级
+  DuringUpgrade = 4, // 升级中
+}
+
+export const DeviceFirmwareStatus = {
+  [DeviceFirmwareStatusEnum.None]: '',
+  [DeviceFirmwareStatusEnum.ToUpgraded]: '待升级',
+  [DeviceFirmwareStatusEnum.ConsistencyUpgrade]: '一致性升级',
+  [DeviceFirmwareStatusEnum.DuringUpgrade]: '升级中',
+}
+
+export const DeviceFirmwareStatusColor = {
+  [DeviceFirmwareStatusEnum.None]: commonColor.WHITE,
+  [DeviceFirmwareStatusEnum.ToUpgraded]: commonColor.BLUE,
+  [DeviceFirmwareStatusEnum.ConsistencyUpgrade]: commonColor.WARN,
+  [DeviceFirmwareStatusEnum.DuringUpgrade]: commonColor.NORMAL,
+}
 
 export interface Device {
   device_name: string,
   device_sn: string,
   nickname: string,
   firmware_version: string,
+  firmware_status: DeviceFirmwareStatusEnum,
   status: string,
   workspace_name: string,
   bound_time: string,
   login_time: string,
-  children?: Device[]
-  domain: string
+  children?: Device[],
+  domain: number,
+  type: number,
+  firmware_progress?: string, // 升级进度
 }
 
 export interface DeviceStatus {
@@ -22,7 +219,7 @@
   bound_status: boolean,
   model: string,
   gateway_sn: string,
-  domain: string
+  domain: number
 }
 
 export interface OSDVisible {
@@ -33,6 +230,7 @@
   is_dock: boolean,
   gateway_sn: string,
   gateway_callsign: string,
+  payloads: null | PayloadInfo [],
 }
 
 export interface GatewayOsd {
@@ -41,6 +239,24 @@
   longitude: number,
   latitude: number,
 }
+
+export interface OsdCameraLiveview {
+  bottom: number,
+  left: number,
+  right: number,
+  top: number,
+}
+export interface DeviceOsdCamera {
+  camera_mode: CameraMode,
+  payload_index: string,
+  photo_state: number,
+  record_time: number,
+  recording_state: number,
+  remain_photo_num: number,
+  remain_record_duration: number,
+  liveview_world_region: OsdCameraLiveview
+}
+
 export interface DeviceOsd {
   longitude: number,
   latitude: number,
@@ -63,11 +279,104 @@
     landing_power: string,
     remain_flight_time: number,
     return_home_power: string,
-  }
+  },
+  night_lights_state?: NightLightsStateEnum;// 夜航灯开关
+  height_limit?: number;// 限高设置
+  distance_limit_status?: DistanceLimitStatus;// 限远开关
+  obstacle_avoidance?: ObstacleAvoidance;// 飞行器避障开关设置
+  cameras?: DeviceOsdCamera[]
 }
 
-export interface DockOsd {
-  media_file_detail: {
+export enum NetworkStateTypeEnum {
+  FOUR_G = 1,
+  ETHERNET = 2,
+}
+
+export enum NetworkStateQualityEnum {
+  BAD = 0,
+  MEDIUM = 1,
+  GOOD = 2
+}
+
+export enum RainfallEnum {
+  NONE = 0,
+  LIGHT_RAIN = 1,
+  MODERATE_RAIN = 2,
+  HEAVY_RAIN = 3,
+}
+
+export enum DroneInDockEnum {
+  OUTSIDE, INSIDE
+}
+
+export interface DockBasicOsd {
+  network_state?: {
+    type: NetworkStateTypeEnum,
+    quality: number,
+    rate: number,
+  },
+  drone_charge_state?: {
+    state: number,
+    capacity_percent: number,
+  },
+  drone_in_dock: DroneInDockEnum,
+  rainfall: RainfallEnum,
+  wind_speed: number,
+  environment_temperature: number,
+  temperature: number,
+  humidity: number,
+  latitude: number,
+  longitude: number,
+  height: number,
+  alternate_land_point?: {
+    latitude: number,
+    longitude: number,
+    height: number,
+    safe_land_height: number,
+    is_configured: number
+  }
+  first_power_on: number,
+  positionState?: {
+    gps_number: number,
+    is_fixed: number,
+    rtk_number: number,
+    is_calibration: number,
+    quality: number,
+  },
+  storage?: {
+    total: number,
+    used: number,
+  },
+  mode_code: number,
+  cover_state: number,
+  supplement_light_state: number,
+  emergency_stop_state: number,
+  air_conditioner?: {
+    air_conditioner_state: number,
+    switch_time: number,
+  }
+  battery_store_mode?: BatteryStoreModeEnum; // 电池保养(存储)模式
+  alarm_state?: AlarmModeEnum; // 机场声光报警状态
+  putter_state: number,
+  sub_device?: {
+    device_sn?: string,
+    device_model_key?: string,
+    device_online_status: number,
+    device_paired: number,
+  },
+  // live_capacity?: LiveCapacity; // 直播能力
+  // live_status?: Array<LiveStatus>; // 直播状态
+}
+export enum DrcStateEnum {
+  DISCONNECT = 0,
+  CONNECTING = 1,
+  CONNECTED = 2
+}
+export interface DockLinkOsd {
+  drc_state: DrcStateEnum,
+  flighttask_prepare_capacity: number,
+  flighttask_step_code: number,
+  media_file_detail?: {
     remain_upload: number
   },
   sdr: {
@@ -75,53 +384,52 @@
     down_quality: string,
     frequency_band: number,
   },
-  network_state: {
-    type: number,
-    quality: number,
-    rate: number, 
-  },
-  drone_in_dock: number,
-  drone_charge_state: {
-    state: number,
-    capacity_percent: string,
-  },
-  rainfall: string,
-  wind_speed: string,
-  environment_temperature: string,
-  environment_humidity: string
-  temperature: string,
-  humidity: string,
-  latitude: number,
-  longitude: number,
-  height: number,
+  wireless_link?:{ // 图传链路<会包括4G和sdr信息
+    dongle_number: number, // dongle 数量
+    ['4g_link_state']: FourGLinkStateEnum, // 4g_link_state
+    sdr_link_state: SdrLinkStateEnum, // sdr链路连接状态
+    link_workmode: LinkWorkModeEnum, // 图传链路模式
+    sdr_quality: number, // sdr信号质量 0-5
+    ['4g_quality']: number, // 4G信号质量 0-5
+    ['4g_freq_band']: number,
+    ['4g_gnd_quality']: number,
+    ['4g_uav_quality']: number,
+    sdr_freq_band: number,
+  }
+}
+
+export interface MaintainStatus {
+  state: number,
+  last_maintain_type: number,
+  last_maintain_time: number,
+  last_maintain_work_sorties: number,
+}
+
+export interface DockWorkOsd {
   job_number: number,
   acc_time: number,
-  first_power_on: number,
-  positionState: {
-    gps_number: string,
-    is_fixed: number,
-    rtk_number: string,
-    is_calibration: number,
-    quality: number,
-  },
-  storage: {
-    total: number,
-    used: number,
-  },
+  activation_time: number,
+  maintain_status?: {
+    maintain_status_array: MaintainStatus[]
+  }
   electric_supply_voltage: number,
   working_voltage: string,
   working_current: string,
-  backup_battery_voltage: number,
-  mode_code: number,
-  cover_state: number,
-  supplement_light_state: number,
-  putter_state: number,
-  sub_device: {
-    device_sn: string,
-    device_model_key: string,
-    device_online_status: number,
-    device_paired: number,
-  },
+  backup_battery?: {
+    voltage: number,
+    temperature: number,
+    switch: number,
+  }
+  drone_battery_maintenance_info?: { // 飞行器电池保养信息
+    maintenance_state: DroneBatteryStateEnum, // 保养状态
+    maintenance_time_left: number, // 电池保养剩余时间(小时)
+  }
+}
+
+export interface DockOsd {
+  basic_osd: DockBasicOsd,
+  link_osd: DockLinkOsd,
+  work_osd: DockWorkOsd
 }
 
 export enum EModeCode {
@@ -159,6 +467,7 @@
   M30 = '0-67-0' as any,
   M30T = '0-67-1' as any,
   M300 = '0-60-0' as any,
+  M350 = DEVICE_MODEL_KEY.M350 as any,
   Z30 = '1-20-0' as any,
   XT2 = '1-26-0' as any,
   FPV = '1-39-0' as any,
@@ -171,6 +480,10 @@
   H20N = '1-61-0' as any,
   DJI_Dock_Camera = '1-165-0' as any,
   L1 = '1-90742-0' as any,
+  M3E = '0-77-0' as any,
+  M3D = '0-77-1' as any,
+  M3E_Camera = '1-66-0' as any,
+  M3T_Camera = '1-67-0' as any,
 }
 
 export enum EDockModeCode {
@@ -194,5 +507,13 @@
   message_zh: string,
   create_time: string,
   update_time: string,
-  domain: string
-}
\ No newline at end of file
+  domain: number
+}
+
+// TODO: 设备拓扑管理优化
+// 设备osd信息
+export interface DeviceInfoType {
+  gateway: GatewayOsd, // 遥控器
+  dock: DockOsd, // 机场
+  device: DeviceOsd, // 飞机
+}

--
Gitblit v1.9.3