Skip to content

Commit a9750e4

Browse files
chrisdambrosiojjcarstens
authored andcommitted
Support FILETRANSFER command
1 parent 4d8c004 commit a9750e4

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

lib/jeff/command.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ defmodule Jeff.Command do
4848
ComSettings,
4949
EncryptionKey,
5050
EncryptionServer,
51+
FileTransfer,
5152
LedSettings,
5253
OutputSettings,
5354
TextSettings
@@ -117,6 +118,7 @@ defmodule Jeff.Command do
117118
defp encode(KEYSET, params), do: EncryptionKey.encode(params)
118119
defp encode(CHLNG, params), do: ChallengeData.encode(params)
119120
defp encode(SCRYPT, params), do: EncryptionServer.encode(params)
121+
defp encode(FILETRANSFER, params), do: FileTransfer.encode(params)
120122
defp encode(ACURXSIZE, size: size), do: <<size::size(16)-little>>
121123
defp encode(ABORT, _params), do: nil
122124

lib/jeff/command/file_transfer.ex

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
defmodule Jeff.Command.FileTransfer do
2+
@moduledoc """
3+
File Transfer Command Settings
4+
5+
OSDP v2.2 Specification Reference: 6.26
6+
"""
7+
8+
defstruct type: 1,
9+
total_size: 0,
10+
offset: 0,
11+
fragment_size: 0,
12+
data: <<>>
13+
14+
@type t :: %__MODULE__{
15+
type: 1..255,
16+
total_size: non_neg_integer(),
17+
offset: non_neg_integer(),
18+
data: binary(),
19+
}
20+
21+
@type param() ::
22+
{:type, 1..255}
23+
| {:total_size, non_neg_integer()}
24+
| {:offset, non_neg_integer()}
25+
| {:fragment_size, non_neg_integer()}
26+
| {:data, binary()}
27+
@type params() :: t() | [param()]
28+
29+
@spec new(params()) :: t()
30+
def new(params) do
31+
struct(__MODULE__, params)
32+
end
33+
34+
@spec encode(params()) :: binary()
35+
def encode(params) do
36+
settings = new(params)
37+
38+
<<
39+
settings.type,
40+
settings.total_size::size(4)-unit(8)-little,
41+
settings.offset::size(4)-unit(8)-little,
42+
settings.fragment_size::size(2)-unit(8)-little,
43+
settings.data::binary
44+
>>
45+
end
46+
end

0 commit comments

Comments
 (0)