mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-23 13:24:03 +08:00
send_always is now a boolean
This commit is contained in:
+4
-3
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user