Alicat BASIS-2 Driver 1.0.0
API reference
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Functions | Variables
alicat_basis2_types.hpp File Reference

Public type definitions for the Alicat BASIS-2 driver. More...

#include <array>
#include <cstdint>
#include <string_view>
Include dependency graph for alicat_basis2_types.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  alicat_basis2::DriverResult< T >
 Lightweight result wrapper. Aborts on value() if !ok(). More...
 
struct  alicat_basis2::DriverResult< void >
 
struct  alicat_basis2::InstantaneousData
 Decoded snapshot of registers 2100..2109 (one Modbus burst). More...
 
struct  alicat_basis2::MeasurementData
 Decoded measurement-window result (registers 4201..4215). More...
 
struct  alicat_basis2::InstrumentIdentity
 Static identification of an instrument (read once at init). More...
 
struct  alicat_basis2::InstrumentStatus
 Carries the global instrument health derived from InstantaneousData. More...
 

Namespaces

namespace  alicat_basis2
 
namespace  alicat_basis2::MeasurementTrigger
 Measurement-trigger bitmask — register 4200 (controllers only).
 

Enumerations

enum class  alicat_basis2::DriverError : uint8_t {
  alicat_basis2::None = 0 , alicat_basis2::NotInitialized , alicat_basis2::InvalidParameter , alicat_basis2::InvalidAddress ,
  alicat_basis2::BufferTooSmall , alicat_basis2::SerialError , alicat_basis2::Timeout , alicat_basis2::BadCrc ,
  alicat_basis2::InvalidFrame , alicat_basis2::ModbusException , alicat_basis2::UnsupportedRequest , alicat_basis2::ResponseMismatch ,
  alicat_basis2::AsciiBadResponse
}
 Driver-level error codes. More...
 
enum class  alicat_basis2::ModbusExceptionCode : uint8_t {
  alicat_basis2::None = 0x00 , alicat_basis2::IllegalFunction = 0x01 , alicat_basis2::IllegalDataAddress = 0x02 , alicat_basis2::IllegalDataValue = 0x03 ,
  alicat_basis2::ServerDeviceFailure = 0x04 , alicat_basis2::Acknowledge = 0x05 , alicat_basis2::ServerDeviceBusy = 0x06
}
 Exception code of a Modbus exception reply (function code | 0x80, one code byte). More...
 
enum class  alicat_basis2::Gas : uint8_t {
  alicat_basis2::Air = 0 , alicat_basis2::Argon = 1 , alicat_basis2::CarbonDioxide = 2 , alicat_basis2::Nitrogen = 3 ,
  alicat_basis2::Oxygen = 4 , alicat_basis2::NitrousOxide = 5 , alicat_basis2::Hydrogen = 6 , alicat_basis2::Helium = 7 ,
  alicat_basis2::Methane = 8
}
 Index into the BASIS-2 calibrated gas table. More...
 
enum class  alicat_basis2::FlowUnits : uint8_t {
  alicat_basis2::SCCM = 0 , alicat_basis2::NCCM = 1 , alicat_basis2::SLPM = 2 , alicat_basis2::NLPM = 3 ,
  alicat_basis2::SmL_s = 4 , alicat_basis2::NmL_s = 5 , alicat_basis2::SmL_m = 6 , alicat_basis2::NmL_m = 7 ,
  alicat_basis2::SL_h = 8 , alicat_basis2::NL_h = 9 , alicat_basis2::SCCS = 10 , alicat_basis2::NCCS = 11 ,
  alicat_basis2::Sm3_h = 12 , alicat_basis2::Nm3_h = 13 , alicat_basis2::Sm3_d = 14 , alicat_basis2::Nm3_d = 15 ,
  alicat_basis2::SCIM = 16 , alicat_basis2::SCFM = 17 , alicat_basis2::SCFH = 18 , alicat_basis2::SCFD = 19 ,
  alicat_basis2::Unknown = 0xFF
}
 Flow-unit identifier read from instrument register 49. More...
 
enum class  alicat_basis2::BaudRate : uint8_t {
  alicat_basis2::Bps_4800 = 0 , alicat_basis2::Bps_9600 = 1 , alicat_basis2::Bps_19200 = 2 , alicat_basis2::Bps_38400 = 3 ,
  alicat_basis2::Bps_57600 = 4 , alicat_basis2::Bps_115200 = 5
}
 Baud-rate codes for register 21 (datasheet "Changing the Baud Rate"). More...
 
enum class  alicat_basis2::SetpointSource : uint8_t { alicat_basis2::Analog = 0 , alicat_basis2::DigitalSaved = 1 , alicat_basis2::DigitalUnsaved = 2 }
 Setpoint source — register 516 (controllers only). More...
 
enum class  alicat_basis2::TotalizerLimitMode : uint8_t { alicat_basis2::SaturateNoError = 0 , alicat_basis2::ResetNoError = 1 , alicat_basis2::SaturateWithOvr = 2 , alicat_basis2::ResetWithOvr = 3 }
 Totalizer overflow behaviour — register 54. More...
 

Functions

constexpr std::string_view alicat_basis2::ToString (DriverError e) noexcept
 Convert a DriverError to a stable human-readable string (no allocation).
 
constexpr std::string_view alicat_basis2::ToString (ModbusExceptionCode c) noexcept
 Convert a ModbusExceptionCode to a stable human-readable string (no allocation).
 
constexpr std::string_view alicat_basis2::GasShortName (Gas g) noexcept
 
constexpr std::string_view alicat_basis2::ToString (FlowUnits u) noexcept
 
constexpr uint32_t alicat_basis2::BaudRateToBps (BaudRate b) noexcept
 

Variables

constexpr uint16_t alicat_basis2::MeasurementTrigger::OnDigitalSetpointChange = 1U << 0
 
constexpr uint16_t alicat_basis2::MeasurementTrigger::OnHoldPercentChange = 1U << 1
 
constexpr uint16_t alicat_basis2::MeasurementTrigger::OnAverageFlowRead = 1U << 2
 
constexpr uint8_t alicat_basis2::kBroadcastAddress = 0
 
constexpr uint8_t alicat_basis2::kMaxModbusAddress = 247
 
constexpr uint16_t alicat_basis2::kMagicTare = 0xAA55
 
constexpr uint16_t alicat_basis2::kMagicFactoryRestore = 0x5214
 
constexpr uint16_t alicat_basis2::kDefaultTimeoutMs = 200
 
constexpr uint16_t alicat_basis2::kInterFrameDelayMs = 5
 
constexpr uint32_t alicat_basis2::kDefaultBusBaudBps = 38400
 Baud rate the driver assumes for the inter-frame gap until told otherwise (the instrument's factory default, manual Rev 4 p.
 

Detailed Description

Public type definitions for the Alicat BASIS-2 driver.

This file is the canonical, hardware-agnostic representation of everything the BASIS-2 instrument can publish or accept:

Everything is expressed in plain types (no exceptions, no STL allocators) so the driver compiles cleanly on bare-metal MCUs.