dji_mqtt_connect 0.1.4.1 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/dji_mqtt_connect/marshals/sys/product/status_marshal.rb +4 -5
- data/lib/dji_mqtt_connect/marshals/thing/product/events_marshal.rb +42 -4
- data/lib/dji_mqtt_connect/marshals/thing/product/requests_marshal.rb +4 -5
- data/lib/dji_mqtt_connect/messages/thing/product/hms_events_message.rb +2 -2
- data/lib/dji_mqtt_connect/messages/thing/product/status_code_events_message.rb +16 -0
- data/lib/dji_mqtt_connect/utils/message_parsing.rb +1 -2
- data/lib/dji_mqtt_connect/version.rb +1 -1
- data/lib/dji_mqtt_connect.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f3489491c80c51e9cbebab42f61424b155f1f4d59d33a148e2b44e7a4c614656
|
4
|
+
data.tar.gz: 8a54082a6edf3be34c1ddb1db361d1d684638e1570eb0a68a69ed21c7f13da1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6881b79bc2c695280c83d1ed70515cd26a8aa842a6676c3775b038f42b36eac76712462606676239638a626a838e7a8ecfdfae64004dd6401c23d37d0ce2605a
|
7
|
+
data.tar.gz: c1f9ae6a703e2143feb06798566e1297a2e883f438ab78d1713e9392380b090c359a85b93707e7d341de9e7822509b83446e904b9c567b63e91b0806eaec56fb
|
data/Gemfile.lock
CHANGED
@@ -13,10 +13,8 @@ module DjiMqttConnect
|
|
13
13
|
import Dry::Transformer::HashTransformations
|
14
14
|
|
15
15
|
define! do
|
16
|
-
|
17
|
-
|
18
|
-
copy_keys data: :_data
|
19
|
-
rename_keys method: :_method
|
16
|
+
copy_keys "data" => "_data"
|
17
|
+
rename_keys "method" => "_method"
|
20
18
|
end
|
21
19
|
end
|
22
20
|
|
@@ -27,9 +25,10 @@ module DjiMqttConnect
|
|
27
25
|
|
28
26
|
# Transform the message
|
29
27
|
transformed_message = attribute_transformer.call(parsed_message)
|
28
|
+
message_method = transformed_message["_method"]
|
30
29
|
|
31
30
|
# Build an instance of the class, or a generic message from the current class
|
32
|
-
message_class =
|
31
|
+
message_class = message_class_from_message_method(message_method, StatusMessage)
|
33
32
|
message_class.new transformed_message
|
34
33
|
rescue JSON::ParserError => e
|
35
34
|
raise ParseError.new(e, "Unable to parse message as JSON")
|
@@ -11,13 +11,50 @@ module DjiMqttConnect
|
|
11
11
|
|
12
12
|
# Rename pesky `method` argument to `_method` and makes a copy of the raw data
|
13
13
|
class AttributeTransformer < Dry::Transformer::Pipe
|
14
|
+
import Dry::Transformer::Conditional
|
15
|
+
import Dry::Transformer::ArrayTransformations
|
14
16
|
import Dry::Transformer::HashTransformations
|
15
17
|
|
16
18
|
define! do
|
17
|
-
|
19
|
+
# Keep a copy of the original data hash
|
20
|
+
copy_keys "data" => "_data"
|
18
21
|
|
19
|
-
|
20
|
-
|
22
|
+
# Fix the legacy hms message
|
23
|
+
guard ->(message) { message.dig("data", "method") == "hms" } do
|
24
|
+
map_value "data" do
|
25
|
+
reject_keys ["event"]
|
26
|
+
|
27
|
+
map_value "output" do
|
28
|
+
map_value "codes" do
|
29
|
+
map_array do
|
30
|
+
nest "args", ["component_index", "sensor_index"]
|
31
|
+
|
32
|
+
map_value "id", ->(id) { "0x#{id}" }
|
33
|
+
rename_keys "id" => "code"
|
34
|
+
|
35
|
+
deep_merge({"module" => 3}) # hardcoded to hms module
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
unwrap "output", ["codes"]
|
41
|
+
|
42
|
+
rename_keys "codes" => "list"
|
43
|
+
end
|
44
|
+
|
45
|
+
unwrap "data", ["method"]
|
46
|
+
end
|
47
|
+
|
48
|
+
# Fix the legacy status code message
|
49
|
+
guard ->(message) { message.dig("data", "method") == "status_code" } do
|
50
|
+
map_value "data" do
|
51
|
+
unwrap "output", ["codes"]
|
52
|
+
end
|
53
|
+
|
54
|
+
unwrap "data", ["method"]
|
55
|
+
end
|
56
|
+
|
57
|
+
rename_keys "method" => "_method"
|
21
58
|
end
|
22
59
|
end
|
23
60
|
|
@@ -28,9 +65,10 @@ module DjiMqttConnect
|
|
28
65
|
|
29
66
|
# Transform the message
|
30
67
|
transformed_message = attribute_transformer.call(parsed_message)
|
68
|
+
message_method = transformed_message["_method"]
|
31
69
|
|
32
70
|
# Build an instance of the class, or a generic message from the current class
|
33
|
-
message_class =
|
71
|
+
message_class = message_class_from_message_method(message_method, EventsMessage)
|
34
72
|
message_class.new transformed_message
|
35
73
|
rescue JSON::ParserError => e
|
36
74
|
raise ParseError.new(e, "Unable to parse message as JSON")
|
@@ -14,10 +14,8 @@ module DjiMqttConnect
|
|
14
14
|
import Dry::Transformer::HashTransformations
|
15
15
|
|
16
16
|
define! do
|
17
|
-
|
18
|
-
|
19
|
-
copy_keys data: :_data
|
20
|
-
rename_keys method: :_method
|
17
|
+
copy_keys "data" => "_data"
|
18
|
+
rename_keys "method" => "_method"
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
@@ -28,9 +26,10 @@ module DjiMqttConnect
|
|
28
26
|
|
29
27
|
# Transform the message
|
30
28
|
transformed_message = attribute_transformer.call(parsed_message)
|
29
|
+
message_method = transformed_message["_method"]
|
31
30
|
|
32
31
|
# Build an instance of the class, or a generic message from the current class
|
33
|
-
message_class =
|
32
|
+
message_class = message_class_from_message_method(message_method, RequestsMessage)
|
34
33
|
message_class.new transformed_message
|
35
34
|
rescue JSON::ParserError => e
|
36
35
|
raise ParseError.new(e, "Unable to parse message as JSON")
|
@@ -14,12 +14,12 @@ module DjiMqttConnect
|
|
14
14
|
attribute :module, Types::Integer.enum(0, 1, 2, 3)
|
15
15
|
|
16
16
|
# {"0":"on the ground","1":"in the sky"}
|
17
|
-
attribute :in_the_sky, Types::Integer.enum(0, 1)
|
17
|
+
attribute? :in_the_sky, Types::Integer.enum(0, 1)
|
18
18
|
|
19
19
|
attribute :code, Types::String
|
20
20
|
|
21
21
|
# {"0":"No","1":"Yes"}
|
22
|
-
attribute :imminent, Types::Integer.enum(0, 1)
|
22
|
+
attribute? :imminent, Types::Integer.enum(0, 1)
|
23
23
|
|
24
24
|
attribute :args do
|
25
25
|
attribute :component_index, Types::Integer
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DjiMqttConnect
|
4
|
+
module Thing::Product
|
5
|
+
# NOTE: Message is not documented, but observed from M30 Drones
|
6
|
+
class StatusCodeEventsMessage < EventsMessage
|
7
|
+
attribute :_method, Types::String.enum("status_code")
|
8
|
+
|
9
|
+
attribute :data do
|
10
|
+
attribute :codes, Types::Array do
|
11
|
+
attribute :id, Types::Integer
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -5,8 +5,7 @@ module DjiMqttConnect
|
|
5
5
|
module MessageParsing
|
6
6
|
private
|
7
7
|
|
8
|
-
def
|
9
|
-
message_method = parsed_message["method"]
|
8
|
+
def message_class_from_message_method(message_method, generic_class)
|
10
9
|
return generic_class if message_method.blank?
|
11
10
|
|
12
11
|
# update_topo => UpdateTopo
|
data/lib/dji_mqtt_connect.rb
CHANGED
@@ -34,6 +34,7 @@ module DjiMqttConnect
|
|
34
34
|
module Product
|
35
35
|
# Messages
|
36
36
|
autoload :HmsEventsMessage, "dji_mqtt_connect/messages/thing/product/hms_events_message"
|
37
|
+
autoload :StatusCodeEventsMessage, "dji_mqtt_connect/messages/thing/product/status_code_events_message"
|
37
38
|
autoload :EventsMessage, "dji_mqtt_connect/messages/thing/product/events_message"
|
38
39
|
|
39
40
|
autoload :OsdMessage, "dji_mqtt_connect/messages/thing/product/osd_message"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dji_mqtt_connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sphere Drones
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- lib/dji_mqtt_connect/messages/thing/product/osd_message.rb
|
133
133
|
- lib/dji_mqtt_connect/messages/thing/product/remote_osd_message.rb
|
134
134
|
- lib/dji_mqtt_connect/messages/thing/product/requests_message.rb
|
135
|
+
- lib/dji_mqtt_connect/messages/thing/product/status_code_events_message.rb
|
135
136
|
- lib/dji_mqtt_connect/messages/thing/product/storage_config_get_requests_message.rb
|
136
137
|
- lib/dji_mqtt_connect/messages/thing/product/storage_config_get_requests_reply_message.rb
|
137
138
|
- lib/dji_mqtt_connect/mixins/latitude_conditional.rb
|