paparazzi-commits
[Top][All Lists]
Advanced

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

[paparazzi-commits] [4062] add new joysticks for quads


From: Gautier Hattenberger
Subject: [paparazzi-commits] [4062] add new joysticks for quads
Date: Thu, 03 Sep 2009 11:22:23 +0000

Revision: 4062
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4062
Author:   gautier
Date:     2009-09-03 11:22:23 +0000 (Thu, 03 Sep 2009)
Log Message:
-----------
add new joysticks for quads

Modified Paths:
--------------
    paparazzi3/trunk/sw/ground_segment/joystick/Makefile

Added Paths:
-----------
    paparazzi3/trunk/sw/ground_segment/joystick/apm_stick.c
    paparazzi3/trunk/sw/ground_segment/joystick/attack3_stick.c
    paparazzi3/trunk/sw/ground_segment/joystick/xbox_stick.c

Modified: paparazzi3/trunk/sw/ground_segment/joystick/Makefile
===================================================================
--- paparazzi3/trunk/sw/ground_segment/joystick/Makefile        2009-09-03 
11:20:20 UTC (rev 4061)
+++ paparazzi3/trunk/sw/ground_segment/joystick/Makefile        2009-09-03 
11:22:23 UTC (rev 4062)
@@ -31,6 +31,15 @@
 main_stick_debug: main_stick.c usb_stick.c
        gcc -g -O2 -Wall `pkg-config glib-2.0 --cflags` -o $@ $^ `pkg-config 
glib-2.0 --libs`  `pcre-config --libs` -lglibivy -DSTICK_DBG
 
+apm_stick: apm_stick.c usb_stick.c
+       gcc -g -O2 -Wall `pkg-config glib-2.0 --cflags` -o $@ $^ `pkg-config 
glib-2.0 --libs`  `pcre-config --libs` -lglibivy
+
+xbox_stick: xbox_stick.c usb_stick.c
+       gcc -g -O2 -Wall `pkg-config glib-2.0 --cflags` -o $@ $^ `pkg-config 
glib-2.0 --libs`  `pcre-config --libs` -lglibivy
+
+attack3_stick: attack3_stick.c usb_stick.c
+       gcc -g -O2 -Wall `pkg-config glib-2.0 --cflags` -o $@ $^ `pkg-config 
glib-2.0 --libs`  `pcre-config --libs` -lglibivy
+
 clean:
-       rm -f *~ core *.o *.bak .depend main_stick main_stick_debug
+       rm -f *~ core *.o *.bak .depend main_stick main_stick_debug apm_stick 
xbox_stick attack3_stick
 

Added: paparazzi3/trunk/sw/ground_segment/joystick/apm_stick.c
===================================================================
--- paparazzi3/trunk/sw/ground_segment/joystick/apm_stick.c                     
        (rev 0)
