Various fixes

This commit is contained in:
Valerio De Benedetto 2023-05-25 12:16:17 +02:00
parent f8f8fd00b1
commit 0d6a5274f3
3 changed files with 21 additions and 9 deletions

View File

@ -9,6 +9,7 @@ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")
include_directories(tests examples/linux .)
add_executable(nanomodbus_tests nanomodbus.c tests/nanomodbus_tests.c)
target_link_libraries(nanomodbus_tests pthread)
add_executable(server_disabled nanomodbus.c tests/server_disabled.c)
target_compile_definitions(server_disabled PUBLIC NMBS_SERVER_DISABLED)
@ -19,7 +20,7 @@ target_compile_definitions(client_disabled PUBLIC NMBS_CLIENT_DISABLED)
add_executable(multi_server_rtu nanomodbus.c tests/multi_server_rtu.c)
target_compile_definitions(multi_server_rtu PUBLIC NMBS_DEBUG)
add_custom_target(tests DEPENDS nanomodbus_tests server_disabled client_disabled multi_server_rtu)
add_executable(client-tcp nanomodbus.c examples/linux/client-tcp.c)
add_executable(server-tcp nanomodbus.c examples/linux/server-tcp.c)
target_link_libraries(nanomodbus_tests pthread)

View File

@ -352,7 +352,6 @@ static nmbs_error send_exception_msg(nmbs_t* nmbs, uint8_t exception) {
#endif
#ifndef NMBS_CLIENT_DISABLED
static nmbs_error recv_res_header(nmbs_t* nmbs) {
uint16_t req_transaction_id = nmbs->msg.transaction_id;
uint8_t req_unit_id = nmbs->msg.unit_id;
@ -399,6 +398,7 @@ static nmbs_error recv_res_header(nmbs_t* nmbs) {
}
#ifndef NMBS_CLIENT_DISABLED
static void put_req_header(nmbs_t* nmbs, uint16_t data_length) {
put_msg_header(nmbs, data_length);
#ifdef NMBS_DEBUG
@ -484,7 +484,7 @@ static nmbs_error recv_read_registers_res(nmbs_t* nmbs, uint16_t quantity, uint1
}
nmbs_error recv_write_single_coil_res(nmbs_t* nmbs, uint16_t address, bool value_req) {
nmbs_error recv_write_single_coil_res(nmbs_t* nmbs, uint16_t address, uint16_t value_req) {
nmbs_error err = recv_res_header(nmbs);
if (err != NMBS_ERROR_NONE)
return err;

View File

@ -6,7 +6,7 @@
#include "nanomodbus.h"
#define WIRE_SIZE 1024
#define ITERATIONS 10
#define UNUSED_PARAM(x) ((x) = (x))
uint32_t run = 1;
@ -25,7 +25,7 @@ int32_t read_wire(uint8_t* buf, uint16_t count, int32_t timeout_ms, void* arg) {
while (1) {
pthread_mutex_lock(&mutex);
uint32_t index = (uint32_t) arg;
uint64_t index = (uint64_t) arg;
uint32_t read = 0;
for (int i = 0; i < count; i++) {
if (indices_r[index] == index_w)
@ -39,7 +39,7 @@ int32_t read_wire(uint8_t* buf, uint16_t count, int32_t timeout_ms, void* arg) {
pthread_mutex_unlock(&mutex);
if (read != 0)
return read;
return (int32_t) read;
if (timeout_ms != 0)
usleep(timeout_ms * 1000);
@ -51,9 +51,10 @@ int32_t read_wire(uint8_t* buf, uint16_t count, int32_t timeout_ms, void* arg) {
}
int32_t write_wire(const uint8_t* buf, uint16_t count, int32_t timeout_ms, void* arg) {
UNUSED_PARAM(timeout_ms);
pthread_mutex_lock(&mutex);
uint32_t index = (uint32_t) arg;
uint64_t index = (uint64_t) arg;
uint32_t written = 0;
for (int i = 0; i < count; i++) {
index_w = (index_w + 1) % WIRE_SIZE;
@ -64,10 +65,11 @@ int32_t write_wire(const uint8_t* buf, uint16_t count, int32_t timeout_ms, void*
pthread_mutex_unlock(&mutex);
return written;
return (int32_t) written;
}
nmbs_error read_coils(uint16_t address, uint16_t quantity, nmbs_bitfield coils_out, void* arg) {
UNUSED_PARAM(arg);
for (int i = 0; i < quantity; i++)
nmbs_bitfield_write(coils_out, address + i, 1);
@ -75,18 +77,27 @@ nmbs_error read_coils(uint16_t address, uint16_t quantity, nmbs_bitfield coils_o
}
void* poll_server1(void* arg) {
UNUSED_PARAM(arg);
while (run) {
nmbs_server_poll(&server1);
}
return NULL;
}
void* poll_server2(void* arg) {
UNUSED_PARAM(arg);
while (run) {
nmbs_server_poll(&server2);
}
return NULL;
}
int main(int argc, char* argv[]) {
UNUSED_PARAM(argc);
UNUSED_PARAM(argv);
nmbs_platform_conf c_conf;
c_conf.arg = wire;
c_conf.transport = NMBS_TRANSPORT_RTU;