diff --git a/conf/airframes/examples/microjet.xml b/conf/airframes/examples/microjet.xml
index 9aabef7e69..b06480e084 100644
--- a/conf/airframes/examples/microjet.xml
+++ b/conf/airframes/examples/microjet.xml
@@ -94,6 +94,7 @@
+
diff --git a/sw/ground_segment/cockpit/live.ml b/sw/ground_segment/cockpit/live.ml
index 07350a25da..93fd1f4e50 100644
--- a/sw/ground_segment/cockpit/live.ml
+++ b/sw/ground_segment/cockpit/live.ml
@@ -99,6 +99,7 @@ type aircraft = {
pages : GObj.widget;
notebook_label : GMisc.label;
strip : Strip.t;
+ rc_max_rate: float;
mutable first_pos : bool;
mutable last_block_name : string;
mutable in_kill_mode : bool;
@@ -374,6 +375,15 @@ let load_mission = fun ?editable color geomap xml ->
Map2d.set_georef_if_none geomap (MapFP.georef_of_xml xml);
new MapFP.flight_plan ~format_attribs:attributes_pretty_printer ?editable ~show_moved:true geomap color Env.flight_plan_dtd xml
+let get_rc_max_rate = fun af_xml ->
+ let default_max_rate = 50. in
+ try
+ let gcs_section = ExtXml.child af_xml ~select:(fun x -> Xml.attrib x "name" = "MISC") "section" in
+ let fvalue = fun name default->
+ try ExtXml.float_attrib (ExtXml.child gcs_section ~select:(fun x -> ExtXml.attrib x "name" = name) "define") "value" with _ -> default in
+ (fvalue "RC_MAX_RATE" 50.)
+ with _ -> default_max_rate
+
let get_bat_levels = fun af_xml ->
let default_catastrophic_level = 9.
and default_max_level = 12.5 in
@@ -465,6 +475,7 @@ let create_ac = fun ?(confirm_kill=true) alert (geomap:G.widget) (acs_notebook:G
(** Get an alternate speech name if available *)
let speech_name = get_speech_name af_xml name in
+
(* Aicraft menu decorated with a colored box *)
let image = GBin.event_box ~width:10 ~height:10 () in
image#coerce#misc#modify_bg [`NORMAL, `NAME color];
@@ -688,6 +699,8 @@ let create_ac = fun ?(confirm_kill=true) alert (geomap:G.widget) (acs_notebook:G
Some settings_tab
with _ -> None in
+ let rc_max_rate = get_rc_max_rate af_xml in
+
let wp_HOME =
let rec loop = function
[] -> None
@@ -710,6 +723,7 @@ let create_ac = fun ?(confirm_kill=true) alert (geomap:G.widget) (acs_notebook:G
dl_settings_page = dl_settings_page;
rc_settings_page = rc_settings_page;
strip = strip; first_pos = true;
+ rc_max_rate = rc_max_rate;
last_block_name = ""; alt = 0.; target_alt = 0.;
in_kill_mode = false; speed = 0.;
wind_dir = 42.; ground_prox = true;
@@ -882,7 +896,7 @@ let get_wind_msg = fun (geomap:G.widget) _sender vs ->
let get_fbw_msg = fun alarm _sender vs ->
let ac = get_ac vs in
let status = PprzLink.string_assoc "rc_status" vs
- and rate = (PprzLink.int_assoc "rc_rate" vs) / 5 in
+ and rate = (float_of_int ((PprzLink.int_assoc "rc_rate" vs) * 10) ) /. ac.rc_max_rate in
(* divide by 5 to have normal values between 0 and 10 *)
(* RC rate max approx. 50 Hz *)
ac.strip#set_rc rate status;
diff --git a/sw/ground_segment/cockpit/live.mli b/sw/ground_segment/cockpit/live.mli
index b6d6e9390d..7cf3ab0097 100644
--- a/sw/ground_segment/cockpit/live.mli
+++ b/sw/ground_segment/cockpit/live.mli
@@ -49,6 +49,7 @@ type aircraft = private {
pages : GObj.widget;
notebook_label : GMisc.label;
strip : Strip.t;
+ rc_max_rate : float;
mutable first_pos : bool;
mutable last_block_name : string;
mutable in_kill_mode : bool;
diff --git a/sw/ground_segment/cockpit/strip.ml b/sw/ground_segment/cockpit/strip.ml
index 9fd3cbaedd..8ea15bc390 100644
--- a/sw/ground_segment/cockpit/strip.ml
+++ b/sw/ground_segment/cockpit/strip.ml
@@ -46,7 +46,7 @@ type t =
set_climb : float -> unit;
set_color : string -> string -> unit;
set_label : string -> string -> unit;
- set_rc : int -> string -> unit;
+ set_rc : float -> string -> unit;
connect : (unit -> unit) -> unit;
hide_buttons : unit -> unit;
show_buttons : unit -> unit >
@@ -324,7 +324,7 @@ object
method set_label name value = set_label !strip_labels name value
method set_color name value = set_color !strip_labels name value
- method set_rc rate status = rc#set (float_of_int rate) status
+ method set_rc rate status = rc#set rate status
(* add a button widget in a vertical box if it belongs to a group (create new group if needed) *)
method add_widget ?(group="") w =
diff --git a/sw/ground_segment/cockpit/strip.mli b/sw/ground_segment/cockpit/strip.mli
index 36ada818d4..f40a87c180 100644
--- a/sw/ground_segment/cockpit/strip.mli
+++ b/sw/ground_segment/cockpit/strip.mli
@@ -45,7 +45,7 @@ type t = <
set_climb : float -> unit;
set_color : string -> string -> unit;
set_label : string -> string -> unit;
- set_rc : int -> string -> unit;
+ set_rc : float -> string -> unit;
hide_buttons : unit -> unit;
show_buttons : unit -> unit;
connect : (unit -> unit) -> unit