+++ paparazzi3/trunk/sw/ground_segment/joystick/apm_stick.c     2009-09-03 
11:22:23 UTC (rev 4062)
@@ -0,0 +1,191 @@
+/*
+ * apm_stick
+ *
+ * send joystick control to paparazzi through ivy 
+ *
+ * based on Force Feedback: Constant Force Stress Test
+ * Copyright (C) 2001 Oliver Hamann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "usb_stick.h"
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <Ivy/ivy.h>
+#include <Ivy/ivyglibloop.h>
+
+#define TIMEOUT_PERIOD  100
+#define UPDATE_FREQ     (1./TIMEOUT_PERIOD)
+
+#define DEFAULT_AC_ID   1
+
+#define CAM_TILT_MIN    1000
+#define CAM_TILT_MAX    2000
+
+/* Global vars */
+int fp_received_once = 0;
+long int fp_east_sp,fp_north_sp,fp_up_sp,fp_psi_sp;
+float east_sp,north_sp,up_sp,psi_sp;
+float cam_tilt_sp = 1500.;
+int last_button = 0;
+
+/* Options */
+char * device_name    = NULL;
+int aircraft_id       = DEFAULT_AC_ID;
+
+void parse_args(int argc, char * argv[])
+{
+  int i;
+
+  for (i = 1; i < argc; i++) {
+    if      (!strcmp(argv[i],"-d") && i<argc-1) device_name = argv[++i];
+    else if (!strcmp(argv[i],"-a") && i<argc-1) aircraft_id = atoi(argv[++i]);
+    else if (!strcmp(argv[i],"-h")) goto l_help;
+  }
+  return;
+
+l_help:
+  printf("Usage:\n");
+  printf("  %s <option> [<option>...]\n",argv[0]);
+  printf("Options:\n");
+  printf("  -d <string>  device name\n");
+  printf("  -a <int>     aircraft id (default: %d)\n",DEFAULT_AC_ID);
+  printf("  -h           display this help\n");
+  exit(1);
+}
+
+
+#define STICK_DEADBAND 10
+#define STICK_APPLY_DEADBAND(_v) (abs(_v) >= STICK_DEADBAND ? _v : 0)
+
+#define ATTITUDE_COEF 2144  // RadOfDeg(15 / 128) << 20
+#define CLIMB_COEF 0.5      // vertical speed (m/s)
+#define YAW_RATE_COEF (2./128) // 2 deg/s
+#define CAM_TILT_RATE 50    // cam rate
+
+#define SPEED_RES 19
+#define ANGLE_REF_RES 20
+
+#define bit_is_set(x, b) ((x >> b) & 0x1)
+
+// ATTITUDE
+static gboolean joystick_attitude_periodic(gpointer data __attribute__ 
((unused))) {
+
+       stick_read();
+
+       int roll     = STICK_APPLY_DEADBAND(stick_axis_values[0]);
+       int pitch    = STICK_APPLY_DEADBAND(stick_axis_values[1]);
+
+  int yaw_d_l  = bit_is_set(stick_button_values,6);
+  int yaw_d_r  = bit_is_set(stick_button_values,7);
+  int up       = bit_is_set(stick_button_values,0);
+  int down     = bit_is_set(stick_button_values,3);
+  int cam_up   = bit_is_set(stick_button_values,2);
+  int cam_down = bit_is_set(stick_button_values,5);
+  /*printf("button %d %d %d %d %d %d\n", yaw_d_l, yaw_d_r, up, down, cam_up, 
cam_down);*/
+
+  float yaw_rate = 0.;
+  if (yaw_d_l != yaw_d_r) {
+    if (yaw_d_r) yaw_rate = YAW_RATE_COEF * (2^ANGLE_REF_RES);
+    else yaw_rate = - YAW_RATE_COEF * (2^ANGLE_REF_RES);
+  }
+
+  float climb   = 0.;
+  if (up != down) {
+    if (up) climb = - CLIMB_COEF; // Z DOWN !!!
+    else climb = CLIMB_COEF;
+  }
+
+  if (cam_up != cam_down) {
+    if (cam_up) cam_tilt_sp += CAM_TILT_RATE;
+    else cam_tilt_sp -= CAM_TILT_RATE;
+  }
+  if (cam_tilt_sp < CAM_TILT_MIN) cam_tilt_sp = CAM_TILT_MIN;
+  if (cam_tilt_sp > CAM_TILT_MAX) cam_tilt_sp = CAM_TILT_MAX;
+
+  IvySendMsg("dl BOOZ2_FMS_COMMAND %d %d %d %d %d %d %d",
+      2, 3,
+      (int)(climb * (1 << SPEED_RES)),
+      (ATTITUDE_COEF * roll),
+      (ATTITUDE_COEF * pitch),
+      (int)(yaw_rate * YAW_RATE_COEF * (1 << ANGLE_REF_RES)),
+      aircraft_id);
+  /*printf("dl BOOZ2_FMS_COMMAND %d %d %d %d %d %d %d\n",
+      2, 3,
+      (int)(climb * (1 << SPEED_RES)),
+      (ATTITUDE_COEF * roll),
+      (ATTITUDE_COEF * pitch),
+      (int)(yaw_rate * YAW_RATE_COEF * (1 << ANGLE_REF_RES)),
+      aircraft_id);*/
+  if (cam_up != cam_down) {
+    IvySendMsg("dl DL_SETTING %d %d %f",
+        aircraft_id,
+        1, //CAM_TILT FIXME
+        cam_tilt_sp);
+    /*printf("dl DL_SETTING %d %d %f\n",
+        aircraft_id,
+        1, //CAM_TILT FIXME
+        cam_tilt_sp);*/
+  }
+
+       return 1;
+}
+
+/*
+void readBOOZ2_FPIvyBus(IvyClientPtr app, void *data, int argc, char **argv) {
+
+  //printf("%s\n",argv[0]);
+  if (argc > 0) {
+    sscanf(argv[0],"%*d %*s
+        %*d %*d %*d
+        %*d %*d %*d
+        %*d %*d %*d
+        %ld %ld %ld %ld
+        %*d",
+        &fp_east_sp, &fp_north_sp, &fp_up_sp, &fp_psi_sp);
+
+    fp_received_once = 1;
+  }
+}
+*/
+
+int main ( int argc, char** argv) {
+
+  GMainLoop *ml =  g_main_loop_new(NULL, FALSE);
+  
+  parse_args(argc, argv);
+  
+  IvyInit ("IvyCtrlJoystick", "IvyCtrlJoystick READY", NULL, NULL, NULL, NULL);
+  IvyStart("127.255.255.255");
+
+  if (stick_init(device_name) != 0) return 0;
+
+  /*
+  char bindMsgBOOZ2_FP[32];
+  snprintf(bindMsgBOOZ2_FP,32,"%s%d%s","(",aircraft_id," BOOZ2_FP .*)");
+  IvyBindMsg(readBOOZ2_FPIvyBus,0,bindMsgBOOZ2_FP);
+  */
+ 
+  g_timeout_add(TIMEOUT_PERIOD, joystick_attitude_periodic, NULL);
+
+  g_main_loop_run(ml);
+
+  return 0;
+}

