root / trunk / code / projects / colonet / lib / colonet_wireless / tests / colonet_wireless_test2.cpp @ 114
History | View | Annotate | Download (2.26 KB)
1 |
/** @file colonet_wireless_test2.cpp
|
---|---|
2 |
* @brief colonet_wireless_test2 - tests the colonet_wireless library with
|
3 |
* manual control.
|
4 |
*
|
5 |
* @author Eugene Marinelli
|
6 |
* @date 2/5/06
|
7 |
*/
|
8 |
|
9 |
#include <iostream> |
10 |
#include <signal.h> |
11 |
#include <fcntl.h> |
12 |
#include <signal.h> |
13 |
|
14 |
#include "colonet_wireless.h" |
15 |
#include "colonet_defs.h" |
16 |
|
17 |
ColonetWireless* cw; |
18 |
|
19 |
int msg_handler(ColonetPacket* pkt)
|
20 |
{ |
21 |
printf("Handler!\n");
|
22 |
return 0; |
23 |
} |
24 |
|
25 |
char get_mouse()
|
26 |
{ |
27 |
int fd;
|
28 |
char buf[10]; |
29 |
|
30 |
fd = open("/dev/input/mouse0", O_RDONLY);
|
31 |
|
32 |
read(fd, buf, 1);
|
33 |
|
34 |
close(fd); |
35 |
|
36 |
return buf[0]; |
37 |
} |
38 |
|
39 |
void exit_handler(int sig) |
40 |
{ |
41 |
unsigned char data[10]; |
42 |
|
43 |
printf("Sending kill packet...\n");
|
44 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTORS_OFF, data); |
45 |
|
46 |
printf("Exiting...\n");
|
47 |
|
48 |
sleep(2);
|
49 |
exit(0);
|
50 |
} |
51 |
|
52 |
int main()
|
53 |
{ |
54 |
unsigned char data[10]; |
55 |
char dir;
|
56 |
int paused = 0; |
57 |
|
58 |
unsigned char motor_back_args[6] = {0, 0, 0, 0xFF, 0}; |
59 |
unsigned char motor_forward_args[6] = {0, 1, 0, 0xFF, 0}; |
60 |
|
61 |
cw = new ColonetWireless(SERIAL_PORT, msg_handler, NULL, true, true); |
62 |
|
63 |
signal(SIGINT, exit_handler); |
64 |
|
65 |
cw->run_listener_thread(); |
66 |
|
67 |
while(1){ |
68 |
dir = get_mouse(); |
69 |
|
70 |
usleep(300000);
|
71 |
|
72 |
printf("%d\n", dir);
|
73 |
|
74 |
switch (dir) {
|
75 |
case 40: |
76 |
/* Forward */
|
77 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTOR1_SET, motor_forward_args); |
78 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTOR2_SET, motor_forward_args); |
79 |
break;
|
80 |
case 8: |
81 |
/* Back */
|
82 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTOR1_SET, motor_back_args); |
83 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTOR2_SET, motor_back_args); |
84 |
break;
|
85 |
case 24: |
86 |
/* Left */
|
87 |
//cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTORS_OFF, data);
|
88 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTOR1_SET, motor_forward_args); |
89 |
break;
|
90 |
case 56: |
91 |
/* Right */
|
92 |
//cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTORS_OFF, data);
|
93 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTOR2_SET, motor_forward_args); |
94 |
break;
|
95 |
case 9: |
96 |
/* Left click */
|
97 |
/* Stop */
|
98 |
cw->clear_message_queue(); |
99 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, MOTORS_OFF, data); |
100 |
break;
|
101 |
case 10: |
102 |
/* Right click */
|
103 |
/* Execute first user-defined function */
|
104 |
cw->send(GLOBAL_DEST, COLONET_COMMAND, 0xF0, data);
|
105 |
break;
|
106 |
} |
107 |
} |
108 |
|
109 |
return 0; |
110 |
} |