Module: Flic::Protocol
- Extended by:
- Protocol
- Included in:
- 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
Overview
This module contains an implementation of the Flic binary protocol. Of particular external interest is ‘Flic::Protocol::Connection` which provides a wrapper for the binary protocol around a socket instance.
Defined Under Namespace
Modules: Commands, Events, Primitives Classes: Connection, Error, PacketHeader
Instance Method Summary collapse
-
#parse_command(serialized_command) ⇒ Flic::Protocol::Commands::Command
Deserializes an instance of a protocol command class from a binary string.
-
#parse_event(serialized_event) ⇒ Flic::Protocol::Events::Event
Deserializes an instance of a protocol event class from a binary string.
-
#serialize_command(command) ⇒ String
Serializes an instance of a protocol command class to a binary string.
-
#serialize_event(event) ⇒ String
Serializes an instance of a protocol event class to a binary string.
Instance Method Details
#parse_command(serialized_command) ⇒ Flic::Protocol::Commands::Command
Deserializes an instance of a protocol command class from a binary string
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/flic/protocol.rb', line 34 def 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) ⇒ Flic::Protocol::Events::Event
Deserializes an instance of a protocol event class from a binary string
65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/flic/protocol.rb', line 65 def 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) ⇒ String
Serializes an instance of a protocol command class to a binary string
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/flic/protocol.rb', line 20 def 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) ⇒ String
Serializes an instance of a protocol event class to a binary string
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/flic/protocol.rb', line 51 def 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 |