STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
calibration_server Namespace Reference

Classes

class  ElodinWriter
class  ServerState
class  CalibrationHTTPRequestHandler

Functions

Optional[int] _parse_raw_adc (bytes payload)
Optional[int] _parse_raw_signed (bytes payload)
Optional[int] _parse_int32_at_12 (bytes payload)
float _apply_ema (int key, float value, float alpha=_EMA_ALPHA_DEFAULT)
None _reset_ema_for_packet_channels (list packet_channels)
bool _apply_direct_offset_correction (tuple key, float adc_code, float target_psi)
Optional[int] _parse_pt_raw_for_packet_ch (bytes payload, int packet_ch)
str _throttle_key (str stype, int ch)
 _get_raw_conversion_config ()
None _process_raw_and_write_calibrated (str stype, int packet_ch, int raw_val, Any writer, dict channel_to_key, *, int connector_id, int raw_packet_low)
None _auto_save_adjustments ()
 relay_subscriber_task ()
 run_http_server (host, port)
 ws_handler (websocket)
 broadcast_ws (message)
 run_ws_server (host, port)

Variables

 level
 INFO
 format
 logger = logging.getLogger("CalibrationServer")
 config = load_config()
dict _last_elodin_write = {}
set _first_calibrated_write_logged = set()
dict _hp_pt_channels_cache = {}
float _EMA_ALPHA_DEFAULT = 0.4
dict _ema_state = {}
dict _raw_conversion_config_cache = {}
str _ADJUSTMENTS_PATH = Path(__file__).resolve().parent / "calibrations" / "adjustments.json"
 state = ServerState()
 sidecar_cfg = config.get("calibration", {}).get("sidecar", {})
 host = sidecar_cfg.get("host", "127.0.0.1")
 port = sidecar_cfg.get("port", 8100)
 http_thread
 ws_thread
 pending_alerts
 running

Function Documentation

◆ _apply_direct_offset_correction()

bool calibration_server._apply_direct_offset_correction ( tuple key,
float adc_code,
float target_psi )
protected
Directly correct theta_mean[0] (the D intercept) so the RCF outputs target_psi
at the given adc_code without disturbing the slope coefficients.
Returns True if the correction was applied.

Definition at line 202 of file calibration_server.py.

References max.

Referenced by calibration_server.CalibrationHTTPRequestHandler.do_POST().

◆ _apply_ema()

float calibration_server._apply_ema ( int key,
float value,
float alpha = _EMA_ALPHA_DEFAULT )
protected

Definition at line 186 of file calibration_server.py.

Referenced by _process_raw_and_write_calibrated().

◆ _auto_save_adjustments()

None calibration_server._auto_save_adjustments ( )
protected
Persist all RLS-learned theta_mean / theta_cov back to adjustments.json so
that the next server restart loads the latest autonomous calibration state.
Channels are keyed by unique_id = board_id * 100 + connector (framework_v2 format).
Only channels that have an active RCF entry are written; any existing channels
without an RCF entry are preserved.

Definition at line 384 of file calibration_server.py.

Referenced by relay_subscriber_task().

◆ _get_raw_conversion_config()

calibration_server._get_raw_conversion_config ( )
protected
Get config for raw sense_conversions fallback (cached).

Definition at line 248 of file calibration_server.py.

Referenced by _process_raw_and_write_calibrated().

◆ _parse_int32_at_12()

Optional[int] calibration_server._parse_int32_at_12 ( bytes payload)
protected
Signed ADC at offset 12 (PT/LP, TC, RTD raw on wire).

Definition at line 167 of file calibration_server.py.

Referenced by relay_subscriber_task().

◆ _parse_pt_raw_for_packet_ch()

Optional[int] calibration_server._parse_pt_raw_for_packet_ch ( bytes payload,
int packet_ch )
protected
4-20 mA PT: unsigned ADC; LP PT: signed ADS1262 counts (matches FSW).

Definition at line 230 of file calibration_server.py.

Referenced by relay_subscriber_task().

◆ _parse_raw_adc()

Optional[int] calibration_server._parse_raw_adc ( bytes payload)
protected
Extract raw ADC uint32 from a raw PT/TC/RTD payload (21-byte format).

Definition at line 151 of file calibration_server.py.

◆ _parse_raw_signed()

Optional[int] calibration_server._parse_raw_signed ( bytes payload)
protected
Extract raw ADC int32 (for LC signed ADC).

Definition at line 160 of file calibration_server.py.

Referenced by relay_subscriber_task().

◆ _process_raw_and_write_calibrated()

