package dj import ( "context" "github.com/gogf/gf/v2/crypto/gmd5" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "github.com/tiger1103/gfast/v3/api/v1/common/coryCommon" "math/rand" "time" ) const ( Drone_open = "drone_open" Drone_close = "drone_close" Cover_open = "cover_open" Cover_close = "cover_close" Device_reboot = "device_reboot" Putter_open = "putter_open" Putter_close = "putter_close" Airport_organization_bind = "airport_organization_bind" //设备绑定到组织 Airport_organization_get = "airport_organization_get" //查询设备绑定对应的组织信息 Airport_bind_status = "airport_bind_status" //获取设备绑定信息 Update_topo = "update_topo" //设备拓扑更新 Flighttask_ready = "flighttask_ready" //任务就绪通知 Flighttask_resource_get = "flighttask_resource_get" //任务资源获取 Return_home_info = "return_home_info" //返航信息 Flighttask_progress = "flighttask_progress" //上报航线任务进度 Flighttask_prepare = "flighttask_prepare" //下发任务 Storage_config_get = "storage_config_get" //获取上传临时凭证 File_upload_callback = "file_upload_callback" //媒体文件上传结果上报 Takeoff_to_point = "takeoff_to_point" //一键起飞 Fly_to_point_stop = "fly_to_point_stop" //结束飞向目标点 Fly_to_point = "fly_to_point" //飞向目标点 Fly_to_point_progress = "fly_to_point_progress" //flyto 执行结果事件通知 Flight_authority_grab = "flight_authority_grab" //飞行控制权抢夺 Speaker_tts_play_start = "speaker_tts_play_start" //喊话器-开始播放TTS文本 Speaker_audio_play_start = "speaker_audio_play_start" //喊话器-开始播放音频 Fileupload_progress = "fileupload_progress" //文件上传进度通知(远程日志) Config = "config" //config //cory OtaCreate = "ota_create" //固件升级 OtaProgress = "ota_progress" //固件升级进度通知 FileuploadList = "fileupload_list" //获取设备可上传的文件列表 FileuploadStart = "fileupload_start" //发起日志文件上传 DeviceFormat = "device_format" //机场数据格式化 DroneFormat = "drone_format" //飞行器数据格式化 ReturnHome1 = "return_home" //返航 ) // CoryAirportOrAircraft 机场or飞机 type CoryAirportOrAircraft struct { Airport interface{} `json:"airport" dc:"机场数据"` Aircraft interface{} `json:"aircraft" dc:"飞机数据"` HangarSn string `json:"hangarSn" dc:"机仓sn"` AircraftSn string `json:"aircraftSn" dc:"飞机sn"` Coordinates string `json:"coordinates" dc:"无人机最后一次发送的坐标信息"` } /*共有类*/ type Public struct { Tid string `json:"tid"` Bid string `json:"bid"` Timestamp int64 `json:"timestamp"` Gateway string `json:"gateway"` Method string `json:"method"` } type PublicTwo struct { Public Data struct { Result int `json:"result"` Output struct { Status string `json:"status"` } `json:"output"` } `json:"data"` } func (receiver *Public) SetDefault() { //randString := RandString(32) //receiver.Bid = randString //receiver.Tid = randString receiver.Bid = RandString(32) receiver.Tid = RandString(32) receiver.Timestamp = gtime.Now().TimestampMilli() } func RandString(len int) string { time.Sleep(time.Nanosecond) r := rand.New(rand.NewSource(time.Now().UnixNano())) bytes := make([]byte, len) for i := 0; i < len; i++ { b := r.Intn(26) + 65 bytes[i] = byte(b) } return gmd5.MustEncryptString(string(bytes)) } // 属性信息1 type OSD1 struct { Public Data struct { JobNumber int `json:"job_number"` AccTime int `json:"acc_time"` ActivationTime int `json:"activation_time"` MaintainStatus struct { MaintainStatusArray []struct { State int `json:"state"` LastMaintainType int `json:"last_maintain_type"` LastMaintainTime int `json:"last_maintain_time"` LastMaintainWorkSorties int `json:"last_maintain_work_sorties"` } `json:"maintain_status_array"` } `json:"maintain_status"` ElectricSupplyVoltage int `json:"electric_supply_voltage"` WorkingVoltage int `json:"working_voltage"` WorkingCurrent int `json:"working_current"` BackupBattery struct { Voltage int `json:"voltage"` Temperature float64 `json:"temperature"` Switch int `json:"switch"` } `json:"backup_battery"` DroneBatteryMaintenanceInfo struct { MaintenanceState int `json:"maintenance_state"` MaintenanceTimeLeft int `json:"maintenance_time_left"` } `json:"drone_battery_maintenance_info"` } `json:"data"` } // 属性信息2 type OSD2 struct { Public Data struct { FlighttaskPrepareCapacity int `json:"flighttask_prepare_capacity"` FlighttaskStepCode int `json:"flighttask_step_code"` MediaFileDetail struct { RemainUpload int `json:"remain_upload"` } `json:"media_file_detail"` WirelessLink struct { GFreqBand float64 `json:"4g_freq_band"` GGndQuality int `json:"4g_gnd_quality"` GLinkState int `json:"4g_link_state"` GQuality int `json:"4g_quality"` GUavQuality int `json:"4g_uav_quality"` DongleNumber int `json:"dongle_number"` LinkWorkmode int `json:"link_workmode"` SdrFreqBand float64 `json:"sdr_freq_band"` SdrLinkState int `json:"sdr_link_state"` SdrQuality int `json:"sdr_quality"` } `json:"wireless_link"` } `json:"data"` } // 属性信息3 type OSD3 struct { Public Data struct { NetworkState struct { Type int `json:"type"` Quality int `json:"quality"` Rate float64 `json:"rate"` } `json:"network_state"` DroneChargeState struct { State int `json:"state"` CapacityPercent int `json:"capacity_percent"` } `json:"drone_charge_state"` DroneInDock int `json:"drone_in_dock"` Rainfall int `json:"rainfall"` WindSpeed float64 `json:"wind_speed"` EnvironmentTemperature float64 `json:"environment_temperature"` Temperature float64 `json:"temperature"` Humidity int `json:"humidity"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` Height float64 `json:"height"` AlternateLandPoint struct { Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` SafeLandHeight int `json:"safe_land_height"` IsConfigured int `json:"is_configured"` } `json:"alternate_land_point"` FirstPowerOn int64 `json:"first_power_on"` PositionState struct { IsCalibration int `json:"is_calibration"` IsFixed int `json:"is_fixed"` Quality int `json:"quality"` GpsNumber int `json:"gps_number"` RtkNumber int `json:"rtk_number"` } `json:"position_state"` Storage struct { Total int `json:"total"` Used int `json:"used"` } `json:"storage"` ModeCode int `json:"mode_code"` CoverState int `json:"cover_state"` SupplementLightState int `json:"supplement_light_state"` EmergencyStopState int `json:"emergency_stop_state"` AirConditionerMode int `json:"air_conditioner_mode"` BatteryStoreMode int `json:"battery_store_mode"` AlarmState int `json:"alarm_state"` PutterState int `json:"putter_state"` SubDevice struct { DeviceSn string `json:"device_sn"` DeviceModelKey string `json:"device_model_key"` DeviceOnlineStatus int `json:"device_online_status"` DevicePaired int `json:"device_paired"` } `json:"sub_device"` } `json:"data"` } // M30/M30T 设备属性 type M30tEntity struct { Public Data struct { Battery struct { CapacityPercent int `json:"capacity_percent" dc:"电池的总剩余电量"` RemainFlightTime int `json:"remain_flight_time" dc:"剩余飞行时间"` ReturnHomePower int `json:"return_home_power" dc:"返航所需电量百分比 "` } `json:"battery" dc:"飞行器电池信息"` Storage struct { Total int `json:"total" dc:"总容量"` Used int `json:"used" dc:"已使用容量"` } `json:"storage" dc:"存储容量"` cameras struct { RemainPhotoNum int `json:"remain_photo_num" dc:"剩余拍照张数"` } `json:"cameras" dc:"飞行器相机信息"` HorizontalSpeed float64 `json:"horizontal_speed" dc:"水平速度"` VerticalSpeed float64 `json:"vertical_speed" dc:"垂直速度 "` Latitude float64 `json:"latitude" dc:"当前位置经度"` Longitude float64 `json:"longitude" dc:"当前位置纬度"` Elevation float64 `json:"elevation" dc:"相对起飞点高度"` TrackId float64 `json:"track_id" dc:"航迹ID"` } `json:"data"` } // 大疆机场 设备属性 type DjiAirportEntity struct { Public Data struct { Battery struct { VideoQuality int `json:"video_quality" dc:"直播状态 (0自动,1流畅,2高清,3超清)"` Status int `json:"status" dc:"直播状态"` } `json:"live_status" dc:"网关当前整体直播状态推送"` } `json:"data"` } // AircraftInformation 飞机状态信息 Cory type AircraftInformation struct { Public Data struct { CommanderFlightHeight float64 `json:"commander_flight_height" dc:"指点飞行高度"` HorizontalSpeed float64 `json:"horizontal_speed" dc:"水平速度"` VerticalSpeed float64 `json:"vertical_speed" dc:"垂直速度"` } `json:"data"` } // FileUploadCallbackEntity 媒体文件上传结果上报 type FileUploadCallbackEntity struct { Public Data struct { File struct { Extension struct { DroneModelKey string `json:"drone_model_key"` FlightID string `json:"flight_id"` IsOriginal bool `json:"is_original"` PayloadModelKey string `json:"payload_model_key"` } `json:"ext"` Metadata struct { AbsoluteAltitude float64 `json:"absolute_altitude"` CreateTime string `json:"create_time"` GimbalYawDegree float64 `json:"gimbal_yaw_degree"` RelativeAltitude float64 `json:"relative_altitude"` ShootPosition struct { Latitude float64 `json:"lat"` Longitude float64 `json:"lng"` } `json:"shoot_position"` } `json:"metadata"` Name string `json:"name"` ObjectKey string `json:"object_key"` Path string `json:"path"` } `json:"file"` } `json:"data"` } type State struct { Public Data interface{} `json:"data"` } type Service struct { Public Method string `json:"method"` Data interface{} `json:"data"` } type Event struct { Public Method string `json:"method"` NeedReply int `json:"need_reply"` Data interface{} `json:"data"` } type Status struct { Public Data struct { Domain string `json:"domain"` Type int `json:"type"` SubType int `json:"sub_type"` DeviceSecret string `json:"device_secret"` Nonce string `json:"nonce"` Version int `json:"version"` SubDevices []struct { Sn string `json:"sn"` Type int `json:"type"` SubType int `json:"sub_type"` Index string `json:"index"` DeviceSecret string `json:"device_secret"` Nonce string `json:"nonce"` Version int `json:"version"` } `json:"sub_devices"` } `json:"data"` } type StatusReply struct { Public Data struct { Result int `json:"result"` } `json:"data"` } type Reboot struct { Usual } func (receiver *Reboot) SetDefaultValue() { receiver.SetDefault() receiver.Method = "device_reboot" } /*打开调试模式*/ type DebugOpen struct { Usual } func (receiver *DebugOpen) SetDefaultValue() { receiver.SetDefault() receiver.Method = "debug_mode_open" } /*关闭调试模式*/ type DebugClose struct { Usual } func (receiver *DebugClose) SetDefaultValue() { receiver.SetDefault() receiver.Method = "debug_mode_close" } type Usual struct { Public Data interface{} `json:"data"` } /*停止直播*/ type StopLive struct { Public Data struct { VideoId string `json:"video_id"` } `json:"data"` } func (receiver *StopLive) SetDefaultValue() { receiver.SetDefault() receiver.Method = "live_stop_push" } /*开始直播*/ type StartLive struct { Public Data struct { UrlType int `json:"url_type"` Url string `json:"url"` VideoId string `json:"video_id"` VideoQuality int `json:"video_quality"` } `json:"data"` } func (receiver *StartLive) SetDefaultValue() { receiver.SetDefault() receiver.Method = "live_start_push" } /*打开舱盖*/ type CoverOpen struct { Usual } func (receiver *CoverOpen) SetDefaultValue() { receiver.SetDefault() receiver.Method = "cover_open" } /*关闭舱盖*/ type CoverClose struct { Usual } func (receiver *CoverClose) SetDefaultValue() { receiver.SetDefault() receiver.Method = "cover_close" } /*飞行器开机*/ type DroneOpen struct { Usual } func (receiver *DroneOpen) SetDefaultValue() { receiver.SetDefault() receiver.Method = "drone_open" } /*飞行器开机*/ type DroneClose struct { Usual } func (receiver *DroneClose) SetDefaultValue() { receiver.SetDefault() receiver.Method = "drone_close" } /*打开充电*/ type PutterOpen struct { Usual } func (receiver *PutterOpen) SetDefaultValue() { receiver.SetDefault() receiver.Method = "putter_open" } type PutterClose struct { Usual } func (receiver *PutterClose) SetDefaultValue() { receiver.SetDefault() receiver.Method = "putter_close" } /*打开充电*/ type ChargeOpen struct { Usual } func (receiver *ChargeOpen) SetDefaultValue() { receiver.SetDefault() receiver.Method = "charge_open" } /*关闭充电*/ type ChargeClose struct { Usual } func (receiver *ChargeClose) SetDefaultValue() { receiver.SetDefault() receiver.Method = "charge_close" } /*云平台向设备发送的服务(具体service identifier 见物模型内容)。*/ func GetServiceTopic(gateway_sn string) string { return "thing/product/" + gateway_sn + "/services" } func GetRequestsReplyTopic(gateway_sn string) string { return "thing/product/" + gateway_sn + "/requests_reply" } func GetEventsReplyTopic(gateway_sn string) string { return "thing/product/" + gateway_sn + "/StatusReply" } /*开始直播响应*/ type StartLiveReply struct { Public Data struct { Result int `json:"result"` Url string `json:"url"` } `json:"data"` } /*开始直播响应*/ type StopLiveReply struct { UsualReply } type UsualReply struct { Public Data struct { Result int `json:"result"` Output struct { Status string `json:"status"` } `json:"output"` } `json:"data"` } /*打开补光灯*/ type Supplement_light_open struct { Usual } func (receiver *Supplement_light_open) SetDefaultValue() { receiver.SetDefault() receiver.Method = "supplement_light_open" } /*关闭补光灯*/ type Supplement_light_close struct { Usual } func (receiver *Supplement_light_close) SetDefaultValue() { receiver.SetDefault() receiver.Method = "supplement_light_close" } /*声光报警开关*/ type Alarm_state_switch struct { Public Data struct { Action int `json:"action"` //{"0":"关闭","1":"开启"} } `json:"data"` } func (receiver *Alarm_state_switch) SetDefaultValue() { receiver.SetDefault() receiver.Method = "alarm_state_switch" } /*执行任务*/ type FlighttaskExecute struct { Public Data struct { FlightId string `json:"flight_id"` } `json:"data"` } func (receiver *FlighttaskExecute) SetDefaultValue() { receiver.SetDefault() receiver.Method = "flighttask_execute" } /*取消任务*/ type FlighttaskUndo struct { Public Data struct { Flight_ids []string `json:"flight_ids"` } `json:"data"` } func (receiver *FlighttaskUndo) SetDefaultValue() { receiver.SetDefault() receiver.Method = "flighttask_undo" } /*航线暂停*/ type FlighttaskPause struct { Usual } func (receiver *FlighttaskPause) SetDefaultValue() { receiver.SetDefault() receiver.Method = "flighttask_pause" } /*航线恢复*/ type FlighttaskRecovery struct { Usual } func (receiver *FlighttaskRecovery) SetDefaultValue() { receiver.SetDefault() receiver.Method = "flighttask_recovery" } /*一键返航*/ type ReturnHome struct { Usual } func (receiver *ReturnHome) SetDefaultValue() { receiver.SetDefault() receiver.Method = "return_home" } /*取消返航*/ type ReturnHomeCancel struct { Usual } func (receiver *ReturnHomeCancel) SetDefaultValue() { receiver.SetDefault() receiver.Method = "return_home_cancel" } /*设备绑定到组织*/ type AirportOrganizationBind struct { Public Data struct { BindDevices []struct { DeviceBindingCode string `json:"device_binding_code"` //设备绑定码 OrganizationId string `json:"organization_id"` //组织id DeviceCallsign string `json:"device_callsign"` //设备在组织的名称 Sn string `json:"sn"` //设备序列号 DeviceModelKey string `json:"device_model_key"` //产品枚举值 } `json:"bind_devices"` //绑定参数列表 } `json:"data"` } /*设备绑定到组织回复*/ type AirportOrganizationBindReplay struct { Public Data struct { Result int `json:"result"` //直接填0 Output struct { ErrInfos []struct { Sn string `json:"sn"` //设备序列号 ErrCode int `json:"err_code"` //错误码 自定义,非 0 表示绑定不成功 } `json:"err_infos"` } `json:"output"` } `json:"data"` } /*查询设备绑定对应的组织信息*/ type AirportOrganizationGet struct { Public Data struct { DeviceBindingCode string `json:"device_binding_code"` //设备绑定码 OrganizationId string `json:"organization_id"` //组织id } `json:"data"` } /*查询设备绑定对应的组织信息回复*/ type AirportOrganizationGetReplay struct { Public Data struct { Result int `json:"result"` Output struct { OrganizationName string `json:"organization_name"` //组织名称 } `json:"output"` } `json:"data"` } /*获取设备绑定信息*/ type AirportBindStatus struct { Public Data []struct { Devices []struct { Sn string `json:"sn"` } `json:"devices"` } `json:"data"` } /*获取设备绑定信息回复*/ type AirportBindStatusReplay struct { Public Data []struct { Result int `json:"result"` //默认0 Output struct { BindStatus []struct { Sn string `json:"sn"` //设备序列号 IsDeviceBindOrganization bool `json:"is_device_bind_organization"` //设备是否绑定到组织 OrganizationId string `json:"organization_id"` //组织id OrganizationName string `json:"organization_name"` //组织名称 DeviceCallsign string `json:"device_callsign"` //设备在组织中的名称 } `json:"bind_status"` } `json:"output"` } `json:"data"` } type FlighttaskReady struct { Public Data struct { FlightIds []string `json:"flight_ids"` //当前满足任务就绪条件的任务 ID 集合 } `json:"data"` } type ReturnHomeInfo struct { Public Data struct { FlightId string `json:"flight_id"` LastPointType int `json:"last_point_type"` PlannedPathPoints []struct { Height float64 `json:"height"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` } `json:"planned_path_points"` } `json:"data"` } /*下发任务*/ type FlighttaskPrepare struct { Public Data struct { BreakPoint struct { Index int `json:"index"` Progress float64 `json:"progress"` State int `json:"state"` WaylineId int `json:"wayline_id"` } `json:"break_point"` ExecutableConditions struct { StorageCapacity int `json:"storage_capacity"` } `json:"executable_conditions"` ExecuteTime int64 `json:"execute_time"` ExitWaylineWhenRcLost int `json:"exit_wayline_when_rc_lost"` File struct { Fingerprint string `json:"fingerprint"` Url string `json:"url"` } `json:"file"` FlightId string `json:"flight_id"` OutOfControlAction int `json:"out_of_control_action"` ReadyConditions struct { BatteryCapacity int `json:"battery_capacity"` BeginTime int64 `json:"begin_time"` EndTime int64 `json:"end_time"` } `json:"ready_conditions"` RthAltitude int `json:"rth_altitude"` RthMode int `json:"rth_mode"` SimulateMission struct { IsEnable int `json:"is_enable"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` } `json:"simulate_mission"` TaskType int `json:"task_type"` WaylineType int `json:"wayline_type"` } `json:"data"` } func (receiver *FlighttaskPrepare) SetDefaultValue() { receiver.SetDefault() receiver.Method = Flighttask_prepare } // FlighttaskPrepareRes 任务下发 cory type FlighttaskPrepareRes struct { Public Data struct { FlightId string `json:"flight_id" dc:"计划 ID"` TaskType int `json:"task_type" dc:"任务类型"` ExecuteTime int64 `json:"execute_time" dc:"任务类型"` WaylineType int `json:"wayline_type" dc:"航线类型"` File *FileEntity `json:"file" dc:"航线文件对象"` RthAltitude int `json:"rth_altitude" dc:"返航高度" ` RthMode int `json:"rth_mode" dc:"返航高度模式"` OutOfControlAction int `json:"out_of_control_action" dc:"遥控器失控动作"` ExitWaylineWhenRcLost int `json:"exit_wayline_when_rc_lost" dc:"航线失控动作"` BreakPoint *BreakPoint `json:"break_point" dc:"断点信息" ` } `json:"data"` } type BreakPoint struct { Index int `json:"index" dc:"断点状态"` State int `json:"state" dc:"返航高度模式"` Progress float32 `json:"progress" dc:"遥控器失控动作"` WaylineId int `json:"wayline_id" dc:"航线失控动作"` } type FileEntity struct { Url string `json:"url" ` Fingerprint string `json:"fingerprint" ` } //type FlighttaskResourceGetEntity struct { // Data struct { // Output *FlighttaskResourceGetTutputEntity `json:"output" ` // } `json:"data"` //} //type FlighttaskResourceGetTutputEntity struct { // File *FileEntity `json:"file" dc:"航线文件对象"` //} func (receiver *FlighttaskPrepareRes) SetDefaultValueCory() { receiver.SetDefault() receiver.Method = Flighttask_prepare } /*任务资源获取*/ type FlighttaskResourcGet struct { Public Data struct { FlightId string `json:"flight_id"` } `json:"data"` } /*任务资源获取回复*/ type FlighttaskResourcGetReply struct { Public Data struct { Output struct { File struct { Fingerprint string `json:"fingerprint"` Url string `json:"url"` } `json:"file"` } `json:"output"` Result int `json:"result"` } `json:"data"` } func (receiver *FlighttaskResourcGetReply) SetDefaultValue() { receiver.SetDefault() receiver.Method = "flighttask_resource_get" } /*获取上传临时凭证*/ type StorageConfigGet struct { Public Data struct { Module int `json:"module"` } `json:"data"` } /*获取上传临时凭证回复*/ type StorageConfigGetReply struct { Public Data struct { Output struct { Bucket string `json:"bucket"` Credentials struct { AccessKeyId string `json:"access_key_id"` AccessKeySecret string `json:"access_key_secret"` Expire int `json:"expire"` SecurityToken string `json:"security_token"` } `json:"credentials"` Endpoint string `json:"endpoint"` ObjectKeyPrefix string `json:"object_key_prefix"` Provider string `json:"provider"` Region string `json:"region"` } `json:"output"` Result int `json:"result"` } `json:"data"` } /*配置更新回复*/ type ConfigReply struct { Public Data struct { AppId string `json:"app_id"` AppKey string `json:"app_key"` AppLicense string `json:"app_license"` NtpServerHost string `json:"ntp_server_host"` NtpServerPort int `json:"ntp_server_port"` } `json:"data"` } // FileUpLoadListDown 获取设备可上传的文件列表 发送到mqtt type FileUpLoadListDown struct { Public Data struct { ModuleList []string `json:"module_list" dc:"文件所属过滤列表"` } `json:"data"` } func (receiver *FileUpLoadListDown) SetDefaultValue() { receiver.SetDefault() receiver.Method = "fileupload_list" } // FileUpLoadListDownUp 获取设备可上传的文件列表 mqtt下发到本地服务 type FileUpLoadListDownUp struct { Public Data struct { Files []struct { DeviceSN string `json:"device_sn" dc:"设备序列号"` List []struct { BootIndex int `json:"boot_index" dc:"文件索引"` EndTime int64 `json:"end_time" dc:"日志结束时间"` Size int `json:"size" dc:"日志文件大小"` StartTime int64 `json:"start_time" dc:"日志开始时间"` } `json:"list" dc:"文件索引列表"` Module string `json:"module" dc:"所属设备类型(0飞行器 2机场)"` Result int `json:"result" dc:"返回码"` } `json:"files" dc:"文件所属过滤列表"` } `json:"data"` } // LogFileUploadReply 远程日志结构体 type LogFileUploadReply struct { Public Data struct { Bucket string `json:"bucket"` Credentials struct { AccessKeyId string `json:"access_key_id"` AccessKeySecret string `json:"access_key_secret"` Expire int `json:"expire"` SecurityToken string `json:"security_token"` } `json:"credentials"` Endpoint string `json:"endpoint"` Params struct { Files []File `json:"files"` //Files []struct { // List []struct { // BootIndex int `json:"boot_index"` // } `json:"list"` // Module string `json:"module"` // ObjectKey string `json:"object_key"` //} `json:"files"` } `json:"params"` Provider string `json:"provider"` Region string `json:"region"` } `json:"data"` } type File struct { List []FileList `json:"list"` Module string `json:"module"` ObjectKey string `json:"object_key"` } type FileList struct { BootIndex int `json:"boot_index"` } // SetDefaultValue Minio存储服务配置 func (receiver *StorageConfigGetReply) SetDefaultValue() { token, access, secret := MinioVoucher() Endpoint = g.Cfg().MustGet(context.Background(), "minio.endpoint").String() receiver.SetDefault() receiver.Method = "storage_config_get" receiver.Data.Result = 0 receiver.Data.Output.Bucket = BucketName receiver.Data.Output.Credentials.AccessKeyId = access receiver.Data.Output.Credentials.AccessKeySecret = secret receiver.Data.Output.Credentials.Expire = int(DurationSeconds) receiver.Data.Output.Credentials.SecurityToken = token receiver.Data.Output.Endpoint = "http://" + Endpoint receiver.Data.Output.Provider = "minio" receiver.Data.Output.Region = Region receiver.Data.Output.ObjectKeyPrefix = "uav" } // SetDefaultValue 配置更新 func (receiver *ConfigReply) SetDefaultValue() { ctx := context.Background() receiver.SetDefault() receiver.Method = "config" receiver.Data.AppId = g.Cfg().MustGet(ctx, "uav.config.appId").String() receiver.Data.AppKey = g.Cfg().MustGet(ctx, "uav.config.appKey").String() receiver.Data.AppLicense = g.Cfg().MustGet(ctx, "uav.config.appLicense").String() receiver.Data.NtpServerHost = g.Cfg().MustGet(ctx, "uav.config.ntpServerHost").String() receiver.Data.NtpServerPort = g.Cfg().MustGet(ctx, "uav.config.ntpServerPort").Int() } func (receiver *LogFileUploadReply) SetDefaultValue(rdata *FileUpLoadListDownUp) { token, access, secret := MinioVoucher() receiver.SetDefault() receiver.Method = "fileupload_start" receiver.Data.Bucket = BucketName receiver.Data.Region = Region receiver.Data.Credentials.AccessKeyId = access receiver.Data.Credentials.AccessKeySecret = secret receiver.Data.Credentials.Expire = int(DurationSeconds) receiver.Data.Credentials.SecurityToken = token receiver.Data.Endpoint = "http://" + coryCommon.Global + ":9999" receiver.Data.Provider = "minio" //fileOne := LogFileUploadReplySetDefaultValue(rdata, "0", "cory-create/log") //飞行器 fileTwo := LogFileUploadReplySetDefaultValue(rdata, "3", "log") //机场 var files []File //files = append(files, fileOne, fileTwo) files = append(files, fileTwo) receiver.Data.Params.Files = files } func LogFileUploadReplySetDefaultValue(rdata *FileUpLoadListDownUp, num string, objectKey string) (file File) { var fileList []FileList for _, data := range rdata.Data.Files { if data.Module == num { list := data.List for i := range list { if list[i].BootIndex == 3743 { //从2024-04-28 15:15:19 开始 fileList = append(fileList, FileList{ BootIndex: list[i].BootIndex, }) } } //err := copier.Copy(&fileList, &list) //if err != nil { // return //} } } file.List = fileList file.Module = num file.ObjectKey = objectKey return } /*负载控制—单拍*/ type CameraPhotoTake struct { Public Data struct { PayloadIndex string `json:"payload_index"` } `json:"data"` } func (receiver *CameraPhotoTake) SetDefaultValue() { receiver.SetDefault() receiver.Method = "camera_photo_take" } /*负载控制—重置云台*/ type GimbalReset struct { Public Data struct { PayloadIndex string `json:"payload_index" dc:"负载编号,相机枚举值。非标准的 device_mode_key,格式为 {type-subtype-gimbalindex}"` ResetMode int `json:"reset_mode" dc:"{0回中 1向下 2偏航回中 3俯仰向下}"` } `json:"data"` } func (receiver *GimbalReset) SetDefaultValue() { receiver.SetDefault() receiver.Method = "gimbal_reset" } /*设置直播清晰度*/ type LiveSetQuality struct { Public Data struct { VideoId string `json:"video_id"` VideoQuality int `json:"video_quality"` } `json:"data"` } func (receiver *LiveSetQuality) SetDefaultValue() { receiver.SetDefault() receiver.Method = "live_set_quality" } /*负载控制—单拍 响应恢复*/ type CameraPhotoTakeReply struct { Public Data struct { Result int `json:"result"` } `json:"data"` } /*航线执行进度上报*/ type WaylineProgress struct { Public Data struct { Output struct { Ext struct { BreakPoint struct { AttitudeHead float64 `json:"attitude_head"` BreakReason int `json:"break_reason"` Height float64 `json:"height"` Index int `json:"index"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` Progress float64 `json:"progress"` State int `json:"state"` WaylineId int `json:"wayline_id"` } `json:"break_point"` CurrentWaypointIndex int `json:"current_waypoint_index"` FlightId string `json:"flight_id"` MediaCount int `json:"media_count"` TrackId string `json:"track_id"` WaylineId int `json:"wayline_id"` WaylineMissionState int `json:"wayline_mission_state"` } `json:"ext"` Progress struct { CurrentStep int `json:"current_step"` Percent int `json:"percent"` } `json:"progress"` Status string `json:"status"` } `json:"output"` Result int `json:"result"` } `json:"data"` } type CoordinateEntity struct { Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` } type Point struct { CoordinateEntity Height float64 `json:"height"` } // TakeoffToPoint /*飞向目标点*/ type TakeoffToPoint struct { Public Data struct { CommanderFlightHeight int `json:"commander_flight_height"` CommanderModeLostAction int `json:"commander_mode_lost_action"` FlightId string `json:"flight_id"` MaxSpeed int `json:"max_speed"` RcLostAction int `json:"rc_lost_action"` RthAltitude int `json:"rth_altitude"` SecurityTakeoffHeight int `json:"security_takeoff_height"` TargetHeight int `json:"target_height"` TargetLatitude float64 `json:"target_latitude"` TargetLongitude float64 `json:"target_longitude"` } `json:"data"` } func (t *TakeoffToPoint) SetDefaultValue() { t.SetDefault() t.Method = Takeoff_to_point } /*飞向目标点*/ type FlyToPoint struct { Public Data struct { FlyToId string `json:"fly_to_id"` MaxSpeed int `json:"max_speed"` Points []Point `json:"points"` } `json:"data"` } func (t *FlyToPoint) SetDefaultValue() { t.SetDefault() t.Method = Fly_to_point } type FlyToPointStop struct { Public Data struct{} `json:"data"` } func (t *FlyToPointStop) SetDefaultValue() { t.SetDefault() t.Method = Fly_to_point_stop } // FlyToPointProgress /*飞向目标点的结果通知*/ type FlyToPointProgress struct { Public Data struct { FlyToId string `json:"fly_to_id"` PlannedPathPoints []struct { Height float64 `json:"height"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` } `json:"planned_path_points"` RemainingDistance int `json:"remaining_distance"` RemainingTime int `json:"remaining_time"` Result int `json:"result"` Status string `json:"status"` WayPointIndex int `json:"way_point_index"` } `json:"data"` } type FlightAuthorityGrab struct { Public Data struct{} `json:"data"` } func (t *FlightAuthorityGrab) SetDefaultValue() { t.SetDefault() t.Method = Flight_authority_grab } type SpeakerTtsPlayStart struct { Public Data struct { PsdkIndex int `json:"psdk_index"` Tts struct { Md5 string `json:"md5"` Name string `json:"name"` Text string `json:"text"` } `json:"tts"` } `json:"data"` } func (t *SpeakerTtsPlayStart) SetDefaultValue() { t.SetDefault() t.Method = Speaker_tts_play_start } type SpeakerAudioPlayStart struct { Public Data struct { PsdkIndex int `json:"psdk_index" dc:"psdk 负载设备索引(默认0)"` File struct { Name string `json:"name"` Url string `json:"url"` Md5 string `json:"md5"` Format string `json:"format"` } `json:"file"` } `json:"data"` } func (t *SpeakerAudioPlayStart) SetDefaultValue() { t.SetDefault() t.Method = Speaker_audio_play_start } // OtaCreateEntity 固件升级实体 type OtaCreateEntity struct { Public Data struct { DeviceList []OtaCreateDevice `json:"devices"` } `json:"data"` } type OtaCreateDevice struct { FileName string `json:"file_name"` // 文件名(可选字段) FileSize int64 `json:"file_size"` // 文件大小(可选字段,建议使用 int64 表示字节) FileURL string `json:"file_url"` // 文件 URL(可选字段) FirmwareUpgradeType int `json:"firmware_upgrade_type"` // 固件升级类型(必填字段) MD5 string `json:"md5"` // MD5 校验码(可选字段) ProductVersion string `json:"product_version"` // 产品版本(必填字段) SN string `json:"sn"` // 设备序列号(必填字段) } func (t *OtaCreateEntity) SetDefaultValue() { t.SetDefault() t.Method = OtaCreate }