paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [4408] Fix gen_periodic to warn about min/ max messa


From: Allen Ibara
Subject: [paparazzi-commits] [4408] Fix gen_periodic to warn about min/ max message bounds using periodic frequency passed from command line
Date: Tue, 05 Jan 2010 05:43:32 +0000

Revision: 4408
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4408
Author:   aibara
Date:     2010-01-05 05:43:32 +0000 (Tue, 05 Jan 2010)
Log Message:
-----------
Fix gen_periodic to warn about min/max message bounds using periodic frequency 
passed from command line
instead of using 60hz

Modified Paths:
--------------
    paparazzi3/trunk/sw/tools/gen_periodic.ml

Modified: paparazzi3/trunk/sw/tools/gen_periodic.ml
===================================================================
--- paparazzi3/trunk/sw/tools/gen_periodic.ml   2010-01-05 04:43:05 UTC (rev 
4407)
+++ paparazzi3/trunk/sw/tools/gen_periodic.ml   2010-01-05 05:43:32 UTC (rev 
4408)
@@ -37,9 +37,7 @@
   fprintf c "%s" (String.make !margin ' ');
   fprintf c f
 
-let freq = ref 60
-let min_period = 1./.float !freq
-let max_period = 65536. /. float !freq
+(**let freq = ref 60 *)
 
 let remove_dup = fun l ->
   let rec loop = fun l ->
@@ -50,7 +48,9 @@
   loop (List.sort compare l)
 
 
-let output_modes = fun avr_h process_name channel_name modes ->       
+let output_modes = fun avr_h process_name channel_name modes freq ->       
+  let min_period = 1./.float freq in
+  let max_period = 65536. /. float freq in
   (** For each mode in this process *)
   List.iter
     (fun mode ->
@@ -65,7 +65,7 @@
            let p = float_of_string (ExtXml.attrib x "period") in
            if p < min_period || p > max_period then
              fprintf stderr "Warning: period is bound between %.3fs and %.3fs 
for message %s\n%!" min_period max_period (ExtXml.attrib x "name");
-           (x, min 65535 (max 1 (int_of_float (p*.float_of_int !freq)))))
+           (x, min 65535 (max 1 (int_of_float (p*.float_of_int freq)))))
          (Xml.children mode)
       in
       let modulos = remove_dup (List.map snd messages) in
@@ -87,12 +87,12 @@
          let message_name = ExtXml.attrib message "name" in
          i := !i mod p;
          (* if phase attribute is present, use it, otherwise shedule at 10Hz *)
-         let message_phase = try int_of_float (float_of_string (ExtXml.attrib 
message "phase")*.float_of_int !freq) with _ -> !i in
+         let message_phase = try int_of_float (float_of_string (ExtXml.attrib 
message "phase")*.float_of_int freq) with _ -> !i in
          phase := message_phase;
          let else_ = if List.mem_assoc p !l && not (List.mem (p, !phase) !l) 
then "else " else "" in
          lprintf avr_h "%sif (i%d == %d) {\\\n" else_ p !phase;
          l := (p, !phase) :: !l;
-         i := !i + !freq/10;
+         i := !i + freq/10;
          right ();
          lprintf avr_h "PERIODIC_SEND_%s(%s);\\\n" message_name channel_name;
          left ();
@@ -109,7 +109,7 @@
     failwith (sprintf "Usage: %s <messages.xml> <telemetry.xml> 
frequency_in_hz" Sys.argv.(0)) 
   end;
 
-  freq := int_of_string(Sys.argv.(3));
+  let freq = int_of_string(Sys.argv.(3)) in
   let telemetry_xml = 
     try
       Xml.parse_file Sys.argv.(2)
@@ -147,9 +147,9 @@
        incr i)
        modes;
 
-      lprintf avr_h "#define PeriodicSend%s_%s() {  /* %dHz */ \\\n" 
process_name channel_name !freq;
+      lprintf avr_h "#define PeriodicSend%s_%s() {  /* %dHz */ \\\n" 
process_name channel_name freq;
       right ();
-      output_modes avr_h process_name channel_name modes;
+      output_modes avr_h process_name channel_name modes freq;
       left ();
       lprintf avr_h "}\n"
     )





reply via email to

[Prev in Thread] Current Thread [Next in Thread]