|
|
@@ -9,10 +9,13 @@ process main {
|
|
|
var("/run/current-system/sw/bin/python2.7") python;
|
|
|
|
|
|
value([]) joy_positions;
|
|
|
+ joy_positions->insert("BTN_TRIGGER", "0");
|
|
|
Foreach (joy_axis_ranges As axis_name: range) {
|
|
|
- joy_positions->insert(axis_name, @num_divide(range, "2"));
|
|
|
+ joy_positions->insert(@concat("ABS_", axis_name), @num_divide(range, "2"));
|
|
|
};
|
|
|
|
|
|
+ value(["BTN_THUMB": @false]) joy_latch_buttons;
|
|
|
+
|
|
|
blocker(@true) joy_event_signal;
|
|
|
|
|
|
compile_search(" ") search_space;
|
|
|
@@ -31,22 +34,24 @@ template _spheroncd_joystick_events {
|
|
|
|
|
|
sys.evdev(global.joy_dev) joy_event;
|
|
|
|
|
|
- value(joy_event.code) code;
|
|
|
- code->substr("0", "4") code_check;
|
|
|
- If (@val_different(code_check, "ABS_")) {
|
|
|
+ global.joy_positions->try_get(joy_event.code) positions_entry;
|
|
|
+ If (positions_entry.exists) {
|
|
|
+ global.joy_positions->replace(joy_event.code, joy_event.value);
|
|
|
+ global.joy_event_signal->up();
|
|
|
joy_event->nextevent();
|
|
|
};
|
|
|
- code->substr("4") axis_name;
|
|
|
|
|
|
- global.joy_positions->try_get(axis_name) positions_entry;
|
|
|
- If (@not(positions_entry.exists)) {
|
|
|
+ global.joy_latch_buttons->try_get(joy_event.code) buttons_entry;
|
|
|
+ If (buttons_entry.exists) {
|
|
|
+ If (@val_equal(joy_event.value, "0")) {
|
|
|
+ joy_event->nextevent();
|
|
|
+ };
|
|
|
+ println(joy_event.code);
|
|
|
+ global.joy_latch_buttons->replace(joy_event.code, @true);
|
|
|
+ global.joy_event_signal->up();
|
|
|
joy_event->nextevent();
|
|
|
};
|
|
|
|
|
|
- global.joy_positions->replace(axis_name, joy_event.value);
|
|
|
-
|
|
|
- global.joy_event_signal->up();
|
|
|
-
|
|
|
joy_event->nextevent();
|
|
|
}
|
|
|
|
|
|
@@ -141,10 +146,10 @@ template _spheroncd_roll_task {
|
|
|
backtrack_point() again;
|
|
|
|
|
|
global.joy_event_signal->down();
|
|
|
- value(global.joy_positions) joy_positions;
|
|
|
|
|
|
- joy_positions->get("X") pos_x;
|
|
|
- joy_positions->get("Y") pos_y;
|
|
|
+ global.joy_positions->get("ABS_X") pos_x;
|
|
|
+ global.joy_positions->get("ABS_Y") pos_y;
|
|
|
+ global.joy_positions->get("BTN_TRIGGER") turbo;
|
|
|
global.joy_axis_ranges->get("X") max_x;
|
|
|
global.joy_axis_ranges->get("Y") max_y;
|
|
|
|
|
|
@@ -153,9 +158,12 @@ template _spheroncd_roll_task {
|
|
|
global.search_space->explode(calc_op.response) resp_fields;
|
|
|
value(resp_fields) resp_fields;
|
|
|
|
|
|
- resp_fields->get("0") heading;
|
|
|
- resp_fields->get("1") speed;
|
|
|
- call(@_spheroncd_roll, {^dev, speed, heading, "1"});
|
|
|
+ resp_fields->get("0") calc_heading;
|
|
|
+ resp_fields->get("1") calc_speed;
|
|
|
+
|
|
|
+ var(@if(@num_greater(turbo, "0"), "255", calc_speed)) speed;
|
|
|
+
|
|
|
+ call(@_spheroncd_roll, {^dev, speed, calc_heading, "1"});
|
|
|
|
|
|
sleep(global.max_roll_interval);
|
|
|
|