None calibration_server._process_raw_and_write_calibrated ( str stype,
int packet_ch,
int raw_val,
Any writer,
dict channel_to_key,
* ,
int connector_id,
int raw_packet_low )
protected
Compute calibrated value (RCF or raw conversion) and optionally write to Elodin DB.

Definition at line 269 of file calibration_server.py.

References _apply_ema(), _get_raw_conversion_config(), and _throttle_key().

Referenced by relay_subscriber_task().

◆ _reset_ema_for_packet_channels()

None calibration_server._reset_ema_for_packet_channels ( list packet_channels)
protected
Clear EMA state for a list of packet_ch values so corrected values take effect immediately.

Definition at line 196 of file calibration_server.py.

Referenced by calibration_server.CalibrationHTTPRequestHandler.do_POST().

◆ _throttle_key()

str calibration_server._throttle_key ( str stype,
int ch )
protected

Definition at line 241 of file calibration_server.py.

Referenced by _process_raw_and_write_calibrated().

◆ broadcast_ws()

calibration_server.broadcast_ws ( message)

◆ relay_subscriber_task()

calibration_server.relay_subscriber_task ( )
Subscribe to the Elodin Relay WebSocket to get raw ADC data.
Feeds the calibration engine and writes calibrated values back to Elodin DB.
The relay is the sole subscriber to Elodin DB and fans out TABLE packets here.

Definition at line 427 of file calibration_server.py.

References _auto_save_adjustments(), _parse_int32_at_12(), _parse_pt_raw_for_packet_ch(), _parse_raw_signed(), and _process_raw_and_write_calibrated().

Referenced by run_ws_server().

◆ run_http_server()

calibration_server.run_http_server ( host,
port )

Definition at line 867 of file calibration_server.py.

◆ run_ws_server()

calibration_server.run_ws_server ( host,
port )

Definition at line 886 of file calibration_server.py.

References relay_subscriber_task().

◆ ws_handler()

calibration_server.ws_handler ( websocket)

Definition at line 873 of file calibration_server.py.

Variable Documentation

◆ _ADJUSTMENTS_PATH

str calibration_server._ADJUSTMENTS_PATH = Path(__file__).resolve().parent / "calibrations" / "adjustments.json"
protected

Definition at line 381 of file calibration_server.py.

◆ _EMA_ALPHA_DEFAULT

float calibration_server._EMA_ALPHA_DEFAULT = 0.4
protected

Definition at line 182 of file calibration_server.py.

◆ _ema_state

dict calibration_server._ema_state = {}
protected

Definition at line 183 of file calibration_server.py.

◆ _first_calibrated_write_logged

set calibration_server._first_calibrated_write_logged = set()
protected

Definition at line 176 of file calibration_server.py.

◆ _hp_pt_channels_cache

dict calibration_server._hp_pt_channels_cache = {}
protected

Definition at line 177 of file calibration_server.py.

◆ _last_elodin_write

dict calibration_server._last_elodin_write = {}
protected

Definition at line 175 of file calibration_server.py.

◆ _raw_conversion_config_cache

dict calibration_server._raw_conversion_config_cache = {}
protected

Definition at line 245 of file calibration_server.py.

◆ config

calibration_server.config ( void ) = load_config()

Definition at line 45 of file calibration_server.py.

◆ format

calibration_server.format

Definition at line 40 of file calibration_server.py.

◆ host

calibration_server.host = sidecar_cfg.get("host", "127.0.0.1")

Definition at line 902 of file calibration_server.py.

◆ http_thread

calibration_server.http_thread
Initial value:
1= threading.Thread(
2 target=run_http_server, args=(host, port), daemon=True
3 )

Definition at line 905 of file calibration_server.py.

◆ INFO

calibration_server.INFO

Definition at line 40 of file calibration_server.py.

◆ level

calibration_server.level

Definition at line 40 of file calibration_server.py.

◆ logger

calibration_server.logger = logging.getLogger("CalibrationServer")

Definition at line 42 of file calibration_server.py.

◆ pending_alerts

calibration_server.pending_alerts

Definition at line 921 of file calibration_server.py.

◆ port

calibration_server.port = sidecar_cfg.get("port", 8100)

Definition at line 903 of file calibration_server.py.

◆ running

calibration_server.running

Definition at line 944 of file calibration_server.py.

◆ sidecar_cfg

calibration_server.sidecar_cfg = config.get("calibration", {}).get("sidecar", {})

Definition at line 901 of file calibration_server.py.

◆ state

calibration_server.state = ServerState()

Definition at line 573 of file calibration_server.py.

◆ ws_thread

calibration_server.ws_thread
Initial value:
1= threading.Thread(
2 target=run_ws_server, args=(host, port + 1), daemon=True
3 )

Definition at line 908 of file calibration_server.py.