source: flair-src/tags/latest/tools/Controller/DualShock3/src/main.cpp

Last change on this file was 467, checked in by Sanahuja Guillaume, 2 years ago

change default usb method for ds3, now input event, no need to be root

File size: 3.4 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
4// %flair:license}
5// created: 2011/10/20
6// filename: main.cpp
7//
8// author: Guillaume Sanahuja
9// Copyright Heudiasyc UMR UTC/CNRS 6599
10//
11// version: $Id: $
12//
13// purpose: main dual shock 3
14//
15//
16/*********************************************************************/
17
18#include "FrameworkManager.h"
19#include "DualShock3.h"
20#include <stdio.h>
21#include <tclap/CmdLine.h>
22
23using namespace TCLAP;
24using namespace std;
25using namespace flair::core;
26using namespace flair::sensor;
27
28string receiverAddress;
29int receiverPort;
30string connection;
31int port;
32uint32_t period;
33string xml_file;
34
35void parseOptions(int argc, char **argv);
36
37int main(int argc, char *argv[]) {
38 parseOptions(argc, argv);
39
40 DualShock3 *joystick;
41 FrameworkManager *manager;
42
43 manager = new FrameworkManager("dualshock3");
44 manager->SetupConnection("127.0.0.1", port);
45 manager->SetupUserInterface(xml_file);
46
47 if (connection == "usb") {
48 joystick = new DualShock3("dualshock3", receiverAddress,
49 receiverPort, DualShock3::UsbEvent, period, 6);
50 } else if (connection == "usb_hidraw") {
51 joystick = new DualShock3("dualshock3", receiverAddress,
52 receiverPort, DualShock3::UsbHidRaw, period, 6);
53 } else if (connection == "bluetooth") {
54 joystick = new DualShock3("dualshock3", receiverAddress,
55 receiverPort, DualShock3::Bluetooth, period, 6);
56 } else {
57 manager->Err("unknown connection type\n");
58 delete manager;
59 return -1;
60 }
61
62 joystick->DrawUserInterface();
63
64 if (!manager->ErrorOccured()) {
65 joystick->Start();
66 joystick->Join();
67 }
68
69 delete manager;
70}
71
72void parseOptions(int argc, char **argv) {
73 try {
74 CmdLine cmd("Command description message", ' ', "0.1");
75
76 ValueArg<string> addressArg("a", "address",
77 "data receiver address (ex: uav)", true,
78 "127.0.0.1:20000", "string");
79 cmd.add(addressArg);
80
81 ValueArg<string> connectionArg("c", "connection",
82 "connection type (usb, usb_hidraw or bluetooth)", false,
83 "bluetooth", "string");
84 cmd.add(connectionArg);
85
86 ValueArg<int> portArg("p", "port",
87 "local port used to connect to the ground station",
88 false, 9000, "int");
89 cmd.add(portArg);
90
91 ValueArg<int> periodArg("t", "period", "sending data period", false, 10,
92 "int");
93 cmd.add(periodArg);
94
95 ValueArg<string> xmlArg("x", "xml", "xml file", true, "./settings.xml",
96 "string");
97 cmd.add(xmlArg);
98
99 cmd.parse(argc, argv);
100
101 // Get the value parsed by each arg.
102 string receiverAddressWithPort = addressArg.getValue();
103 int semiColonPosition = receiverAddressWithPort.find(":");
104 receiverAddress = receiverAddressWithPort.substr(0, semiColonPosition);
105 receiverPort =
106 atoi(receiverAddressWithPort.substr(semiColonPosition + 1).c_str());
107 connection = connectionArg.getValue();
108 port = portArg.getValue();
109 period = periodArg.getValue();
110 xml_file = xmlArg.getValue();
111
112 } catch (ArgException &e) { // catch any exceptions
113 cerr << "error: " << e.error() << " for arg " << e.argId() << endl;
114 }
115}
Note: See TracBrowser for help on using the repository browser.