Skip to content

Commit

Permalink
Code styling updates
Browse files Browse the repository at this point in the history
  • Loading branch information
abelino committed Oct 14, 2024
1 parent a86f924 commit f2abab7
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 121 deletions.
16 changes: 8 additions & 8 deletions lib/bacnet.ex
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,14 @@ defmodule BACNet do
bacnetd_exe = "#{:code.priv_dir(:bacnet)}/bacnetd"

env =
[]
|> maybe_add_env(~c"BACNET_IFACE", args[:network_interface])
|> maybe_add_env(~c"BACNET_NETWORK_ID", args[:network_id])
|> maybe_add_env(~c"BACNET_VENDOR_ID", args[:vendor_id])
|> maybe_add_env(~c"BACNET_VENDOR_NAME", args[:vendor_name])
[
{~c"BACNET_IFACE", args[:network_interface]},
{~c"BACNET_NETWORK_ID", args[:network_id]},
{~c"BACNET_VENDOR_ID", args[:vendor_id]},
{~c"BACNET_VENDOR_NAME", args[:vendor_name]},
]
|> Enum.reject(fn {_key, value} -> is_nil(value) end)
|> Enum.map(fn {key, value} -> {key, to_charlist(value)} end)

port =
Port.open(
Expand Down Expand Up @@ -75,7 +78,4 @@ defmodule BACNet do
defp process_message(unknown) do
Logger.warning("Unknown message received #{inspect(unknown)}")
end

defp maybe_add_env(env, _key, nil), do: env
defp maybe_add_env(env, key, value), do: [{key, to_charlist(value)} | env]
end
40 changes: 18 additions & 22 deletions lib/bacnet/gateway.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,22 @@ defmodule BACNet.Gateway do
BACnet process and it is assumed to be the first Routed device created.
"""
@spec create(
pid :: pid,
gateway_id :: integer,
name :: String.t(),
description :: String.t(),
model :: String.t(),
firmware_version :: String.t()
) :: :ok | {:error, term}
pid :: pid,
gateway_id :: integer,
name :: String.t(),
description :: String.t(),
model :: String.t(),
firmware_version :: String.t()
) :: :ok | {:error, term}
def create(pid, gateway_id, name, description, model, firmware_version) do
request = {
GenServer.call(pid, {
:create_gateway,
gateway_id,
name,
description,
model,
firmware_version,
}

GenServer.call(pid, request)
})
end

@doc """
Expand All @@ -41,23 +39,21 @@ defmodule BACNet.Gateway do
- `firmware_version`: The firmware version currently running on the device.
"""
@spec create_routed_device(
pid :: pid,
device_id :: integer,
name :: String.t(),
description :: String.t(),
model :: String.t(),
firmware_version :: String.t()
) :: :ok | {:error, term}
pid :: pid,
device_id :: integer,
name :: String.t(),
description :: String.t(),
model :: String.t(),
firmware_version :: String.t()
) :: :ok | {:error, term}
def create_routed_device(pid, device_id, name, description, model, firmware_version) do
request = {
GenServer.call(pid, {
:create_routed_device,
device_id,
name,
description,
model,
firmware_version,
}

GenServer.call(pid, request)
})
end
end
81 changes: 43 additions & 38 deletions lib/bacnet/gateway/object.ex
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,20 @@ defmodule BACNet.Gateway.Object do
- `unit`: The unit of measurement for the analog input, represented as an atom.
"""
@spec create_analog_input(
pid :: pid,
device_id :: integer,
object_id :: integer,
name :: String.t,
unit :: atom
) :: :ok | {:error, term}
pid :: pid,
device_id :: integer,
object_id :: integer,
name :: String.t,
unit :: atom
) :: :ok | {:error, term}
def create_analog_input(pid, device_id, object_id, name, unit) do
request = {
GenServer.call(pid, {
:create_routed_analog_input,
device_id,
object_id,
name,
unit,
}

GenServer.call(pid, request)
})
end

@doc """
Expand All @@ -44,16 +42,18 @@ defmodule BACNet.Gateway.Object do
- `value`: The new present value to be set for the analog input.
"""
@spec set_analog_input_present_value(
pid :: pid,
device_id :: integer,
object_id :: integer,
value :: float
) :: :ok | {:error, term}
pid :: pid,
device_id :: integer,
object_id :: integer,
value :: float
) :: :ok | {:error, term}
def set_analog_input_present_value(pid, device_id, object_id, value) do
request =
{:set_routed_analog_input_value, device_id, object_id, value}

GenServer.call(pid, request)
GenServer.call(pid, {
:set_routed_analog_input_value,
device_id,
object_id,
value,
})
end

