Myriota Flex SDK 2.5.0
Loading...
Searching...
No Matches
modbus.h
1
2// Copyright (c) 2024, Myriota Pty Ltd, All Rights Reserved
3// SPDX-License-Identifier: BSD-3-Clause-Attribution
4//
5// This file is licensed under the BSD with attribution (the "License"); you
6// may not use these files except in compliance with the License.
7//
8// You may obtain a copy of the License here:
9// LICENSE-BSD-3-Clause-Attribution.txt and at
10// https://spdx.org/licenses/BSD-3-Clause-Attribution.html
11//
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef MYRIOTA_MODBUS_H
16#define MYRIOTA_MODBUS_H
17
18#include <stdbool.h>
19#include <stddef.h>
20#include <stdint.h>
21#include <sys/types.h>
22
27
29typedef enum {
30 MODBUS_SUCCESS = 0,
31 MODBUS_ERROR_EXCEPTION_ILLEGAL_FUNCTION = 0x01,
32 MODBUS_ERROR_EXCEPTION_ILLEGAL_DATA_ADDRESS = 0x02,
33 MODBUS_ERROR_EXCEPTION_ILLEGAL_DATA_VALUE = 0x03,
34 MODBUS_ERROR_EXCEPTION_SLAVE_DEVICE_FAILURE = 0x04,
35 MODBUS_ERROR_EXCEPTION_ACKNOWLEDGE = 0x05,
36 MODBUS_ERROR_EXCEPTION_SLAVE_DEVICE_BUSY = 0x06,
37 MODBUS_ERROR_EXCEPTION_NEGATIVE_ACKNOWLEDGMENT = 0x07,
38 MODBUS_ERROR_EXCEPTION_MEMORY_PARITY_ERROR = 0x08,
39 MODBUS_ERROR_EXCEPTION_GATEWAY_PATH_UNAVAILABLE = 0x0A,
40 MODBUS_ERROR_EXCEPTION_GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND = 0x0B,
41 MODBUS_ERROR_INVALID_HANDLE,
42 MODBUS_ERROR_INVALID_CRC16,
43 MODBUS_ERROR_MALFORMED_RESPONSE,
44 MODBUS_ERROR_RESPONSE_FROM_WRONG_SLAVE_ADDRESS,
45 MODBUS_ERROR_IO_FAILURE,
46 MODBUS_ERROR_BAD_STATE,
47 MODBUS_ERROR_OVERFLOW,
49
51typedef uint8_t MYRIOTA_ModbusHandle;
52
55
58
65typedef int (*MYRIOTA_ModbusSerialInterfaceInitFn_t)(void *const ctx);
66
73typedef void (*MYRIOTA_ModbusSerialInterfaceDeinitFn_t)(void *const ctx);
74
83typedef ssize_t (*MYRIOTA_ModbusSerialInterfaceReadFn_t)(void *const ctx, uint8_t *const buffer,
84 const size_t count);
85
94typedef ssize_t (*MYRIOTA_ModbusSerialInterfaceWriteFn_t)(void *const ctx,
95 const uint8_t *const buffer, const size_t count);
96
110
120
128
136
143
153
163
177void MYRIOTA_ModbusBytesSetBit(uint8_t *const bytes, const size_t count, const uint8_t bit_index,
178 const bool value);
179
193void MYRIOTA_ModbusBytesGetBit(const uint8_t *const bytes, const size_t count,
194 const uint8_t bit_index, bool *const value);
195
208 const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count,
209 uint8_t *const bytes);
210
223 const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count,
224 uint8_t *const bytes);
225
238 const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count,
239 uint8_t *const bytes);
240
253 const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count,
254 uint8_t *const bytes);
255
268 const uint16_t word);
269
281 const uint16_t word);
282
295 const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count,
296 const uint8_t *const bytes);
297
310 const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count,
311 const uint8_t *const bytes);
312
316
317#endif /* MYRIOTA_MODBUS_H */
uint8_t MYRIOTA_ModbusHandle
Definition modbus.h:51
int MYRIOTA_ModbusReadDiscreteInputs(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count, uint8_t *const bytes)
int MYRIOTA_ModbusReadHoldingRegisters(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count, uint8_t *const bytes)
uint16_t MYRIOTA_ModbusDataAddress
Definition modbus.h:57
int(* MYRIOTA_ModbusSerialInterfaceInitFn_t)(void *const ctx)
Definition modbus.h:65
ssize_t(* MYRIOTA_ModbusSerialInterfaceWriteFn_t)(void *const ctx, const uint8_t *const buffer, const size_t count)
Definition modbus.h:94
int MYRIOTA_ModbusReadCoils(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count, uint8_t *const bytes)
int MYRIOTA_ModbusWriteHoldingRegisters(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count, const uint8_t *const bytes)
void MYRIOTA_ModbusBytesSetBit(uint8_t *const bytes, const size_t count, const uint8_t bit_index, const bool value)
void MYRIOTA_ModbusDeinit(const MYRIOTA_ModbusHandle handle)
void(* MYRIOTA_ModbusSerialInterfaceDeinitFn_t)(void *const ctx)
Definition modbus.h:73
uint8_t MYRIOTA_ModbusDeviceAddress
Definition modbus.h:54
int MYRIOTA_ModbusWriteHoldingRegister(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const uint16_t word)
void MYRIOTA_ModbusBytesGetBit(const uint8_t *const bytes, const size_t count, const uint8_t bit_index, bool *const value)
ssize_t(* MYRIOTA_ModbusSerialInterfaceReadFn_t)(void *const ctx, uint8_t *const buffer, const size_t count)
Definition modbus.h:83
int MYRIOTA_ModbusReadInputRegisters(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count, uint8_t *const bytes)
int MYRIOTA_ModbusDisable(const MYRIOTA_ModbusHandle handle)
int MYRIOTA_ModbusWriteCoil(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const uint16_t word)
int MYRIOTA_ModbusEnable(const MYRIOTA_ModbusHandle handle)
int MYRIOTA_ModbusWriteCoils(const MYRIOTA_ModbusHandle handle, const MYRIOTA_ModbusDeviceAddress slave, const MYRIOTA_ModbusDataAddress addr, const size_t count, const uint8_t *const bytes)
MYRIOTA_ModbusErrors
Definition modbus.h:29
MYRIOTA_ModbusHandle MYRIOTA_ModbusInit(const MYRIOTA_ModbusInitOptions options)
MYRIOTA_ModbusFramingMode
Definition modbus.h:116
@ MODBUS_FRAMING_MODE_RTU
Definition modbus.h:118
Definition modbus.h:122
MYRIOTA_ModbusFramingMode framing_mode
Definition modbus.h:124
MYRIOTA_ModbusSerialInterface serial_interface
Definition modbus.h:126
Definition modbus.h:98
MYRIOTA_ModbusSerialInterfaceDeinitFn_t deinit
Definition modbus.h:104
MYRIOTA_ModbusSerialInterfaceReadFn_t read
Definition modbus.h:106
MYRIOTA_ModbusSerialInterfaceWriteFn_t write
Definition modbus.h:108
MYRIOTA_ModbusSerialInterfaceInitFn_t init
Definition modbus.h:102
void * ctx
Definition modbus.h:100