Module: Flic::Protocol
- Defined in:
- lib/flic/protocol.rb,
lib/flic/protocol/events.rb,
lib/flic/protocol/commands.rb,
lib/flic/protocol/connection.rb,
lib/flic/protocol/primitives.rb,
lib/flic/protocol/events/event.rb,
lib/flic/protocol/commands/ping.rb,
lib/flic/protocol/packet_header.rb,
lib/flic/protocol/primitives/enum.rb,
lib/flic/protocol/primitives/uuid.rb,
lib/flic/protocol/commands/command.rb,
lib/flic/protocol/commands/get_info.rb,
lib/flic/protocol/primitives/boolean.rb,
lib/flic/protocol/events/ping_response.rb,
lib/flic/protocol/primitives/click_type.rb,
lib/flic/protocol/primitives/device_name.rb,
lib/flic/protocol/commands/create_scanner.rb,
lib/flic/protocol/commands/remove_scanner.rb,
lib/flic/protocol/primitives/latency_mode.rb,
lib/flic/protocol/commands/get_button_uuid.rb,
lib/flic/protocol/events/button_up_or_down.rb,
lib/flic/protocol/events/get_info_response.rb,
lib/flic/protocol/commands/force_disconnect.rb,
lib/flic/protocol/primitives/removed_reason.rb,
lib/flic/protocol/events/new_verified_button.rb,
lib/flic/protocol/primitives/disconnect_time.rb,
lib/flic/protocol/commands/cancel_scan_wizard.rb,
lib/flic/protocol/commands/create_scan_wizard.rb,
lib/flic/protocol/events/advertisement_packet.rb,
lib/flic/protocol/events/button_click_or_hold.rb,
lib/flic/protocol/events/scan_wizard_completed.rb,
lib/flic/protocol/primitives/bluetooth_address.rb,
lib/flic/protocol/primitives/connection_status.rb,
lib/flic/protocol/primitives/disconnect_reason.rb,
lib/flic/protocol/primitives/scan_wizard_result.rb,
lib/flic/protocol/commands/change_mode_parameters.rb,
lib/flic/protocol/events/get_button_uuid_response.rb,
lib/flic/protocol/events/connection_status_changed.rb,
lib/flic/protocol/events/connection_channel_removed.rb,
lib/flic/protocol/primitives/bluetooth_address_type.rb,
lib/flic/protocol/commands/create_connection_channel.rb,
lib/flic/protocol/commands/remove_connection_channel.rb,
lib/flic/protocol/events/no_space_for_new_connection.rb,
lib/flic/protocol/events/got_space_for_new_connection.rb,
lib/flic/protocol/events/scan_wizard_button_connected.rb,
lib/flic/protocol/events/button_single_or_double_click.rb,
lib/flic/protocol/primitives/bluetooth_controller_state.rb,
lib/flic/protocol/events/scan_wizard_found_public_button.rb,
lib/flic/protocol/events/scan_wizard_found_private_button.rb,
lib/flic/protocol/events/bluetooth_controller_state_change.rb,
lib/flic/protocol/events/create_connection_channel_response.rb,
lib/flic/protocol/primitives/create_connection_channel_error.rb,
lib/flic/protocol/events/button_single_or_double_click_or_hold.rb
Defined Under Namespace
Modules: Commands, Events, Primitives
Classes: Connection, Error, PacketHeader
Constant Summary
collapse
- INVALID_BUTTON_UUID =
'00000000-0000-0000-0000-000000000000'.freeze
Class Method Summary
collapse
Class Method Details
.parse_command(serialized_command) ⇒ Object
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/flic/protocol.rb', line 26
def self.parse_command(serialized_command)
command = Commands::Command.read(serialized_command)
opcode = command.opcode
command_class = Commands::Command.command_class_for_opcode(opcode)
if command_class
command_class.read(serialized_command)
else
raise NotImplementedError, "Unknown command opcode #{opcode}"
end
rescue
raise Error, "Cannot parse event `#{serialized_command.inspect}`"
end
|
.parse_event(serialized_event) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/flic/protocol.rb', line 51
def self.parse_event(serialized_event)
event = Events::Event.read(serialized_event)
opcode = event.opcode
event_class = Events.event_class_for_opcode(opcode)
if event_class
event_class.read(serialized_event)
else
raise NotImplementedError, "Unknown event opcode #{opcode}"
end
rescue
raise Error, "Cannot parse event `#{serialized_event.inspect}`"
end
|
.serialize_command(command) ⇒ Object
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/flic/protocol.rb', line 15
def self.serialize_command(command)
case command
when Commands::Command
command.to_binary_s
else
raise NotImplementedError
end
rescue
raise Error, "Cannot serialize command `#{command.inspect}`"
end
|
.serialize_event(event) ⇒ Object
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/flic/protocol.rb', line 40
def self.serialize_event(event)
case event
when Commands::Event
event.to_binary_s
else
raise NotImplementedError
end
rescue
raise Error, "Cannot serialize event `#{event.inspect}`"
end
|