Project

General

Profile

Revision 897

Added by Chris Mar over 15 years ago

code for server with xbee dongle to control robot running slave code

View differences:

test.c
1
#include "stdlib.h"
2
#include "stdio.h"
3

  
1
#include <stdlib.h>
2
#include <stdio.h>
3
#include <curses.h>
4 4
#include "../lib/wireless.h"
5
#include "../lib/wl_error_group.h"
6
#include "../lib/wl_token_ring.h"
7
//#include "../lib/xbee.h"
8 5

  
9
#include <time.h>
6
#define WL_CNTL_GROUP 4
10 7

  
11
int main()
12
{
13
	printf("Beginning.\n");
8
#define FORWARD 0
9
#define BACK    1
10
#define LEFT    2
11
#define RIGHT   3
12
#define LEFT_CURVE 4
13
#define RIGHT_CURVE 5
14
#define STOP    6
15
#define VEL_UP  7
16
#define VEL_DOWN 8
17

  
18
void send_packet (char color, int dst_robot);
19

  
20
PacketGroupHandler packetHandler = {WL_CNTL_GROUP, NULL, NULL, NULL, NULL};
21

  
22
int main(int argc, char *argv[]) {
23
    if (argc != 2) {
24
        printf("Usage: ./test <robot #>\n");
25
        return 1;
26
    }
27
    
28
    char c;
29
    int robot = atoi(argv[1]);
30

  
31
    initscr();
32
    printf("Beginning: robot=%d\r\n", robot);
14 33
	wl_set_com_port("/dev/ttyUSB0");
15 34
	wl_init();
16 35
	wl_set_channel(0xF);
17
	printf("Wireless initialized.\n");
18
	wl_error_register();
19
	wl_token_ring_register();
20
	wl_token_ring_join();
21
	printf("Packet groups initialized.\n");
22
	
23
	struct timespec delay;
24
	delay.tv_sec = 0;
25
	delay.tv_nsec = 100000000;
26
	while (1)
27
	{
28
		//wl_error_send_string("s");
29
		wl_do();
30
		nanosleep(&delay, 0);
36
	printf("Wireless initialized.\r\n");
37
	wl_register_packet_group(&packetHandler);
38
    printf("Packet groups initialized.\r\n");
39
    fflush(stdout);
40
	//while (1);
41
	while (1) {
42
        c = getch();
43
        printf("%c\r\n", c);
44
        fflush(stdout);
45
        switch (c) {
46
            case 'w':
47
                send_packet(FORWARD, robot);
48
                break;
49
            case 's':
50
                send_packet(BACK, robot);
51
                break;
52
            case 'a':
53
                send_packet(LEFT, robot);
54
                break;
55
            case 'd':
56
                send_packet(RIGHT, robot);
57
                break;
58
            case 'q':
59
                send_packet(LEFT_CURVE, robot);
60
                break;
61
            case 'e':
62
                send_packet(RIGHT_CURVE, robot);
63
                break;
64
            case 'x':
65
                send_packet(STOP, robot);
66
                break;
67
            case ']':
68
                send_packet(VEL_UP, robot);
69
                break;
70
            case '[':
71
                send_packet(VEL_DOWN, robot);
72
                break;
73
            default:
74
                //send_packet(FORWARD);
75
                break;
76
        }
31 77
	}
32 78
	
33
	wl_terminate();
34
	
35 79
	return 0;
36 80
}
37 81

  
82
void send_packet (char type, int dst_robot) {
83
    wl_send_robot_to_robot_global_packet(WL_CNTL_GROUP, type, NULL, 0, dst_robot, 0);
84
    //wl_send_global_packet(WL_CNTL_GROUP, type, NULL, 0, 0);
85
}

Also available in: Unified diff