send_always is now a boolean

This commit is contained in:
Gautier Hattenberger
2011-03-24 18:24:22 +01:00
parent a8f36ce808
commit c7fddd84cf
5 changed files with 65 additions and 65 deletions
+4 -3
View File
@@ -78,6 +78,10 @@
/sw/ground_segment/tmtc/server
/sw/ground_segment/tmtc/diadec
# /sw/ground_segment/joystick
/sw/ground_segment/joystick/input2ivy
/sw/ground_segment/joystick/test_stick
# /sw/lib/ocaml/
/sw/lib/ocaml/gtk_papget_editor.ml
/sw/lib/ocaml/gtk_papget_text_editor.ml
@@ -109,9 +113,6 @@
/sw/tools/fp_parser.ml
/sw/tools/wiki_gen/wiki_gen
# /sw/ground_segment/joystick
/sw/ground_segment/joystick/test_stick
# /sw/airborne/arch/lpc21/test/bootloader
/sw/airborne/arch/lpc21/test/bootloader/bl.dmp
/sw/airborne/arch/lpc21/test/bootloader/bl.hex
+16 -16
View File
@@ -41,7 +41,7 @@ It has 9 buttons.
<messages period="0.0333333333">
<message class="datalink" name="RC_4CH" send_always="1">
<message class="datalink" name="RC_4CH" send_always="true">
<field name="joystick_id" value="JoystickID()"/>
<field name="throttle" value="Scale(ly,-10,127)"/>
<field name="roll" value="rx"/>
@@ -51,44 +51,44 @@ It has 9 buttons.
<!-- trim commands -->
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b1">
<message class="ground" name="DL_SETTING_MOD" on_event="b1">
<field name="index" value="IndexOfSetting('rc_roll_trim')"/>
<field name="mod" value="10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b0">
<message class="ground" name="DL_SETTING_MOD" on_event="b0">
<field name="index" value="IndexOfSetting('rc_roll_trim')"/>
<field name="mod" value="0-10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b3">
<message class="ground" name="DL_SETTING_MOD" on_event="b3">
<field name="index" value="IndexOfSetting('rc_pitch_trim')"/>
<field name="mod" value="10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b2">
<message class="ground" name="DL_SETTING_MOD" on_event="b2">
<field name="index" value="IndexOfSetting('rc_pitch_trim')"/>
<field name="mod" value="0-10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b11">
<message class="ground" name="DL_SETTING_MOD" on_event="b11">
<field name="index" value="IndexOfSetting('rc_yaw_trim')"/>
<field name="mod" value="10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b10">
<message class="ground" name="DL_SETTING_MOD" on_event="b10">
<field name="index" value="IndexOfSetting('rc_yaw_trim')"/>
<field name="mod" value="0-10"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b10 && b11">
<message class="ground" name="DL_SETTING" on_event="b10 && b11">
<field name="index" value="IndexOfSetting('rc_roll_trim')"/>
<field name="value" value="0"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b10 && b11">
<message class="ground" name="DL_SETTING" on_event="b10 && b11">
<field name="index" value="IndexOfSetting('rc_pitch_trim')"/>
<field name="value" value="0"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b10 && b11">
<message class="ground" name="DL_SETTING" on_event="b10 && b11">
<field name="index" value="IndexOfSetting('rc_yaw_trim')"/>
<field name="value" value="0-10"/>
</message>
@@ -105,36 +105,36 @@ It has 9 buttons.
<!-- Camera switch. Currently uses same buttons as yaw trim -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b1">
<message class="ground" name="DL_SETTING" on_event="b1">
<field name="index" value="IndexOfSetting('cam_switch')"/>
<field name="value" value="1"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b0">
<message class="ground" name="DL_SETTING" on_event="b0">
<field name="index" value="IndexOfSetting('cam_switch')"/>
<field name="value" value="0"/>
</message>
<!-- Red Button --> <!-- AUTO2 mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b8">
<message class="ground" name="DL_SETTING" on_event="b8">
<field name="index" value="IndexOfSetting('pprz_mode')"/>
<field name="value" value="2"/>
</message>
<!-- Yellow Button --> <!-- AUTO1 mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b7">
<message class="ground" name="DL_SETTING" on_event="b7">
<field name="index" value="IndexOfSetting('pprz_mode')"/>
<field name="value" value="1"/>
</message>
<!-- Green Button --> <!-- MANUAL mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b9">
<message class="ground" name="DL_SETTING" on_event="b9">
<field name="index" value="IndexOfSetting('pprz_mode')"/>
<field name="value" value="0"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b7 || b8 || b9">
<message class="ground" name="DL_SETTING" on_event="b7 || b8 || b9">
<field name="index" value="IndexOfSetting('rc_dl_active_joystick')"/>
<field name="value" value="JoystickID()"/>
</message>
+5 -5
View File
@@ -38,7 +38,7 @@ The "mode" button swaps the axes on the left stick and the d pad.
<messages period="0.017">
<message class="datalink" name="RC_4CH" send_always="1">
<message class="datalink" name="RC_4CH" send_always="true">
<field name="throttle" value="Scale(0-ly,0,255)"/>
<field name="roll" value="rx"/>
<field name="yaw" value="lx"/>
@@ -60,23 +60,23 @@ The "mode" button swaps the axes on the left stick and the d pad.
-->
<!-- Button 5 top left bumper) --> <!-- AUTO1 mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b4">
<message class="ground" name="DL_SETTING" on_event="b4">
<field name="index" value="5"/>
<field name="value" value="1"/>
</message>
<!-- Button 7 bottom left bumper --> <!-- AUTO2 mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b6">
<message class="ground" name="DL_SETTING" on_event="b6">
<field name="index" value="5"/>
<field name="value" value="2"/>
</message>
<!-- Buttons 6+8 (right pad) --> <!-- KILL mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b5">
<message class="ground" name="DL_SETTING" on_event="b5">
<field name="index" value="5"/>
<field name="value" value="5"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b7">
<message class="ground" name="DL_SETTING" on_event="b7">
<field name="index" value="5"/>
<field name="value" value="5"/>
</message>
+16 -16
View File
@@ -50,7 +50,7 @@ It has 8 buttons.
<messages period="0.0333333333">
<message class="datalink" name="RC_4CH" send_always="1">
<message class="datalink" name="RC_4CH" send_always="true">
<field name="joystick_id" value="JoystickID()"/>
<field name="throttle" value="Bound(0-ly,0,127)"/>
<field name="roll" value="rx"/>
@@ -60,44 +60,44 @@ It has 8 buttons.
<!-- trim commands -->
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="dx > 100">
<message class="ground" name="DL_SETTING_MOD" on_event="dx > 100">
<field name="index" value="IndexOfSetting('rc_roll_trim')"/>
<field name="mod" value="10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="0-dx > 100" >
<message class="ground" name="DL_SETTING_MOD" on_event="0-dx > 100" >
<field name="index" value="IndexOfSetting('rc_roll_trim')"/>
<field name="mod" value="0-10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="dy > 100">
<message class="ground" name="DL_SETTING_MOD" on_event="dy > 100">
<field name="index" value="IndexOfSetting('rc_pitch_trim')"/>
<field name="mod" value="10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="0-dy > 100">
<message class="ground" name="DL_SETTING_MOD" on_event="0-dy > 100">
<field name="index" value="IndexOfSetting('rc_pitch_trim')"/>
<field name="mod" value="0-10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b_rtb">
<message class="ground" name="DL_SETTING_MOD" on_event="b_rtb">
<field name="index" value="IndexOfSetting('rc_yaw_trim')"/>
<field name="mod" value="10"/>
</message>
<message class="ground" name="DL_SETTING_MOD" send_always="0" on_event="b_ltb">
<message class="ground" name="DL_SETTING_MOD" on_event="b_ltb">
<field name="index" value="IndexOfSetting('rc_yaw_trim')"/>
<field name="mod" value="0-10"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_ltb && b_rtb">
<message class="ground" name="DL_SETTING" on_event="b_ltb && b_rtb">
<field name="index" value="IndexOfSetting('rc_roll_trim')"/>
<field name="value" value="0"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_ltb && b_rtb">
<message class="ground" name="DL_SETTING" on_event="b_ltb && b_rtb">
<field name="index" value="IndexOfSetting('rc_pitch_trim')"/>
<field name="value" value="0"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_ltb && b_rtb">
<message class="ground" name="DL_SETTING" on_event="b_ltb && b_rtb">
<field name="index" value="IndexOfSetting('rc_yaw_trim')"/>
<field name="value" value="0-10"/>
</message>
@@ -114,36 +114,36 @@ It has 8 buttons.
<!-- Camera switch. Currently uses same buttons as yaw trim -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_start">
<message class="ground" name="DL_SETTING" on_event="b_start">
<field name="index" value="IndexOfSetting('cam_switch')"/>
<field name="value" value="1"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_back">
<message class="ground" name="DL_SETTING" on_event="b_back">
<field name="index" value="IndexOfSetting('cam_switch')"/>
<field name="value" value="0"/>
</message>
<!-- Red Button --> <!-- AUTO2 mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_red">
<message class="ground" name="DL_SETTING" on_event="b_red">
<field name="index" value="IndexOfSetting('pprz_mode')"/>
<field name="value" value="2"/>
</message>
<!-- Yellow Button --> <!-- AUTO1 mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_yellow">
<message class="ground" name="DL_SETTING" on_event="b_yellow">
<field name="index" value="IndexOfSetting('pprz_mode')"/>
<field name="value" value="1"/>
</message>
<!-- Green Button --> <!-- MANUAL mode -->
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_green">
<message class="ground" name="DL_SETTING" on_event="b_green">
<field name="index" value="IndexOfSetting('pprz_mode')"/>
<field name="value" value="0"/>
</message>
<message class="ground" name="DL_SETTING" send_always="0" on_event="b_green || b_yellow || b_red">
<message class="ground" name="DL_SETTING" on_event="b_green || b_yellow || b_red">
<field name="index" value="IndexOfSetting('rc_dl_active_joystick')"/>
<field name="value" value="JoystickID()"/>
</message>
+24 -25
View File
@@ -88,7 +88,7 @@ type msg = {
msg_class : string;
fields : (string * Syntax.expression) list;
on_event : Syntax.expression option;
send_always : int
send_always : bool
}
(** Represenation of an input device and of the messages to send *)
@@ -189,22 +189,21 @@ let eval_settings_and_blocks = fun field_descr expr ->
(** Parse an XML list of input channels *)
let parse_input = fun input ->
List.map
(fun x ->
let name = Xml.attrib x "name"
and index = ExtXml.int_attrib x "index" in
let value =
match Xml.tag x with
"axis" ->
let trim = try ExtXml.float_attrib x "trim" with _ -> 0.0 in
let exponent = try ExtXml.float_attrib x "exponent" with _ -> 0. in
let limit = try ExtXml.float_attrib x "limit" with _ -> 1.0 in
let deadband = try ExtXml.int_attrib x "deadband" with _ -> 0 in
Axis (index, deadband, limit, exponent, ref trim)
| "button" -> Button index
| _ -> failwith "parse_input: unexepcted tag" in
(name, value))
(Xml.children input)
List.map (fun x ->
let name = Xml.attrib x "name"
and index = ExtXml.int_attrib x "index" in
let value =
match Xml.tag x with
"axis" ->
let trim = try ExtXml.float_attrib x "trim" with _ -> 0.0 in
let exponent = try ExtXml.float_attrib x "exponent" with _ -> 0.0 in
let limit = try ExtXml.float_attrib x "limit" with _ -> 1.0 in
let deadband = try ExtXml.int_attrib x "deadband" with _ -> 0 in
Axis (index, deadband, limit, exponent, ref trim)
| "button" -> Button index
| _ -> failwith "parse_input: unexepcted tag" in
(name, value))
(Xml.children input)
(** Parse a 'à la C' expression *)
let parse_value = fun s ->
@@ -222,7 +221,7 @@ let parse_msg_field = fun msg_descr field ->
let parse_msg = fun msg ->
let msg_name = Xml.attrib msg "name"
and msg_class = Xml.attrib msg "class"
and send_always = (try ExtXml.int_attrib msg "send_always" with _ -> 0) in
and send_always = (try (Xml.attrib msg "send_always") = "true" with _ -> false) in
let fields =
match get_message_type msg_class with
@@ -327,11 +326,11 @@ let eval_call = fun f args ->
"-", [a1; a2] -> a1 - a2
| "+", [a1; a2] -> a1 + a2
| "*", [a1; a2] -> a1 * a2
| "%", [a1; a2] -> a1 / a2
| "%", [a1; a2] -> a1 / a2
| "&&", [a1; a2] -> a1 land a2
| "||", [a1; a2] -> a1 lor a2
| "<", [a1;a2] -> if a1 < a2 then 1 else 0
| ">", [a1;a2] -> if a1 > a2 then 1 else 0
| "<", [a1; a2] -> if a1 < a2 then 1 else 0
| ">", [a1; a2] -> if a1 > a2 then 1 else 0
| "Scale", [x; min; max] -> scale (x) (min) (max)
| "Bound", [x; min; max] -> bound (x) (min) (max)
| "JoystickID", [] -> !joystick_id
@@ -341,12 +340,12 @@ let eval_call = fun f args ->
let eval_expr = fun buttons axis inputs expr ->
let rec eval = function
Syntax.Ident ident ->
let input = my_assoc ident inputs in
eval_input buttons axis input
let input = my_assoc ident inputs in
eval_input buttons axis input
| Syntax.Int int -> int
| Syntax.Float float -> failwith "eval_expr: float"
| Syntax.Call (ident, exprs) | Syntax.CallOperator (ident, exprs) ->
eval_call ident (List.map eval exprs)
eval_call ident (List.map eval exprs)
| Syntax.Index _ -> failwith "eval_expr: index"
| Syntax.Field _ -> failwith "eval_expr: Field" in
@@ -405,7 +404,7 @@ let execute_action = fun ac_id inputs buttons axis message ->
| Some expr -> eval_expr buttons axis inputs expr <> 0 in
let previous_values = get_previous_values message.msg_name in
if ( ( (on_event, values) <> previous_values ) || message.send_always = 1 ) && on_event then begin
if ( ( (on_event, values) <> previous_values ) || message.send_always ) && on_event then begin
let vs = ("ac_id", Pprz.Int ac_id) :: values in
match message.msg_class with
"datalink" -> DL.message_send "input2ivy" message.msg_name vs