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 Ok(val)
24 }
25 Err(e) => {
26 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}