diff --git a/sw/ground_segment/tmtc/server.ml b/sw/ground_segment/tmtc/server.ml index fababcf93e..eeb8facd26 100644 --- a/sw/ground_segment/tmtc/server.ml +++ b/sw/ground_segment/tmtc/server.ml @@ -101,20 +101,6 @@ let log_xml = fun timeofday data_file -> let start_time = U.gettimeofday () -(* Run a command and return its results as a string. *) -let read_process command = - let buffer_size = 2048 in - let buffer = Buffer.create buffer_size in - let string = String.create buffer_size in - let in_channel = Unix.open_process_in command in - let chars_read = ref 1 in - while !chars_read <> 0 do - chars_read := input in_channel string 0 buffer_size; - Buffer.add_substring buffer string 0 !chars_read - done; - ignore (Unix.close_process_in in_channel); - Buffer.contents buffer - (* Opens the log files *) let logger = fun () -> let d = U.localtime start_time in @@ -127,11 +113,7 @@ let logger = fun () -> and data_name = sprintf "%s.data" basename in let f = open_out (logs_path // log_name) in (* version string with whitespace/newline at the end stripped *) - let version_str = - try - Str.replace_first (Str.regexp "[ \n]+$") "" (read_process (Env.paparazzi_src ^ "/paparazzi_version")) - with _ -> "UNKNOWN" in - output_string f ("\n"); + output_string f ("\n"); let build_str = try let f = open_in (Env.paparazzi_home ^ "/var/build_version.txt") in diff --git a/sw/lib/ocaml/env.ml b/sw/lib/ocaml/env.ml index e33e12c504..35e5a9ab01 100644 --- a/sw/lib/ocaml/env.ml +++ b/sw/lib/ocaml/env.ml @@ -165,3 +165,22 @@ let expand_ac_xml = fun ?(raise_exception = true) ac_conf -> let children = Xml.children ac_conf@optionals in make_element (Xml.tag ac_conf) (Xml.attribs ac_conf) children + +(* Run a command and return its results as a string. *) +let read_process command = + let buffer_size = 2048 in + let buffer = Buffer.create buffer_size in + let string = String.create buffer_size in + let in_channel = Unix.open_process_in command in + let chars_read = ref 1 in + while !chars_read <> 0 do + chars_read := input in_channel string 0 buffer_size; + Buffer.add_substring buffer string 0 !chars_read + done; + ignore (Unix.close_process_in in_channel); + Buffer.contents buffer + +let get_paparazzi_version = fun () -> + try + Str.replace_first (Str.regexp "[ \n]+$") "" (read_process (paparazzi_src ^ "/paparazzi_version")) + with _ -> "UNKNOWN" diff --git a/sw/lib/ocaml/env.mli b/sw/lib/ocaml/env.mli index fdb932a9ef..993eefb59e 100644 --- a/sw/lib/ocaml/env.mli +++ b/sw/lib/ocaml/env.mli @@ -78,3 +78,6 @@ val expand_ac_xml : ?raise_exception:bool -> Xml.xml -> Xml.xml (** Expands a conf.xml aircraft entry, adding the XML configuration files (listed as attributes) as children. Returns an element containing the error message if raise_exception is false (default to true) *) + +val get_paparazzi_version : unit -> string +(** read the current paparazzi_version *) diff --git a/sw/lib/ocaml/xml2h.ml b/sw/lib/ocaml/xml2h.ml index c7cfb38c15..4a4ac3fb79 100644 --- a/sw/lib/ocaml/xml2h.ml +++ b/sw/lib/ocaml/xml2h.ml @@ -49,10 +49,11 @@ let sprint_float_array = fun l -> let begin_out = fun xml_file h_name out -> fprintf out "/* This file has been generated from %s */\n" xml_file; + fprintf out "/* Version %s */\n" (Env.get_paparazzi_version ()); fprintf out "/* Please DO NOT EDIT */\n\n"; fprintf out "#ifndef %s\n" h_name; fprintf out "#define %s\n\n" h_name - + let start_and_begin_out = fun xml_file h_name out -> let xml = Xml.parse_file xml_file in begin_out xml_file h_name out; @@ -65,6 +66,7 @@ let start_and_begin = fun xml_file h_name -> let begin_c_out = fun xml_file name out -> fprintf out "/* This file has been generated from %s */\n" xml_file; + fprintf out "/* Version %s */\n" (Env.get_paparazzi_version ()); fprintf out "/* Please DO NOT EDIT */\n\n"; fprintf out "#include \"%s.h\"\n\n" name diff --git a/sw/supervision/paparazzicenter.ml b/sw/supervision/paparazzicenter.ml index 91b50e1901..22e23acf13 100644 --- a/sw/supervision/paparazzicenter.ml +++ b/sw/supervision/paparazzicenter.ml @@ -147,19 +147,6 @@ let quit_button_callback = fun gui ac_combo session_combo target_combo () -> 2 -> quit_callback gui ac_combo session_combo target_combo () | _ -> () -(* Run a command and return its results as a string. *) -let read_process command = - let buffer_size = 2048 in - let buffer = Buffer.create buffer_size in - let string = String.create buffer_size in - let in_channel = Unix.open_process_in command in - let chars_read = ref 1 in - while !chars_read <> 0 do - chars_read := input in_channel string 0 buffer_size; - Buffer.add_substring buffer string 0 !chars_read - done; - ignore (Unix.close_process_in in_channel); - Buffer.contents buffer (************************** Main *********************************************) let () = @@ -181,10 +168,7 @@ let () = gui#window#set_icon (Some paparazzi_pixbuf); (* version string with whitespace/newline at the end stripped *) - let version_str = - try - Str.replace_first (Str.regexp "[ \n]+$") "" (read_process (Env.paparazzi_src ^ "/paparazzi_version")) - with _ -> "UNKNOWN" in + let version_str = Env.get_paparazzi_version () in let build_str = try let f = open_in (Env.paparazzi_home ^ "/var/build_version.txt") in diff --git a/sw/tools/generators/gen_abi.ml b/sw/tools/generators/gen_abi.ml index 1c39a222b3..57364ed106 100644 --- a/sw/tools/generators/gen_abi.ml +++ b/sw/tools/generators/gen_abi.ml @@ -174,6 +174,7 @@ let () = (** Print file header *) Printf.fprintf h "/* Automatically generated by gen_abi from %s */\n" filename; + Printf.fprintf h "/* Version %s */\n" (Env.get_paparazzi_version ()); Printf.fprintf h "/* Please DO NOT EDIT */\n\n"; Printf.fprintf h "/* Onboard middleware library ABI\n"; Printf.fprintf h " * send and receive messages of class %s\n" class_name; diff --git a/sw/tools/generators/gen_aircraft.ml b/sw/tools/generators/gen_aircraft.ml index 4df87752de..6ab3057ad2 100644 --- a/sw/tools/generators/gen_aircraft.ml +++ b/sw/tools/generators/gen_aircraft.ml @@ -239,6 +239,7 @@ let extract_makefile = fun ac_id airframe_file makefile_ac -> let f = open_out makefile_ac in fprintf f "# This file has been generated by gen_aircraft from %s by %s\n" airframe_file Sys.executable_name; + fprintf f "# Version %s\n" (Env.get_paparazzi_version ()); fprintf f "# Please DO NOT EDIT\n"; fprintf f "AC_ID=%s\n" ac_id; diff --git a/sw/tools/generators/gen_autopilot.ml b/sw/tools/generators/gen_autopilot.ml index 792842253e..3fbfb9ce6e 100644 --- a/sw/tools/generators/gen_autopilot.ml +++ b/sw/tools/generators/gen_autopilot.ml @@ -370,6 +370,7 @@ let parse_and_gen_modes xml_file ap_name main_freq h_dir sm = (* Output settings xml file *) let write_settings = fun xml_file out_set ap -> fprintf out_set "\n" xml_file; + fprintf out_set "\n" (Env.get_paparazzi_version ()); fprintf out_set "\n\n"; fprintf out_set "\n"; fprintf out_set " \n"; diff --git a/sw/tools/generators/gen_flight_plan.ml b/sw/tools/generators/gen_flight_plan.ml index fcff23af76..f95ed750b2 100644 --- a/sw/tools/generators/gen_flight_plan.ml +++ b/sw/tools/generators/gen_flight_plan.ml @@ -842,6 +842,7 @@ let () = else begin let h_name = "FLIGHT_PLAN_H" in printf "/* This file has been generated by gen_flight_plan from %s */\n" !xml_file; + printf "/* Version %s */\n" (Env.get_paparazzi_version ()); printf "/* Please DO NOT EDIT */\n\n"; printf "#ifndef %s\n" h_name; diff --git a/sw/tools/generators/gen_messages.ml b/sw/tools/generators/gen_messages.ml index 954e5cf90e..16a918ce5b 100644 --- a/sw/tools/generators/gen_messages.ml +++ b/sw/tools/generators/gen_messages.ml @@ -366,6 +366,7 @@ let () = let h = stdout in Printf.fprintf h "/* Automatically generated by gen_messages from %s */\n" filename; + Printf.fprintf h "/* Version %s */\n" (Env.get_paparazzi_version ()); Printf.fprintf h "/* Please DO NOT EDIT */\n"; Printf.fprintf h "/* Macros to send and receive messages of class %s */\n" class_name; diff --git a/sw/tools/generators/gen_modules.ml b/sw/tools/generators/gen_modules.ml index 35fa0fc490..0df7b88bc0 100644 --- a/sw/tools/generators/gen_modules.ml +++ b/sw/tools/generators/gen_modules.ml @@ -350,6 +350,7 @@ let check_dependencies = fun modules names -> let write_settings = fun xml_file out_set modules -> fprintf out_set "\n" xml_file; + fprintf out_set "\n" (Env.get_paparazzi_version ()); fprintf out_set "\n\n"; fprintf out_set "\n"; fprintf out_set " \n"; diff --git a/sw/tools/generators/gen_periodic.ml b/sw/tools/generators/gen_periodic.ml index aac3c145a6..b45e12df57 100644 --- a/sw/tools/generators/gen_periodic.ml +++ b/sw/tools/generators/gen_periodic.ml @@ -109,6 +109,7 @@ let write_settings = fun xml_file out_set telemetry_xml -> (* filter xml file to remove unneeded process and modes (more than 1 mode per process) *) let filtered_xml = List.filter (fun p -> List.length (Xml.children p) > 1) (Xml.children telemetry_xml) in fprintf out_set "\n" xml_file; + fprintf out_set "\n" (Env.get_paparazzi_version ()); fprintf out_set "\n\n"; fprintf out_set "\n"; if List.length filtered_xml > 0 then begin @@ -237,6 +238,7 @@ let _ = (** Print header *) fprintf out_h "/* This file has been generated by gen_periodic from %s and %s */\n" Sys.argv.(2) Sys.argv.(3); + fprintf out_h "/* Version %s */\n" (Env.get_paparazzi_version ()); fprintf out_h "/* Please DO NOT EDIT */\n\n"; fprintf out_h "#ifndef _VAR_PERIODIC_H_\n"; fprintf out_h "#define _VAR_PERIODIC_H_\n\n"; diff --git a/sw/tools/generators/gen_radio.ml b/sw/tools/generators/gen_radio.ml index 99afacfbc9..e24af43707 100644 --- a/sw/tools/generators/gen_radio.ml +++ b/sw/tools/generators/gen_radio.ml @@ -139,6 +139,7 @@ let _ = let xml = Xml.parse_file xml_file in printf "/* This file has been generated by gen_radio from %s */\n" xml_file; + printf "/* Version %s */\n" (Env.get_paparazzi_version ()); printf "/* Please DO NOT EDIT */\n\n"; printf "#ifndef %s\n" h_name; define h_name ""; diff --git a/sw/tools/generators/gen_settings.ml b/sw/tools/generators/gen_settings.ml index 43d9e12bb1..3dfaafeeaf 100644 --- a/sw/tools/generators/gen_settings.ml +++ b/sw/tools/generators/gen_settings.ml @@ -356,6 +356,7 @@ let _ = try printf "/* This file has been generated by gen_settings from %s */\n" (String.concat " " !xml_files); + printf "/* Version %s */\n" (Env.get_paparazzi_version ()); printf "/* Please DO NOT EDIT */\n\n"; printf "#ifndef %s\n" h_name;