grblHAL core  20260225
modbus.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include "errors.h"
#include "stream.h"

Go to the source code of this file.

Data Structures

struct  modbus_message_t
 
struct  modbus_callbacks_t
 
union  modbus_silence_timeout_t
 
union  modbus_cap_t
 
struct  modbus_response
 
struct  modbus_function_properties_t
 
struct  modbus_api_t
 
struct  modbus_rtu_stream_t
 

Macros

#define MODBUS_MAX_ADU_SIZE   12
 
#define MODBUS_QUEUE_LENGTH   8
 
#define MODBUS_SET_MSB16(v)   ((v) >> 8)
 
#define MODBUS_SET_LSB16(v)   ((v) & 0xFF)
 
#define MODBUS_MAX_REGISTERS   ((MODBUS_MAX_ADU_SIZE - 6) / 2)
 

Typedefs

typedef void(* modbus_callback_ptr) (struct modbus_response *response)
 
typedef struct modbus_response modbus_response_t
 
typedef bool(* modbus_is_up_ptr) (void)
 
typedef void(* modbus_flush_queue_ptr) (void)
 
typedef void(* modbus_set_silence_ptr) (const modbus_silence_timeout_t *timeout)
 
typedef bool(* modbus_send_ptr) (modbus_message_t *msg, const modbus_callbacks_t *callbacks, bool block)
 
typedef bool(* modbus_is_busy_ptr) (void)
 

Enumerations

enum  modbus_if_t { Modbus_InterfaceRTU = 0 , Modbus_InterfaceASCII , Modbus_InterfaceTCP }
 
enum  modbus_function_t {
  ModBus_ReadCoils = 1 , ModBus_ReadDiscreteInputs = 2 , ModBus_ReadHoldingRegisters = 3 , ModBus_ReadInputRegisters = 4 ,
  ModBus_WriteCoil = 5 , ModBus_WriteRegister = 6 , ModBus_ReadExceptionStatus = 7 , ModBus_Diagnostics = 8 ,
  ModBus_WriteCoils = 15 , ModBus_WriteRegisters = 16
}
 
enum  modbus_exception_t {
  ModBus_NoException = 0 , ModBus_IllegalFunction = 1 , ModBus_IllegalDataAddress = 2 , ModBus_IllegalDataValue = 3 ,
  ModBus_ServerDeviceFailure = 4 , ModBus_Acknowledge = 5 , ModBus_ServerDeviceBusy = 6 , ModBus_MemoryParityError = 7 ,
  ModBus_GatewayPathUnavailable = 8 , ModBus_GatewayTargetUnresponsive = 9 , ModBus_UnknownException = 252 , ModBus_IllegalSize = 253 ,
  ModBus_CRCError = 254 , ModBus_Timeout = 255
}
 

Functions

modbus_cap_t modbus_isup (void)
 
bool modbus_isbusy (void)
 
bool modbus_enabled (void)
 
void modbus_flush_queue (void)
 
void modbus_set_silence (const modbus_silence_timeout_t *timeout)
 
bool modbus_send (modbus_message_t *msg, const modbus_callbacks_t *callbacks, bool block)
 
void modbus_null_exception_handler (uint8_t code, void *context)
 
uint16_t modbus_read_u16 (uint8_t *p)
 
void modbus_write_u16 (uint8_t *p, uint16_t value)
 
bool modbus_register_api (const modbus_api_t *api)
 
modbus_rtu_stream_tmodbus_get_rtu_stream (void)
 
const modbus_function_properties_tmodbus_get_function_properties (modbus_function_t function)
 
status_code_t modbus_message (uint8_t server, modbus_function_t function, uint16_t address, uint16_t *values, uint8_t registers, modbus_callback_ptr callback)
 

Macro Definition Documentation

◆ MODBUS_MAX_ADU_SIZE

#define MODBUS_MAX_ADU_SIZE   12

