|
HF-FDO2 Driver 0.1.0-dev
UART driver for PyroScience FDO2-G2 (data sheet v5 §4: #MOXY, #MRAW, #VERS)
|
This driver follows PyroScience FDO2-G2, document version v5 (03/2026), §4 Communication Interface.
#BAUD; not wrapped in this driver yet).0x0D), or CR+LF (0x0D 0x0A).#CRCE 1), each response ends with : <decimal CRC16> before CR. The driver strips that suffix before tokenizing.| Command | Response shape | Driver API |
|---|---|---|
#VERS | #VERS D N R S | ReadVersion() |
#IDNR | #IDNR N (64-bit decimal) | ReadUniqueId() |
#MOXY | #MOXY O T S | MeasureMoxy() |
#MRAW | #MRAW O T S D I A P H | MeasureMraw() |
#LOGO | #LOGO | FlashLogo() |
p_o2_hpa = O × 10⁻³.temp_c = T × 10⁻³.×10⁻³; P in µbar → mbar with ×10⁻⁶; H in mRH → RH with ×10⁻³.Constants for individual status bits live in fdo2::moxy_status in fdo2_types.hpp.
When pressure at the sensing membrane matches the vent / back-side pressure represented by P in #MRAW:
O₂ = 100 × pO₂ [hPa] / p_air [hPa] (mbar ≈ hPa for this ratio per data sheet §2).
Use VolumePercentO2(p_o2_hpa, pressure_mbar).
Responses beginning with #ERRO followed by signed E (Table 1, §4.4). When DriverResult::error == DeviceError, read Driver::LastDeviceErrorCode().
Flash-writing commands (#CALO, #CAHI, #CRCE, #SETM, #BCST, #BAUD, #WRUM, …) are not exposed: they consume flash endurance (~20k cycles total) and require stable power during programming (data sheet warning).
Next: Hardware setup →