Sha256: 0a22dac42c60b223cb16361c3df654b285ddc13c9ec2b4f349eb485547fdd544

Contents?: true

Size: 1.92 KB

Versions: 5

Compression:

Stored size: 1.92 KB

Contents

# frozen_string_literal: true

require "dry-types"

module DjiMqttConnect
  # Types binding for dry-types
  module Types
    include Dry::Types()

    # DJI does not like null, so it returns Integer 0 instead of a Decimal...
    NullInteger = Types::Strict::Integer.constrained(eql: 0)

    # Not a Strict UUID format... turns out DJI doesn't follow one
    UUID = 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)

    # Just make sure Timestamps are positive
    Timestamp = Types::Integer.constrained(gteq: 0)

    SerialNumber = Types::String

    # lat/lng coordinates
    Latitude = NullInteger | Types::JSON::Decimal.constrained(gteq: -90, lteq: 90)
    Longitude = NullInteger | Types::JSON::Decimal.constrained(gteq: -180, lteq: 180)

    # Device Details
    AIRCRAFT_DOMAIN = 0
    PAYLOAD_DOMAIN = 1
    REMOTE_CONTROLLER_DOMAIN = 2
    DOCK_DOMAIN = 3

    DeviceDomain = Types::Coercible::Integer.enum(AIRCRAFT_DOMAIN, PAYLOAD_DOMAIN, REMOTE_CONTROLLER_DOMAIN, DOCK_DOMAIN) # dock returns this value as string
    DeviceType = Types::Integer
    DeviceSubType = Types::Integer

    InvalidTemperature = Types::Integer.constrained(gteq: 1300) # maximum temp of k-type thermocouple, errors are usually 30K+
    Temperature = InvalidTemperature | Types::JSON::Decimal

    # {"sent":"sent","in_progress":"in progress","ok":"success","paused":"paused","rejected":"rejected","failed":"failed","canceled":"canceled or stopped","timeout":"timeout"}
    ServicesOutputStatus = 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"
    )
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dji_mqtt_connect-0.1.15.2 lib/dji_mqtt_connect/types.rb
dji_mqtt_connect-0.1.15.1 lib/dji_mqtt_connect/types.rb
dji_mqtt_connect-0.1.15 lib/dji_mqtt_connect/types.rb
dji_mqtt_connect-0.1.14.1 lib/dji_mqtt_connect/types.rb
dji_mqtt_connect-0.1.14 lib/dji_mqtt_connect/types.rb