@doc """
Expand All @@ -67,17 +67,20 @@ defmodule BACNet.Gateway.Object do
- `name`: A unique name for the object.
"""
@spec create_multistate_input(
pid :: pid,
device_id :: integer,
object_id :: integer,
name :: String.t,
states :: [String.t]
) :: :ok | {:error, term}
pid :: pid,
device_id :: integer,
object_id :: integer,
name :: String.t,
states :: [String.t]
) :: :ok | {:error, term}
def create_multistate_input(pid, device_id, object_id, name, states) do
request =
{:create_routed_multistate_input, device_id, object_id, name, states}

GenServer.call(pid, request)
GenServer.call(pid, {
:create_routed_multistate_input,
device_id,
object_id,
name,
states,
})
end

@doc """
Expand All @@ -91,15 +94,17 @@ defmodule BACNet.Gateway.Object do
- `value`: The new present value to be set for the multistate input.
"""
@spec set_multistate_input_present_value(
pid :: pid,
device_id :: integer,
object_id :: integer,
value :: non_neg_integer
) :: :ok | {:error, term}
pid :: pid,
device_id :: integer,
object_id :: integer,
value :: non_neg_integer
) :: :ok | {:error, term}
def set_multistate_input_present_value(pid, device_id, object_id, value) do
request =
{:set_routed_multistate_input_value, device_id, object_id, value}

GenServer.call(pid, request)
GenServer.call(pid, {
:set_routed_multistate_input_value,
device_id,
object_id,
value,
})
end
end
39 changes: 21 additions & 18 deletions src/bacnet.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@
#include "log.h"
#include "protocol/decode_call.h"

#define REPLY_OK(reply) \
ei_x_encode_atom(reply, "ok")

#define REPLY_ERROR(reply, reason) \
ei_x_encode_tuple_header(reply, 2); \
ei_x_encode_atom(reply, "error"); \
ei_x_encode_atom(reply, reason)

static pthread_t thread_id;
pthread_mutex_t exit_signal_lock = PTHREAD_MUTEX_INITIALIZER;
static bool should_exit = false;
Expand Down Expand Up @@ -127,21 +135,17 @@ void handle_bacnet_request(char* buffer, int* index, ei_x_buff* reply)
|| type == CALL_UNKNOWN;

if (is_bad_request) {
ei_x_encode_tuple_header(reply, 2);
ei_x_encode_atom(reply, "error");
ei_x_encode_atom(reply, "bad_request");
REPLY_ERROR(reply, "bad_request");
goto cleanup;
}

call_handler_t handler = CALL_HANDLERS_BY_TYPE[type];

if (handler(data)) {
ei_x_encode_tuple_header(reply, 2);
ei_x_encode_atom(reply, "error");
ei_x_encode_atom(reply, "failed_processing");
REPLY_ERROR(reply, "failed_processing");
}
else {
ei_x_encode_atom(reply, "ok");
REPLY_OK(reply);
}

cleanup:
Expand All @@ -150,7 +154,7 @@ void handle_bacnet_request(char* buffer, int* index, ei_x_buff* reply)

static void* event_loop(void* arg)
{
int NETWORK_IDS[2] = {bacnet_network_id, -1};
int network_ids[2] = { bacnet_network_id, -1 };
uint8_t buffer[MAX_MPDU] = { 0 };

LOG_DEBUG("bacnetd: starting event_loop");
Expand All @@ -172,29 +176,27 @@ static void* event_loop(void* arg)
continue;

LOG_DEBUG("bacnetd: sending request to npdu handler");
routing_npdu_handler(&src_address, NETWORK_IDS, &buffer[0], length);
routing_npdu_handler(&src_address, network_ids, &buffer[0], length);
}

pthread_exit(NULL);
}

static void
abort_handler(
static void abort_handler(
BACNET_ADDRESS* src,
uint8_t invoke_id,
uint8_t abort_reason,
bool server)
{
bool server
) {
const char* reason = bactext_abort_reason_name(abort_reason);
LOG_WARNING("bacnetd: aborting request %s", reason);
}

static void
reject_handler(
static void reject_handler(
BACNET_ADDRESS* src,
uint8_t invoke_id,
uint8_t reject_reason)
{
uint8_t reject_reason
) {
const char* reason = bactext_reject_reason_name(reject_reason);
LOG_DEBUG("bacnetd: rejecting request %s", reason);
}
Expand Down Expand Up @@ -408,7 +410,8 @@ static int handle_create_routed_device(create_routed_device_t* device)
&device->name,
device->description,
device->model,
device->firmware_version);
device->firmware_version
);

DEVICE_OBJECT_DATA* child = Get_Routed_Device_Object(index);
set_device_address(child, bacnet_network_id);
Expand Down
Loading

0 comments on commit f2abab7

Please sign in to comment.