Skip to content

Commit c48ee81

Browse files
author
CI
committed
Sync to GitHub
1 parent 5080633 commit c48ee81

2 files changed

Lines changed: 13 additions & 11 deletions

File tree

lib/bacnet/stack/transport/mstp_transport.ex

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3202,7 +3202,7 @@ if Code.ensure_loaded?(Circuits.UART) do
32023202
end)
32033203

32043204
header = [0, destination, state.local_address, 0, 0]
3205-
crc = EncodingTools.calculate_header_crc(header, 0xFF)
3205+
crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
32063206
payload = [@mstp_start_byte, @mstp_preamble_byte, header, crc]
32073207

32083208
send_uart_data(state, payload)
@@ -3217,7 +3217,7 @@ if Code.ensure_loaded?(Circuits.UART) do
32173217
end)
32183218

32193219
header = [1, destination, state.local_address, 0, 0]
3220-
crc = EncodingTools.calculate_header_crc(header, 0xFF)
3220+
crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
32213221
payload = [@mstp_start_byte, @mstp_preamble_byte, header, crc]
32223222

32233223
with {:ok, state} <- send_uart_data(state, payload) do
@@ -3235,7 +3235,7 @@ if Code.ensure_loaded?(Circuits.UART) do
32353235
end)
32363236

32373237
header = [2, destination, state.local_address, 0, 0]
3238-
crc = EncodingTools.calculate_header_crc(header, 0xFF)
3238+
crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
32393239
payload = [@mstp_start_byte, @mstp_preamble_byte, header, crc]
32403240

32413241
send_uart_data(state, payload)
@@ -3252,7 +3252,7 @@ if Code.ensure_loaded?(Circuits.UART) do
32523252
data_len = IO.iodata_length(data)
32533253

32543254
header = [3, destination, state.local_address, <<data_len::size(16)>>]
3255-
header_crc = EncodingTools.calculate_header_crc(header, 0xFF)
3255+
header_crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
32563256

32573257
data_payload =
32583258
if data_len > 0 do
@@ -3291,7 +3291,7 @@ if Code.ensure_loaded?(Circuits.UART) do
32913291
data_len = state_data.data_length
32923292

32933293
header = [4, state_data.source_address, state.local_address, <<data_len::size(16)>>]
3294-
header_crc = EncodingTools.calculate_header_crc(header, 0xFF)
3294+
header_crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
32953295

32963296
data_payload =
32973297
if data_len > 0 do
@@ -3334,7 +3334,7 @@ if Code.ensure_loaded?(Circuits.UART) do
33343334
end)
33353335

33363336
header = [5, destination, state.local_address, <<data_len::size(16)>>]
3337-
header_crc = EncodingTools.calculate_header_crc(header, 0xFF)
3337+
header_crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
33383338

33393339
data_payload =
33403340
if data_len > 0 do
@@ -3374,7 +3374,7 @@ if Code.ensure_loaded?(Circuits.UART) do
33743374
end)
33753375

33763376
header = [6, destination, state.local_address, <<data_len::size(16)>>]
3377-
header_crc = EncodingTools.calculate_header_crc(header, 0xFF)
3377+
header_crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
33783378

33793379
data_payload =
33803380
if data_len > 0 do
@@ -3410,7 +3410,7 @@ if Code.ensure_loaded?(Circuits.UART) do
34103410
end)
34113411

34123412
header = [7, destination, state.local_address, 0, 0]
3413-
crc = EncodingTools.calculate_header_crc(header, 0xFF)
3413+
crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
34143414
payload = [@mstp_start_byte, @mstp_preamble_byte, header, crc]
34153415

34163416
send_uart_data(state, payload)
@@ -3433,7 +3433,7 @@ if Code.ensure_loaded?(Circuits.UART) do
34333433
cobs_len = IO.iodata_length(cobs_data) - 2
34343434

34353435
header = [32, destination, state.local_address, <<cobs_len::size(16)>>]
3436-
header_crc = EncodingTools.calculate_header_crc(header, 0xFF)
3436+
header_crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
34373437

34383438
payload = [@mstp_start_byte, @mstp_preamble_byte, header, header_crc, cobs_data]
34393439

@@ -3467,7 +3467,7 @@ if Code.ensure_loaded?(Circuits.UART) do
34673467
cobs_len = IO.iodata_length(cobs_data) - 2
34683468

34693469
header = [33, destination, state.local_address, <<cobs_len::size(16)>>]
3470-
header_crc = EncodingTools.calculate_header_crc(header, 0xFF)
3470+
header_crc = 0xFF - EncodingTools.calculate_header_crc(header, 0xFF)
34713471

34723472
payload = [@mstp_start_byte, @mstp_preamble_byte, header, header_crc, cobs_data]
34733473

lib/bacnet/stack/transport/mstp_transport/receive_fsm.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,9 @@ if Code.ensure_loaded?(Circuits.UART) do
444444
"BacMstpTransport_ReceiveFSM: Received data header index 5 header CRC -> #{crc}"
445445
end)
446446

447-
good_header = !(crc != state_data.header_crc or state_data.source_address == 255)
447+
good_header =
448+
!(0x55 != EncodingTools.calculate_header_crc(crc, state_data.header_crc) or
449+
state_data.source_address == 255)
448450

449451
frame_too_long =
450452
((state_data.frame_type_raw < @param_n_min_cobs_type or

0 commit comments

Comments
 (0)