diff --git a/conf/airframes/CDW/debug_i2c_lpc.xml b/conf/airframes/CDW/debug_i2c_lpc.xml
index ba83581105..a93292c82a 100644
--- a/conf/airframes/CDW/debug_i2c_lpc.xml
+++ b/conf/airframes/CDW/debug_i2c_lpc.xml
@@ -42,21 +42,12 @@
-
-
-
-
+
+
diff --git a/conf/airframes/CDW/yapa_xsens.xml b/conf/airframes/CDW/yapa_xsens.xml
index 45e715c90d..6e0db7d71a 100644
--- a/conf/airframes/CDW/yapa_xsens.xml
+++ b/conf/airframes/CDW/yapa_xsens.xml
@@ -47,17 +47,12 @@
-
-
-
-
+
+
diff --git a/conf/airframes/airframe.dtd b/conf/airframes/airframe.dtd
index d1a225ab55..9a1e5c36b6 100644
--- a/conf/airframes/airframe.dtd
+++ b/conf/airframes/airframe.dtd
@@ -11,11 +11,12 @@
-
+
+
@@ -93,6 +94,12 @@ command CDATA #REQUIRED>
var CDATA #REQUIRED
value CDATA #REQUIRED>
+
+
+
@@ -23,21 +24,29 @@
+
+
+
-
+
-
-
+
+
diff --git a/sw/tools/gen_airframe.ml b/sw/tools/gen_airframe.ml
index aa58e5ad54..458f607354 100644
--- a/sw/tools/gen_airframe.ml
+++ b/sw/tools/gen_airframe.ml
@@ -171,6 +171,13 @@ let parse_command_laws = fun command ->
and value = a "value" in
let v = preprocess_value value "values" "COMMAND" in
printf " int16_t _var_%s = %s;\\\n" var v
+ | "ratelimit" ->
+ let var = a "var"
+ and value = a "value"
+ and rate_min = a "rate_min"
+ and rate_max = a "rate_max" in
+ let v = preprocess_value value "values" "COMMAND" in
+ printf " static int16_t _var_%s = 0; _var_%s = Chop((%s) - (_var_%s), (%s), (%s));\\\n" var var v var rate_min rate_max
| "define" ->
parse_element "" command
| _ -> xml_error "set|let"