Skip to content

Commit

Permalink
Add ATT commands for GATT indications
Browse files Browse the repository at this point in the history
  • Loading branch information
trarbr authored and ConnorRigby committed Sep 13, 2021
1 parent cf5b3e2 commit 5fb088f
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/blue_heron/att.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ defmodule BlueHeron.ATT do
FindByTypeValueResponse,
FindInformationRequest,
FindInformationResponse,
HandleValueIndication,
HandleValueConfirmation,
PrepareWriteRequest,
PrepareWriteResponse,
ReadBlobRequest,
Expand Down Expand Up @@ -99,6 +101,12 @@ defmodule BlueHeron.ATT do
def deserialize(base, <<0x1B, _::binary>> = read_by_group_type_request),
do: %{base | data: HandleValueNotification.deserialize(read_by_group_type_request)}

def deserialize(base, <<0x1D, _::binary>> = handle_value_indication),
do: %{base | data: HandleValueIndication.deserialize(handle_value_indication)}

def deserialize(base, <<0x1E, _::binary>> = handle_value_confirmation),
do: %{base | data: HandleValueConfirmation.deserialize(handle_value_confirmation)}

def deserialize(base, <<0x52, _::binary>> = read_by_group_type_request),
do: %{base | data: WriteCommand.deserialize(read_by_group_type_request)}

Expand Down
11 changes: 11 additions & 0 deletions lib/blue_heron/att/confirmations/handle_value_confirmation.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
defmodule BlueHeron.ATT.HandleValueConfirmation do
defstruct [:opcode]

def serialize(%{}) do
<<0x1E>>
end

def deserialize(<<0x1E>>) do
%__MODULE__{opcode: 0x1E}
end
end
15 changes: 15 additions & 0 deletions lib/blue_heron/att/indications/handle_value_indication.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
defmodule BlueHeron.ATT.HandleValueIndication do
defstruct [:opcode, :handle, :value]

def serialize(%{handle: handle, value: value}) do
<<0x1D, handle::little-16, value::binary>>
end

def deserialize(<<0x1D, handle::little-16, value::binary>>) do
%__MODULE__{
opcode: 0x1D,
handle: handle,
value: value
}
end
end

0 comments on commit 5fb088f

Please sign in to comment.