Sha256: 90c269b20d8972f007ecf983fe7d9389763e29360d529815c7d24864ab329f07

Contents?: true

Size: 1.27 KB

Versions: 13

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module DjiMqttConnect
  module Thing::Product
    class OsdTopicRepository < TopicRepository
      OSD_TOPIC_REGEX = /\Athing\/product\/(?<device_sn>.+)\/osd\z/

      def listen!
        listen_to_topic("thing/product/+/osd") do |topic, raw_message|
          logger.debug(raw_message)

          matched_topic = OSD_TOPIC_REGEX.match(topic)
          raise Error, "Unknown topic: #{topic}" unless matched_topic

          device_sn = matched_topic[:device_sn]
          message = OsdMarshal.load(raw_message)

          logger.info("Received #{message} from #{device_sn}")

          # Broadcast a generic received osd message event
          broadcast(:received_osd_message, device_sn, message)

          if message.instance_of?(OsdMessage)
            # Broadcast an unsupported message event
            broadcast(:unsupported_message, topic, raw_message)
          else
            # Build event name and broadcast (i.e. ::RemoteOsdMessage => remote_osd_update)
            event_name = message.class.name.demodulize.sub(/Message\z/, "Update").underscore.to_sym
            broadcast(event_name, device_sn, message)
          end
        rescue ParseError => error
          broadcast(:parse_error, error, topic, raw_message)
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
dji_mqtt_connect-0.1.27.1 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.27 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.26 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.25.5 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.25.4 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.25.3 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.25.2 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.25.1 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.25 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.24.1 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.24 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.23.3 lib/dji_mqtt_connect/topics/thing/product/osd.rb
dji_mqtt_connect-0.1.23.2 lib/dji_mqtt_connect/topics/thing/product/osd.rb