Added: paparazzi3/trunk/sw/ground_segment/joystick/attack3_stick.c
===================================================================
--- paparazzi3/trunk/sw/ground_segment/joystick/attack3_stick.c                 
        (rev 0)
+++ paparazzi3/trunk/sw/ground_segment/joystick/attack3_stick.c 2009-09-03 
11:22:23 UTC (rev 4062)
@@ -0,0 +1,163 @@
+/*
+ * Attack3 Logitech
+ *
+ * send joystick control to paparazzi through ivy 
+ *
+ * based on Force Feedback: Constant Force Stress Test
+ * Copyright (C) 2001 Oliver Hamann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "usb_stick.h"
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <Ivy/ivy.h>
+#include <Ivy/ivyglibloop.h>
+
+#define TIMEOUT_PERIOD  100
+#define UPDATE_FREQ     (1./TIMEOUT_PERIOD)
+
+#define DEFAULT_AC_ID   1
+
+#define CAM_TILT_MIN    1000
+#define CAM_TILT_MAX    2000
+
+/* Global vars */
+int fp_received_once = 0;
+float cam_tilt_sp = 1500.;
+int last_button = 0;
+
+/* Options */
+char * device_name    = NULL;
+int aircraft_id       = DEFAULT_AC_ID;
+
+void parse_args(int argc, char * argv[])
+{
+  int i;
+
+  for (i = 1; i < argc; i++) {
+    if      (!strcmp(argv[i],"-d") && i<argc-1) device_name = argv[++i];
+    else if (!strcmp(argv[i],"-a") && i<argc-1) aircraft_id = atoi(argv[++i]);
+    else if (!strcmp(argv[i],"-h")) goto l_help;
+  }
+  return;
+
+l_help:
+  printf("Usage:\n");
+  printf("  %s <option> [<option>...]\n",argv[0]);
+  printf("Options:\n");
+  printf("  -d <string>  device name\n");
+  printf("  -a <int>     aircraft id (default: %d)\n",DEFAULT_AC_ID);
+  printf("  -h           display this help\n");
+  exit(1);
+}
+
+
+#define STICK_DEADBAND 15
+#define STICK_APPLY_DEADBAND(_v) (abs(_v) >= STICK_DEADBAND ? _v : 0)
+#define STICK_LARGE_DEADBAND 20
+#define STICK_APPLY_LARGE_DEADBAND(_v) (abs(_v) >= STICK_LARGE_DEADBAND ? _v : 
0)
+
+#define ATTITUDE_COEF 2144  // RadOfDeg(15 / 128) << 20
+#define CLIMB_COEF 0.5      // vertical speed (m/s)
+#define YAW_RATE_COEF (6./512) // 6 deg/s
+
+#define SPEED_RES 19
+#define ANGLE_REF_RES 20
+
+#define bit_is_set(x, b) ((x >> b) & 0x1)
+
+// ATTITUDE
+static gboolean joystick_attitude_periodic(gpointer data __attribute__ 
((unused))) {
+
+       stick_read();
+
+       int roll     = STICK_APPLY_DEADBAND(stick_axis_values[0]);
+       int pitch    = STICK_APPLY_DEADBAND(stick_axis_values[1]);
+  int tilt     = stick_axis_values[2];
+
+  int right    = bit_is_set(stick_button_values,4);
+  int left     = bit_is_set(stick_button_values,3);
+  int up       = bit_is_set(stick_button_values,2);
+  int down     = bit_is_set(stick_button_values,1);
+
+  float yaw_rate = 0.;
+  if (left != right) {
+    if (right) yaw_rate = 1.;
+    else yaw_rate = -1.;
+  }
+
+  float climb = 0.;
+  if (up != down) {
+    if (up) climb = - CLIMB_COEF; // Z DOWN !!!
+    else climb = CLIMB_COEF;
+  }
+
+  static int last_tilt = 0;
+  cam_tilt_sp = CAM_TILT_MIN + (CAM_TILT_MAX - CAM_TILT_MIN) * (tilt + 
127.)/254.;
+  if (cam_tilt_sp < CAM_TILT_MIN) cam_tilt_sp = CAM_TILT_MIN;
+  if (cam_tilt_sp > CAM_TILT_MAX) cam_tilt_sp = CAM_TILT_MAX;
+
+  IvySendMsg("dl BOOZ2_FMS_COMMAND %d %d %d %d %d %d %d",
+      2, 3,
+      (int)(climb * (1 << SPEED_RES)),
+      (ATTITUDE_COEF * roll),
+      (ATTITUDE_COEF * pitch),
+      (int)(yaw_rate * YAW_RATE_COEF * (1 << ANGLE_REF_RES)),
+      aircraft_id);
+//  printf("dl BOOZ2_FMS_COMMAND %d %d %d %d %d %d %d\n",
+//      2, 3,
+//      (int)(climb * (1 << SPEED_RES)),
+//      (ATTITUDE_COEF * roll),
+//      (ATTITUDE_COEF * pitch),
+//      (int)(yaw_rate * YAW_RATE_COEF * (1 << ANGLE_REF_RES)),
+//      aircraft_id);
+  if (tilt != last_tilt) {
+    IvySendMsg("dl DL_SETTING %d %d %f",
+        aircraft_id,
+        1, //CAM_TILT FIXME
+        cam_tilt_sp);
+//    printf("dl DL_SETTING %d %d %f\n",
+//        aircraft_id,
+//        1, //CAM_TILT FIXME
+//        cam_tilt_sp);
+  }
+  last_tilt = tilt;
+
+       return 1;
+}
+
+int main ( int argc, char** argv) {
+
+  GMainLoop *ml =  g_main_loop_new(NULL, FALSE);
+  
+  parse_args(argc, argv);
+  
+  IvyInit ("IvyCtrlJoystick", "IvyCtrlJoystick READY", NULL, NULL, NULL, NULL);
+  IvyStart("127.255.255.255");
+
+  if (stick_init(device_name) != 0) return 0;
+
+  g_timeout_add(TIMEOUT_PERIOD, joystick_attitude_periodic, NULL);
+
+  g_main_loop_run(ml);
+
+  return 0;
+}

