diff --git a/sw/ground_segment/cockpit/live.ml b/sw/ground_segment/cockpit/live.ml index 8867a2c56b..2d8c3d1724 100644 --- a/sw/ground_segment/cockpit/live.ml +++ b/sw/ground_segment/cockpit/live.ml @@ -210,6 +210,10 @@ let dl_setting = fun ac_id idx value -> let vs = ["ac_id", Pprz.String ac_id; "index", Pprz.Int idx;"value", Pprz.Float value] in Ground_Pprz.message_send "dl" "DL_SETTING" vs +let get_dl_setting = fun ac_id idx -> + let vs = ["ac_id", Pprz.String ac_id; "index", Pprz.Int idx] in + Ground_Pprz.message_send "dl" "GET_DL_SETTING" vs + let menu_entry_of_block = fun ac_id (id, name) -> let send_msg = fun () -> jump_to_block ac_id id in `I (name, send_msg) @@ -533,7 +537,11 @@ let create_ac = fun alert (geomap:G.widget) (acs_notebook:GPack.notebook) (ac_id Xml.Element("empty", [], []) in let dl_setting_callback = fun idx value -> - dl_setting ac_id idx value in + if classify_float value = FP_normal then + dl_setting ac_id idx value + else + get_dl_setting ac_id idx + in let dl_settings_page = try let xml_settings = Xml.children (ExtXml.child settings_xml "dl_settings") in diff --git a/sw/ground_segment/cockpit/page_settings.ml b/sw/ground_segment/cockpit/page_settings.ml index 71c340a408..031f97504c 100644 --- a/sw/ground_segment/cockpit/page_settings.ml +++ b/sw/ground_segment/cockpit/page_settings.ml @@ -66,7 +66,7 @@ let add_key = fun xml do_change keys -> -let one_setting = fun (i:int) do_change packing dl_setting (tooltips:GData.tooltips) strip keys -> +let one_setting = fun (i:int) (do_change:int -> float -> unit) packing dl_setting (tooltips:GData.tooltips) strip keys -> let f = fun a -> float_of_string (ExtXml.attrib dl_setting a) in let lower = f "min" and upper = f "max" @@ -81,7 +81,8 @@ let one_setting = fun (i:int) do_change packing dl_setting (tooltips:GData.toolt let varname = ExtXml.attrib dl_setting "var" in let text = try ExtXml.attrib dl_setting "shortname" with _ -> varname in let _l = GMisc.label ~width:100 ~text ~packing:hbox#pack () in - let current_value = GMisc.label ~width:50 ~text:"N/A" ~packing:hbox#pack () in + let eb = GBin.event_box ~packing:hbox#pack () in + let current_value = GMisc.label ~width:50 ~text:"N/A" ~packing:eb#add () in let auto_but = GButton.check_button ~label:"Auto" ~active:false () in @@ -141,6 +142,11 @@ let one_setting = fun (i:int) do_change packing dl_setting (tooltips:GData.toolt in let set_default = fun x -> if not !modified then set_default x else () in + + (* Update value *) + let callback = fun _ -> + do_change i infinity; true in + ignore (eb#event#connect#button_press ~callback); (* Auto check button *) if show_auto then begin