diff --git a/conf/messages.xml b/conf/messages.xml index 6b2f81d1ad..64779bc3c1 100644 --- a/conf/messages.xml +++ b/conf/messages.xml @@ -80,7 +80,7 @@ - + @@ -466,6 +466,7 @@ + diff --git a/sw/ground_segment/tmtc/Makefile b/sw/ground_segment/tmtc/Makefile index 21c0d52999..ce868f5c19 100644 --- a/sw/ground_segment/tmtc/Makefile +++ b/sw/ground_segment/tmtc/Makefile @@ -38,6 +38,9 @@ OCAMLLIB = ../../lib/ocaml INCLUDES= -I $(OCAMLLIB) -I ../multimon -I +lablgtk2 -I +xml-light LIBPPRZCMA=$(OCAMLLIB)/lib-pprz.cma +SERVERCMO = aircraft.cmo wind.cmo airprox.cmo server.cmo +SERVERCMX = $(SERVERCMO:.cmo=.cmx) + $(VAR)/boa.conf :$(CONF)/boa.conf mkdir -p $(VAR) sed 's|PAPARAZZI_HOME|$(PAPARAZZI_HOME)|' < $< > $@ @@ -49,10 +52,14 @@ messages : messages.cmo $(Q)$(OCAMLC) -custom $(INCLUDES) -o $@ lablgtk.cma glibivy-ocaml.cma lib-pprz.cma gtkInit.cmo $^ -server : aircraft.cmo wind.cmo airprox.cmo server.cmo +server : $(SERVERCMO) @echo OL $@ $(Q)$(OCAMLC) -custom $(INCLUDES) -o $@ lablgtk.cma glibivy-ocaml.cma lib-pprz.cma $^ +server.opt : $(SERVERCMX) + @echo OOL $@ + $(Q)$(OCAMLOPT) $(INCLUDES) -o $@ str.cmxa unix.cmxa xml-light.cmxa lablgtk.cmxa glibivy-ocaml.cmxa lib-pprz.cmxa $^ + link : modem.cmo link.cmo @echo OL $@ $(Q)$(OCAMLC) -custom $(INCLUDES) -o $@ lablgtk.cma glibivy-ocaml.cma lib-pprz.cma multimon.cma $^ @@ -62,6 +69,10 @@ link : modem.cmo link.cmo @echo OC $< $(Q)$(OCAMLC) $(INCLUDES) -c $< +%.cmx : %.ml + @echo OOC $< + $(Q)$(OCAMLOPT) $(INCLUDES) -c $< + %.cmi : %.mli $(LIBPPRZCMA) @echo OC $< $(Q)$(OCAMLC) $(INCLUDES) $< diff --git a/sw/ground_segment/tmtc/aircraft.ml b/sw/ground_segment/tmtc/aircraft.ml index 182c9fcd2b..fcb56ba2f9 100644 --- a/sw/ground_segment/tmtc/aircraft.ml +++ b/sw/ground_segment/tmtc/aircraft.ml @@ -93,6 +93,7 @@ type aircraft = { mutable cur_block : int; mutable cur_stage : int; mutable throttle : float; + mutable kill_mode : bool; mutable throttle_accu : float; mutable rpm : float; mutable temp : float; diff --git a/sw/ground_segment/tmtc/aircraft.mli b/sw/ground_segment/tmtc/aircraft.mli index f53ff941ae..94fa8f5373 100644 --- a/sw/ground_segment/tmtc/aircraft.mli +++ b/sw/ground_segment/tmtc/aircraft.mli @@ -80,6 +80,7 @@ type aircraft = { mutable cur_block : int; mutable cur_stage : int; mutable throttle : float; + mutable kill_mode : bool; mutable throttle_accu : float; mutable rpm : float; mutable temp : float; diff --git a/sw/ground_segment/tmtc/server.ml b/sw/ground_segment/tmtc/server.ml index ac975678cc..a4dc7b8f46 100644 --- a/sw/ground_segment/tmtc/server.ml +++ b/sw/ground_segment/tmtc/server.ml @@ -191,6 +191,7 @@ let log_and_parse = fun logging ac_name a msg values -> | "BAT" -> a.last_bat_msg_date <- U.gettimeofday (); a.throttle <- fvalue "desired_gaz" /. 9600. *. 100.; + a.kill_mode <- ivalue "kill_auto_throttle" <> 0; a.flight_time <- ivalue "flight_time"; a.rpm <- a.throttle *. 100.; a.bat <- fvalue "voltage" /. 10.; @@ -512,14 +513,17 @@ let send_aircraft_msg = fun ac -> let gaz_mode = get_indexed_value gaz_modes a.gaz_mode in let lat_mode = get_indexed_value lat_modes a.lateral_mode in let horiz_mode = get_indexed_value horiz_modes a.horizontal_mode in - let gps_mode = get_indexed_value gps_modes a.gps_mode in + let gps_mode = get_indexed_value gps_modes a.gps_mode + and kill_mode = if a.kill_mode then "ON" else "OFF" in let values = ["ac_id", Pprz.String ac; "flight_time", Pprz.Int a.flight_time; "ap_mode", Pprz.String ap_mode; "gaz_mode", Pprz.String gaz_mode; "lat_mode", Pprz.String lat_mode; "horiz_mode", Pprz.String horiz_mode; - "gps_mode", Pprz.String gps_mode] in + "gps_mode", Pprz.String gps_mode; + "kill_mode", Pprz.String kill_mode + ] in Ground_Pprz.message_send my_id "AP_STATUS" values; send_cam_status a; @@ -551,7 +555,7 @@ let new_aircraft = fun id -> nav_ref = None; cam = { phi = 0.; theta = 0. ; target=(0.,0.)}; inflight_calib = { if_mode = 1 ; if_val1 = 0.; if_val2 = 0.}; - infrared = infrared_init; + infrared = infrared_init; kill_mode = false; fbw = { rc_status = "???"; rc_mode = "???" }; svinfo = Array.create gps_nb_channels svinfo_init; dl_setting_values = Array.create max_nb_dl_setting_values 42.; @@ -564,8 +568,9 @@ let new_aircraft = fun id -> let check_alerts = fun a -> let send = fun level -> - let vs = - ["ac_id", Pprz.String a.id; "level", Pprz.String level; "value", Pprz.Float a.bat] in + let vs = [ "ac_id", Pprz.String a.id; + "level", Pprz.String level; + "value", Pprz.Float a.bat] in Alerts_Pprz.message_send my_id "BAT_LOW" vs in if a.bat < 9. then send "CATASTROPHIC" else if a.bat < 10. then send "CRITIC"