[ground_segment] represent unconfirmed settings with infinity

proposal to fix #1012:
- server: represent initial/unknown/unconfirmed settings with infinity
- page_settings: set label text to "?" upon commit and on update if value is "inf", also set label to "?"
This commit is contained in:
Felix Ruess
2014-12-07 00:13:59 +01:00
parent 17de8fdc48
commit 1ac47a6c57
3 changed files with 16 additions and 7 deletions
+10 -5
View File
@@ -36,10 +36,14 @@ object
let (alt_a, alt_b) = Ocaml_tools.affine_transform auc in
(float_of_string current_value#text -. alt_b) /. alt_a
method update = fun s ->
if current_value#text <> s then begin
current_value#set_text s;
try set_default (float_of_string s) with Failure "float_of_string" -> ()
end
(* value of infinity (string "inf") means it is not yet confirmed, so display "?" *)
if s = "inf" then
current_value#set_text "?"
else
if current_value#text <> s then begin
current_value#set_text s;
try set_default (float_of_string s) with Failure "float_of_string" -> ()
end
end
let pipe_regexp = Str.regexp "|"
@@ -199,7 +203,8 @@ let one_setting = fun (i:int) (do_change:int -> float -> unit) packing dl_settin
let _icon = GMisc.image ~stock:`APPLY ~packing:commit_but#add () in
let callback = fun x ->
prev_value := (try Some ((float_of_string current_value#text-.alt_b)/.alt_a) with _ -> None);
commit x
commit x;
current_value#set_text "?"
in
ignore (commit_but#connect#clicked ~callback);
tooltips#set_tip commit_but#coerce ~text:"Commit";
+1 -1
View File
@@ -217,7 +217,7 @@ let new_aircraft = fun id name fp airframe ->
cam = { phi = 0.; theta = 0. ; target=(0.,0.)};
fbw = { rc_status = "???"; rc_mode = "???"; rc_rate=0; pprz_mode_msgs_since_last_fbw_status_msg=0 };
svinfo = svsinfo_init;
dl_setting_values = Array.create max_nb_dl_setting_values 42.;
dl_setting_values = Array.create max_nb_dl_setting_values infinity;
nb_dl_setting_values = 0;
horiz_mode = UnknownHorizMode;
horizontal_mode = 0;
+5 -1
View File
@@ -677,7 +677,11 @@ let setting = fun logging _sender vs ->
"ac_id", Pprz.String ac_id;
"value", List.assoc "value" vs] in
Dl_Pprz.message_send dl_id "SETTING" vs;
log logging ac_id "SETTING" vs
log logging ac_id "SETTING" vs;
(* mark the setting as not yet confirmed *)
let ac = Hashtbl.find aircrafts ac_id in
let idx = Pprz.int_of_value (List.assoc "index" vs) in
ac.dl_setting_values.(idx) <- infinity
(** Got a GET_DL_SETTING, and send an GET_SETTING *)