Skip to content

Commit

Permalink
[settings] group system settings under the same tab
Browse files Browse the repository at this point in the history
  • Loading branch information
gautierhattenberger committed Dec 19, 2016
1 parent 590c904 commit 5166037
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 12 deletions.
9 changes: 5 additions & 4 deletions Makefile.ac
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,9 @@ print_version:
@echo "Paparazzi version" $(GIT_DESC)$(VERSION_MATCH)
@echo "-----------------------------------------------------------------------"

all_ac_h: $(SRCS_LIST) qt_project autopilot_h
all_ac_h: $(SRCS_LIST) qt_project

$(SRCS_LIST) : $(CONF_XML) $(AIRFRAME_H) $(MODULES_H) $(SETTINGS_H) $(MAKEFILE_AC) $(PERIODIC_H)
$(SRCS_LIST) : $(CONF_XML) $(AIRFRAME_H) $(MODULES_H) autopilot_h $(SETTINGS_H) $(MAKEFILE_AC) $(PERIODIC_H)
@echo "TARGET: " $(TARGET) > $(SRCS_LIST)
@echo "CFLAGS: " $(CFLAGS) >> $(SRCS_LIST)
@echo "LDFLAGS: " $($(TARGET).LDFLAGS) >> $(SRCS_LIST)
Expand Down Expand Up @@ -219,11 +219,12 @@ $(FLIGHT_PLAN_XML) : $(CONF)/$(FLIGHT_PLAN) $(CONF_XML) $(GENERATORS)/gen_flight
$(Q)mv $($@_TMP) $@
$(Q)chmod a+r $@

$(SETTINGS_H) : $(SETTINGS_XMLS_DEP) $(CONF_XML) $(SETTINGS_MODULES) $(SETTINGS_TELEMETRY) $(GENERATORS)/gen_settings.out
# split system settings (generated) from user settings with a '--'
$(SETTINGS_H) : $(SETTINGS_XMLS_DEP) $(CONF_XML) $(SETTINGS_MODULES) $(SETTINGS_TELEMETRY) $(GENERATORS)/gen_settings.out autopilot_h
$(Q)test -d $(AC_GENERATED) || mkdir -p $(AC_GENERATED)
@echo GENERATE $@
$(eval $@_TMP := $(shell $(MKTEMP)))
$(Q)$(GENERATORS)/gen_settings.out $(SETTINGS_XML) $(SETTINGS_TELEMETRY) $(SETTINGS_XMLS) $(SETTINGS_FLIGHTPLAN) $(SETTINGS_MODULES) > $($@_TMP)
$(Q)$(GENERATORS)/gen_settings.out $(SETTINGS_XML) $(SETTINGS_AUTOPILOT) $(SETTINGS_TELEMETRY) $(SETTINGS_FLIGHTPLAN) $(SETTINGS_MODULES) -- $(SETTINGS_XMLS) > $($@_TMP)
$(Q)mv $($@_TMP) $@
$(Q)chmod a+r $@
$(Q)cp $(SETTINGS_XMLS_DEP) $(AIRCRAFT_CONF_DIR)/settings
Expand Down
30 changes: 22 additions & 8 deletions sw/tools/generators/gen_settings.ml
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ let supports_target = fun t targets ->
else
Str.string_match (Str.regexp (".*"^t^".*")) targets 0

let join_xml_files = fun xml_files ->
let join_xml_files = fun xml_sys_files xml_user_files ->
let dl_settings = ref []
and rc_settings = ref [] in
let target = try Sys.getenv "TARGET" with _ -> "" in
Expand Down Expand Up @@ -348,7 +348,18 @@ let join_xml_files = fun xml_files ->
| Not_found -> [] in
rc_settings := these_rc_settings @ !rc_settings;
dl_settings := these_dl_settings @ !dl_settings)
xml_files;
xml_user_files;

(* add system settings grouped under the same tab *)
let dl_sys = List.map (fun xml_file ->
let xml = ExtXml.parse_file xml_file in
(* take "second stage" dl_settings nodes *)
let dl = ExtXml.child xml "dl_settings" in
Xml.children dl
) xml_sys_files in
dl_settings := Xml.Element("dl_settings", [("name", "System")], List.rev (List.flatten dl_sys)) :: !dl_settings;

(* return final node *)
Xml.Element("rc_settings",[],!rc_settings), Xml.Element("dl_settings",[],!dl_settings)


Expand All @@ -357,21 +368,24 @@ let _ =
if Array.length Sys.argv < 4 then
failwith (Printf.sprintf "Usage: %s output_xml_file input_xml_file(s) input_xml_modules" Sys.argv.(0));
let h_name = "SETTINGS_H"
and xml_files = ref [] in
for i = 2 to Array.length Sys.argv - 1 do
xml_files := Sys.argv.(i) :: !xml_files;
done;
and xml_files = Array.to_list (Array.sub Sys.argv 2 (Array.length Sys.argv - 2)) in
(* split system settings and user settings based on '*' separator *)
let xml_sys_files, xml_user_files, _ = List.fold_left (fun (sys, user, delim) x ->
if x = "--" then (sys, user, true)
else if delim then (sys, x :: user, delim)
else (x :: sys, user, delim)) ([], [], false) xml_files
in

try
printf "/* This file has been generated by gen_settings from %s */\n" (String.concat " " !xml_files);
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;
define h_name "";
nl ();

let rc_settings, dl_settings = join_xml_files !xml_files in
let rc_settings, dl_settings = join_xml_files xml_sys_files xml_user_files in

let xml = Xml.Element ("settings", [], [rc_settings; dl_settings]) in
let f = open_out Sys.argv.(1) in
Expand Down

0 comments on commit 5166037

Please sign in to comment.