Modbus cpp 0.1
Loading...
Searching...
No Matches
Enumerations | Functions
MB::utils Namespace Reference

Enumerations

enum  MBErrorCode : uint8_t {
  IllegalFunction = 0x01 , IllegalDataAddress = 0x02 , IllegalDataValue = 0x03 , SlaveDeviceFailure = 0x04 ,
  Acknowledge = 0x05 , SlaveDeviceBusy = 0x06 , NegativeAcknowledge = 0x07 , MemoryParityError = 0x08 ,
  GatewayPathUnavailable = 0x10 , GatewayTargetDeviceFailedToRespond = 0x11 , ErrorCodeCRCError = 0b0111111 , InvalidCRC = 0b01111110 ,
  InvalidByteOrder = 0b01111101 , InvalidMessageID = 0b01111100 , ProtocolError = 0b01111011 , ConnectionClosed = 0b01111010 ,
  Timeout = 0b01111001
}
 
enum  MBFunctionCode : uint8_t {
  ReadDiscreteOutputCoils = 0x01 , ReadDiscreteInputContacts = 0x02 , ReadAnalogOutputHoldingRegisters = 0x03 , ReadAnalogInputRegisters = 0x04 ,
  WriteSingleDiscreteOutputCoil = 0x05 , WriteSingleAnalogOutputRegister = 0x06 , WriteMultipleDiscreteOutputCoils = 0x0F , WriteMultipleAnalogOutputHoldingRegisters = 0x10 ,
  Undefined = 0x00
}
 All modbus standard function codes + Undefined one.
 
enum  MBFunctionType { Read , WriteSingle , WriteMultiple }
 Simplified function types.
 
enum  MBFunctionRegisters { OutputCoils , InputContacts , HoldingRegisters , InputRegisters }
 Simplified register types.
 

Functions

bool isStandardErrorCode (MBErrorCode code)
 Checks if error code is modbus standard error code.
 
std::string mbErrorCodeToStr (MBErrorCode code) noexcept
 Converts Modbus error code to it's string representation.
 
MBFunctionType functionType (const MBFunctionCode code)
 Checks "Function type", according to MBFunctionType.
 
MBFunctionRegisters functionRegister (const MBFunctionCode code)
 Get register type based on function code.
 
std::string mbFunctionToStr (MBFunctionCode code) noexcept
 Converts modbus function code to its string represenatiton.
 
uint16_t bigEndianConv (const uint8_t *buf)
 Create uint16_t from buffer of two bytes, ex. { 0x01, 0x02 } => 0x0102.
 
uint16_t calculateCRC (const uint8_t *buff, size_t len)
 
uint16_t calculateCRC (const std::vector< uint8_t > &buffer)
 
std::pair< uint8_t, uint8_t > splitUint16 (const uint16_t val)
 
void pushUint16 (std::vector< uint8_t > &buffer, const uint16_t val)
 Insert uint16_t into buffer of uint8_t's. Preserve big endianess.
 

Detailed Description

Namespace that contains many useful utility functions and enums that are used in the whole project.

Enumeration Type Documentation

◆ MBErrorCode

enum MB::utils::MBErrorCode : uint8_t

All possible modbus error codes

Note
Contains custom, non standard codes

Function Documentation

◆ calculateCRC() [1/2]

uint16_t MB::utils::calculateCRC ( const std::vector< uint8_t > & buffer)
inline
Deprecated
Calculates CRC - please use functions from MB::CRC

◆ calculateCRC() [2/2]

uint16_t MB::utils::calculateCRC ( const uint8_t * buff,
size_t len )
inline
Deprecated
Calculates CRC - please use functions from MB::CRC

◆ splitUint16()

std::pair< uint8_t, uint8_t > MB::utils::splitUint16 ( const uint16_t val)
inline

Split uint16_t to two uint8_t in big endian form

Example usage: auto [highByte, lowByte] = utils::splitUint16(val);