Skip to main content

tx2_web/
alarm.rs

1use std::collections::BTreeMap;
2use std::str::FromStr;
3
4use wasm_bindgen::prelude::*;
5
6use cpu::*;
7
8#[wasm_bindgen]
9pub fn tx2_unmasked_alarm_active(tx2: &Tx2) -> bool {
10    tx2.unmasked_alarm_active()
11}
12
13#[wasm_bindgen]
14pub fn get_alarm_statuses(tx2: &Tx2) -> Result<JsValue, String> {
15    let alarm_status = tx2.get_alarm_statuses();
16    match serde_wasm_bindgen::to_value(&alarm_status) {
17        Ok(val) => {
18            //event!(
19            //    Level::DEBUG,
20            //    "get_alarm_statuses: success result is {:?}",
21            //    &val
22            //);
23            Ok(val)
24        }
25        Err(e) => {
26            //event!(Level::DEBUG, "get_alarm_statuses: error result is {:?}", &e);
27            Err(e.to_string())
28        }
29    }
30}
31
32#[wasm_bindgen]
33pub fn drain_alarm_changes(tx2: &mut Tx2) -> Result<JsValue, String> {
34    let change_map: BTreeMap<String, AlarmStatus> = tx2
35        .drain_alarm_changes()
36        .into_iter()
37        .map(|(kind, status)| (kind.to_string(), status))
38        .collect();
39    serde_wasm_bindgen::to_value(&change_map).map_err(|e| e.to_string())
40}
41
42#[wasm_bindgen]
43pub fn set_alarm_masked(tx2: &mut Tx2, alarm_name: &str, masked: bool) -> Result<(), String> {
44    match AlarmKind::from_str(alarm_name) {
45        Ok(kind) => tx2
46            .set_alarm_masked(kind, masked)
47            .map_err(|e| e.to_string()),
48        Err(e) => Err(e.to_string()),
49    }
50}