Added: paparazzi3/trunk/sw/ground_segment/joystick/xbox_stick.c
===================================================================
--- paparazzi3/trunk/sw/ground_segment/joystick/xbox_stick.c                    
        (rev 0)
+++ paparazzi3/trunk/sw/ground_segment/joystick/xbox_stick.c    2009-09-03 
11:22:23 UTC (rev 4062)
@@ -0,0 +1,181 @@
+/*
+ * xbox_stick
+ *
+ * send joystick control to paparazzi through ivy 
+ *
+ * based on Force Feedback: Constant Force Stress Test
+ * Copyright (C) 2001 Oliver Hamann
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include "usb_stick.h"
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+#include <Ivy/ivy.h>
+#include <Ivy/ivyglibloop.h>
+
+#define TIMEOUT_PERIOD  100
+#define UPDATE_FREQ     (1./TIMEOUT_PERIOD)
+
+#define DEFAULT_AC_ID   1
+
+#define CAM_TILT_MIN    1000
+#define CAM_TILT_MAX    2000
+
+/* Global vars */
+int fp_received_once = 0;
+long int fp_east_sp,fp_north_sp,fp_up_sp,fp_psi_sp;
+float east_sp,north_sp,up_sp,psi_sp;
+float cam_tilt_sp = 1500.;
+int last_button = 0;
+
+/* Options */
+char * device_name    = NULL;
+int aircraft_id       = DEFAULT_AC_ID;
+
+void parse_args(int argc, char * argv[])
+{
+  int i;
+
+  for (i = 1; i < argc; i++) {
+    if      (!strcmp(argv[i],"-d") && i<argc-1) device_name = argv[++i];
+    else if (!strcmp(argv[i],"-a") && i<argc-1) aircraft_id = atoi(argv[++i]);
+    else if (!strcmp(argv[i],"-h")) goto l_help;
+  }
+  return;
+
+l_help:
+  printf("Usage:\n");
+  printf("  %s <option> [<option>...]\n",argv[0]);
+  printf("Options:\n");
+  printf("  -d <string>  device name\n");
+  printf("  -a <int>     aircraft id (default: %d)\n",DEFAULT_AC_ID);
+  printf("  -h           display this help\n");
+  exit(1);
+}
+
+
+#define STICK_DEADBAND 15
+#define STICK_APPLY_DEADBAND(_v) (abs(_v) >= STICK_DEADBAND ? _v : 0)
+#define STICK_LARGE_DEADBAND 20
+#define STICK_APPLY_LARGE_DEADBAND(_v) (abs(_v) >= STICK_LARGE_DEADBAND ? _v : 
0)
+
+#define ATTITUDE_COEF 2144  // RadOfDeg(15 / 128) << 20
+#define CLIMB_COEF 0.5      // vertical speed (m/s)
+#define YAW_RATE_COEF (4./(128*512)) // 2 deg/s
+#define CAM_TILT_COEF (50./128)    // cam rate
+
+#define SPEED_RES 19
+#define ANGLE_REF_RES 20
+
+#define bit_is_set(x, b) ((x >> b) & 0x1)
+
+// ATTITUDE
+static gboolean joystick_attitude_periodic(gpointer data __attribute__ 
((unused))) {
+
+       stick_read();
+
+       int roll     = STICK_APPLY_DEADBAND(stick_axis_values[0]);
+       int pitch    = STICK_APPLY_DEADBAND(stick_axis_values[1]);
+       int yaw_rate = STICK_APPLY_LARGE_DEADBAND(stick_axis_values[3]);
+  int tilt     = STICK_APPLY_LARGE_DEADBAND(stick_axis_values[4]);
+
+  int up       = bit_is_set(stick_button_values,1);
+  int down     = bit_is_set(stick_button_values,0);
+
+  float climb   = 0.;
+  if (up != down) {
+    if (up) climb = - CLIMB_COEF; // Z DOWN !!!
+    else climb = CLIMB_COEF;
+  }
+
+  cam_tilt_sp -= tilt * CAM_TILT_COEF;
+  if (cam_tilt_sp < CAM_TILT_MIN) cam_tilt_sp = CAM_TILT_MIN;
+  if (cam_tilt_sp > CAM_TILT_MAX) cam_tilt_sp = CAM_TILT_MAX;
+
+  IvySendMsg("dl BOOZ2_FMS_COMMAND %d %d %d %d %d %d %d",
+      2, 3,
+      (int)(climb * (1 << SPEED_RES)),
+      (ATTITUDE_COEF * roll),
+      (ATTITUDE_COEF * pitch),
+      (int)(yaw_rate * YAW_RATE_COEF * (1 << ANGLE_REF_RES)),
+      aircraft_id);
+//  printf("dl BOOZ2_FMS_COMMAND %d %d %d %d %d %d %d\n",
+//      2, 3,
+//      (int)(climb * (1 << SPEED_RES)),
+//      (ATTITUDE_COEF * roll),
+//      (ATTITUDE_COEF * pitch),
+//      (int)(yaw_rate * YAW_RATE_COEF * (1 << ANGLE_REF_RES)),
+//      aircraft_id);
+  if (tilt != 0) {
+    IvySendMsg("dl DL_SETTING %d %d %f",
+        aircraft_id,
+        1, //CAM_TILT FIXME
+        cam_tilt_sp);
+//    printf("dl DL_SETTING %d %d %f\n",
+//        aircraft_id,
+//        1, //CAM_TILT FIXME
+//        cam_tilt_sp);
+  }
+
+       return 1;
+}
+
+/*
+void readBOOZ2_FPIvyBus(IvyClientPtr app, void *data, int argc, char **argv) {
+
+  //printf("%s\n",argv[0]);
+  if (argc > 0) {
+    sscanf(argv[0],"%*d %*s
+        %*d %*d %*d
+        %*d %*d %*d
+        %*d %*d %*d
+        %ld %ld %ld %ld
+        %*d",
+        &fp_east_sp, &fp_north_sp, &fp_up_sp, &fp_psi_sp);
+
+    fp_received_once = 1;
+  }
+}
+*/
+
+int main ( int argc, char** argv) {
+
+  GMainLoop *ml =  g_main_loop_new(NULL, FALSE);
+  
+  parse_args(argc, argv);
+  
+  IvyInit ("IvyCtrlJoystick", "IvyCtrlJoystick READY", NULL, NULL, NULL, NULL);
+  IvyStart("127.255.255.255");
+
+  if (stick_init(device_name) != 0) return 0;
+
+  /*
+  char bindMsgBOOZ2_FP[32];
+  snprintf(bindMsgBOOZ2_FP,32,"%s%d%s","(",aircraft_id," BOOZ2_FP .*)");
+  IvyBindMsg(readBOOZ2_FPIvyBus,0,bindMsgBOOZ2_FP);
+  */
+ 
+  g_timeout_add(TIMEOUT_PERIOD, joystick_attitude_periodic, NULL);
+
+  g_main_loop_run(ml);
+
+  return 0;
+}





reply via email to

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