Module: DjiMqttConnect::Types
- Defined in:
- lib/dji_mqtt_connect/types.rb
Overview
Types binding for dry-types
Constant Summary collapse
- NullInteger =
DJI does not like null, so it returns Integer 0 instead of a Decimal…
Types::Strict::Integer.constrained(eql: 0)
- ErrorInteger =
Negative values indicate a fault
Types::Strict::Integer.constrained(lt: 0)
- UUID =
Not a Strict UUID format… turns out DJI doesn’t follow one
Strict::String.constrained(format: /\A[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\z/i)
- Timestamp =
Timestamp in seconds since epoch
Types::Integer & Types::Coercible::String.constrained(format: /\A[1-9][0-9]{9}\z/)
- TimestampMS =
Just make sure Timestamps are 13 digits long (millisecond precision)
Types::Integer & Types::Coercible::String.constrained(format: /\A[1-9][0-9]{12}\z/)
- SerialNumber =
Serial Numbers are alphanumeric with optional hyphen
Types::String.constrained(format: /\A[0-9A-Z]+(-[0-9A-Z]+)?\z/)
- FlightID =
Flight ID is a string with at least 1 character
Types::String.constrained(min_size: 1)
- Latitude =
lat/lng coordinates
NullInteger | Types::JSON::Decimal.constrained(gteq: -90, lteq: 90)
- Longitude =
NullInteger | Types::JSON::Decimal.constrained(gteq: -180, lteq: 180)
- AIRCRAFT_DOMAIN =
Device Details
0- PAYLOAD_DOMAIN =
1- REMOTE_CONTROLLER_DOMAIN =
2- DOCK_DOMAIN =
3- DeviceDomain =
dock returns this value as string
Types::Coercible::Integer.enum(AIRCRAFT_DOMAIN, PAYLOAD_DOMAIN, REMOTE_CONTROLLER_DOMAIN, DOCK_DOMAIN)
- DeviceType =
Types::Integer
- DeviceSubType =
Types::Integer
- AirConditionerState =
mode (No cooling, heating, and dehumidification)”,“1”:“Cooling mode”,“2”:“Heating mode”,“3”:“Dehumidification mode”,“4”:“Cooling exit mode”,“5”:“Heating exit mode”,“6”:“Dehumidification exit mode”,“7”:“Cooling preparation mode”,“8”:“Heating preparation mode”,“9”:“Dehumidification preparation mode”
Types::Integer.enum(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
- AlarmState =
Types::Integer.enum( ALARM_STATE_CLOSED = 0, ALARM_STATE_OPEN = 1 )
- CameraMode =
Low-Light”,“3”:“Panorama”,“-1”:“Unsupported mode” “4”:“Timed Shot”
Types::Integer.enum( CAMERA_MODE_CAPTURING = 0, CAMERA_MODE_RECORDING = 1, CAMERA_MODE_SMART_LOW_LIGHT = 2, CAMERA_MODE_PANORAMA = 3, CAMERA_MODE_TIMED_SHOT = 4 )
- CoverState =
state is abnormal”
Types::Integer.enum( COVER_STATE_CLOSED = 0, COVER_STATE_OPEN = 1, COVER_STATE_HALF_OPEN = 2, COVER_STATE_ABNORMAL = 3 )
- DockModeCode =
debugging”,“2”:“Remote debugging”,“3”:“Firmware upgrading”,“4”:“Working”
Integer.enum( DOCK_MODE_CODE_IDLE = 0, DOCK_MODE_CODE_ON_SITE_DEBUGGING = 1, DOCK_MODE_CODE_REMOTE_DEBUGGING = 2, DOCK_MODE_CODE_UPGRADE = 3, DOCK_MODE_CODE_TASK_IN_PROGRESS = 4, DOCK_MODE_CODE_OFFLINE = 5, DOCK_MODE_CODE_EMERGENCY_STOP = 7, DOCK_MODE_CODE_PREPARING_JOB = 47, DOCK_MODE_CODE_JOB_IN_PROGRESS = 48, DOCK_MODE_CODE_JOB_IN_DONE = 49, DOCK_MODE_CODE_CUSTOM_FLIGHT_AREA_UPDATE = 50, DOCK_MODE_CODE_TERRAIN_OBSTACLE_UPDATE = 51 )
- DroneModeCode =
preparation”,“2”:“Takeoff preparation completed”,“3”:“Manual flight”,“4”:“Automatic takeoff”,“5”:“Wayline flight”,“6”:“Panoramic photography”,“7”:“Intelligent tracking”,“8”:“ADS-B avoidance”,“9”:“Auto returning to home”,“10”:“Automatic landing”,“11”:“Forced landing”,“12”:“Three-blade landing”,“13”:“Upgrading”,“14”:“Not connected”,“15”:“APAS”,“16”:“Virtual stick state”,“17”:“Live Flight Controls”,“18”:“Airborne RTK fixing mode”,“19”:“Dock address selecting”,“20”:“POI”
Types::Integer.enum( DRONE_MODE_STANDBY = 0, DRONE_MODE_TAKEOFF_PREPARATION = 1, DRONE_MODE_TAKEOFF_PREPARATION_COMPLETED = 2, DRONE_MODE_MANUAL_FLIGHT = 3, DRONE_MODE_AUTOMATIC_TAKEOFF = 4, DRONE_MODE_WAYLINE_FLIGHT = 5, DRONE_MODE_PANORAMIC_PHOTOGRAPHY = 6, DRONE_MODE_INTELLIGENT_TRACKING = 7, DRONE_MODE_ADS_B_AVOIDANCE = 8, DRONE_MODE_AUTO_RETURNING_TO_HOME = 9, DRONE_MODE_AUTOMATIC_LANDING = 10, DRONE_MODE_FORCED_LANDING = 11, DRONE_MODE_THREE_BLADE_LANDING = 12, DRONE_MODE_UPGRADING = 13, DRONE_MODE_NOT_CONNECTED = 14, DRONE_MODE_APAS = 15, DRONE_MODE_VIRTUAL_STICK_STATE = 16, DRONE_MODE_LIVE_FLIGHT_CONTROLS = 17, DRONE_MODE_AIRBORNE_RTK_FIXING_MODE = 18, DRONE_MODE_DOCK_ADDRESS_SELECTING = 19, DRONE_MODE_POI = 20, DRONE_MODE_SHUT_DOWN_IN_DOCK = 353101, DRONE_MODE_STARTING_UP = 353102, DRONE_MODE_NOT_REPORTED = 100, DRONE_MODE_FAILED = 65535 )
- DroneChargeState =
charging”,“1”:“charging”
Types::Integer.enum( DRONE_CHARGE_STATE_NOT_CHARGING = 0, DRONE_CHARGE_STATE_CHARGING = 1 )
- DroneInDock =
Integer.enum( DRONE_OUT_OF_DOCK = 0, DRONE_IN_DOCK = 1 )
- EmergencyStopState =
“0”:“Closed”,“1”:“Opened”
Types::Integer.enum( EMERGENCY_STOP_STATE_CLOSED = 0, EMERGENCY_STOP_STATE_OPEN = 1 )
- FlightTaskStepCode =
preparation”,“1”:“In-flight operation”,“2”:“Post-operation state recovery”,“3”:“Custom flight area updating”,“4”:“Terrain obstacle updating”,“5”:“Mission idle”,“255”:“Aircraft is abnormal”,“256”:“Unknown state”
Types::Integer.enum( FLIGHT_TASK_STEP_OPERATION_PREPARATION = 0, FLIGHT_TASK_STEP_IN_FLIGHT_OPERATION = 1, FLIGHT_TASK_STEP_POST_OPERATION_STATE_RECOVERY = 2, FLIGHT_TASK_STEP_CUSTOM_FLIGHT_AREA_UPDATING = 3, FLIGHT_TASK_STEP_TERRAIN_OBSTACLE_UPDATING = 4, FLIGHT_TASK_STEP_MISSION_IDLE = 5, FLIGHT_TASK_STEP_AIRCRAFT_IS_ABNORMAL = 255, FLIGHT_TASK_STEP_UNKNOWN_STATE = 256 )
- InvalidTemperature =
maximum temp of k-type thermocouple, errors are usually 30K+
Types::Integer.constrained(gteq: 1300)
- Temperature =
InvalidTemperature | Types::JSON::Decimal
- EventsProgressStepKey =
bid”,“check_work_mode”:“Check whether to enter remote debugging mode”,“check_task_state”:“Check if the DJI Dock is free”,“land_mcu_reboot”:“Land MCU reboot”,“rain_mcu_reboot”:“Weather station MCU reboot”,“core_mcu_reboot”:“Central control MCU reboot”,“sdr_reboot”:“SDR reboot”,“write_reboot_param_file”:“Write reboot flag”,“get_drone_power_state”:“Get battery charge state”,“close_putter”:“Close the putter”,“check_wired_connect_state”:“Get aircraft state”,“open_drone”:“Open the plane”,“open_alarm”:“Open sound and light alarm”,“check_scram_state”:“Check if the emergency stop switch is pressed”,“open_cover”:“Open the hatch”,“check_drone_sdr_connect_state”:“Establish SDR wireless connection”,“turn_on_drone”:“Turn the plane on”,“drone_paddle_forward”:“Turn on forward paddle”,“close_cover”:“Close the hatch”,“drone_paddle_reverse”:“Turn on reverse paddle”,“drone_paddle_stop”:“Stop Paddle Rotation”,“free_putter”:“Free Putter”,“stop_charge”:“Stop charging”
Types::String.enum( "get_bid", "check_work_mode", "check_task_state", "land_mcu_reboot", "rain_mcu_reboot", "core_mcu_reboot", "sdr_reboot", "write_reboot_param_file", "get_drone_power_state", "close_putter", "check_wired_connect_state", "open_drone", "open_alarm", "check_scram_state", "open_cover", "check_drone_sdr_connect_state", "turn_on_drone", "drone_paddle_forward", "close_cover", "drone_paddle_reverse", "drone_paddle_stop", "free_putter", "stop_charge", "plc_check" )
- NetworkStateType =
Integer.enum( NETWORK_STATE_TYPE_4G = 1, NETWORK_STATE_TYPE_ETHERNET = 2 )
- NetworkStateQuality =
Integer.enum( NETWORK_STATE_QUALITY_BAD = 0, NETWORK_STATE_QUALITY_MODERATE = 1, NETWORK_STATE_QUALITY_GOOD = 2 )
- PayloadIndex =
String.constrained(format: /\A\d+-\d+-\d+\z/)
- PositionStateQuality =
Types::Integer.enum(1, 2, 3, 4, 5, 10)
- PutterState =
state is abnormal”
Types::Integer.enum( PUTTER_STATE_CLOSED = 0, PUTTER_STATE_OPEN = 1, PUTTER_STATE_HALF_OPEN = 2, PUTTER_STATE_ABNORMAL = 3 )
- Rainfall =
rain”,“1”:“Light rain”,“2”:“Moderate rain”,“3”:“Heavy rain”
Types::Integer.enum( RAINFALL_NONE = 0, RAINFALL_LIGHT = 1, RAINFALL_MODERATE = 2, RAINFALL_HEAVY = 3 )
- ServicesOutputStatus =
progress”,“ok”:“success”,“paused”:“paused”,“rejected”:“rejected”,“failed”:“failed”,“canceled”:“canceled or stopped”,“timeout”:“timeout”
Types::String.enum( SERVICE_OUTPUT_STATUS_SENT = "sent", SERVICE_OUTPUT_STATUS_IN_PROGRESS = "in_progress", SERVICE_OUTPUT_STATUS_OK = "ok", SERVICE_OUTPUT_STATUS_PAUSED = "paused", SERVICE_OUTPUT_STATUS_REJECTED = "rejected", SERVICE_OUTPUT_STATUS_FAILED = "failed", SERVICE_OUTPUT_STATUS_CANCELED = "canceled", SERVICE_OUTPUT_STATUS_TIMEOUT = "timeout" )
- SupplementLightState =
“0”:“Closed”,“1”:“Opened”
Types::Integer.enum( SUPPLEMENT_LIGHT_STATE_CLOSED = 0, SUPPLEMENT_LIGHT_STATE_OPEN = 1 )
- VideoQuality =
Video Quality definition”,“3”:“High definition”,“4”:“Ultra-high definition”
Types::Integer.enum( VIDEO_QUALITY_ADAPTIVE = 0, VIDEO_QUALITY_SMOOTH = 1, VIDEO_QUALITY_STANDARD_DEFINITION = 2, VIDEO_QUALITY_HIGH_DEFINITION = 3, VIDEO_QUALITY_ULTRA_HIGH_DEFINITION = 4 )
- VideoType =
Video Type “ir”:“Infrared”,“normal”:“Default”,“wide”:“Wide-angle”,“zoom”:“Zoom”
Types::String.enum( VIDEO_TYPE_INFRARED = "ir", VIDEO_TYPE_NORMAL = "normal", VIDEO_TYPE_WIDE_ANGLE = "wide", VIDEO_TYPE_ZOOM = "zoom" )
- ResultCode =
Result for messages
Types::Integer.constrained(gteq: 0)