24#ifndef MODBUSBUFFER_H_
25#define MODBUSBUFFER_H_
27#include <cRIO/DataTypes.h>
48 void setIndex(int32_t index);
49 void incIndex(int32_t inc);
50 void skipToNextFrame();
51 uint16_t *getBuffer();
52 void set(int32_t index, uint16_t data);
53 void setLength(int32_t length);
90 uint16_t readLength();
97 std::string readString(int32_t length);
99 double readTimestamp();
109 return (uint8_t)((instruction >> 1) & 0xFF);
112 void readEndOfFrame();
114 void writeSubnet(uint8_t data);
115 void writeLength(uint16_t data);
116 void writeI8(int8_t data);
117 void writeI16(int16_t data);
118 void writeI24(int32_t data);
119 void writeI32(int32_t data);
120 void writeU8(uint8_t data);
121 void writeU16(uint16_t data);
122 void writeU32(uint32_t data);
123 void writeSGL(
float data);
124 void writeCRC(int32_t length);
135 void writeDelay(uint32_t delayMicros);
136 void writeEndOfFrame();
137 void writeSoftwareTrigger();
138 void writeTimestamp();
139 void writeTriggerIRQ();
140 void writeWaitForRx(uint32_t timeoutMicros);
148 void pullModbusResponse(uint16_t request, uint64_t &beginTs, uint64_t &endTs, std::vector<uint8_t> &data);
151 uint16_t _buffer[5120];
152 uint8_t _floatPointBuffer[8];
153 uint8_t _stringBuffer[256];
Utility class for Modbus buffer management.
Definition ModbusBuffer.h:42
std::vector< uint8_t > getReadData(int32_t length)
Returns read data from buffer.
Definition ModbusBuffer.cpp:97
void reset()
Set empty buffer.
Definition ModbusBuffer.cpp:91
static uint8_t readInstructionByte(uint16_t instruction)
Reads instruction byte from FPGA FIFO.
Definition ModbusBuffer.h:108
void pullModbusResponse(uint16_t request, uint64_t &beginTs, uint64_t &endTs, std::vector< uint8_t > &data)
Fills buffer with data from response, returns start and end timestamps.
Definition ModbusBuffer.cpp:307
static uint16_t writeByteInstruction(uint8_t data)
Return data item to write to buffer.
Definition ModbusBuffer.h:133
static uint16_t calculateCRC(std::vector< uint8_t > data)
Calculate Modbus CRC16.
Definition ModbusBuffer.cpp:105