98 return "IllegalFunction";
100 return "IllegalDataAddress";
102 return "IllegalDataValue";
104 return "ServerDeviceFailure";
106 return "Acknowledge";
108 return "ServerDeviceBusy";
120 constexpr explicit operator bool() const noexcept {
return ok(); }
130 constexpr explicit operator bool() const noexcept {
return ok(); }
285namespace MeasurementTrigger {
constexpr uint16_t OnHoldPercentChange
Definition alicat_basis2_types.hpp:287
constexpr uint16_t OnDigitalSetpointChange
Definition alicat_basis2_types.hpp:286
constexpr uint16_t OnAverageFlowRead
Definition alicat_basis2_types.hpp:288
Definition alicat_basis2.hpp:52
constexpr uint8_t kBroadcastAddress
Definition alicat_basis2_types.hpp:374
constexpr uint8_t kMaxModbusAddress
Definition alicat_basis2_types.hpp:375
FlowUnits
Flow-unit identifier read from instrument register 49.
Definition alicat_basis2_types.hpp:181
BaudRate
Baud-rate codes for register 21 (datasheet "Changing the Baud Rate").
Definition alicat_basis2_types.hpp:230
@ Bps_38400
Factory default.
constexpr std::string_view GasShortName(Gas g) noexcept
Definition alicat_basis2_types.hpp:157
DriverError
Driver-level error codes.
Definition alicat_basis2_types.hpp:39
@ UnsupportedRequest
Slave does not implement this register/command.
@ InvalidFrame
Frame too short, wrong function code, etc.
@ SerialError
Serial transport-layer error (HW failure).
@ InvalidParameter
Out-of-range argument.
@ BadCrc
CRC-16 mismatch on received Modbus frame.
@ InvalidAddress
Modbus address outside 1..247.
@ None
Operation succeeded.
@ ResponseMismatch
Echo doesn't match request (function 6/16).
@ NotInitialized
Driver not initialized yet.
@ ModbusException
Slave returned a Modbus exception PDU.
@ BufferTooSmall
Provided buffer is too small for the response.
@ Timeout
No response within the configured timeout.
@ AsciiBadResponse
ASCII reply not parseable.
constexpr uint16_t kDefaultTimeoutMs
Definition alicat_basis2_types.hpp:379
constexpr uint16_t kMagicFactoryRestore
Definition alicat_basis2_types.hpp:377
SetpointSource
Setpoint source — register 516 (controllers only).
Definition alicat_basis2_types.hpp:263
constexpr uint16_t kMagicTare
Definition alicat_basis2_types.hpp:376
constexpr uint16_t kInterFrameDelayMs
Definition alicat_basis2_types.hpp:383
TotalizerLimitMode
Totalizer overflow behaviour — register 54.
Definition alicat_basis2_types.hpp:272
constexpr std::string_view ToString(DriverError e) noexcept
Convert a DriverError to a stable human-readable string (no allocation).
Definition alicat_basis2_types.hpp:56
constexpr uint32_t BaudRateToBps(BaudRate b) noexcept
Definition alicat_basis2_types.hpp:239
Gas
Index into the BASIS-2 calibrated gas table.
Definition alicat_basis2_types.hpp:145
constexpr uint32_t kDefaultBusBaudBps
Baud rate the driver assumes for the inter-frame gap until told otherwise (the instrument's factory d...
Definition alicat_basis2_types.hpp:386
ModbusExceptionCode
Exception code of a Modbus exception reply (function code | 0x80, one code byte).
Definition alicat_basis2_types.hpp:82
@ IllegalDataValue
Value not accepted.
@ ServerDeviceFailure
Unrecoverable error in the instrument.
@ None
The last transaction got no exception reply.
@ IllegalFunction
Function code not supported.
@ ServerDeviceBusy
Busy; retry later.
@ Acknowledge
Accepted, long-running.
@ IllegalDataAddress
Register not implemented ("Bad Address").
static constexpr DriverResult failure(DriverError e) noexcept
Definition alicat_basis2_types.hpp:132
static constexpr DriverResult success() noexcept
Definition alicat_basis2_types.hpp:131
constexpr bool ok() const noexcept
Definition alicat_basis2_types.hpp:129
Lightweight result wrapper. Aborts on value() if !ok().
Definition alicat_basis2_types.hpp:115
T value
Definition alicat_basis2_types.hpp:116
DriverError error
Definition alicat_basis2_types.hpp:117
static constexpr DriverResult success(T v) noexcept
Definition alicat_basis2_types.hpp:122
constexpr bool ok() const noexcept
Definition alicat_basis2_types.hpp:119
static constexpr DriverResult failure(DriverError e) noexcept
Definition alicat_basis2_types.hpp:123
Decoded snapshot of registers 2100..2109 (one Modbus burst).
Definition alicat_basis2_types.hpp:302
float temperature_c
Register 2102 / 100.
Definition alicat_basis2_types.hpp:309
bool valve_thermal_management
VTM.
Definition alicat_basis2_types.hpp:308
bool valve_held
HLD.
Definition alicat_basis2_types.hpp:307
int16_t raw_flow_2103
Definition alicat_basis2_types.hpp:317
bool temperature_overrange
TOV.
Definition alicat_basis2_types.hpp:305
float flow
Register 2103 (× scale below).
Definition alicat_basis2_types.hpp:310
int32_t raw_setpoint_2053_2054
Definition alicat_basis2_types.hpp:316
float setpoint
Register 2106 (× scale below).
Definition alicat_basis2_types.hpp:312
uint32_t raw_total_volume_2104_2105
Definition alicat_basis2_types.hpp:319
int16_t raw_temp_2102
Definition alicat_basis2_types.hpp:318
uint32_t raw_batch_remaining_2108_2109
Definition alicat_basis2_types.hpp:320
bool totalizer_overrange
OVR.
Definition alicat_basis2_types.hpp:306
float valve_drive_pct
Register 2107 / 100.
Definition alicat_basis2_types.hpp:313
bool mass_flow_overrange
MOV.
Definition alicat_basis2_types.hpp:304
float batch_remaining
Registers 2108-9 (× scale below).
Definition alicat_basis2_types.hpp:314
Gas gas
Definition alicat_basis2_types.hpp:303
float total_volume
Registers 2104-5 (× scale below).
Definition alicat_basis2_types.hpp:311
Static identification of an instrument (read once at init).
Definition alicat_basis2_types.hpp:347
char serial_number[13]
Registers 26-31 (12 chars + NUL).
Definition alicat_basis2_types.hpp:350
char ascii_unit_id
Register 46.
Definition alicat_basis2_types.hpp:352
uint8_t fw_minor
Definition alicat_basis2_types.hpp:349
FlowUnits flow_units
Definition alicat_basis2_types.hpp:353
uint16_t firmware_version_raw
Register 25 — pack(a,b,c) = 256a + 16b + c.
Definition alicat_basis2_types.hpp:348
uint32_t full_scale_flow_raw
Registers 47-48; flow_units / 1000.
Definition alicat_basis2_types.hpp:354
uint8_t fw_major
Definition alicat_basis2_types.hpp:349
uint8_t fw_patch
Definition alicat_basis2_types.hpp:349
uint8_t modbus_address
Register 45.
Definition alicat_basis2_types.hpp:351
Carries the global instrument health derived from InstantaneousData.
Definition alicat_basis2_types.hpp:358
bool mass_flow_overrange
Definition alicat_basis2_types.hpp:363
bool temperature_overrange
Definition alicat_basis2_types.hpp:364
bool any_error() const noexcept
Definition alicat_basis2_types.hpp:359
bool valve_thermal_management
Definition alicat_basis2_types.hpp:367
bool totalizer_overrange
Definition alicat_basis2_types.hpp:365
bool valve_held
Definition alicat_basis2_types.hpp:366
Decoded measurement-window result (registers 4201..4215).
Definition alicat_basis2_types.hpp:326
float avg_flow
avg_flow_raw / 10^flow_decimals.
Definition alicat_basis2_types.hpp:339
int16_t min_flow_raw
Definition alicat_basis2_types.hpp:330
int16_t max_temperature_raw
Definition alicat_basis2_types.hpp:329
uint16_t num_samples_requested
Register 4201: samples to take.
Definition alicat_basis2_types.hpp:341
int16_t avg_flow_raw
Definition alicat_basis2_types.hpp:333
int16_t min_temperature_raw
Definition alicat_basis2_types.hpp:328
int32_t prev_avg_flow_raw
Registers 4214-4215, signed 32-bit.
Definition alicat_basis2_types.hpp:334
int16_t avg_temperature_raw
Definition alicat_basis2_types.hpp:332
float min_temperature_c
Definition alicat_basis2_types.hpp:336
uint16_t num_samples_collected
Register 4206: samples averaged so far.
Definition alicat_basis2_types.hpp:327
float max_temperature_c
Definition alicat_basis2_types.hpp:337
float avg_temperature_c
Definition alicat_basis2_types.hpp:338
int16_t max_flow_raw
Definition alicat_basis2_types.hpp:331