◆ MODBUS_MAX_REGISTERS

#define MODBUS_MAX_REGISTERS   ((MODBUS_MAX_ADU_SIZE - 6) / 2)

◆ MODBUS_QUEUE_LENGTH

#define MODBUS_QUEUE_LENGTH   8

◆ MODBUS_SET_LSB16

#define MODBUS_SET_LSB16 (   v)    ((v) & 0xFF)

◆ MODBUS_SET_MSB16

#define MODBUS_SET_MSB16 (   v)    ((v) >> 8)

Typedef Documentation

◆ modbus_callback_ptr

typedef void(* modbus_callback_ptr) (struct modbus_response *response)

◆ modbus_flush_queue_ptr

typedef void(* modbus_flush_queue_ptr) (void)

◆ modbus_is_busy_ptr

typedef bool(* modbus_is_busy_ptr) (void)

◆ modbus_is_up_ptr

typedef bool(* modbus_is_up_ptr) (void)

◆ modbus_response_t

◆ modbus_send_ptr

typedef bool(* modbus_send_ptr) (modbus_message_t *msg, const modbus_callbacks_t *callbacks, bool block)

◆ modbus_set_silence_ptr

typedef void(* modbus_set_silence_ptr) (const modbus_silence_timeout_t *timeout)

Enumeration Type Documentation

◆ modbus_exception_t

Enumerator
ModBus_NoException 
ModBus_IllegalFunction 
ModBus_IllegalDataAddress 
ModBus_IllegalDataValue 
ModBus_ServerDeviceFailure 
ModBus_Acknowledge 
ModBus_ServerDeviceBusy 
ModBus_MemoryParityError 
ModBus_GatewayPathUnavailable 
ModBus_GatewayTargetUnresponsive 
ModBus_UnknownException 
ModBus_IllegalSize 
ModBus_CRCError 
ModBus_Timeout 

◆ modbus_function_t

Enumerator
ModBus_ReadCoils 
ModBus_ReadDiscreteInputs 
ModBus_ReadHoldingRegisters 
ModBus_ReadInputRegisters 
ModBus_WriteCoil 
ModBus_WriteRegister 
ModBus_ReadExceptionStatus 
ModBus_Diagnostics 
ModBus_WriteCoils 
ModBus_WriteRegisters 

◆ modbus_if_t

Enumerator
Modbus_InterfaceRTU 
Modbus_InterfaceASCII 
Modbus_InterfaceTCP 

Function Documentation

◆ modbus_enabled()

bool modbus_enabled ( void  )

◆ modbus_flush_queue()

void modbus_flush_queue ( void  )

◆ modbus_get_function_properties()

const modbus_function_properties_t* modbus_get_function_properties ( modbus_function_t  function)

◆ modbus_get_rtu_stream()

modbus_rtu_stream_t* modbus_get_rtu_stream ( void  )

◆ modbus_isbusy()

bool modbus_isbusy ( void  )

◆ modbus_isup()

modbus_cap_t modbus_isup ( void  )

◆ modbus_message()

status_code_t modbus_message ( uint8_t  server,
modbus_function_t  function,
uint16_t  address,
uint16_t *  values,
uint8_t  registers,
modbus_callback_ptr  callback 
)

◆ modbus_null_exception_handler()

void modbus_null_exception_handler ( uint8_t  code,
void *  context 
)

◆ modbus_read_u16()

uint16_t modbus_read_u16 ( uint8_t *  p)

◆ modbus_register_api()

bool modbus_register_api ( const modbus_api_t api)

◆ modbus_send()

bool modbus_send ( modbus_message_t msg,
const modbus_callbacks_t callbacks,
bool  block 
)

◆ modbus_set_silence()

void modbus_set_silence ( const modbus_silence_timeout_t timeout)

◆ modbus_write_u16()

void modbus_write_u16 ( uint8_t *  p,
uint16_t  value 
)