Project

General

Profile

Revision 1244

Added interactive dump modes
Changed RBOM detector number and names

View differences:

trunk/code/projects/diagnostic_station/station/dump_station.c
1
#include "dump_station.h"
2

  
3
#include "hardware.h"
4

  
5
void dump_station_encoders (void)
6
{
7
	int16_t left, right;
8
	char c;
9

  
10
	// TODO implement resetting the encoders (r key, for example)
11
	while (usb_getc_nb (&c)==-1)
12
	{
13
		encoders_read (&left, &right);
14
		usb_puti (left);
15
		usb_puts (" ");
16
		usb_puti (right);
17
		usb_puts (NL);
18
	}
19
}
20

  
21
void dump_station_turntable (void)
22
{
23
	uint16_t turntable;
24
	char c;
25

  
26
	while (usb_getc_nb (&c)==-1)
27
	{
28
		turntable=turntable_get_position ();
29
		usb_puti (turntable);
30
		usb_puts (NL);
31
	}
32
}
33

  
34
void dump_station_wall (void)
35
{
36
	uint16_t wall;
37
	char c;
38

  
39
	while (usb_getc_nb (&c)==-1)
40
	{
41
		wall=turntable_get_position ();
42
		usb_puti (wall);
43
		usb_puts (NL);
44
	}
45
}
46

  
47
void dump_station_rbom (void)
48
{
49
	uint16_t top, left, right;
50
	char c;
51

  
52
	// TODO implement resetting the encoders (r key, for example)
53
	while (usb_getc_nb (&c)==-1)
54
	{
55
		rbom_update ();
56
		rbom_read (&top, &left, &right);
57
		usb_puti (top);
58
		usb_puts (" ");
59
		usb_puti (left);
60
		usb_puts (" ");
61
		usb_puti (right);
62
		usb_puts (NL);
63
	}
64
}
trunk/code/projects/diagnostic_station/station/dump_robot.c
1
#include "dump_robot.h"
2

  
3
#include <dragonfly_lib.h>
4

  
5
#include "global.h"
6
#include "comm_robot.h"
7

  
8

  
9
void dump_robot_encoders (void)
10
{
11
	int16_t left, right;
12
	char c;
13

  
14
	// TODO implement resetting the encoders (r key, for example)
15
	while (usb_getc_nb (&c)==-1)
16
	{
17
		robot_read_encoders (&left, &right);
18
		usb_puti (left);
19
		usb_puts (" ");
20
		usb_puti (right);
21
		usb_puts (NL);
22
	}
23
}
trunk/code/projects/diagnostic_station/station/dump_station.h
1
#ifndef _dump_station_h
2
#define _dump_station_h
3

  
4

  
5
void dump_station_encoders (void);
6
void dump_station_turntable (void);
7
void dump_station_wall (void);
8
void dump_station_rbom (void);
9

  
10

  
11

  
12
#endif
trunk/code/projects/diagnostic_station/station/test_bom.c
43 43
	{
44 44
		if (emitter_bitmask&1)
45 45
		{
46
			uint16_t values[4];
46
			uint16_t values[3];
47 47
			
48 48
			usb_puts("# Testing BOM emitter ");
49 49
			usb_puti(n);
......
53 53
			robot_set_bom (1<<n);
54 54
		
55 55
			rbom_update ();
56
#define N 0
57
#define E 1
58
#define S 2
59
#define W 3
60
			values[N]=rbom_read (RBOM_SENSOR_N);
61
			values[E]=rbom_read (RBOM_SENSOR_E);
62
			values[S]=rbom_read (RBOM_SENSOR_S);
63
			values[W]=rbom_read (RBOM_SENSOR_W);
56
#define TOP 0
57
#define LEFT 1
58
#define RIGHT 2
59
			rbom_read (&values[TOP], &values[LEFT], &values[RIGHT]);
64 60

  
65 61
			robot_set_bom (0);
66 62

  
67 63
			// Send data
68 64
			usb_puts ("data bom emitter");
69
			usb_puts (" N/"); usb_puti (values[N]);
70
			usb_puts (" E/"); usb_puti (values[E]);
71
			usb_puts (" S/"); usb_puti (values[S]);
72
			usb_puts (" W/"); usb_puti (values[W]);
73
#undef N
74
#undef E
75
#undef S
76
#undef W
65
			usb_puts (" top/"  ); usb_puti (values[TOP  ]);
66
			usb_puts (" left/" ); usb_puti (values[LEFT ]);
67
			usb_puts (" right/"); usb_puti (values[RIGHT]);
68
#undef TOP
69
#undef LEFT
70
#undef RIGHT
77 71
			usb_puts (NL);
78 72
		}
79 73
		
trunk/code/projects/diagnostic_station/station/hardware_turntable.c
16 16
	usb_puts ("# Turntable position reached" NL);
17 17
}
18 18

  
19
uint16_t turntable_get_position (void)
20
{
21
	// FIXME implement
22

  
23
	return 42;
24
}
trunk/code/projects/diagnostic_station/station/dump_robot.h
1
#ifndef _dump_robot_h
2
#define _dump_robot_h
3

  
4
void dump_robot_encoders (void);
5

  
6

  
7

  
8

  
9

  
10
#endif
11

  
trunk/code/projects/diagnostic_station/station/hardware_turntable.h
6 6

  
7 7
void turntable_init (void);
8 8
void turntable_rotate_to_position (uint16_t position);
9
uint16_t turntable_get_position (void);
9 10

  
10 11
#endif
trunk/code/projects/diagnostic_station/station/comm_interactive.c
6 6
#include "tests.h"
7 7
#include "self_test.h"
8 8

  
9
#include "dump_robot.h"
10
#include "dump_station.h"
11

  
9 12
#define ESC 27
10 13

  
11 14
/*
......
19 22
{
20 23
	while (1)
21 24
	{
22
		usb_puts ("# Station sensors menu: (e)ncoders" NL);
25
		usb_puts ("# Station sensors menu: (e)ncoders, (w)all, (t)urntable, (r)bom" NL);
23 26

  
24 27
		char choice = usb_getc ();
25 28
		switch (choice) {
26
			case 'e': case 'E': /*dump_station_encoders ()*/; break;
29
			case 'e': case 'E': dump_station_encoders  (); break;
30
			case 'w': case 'W': dump_station_wall      (); break;
31
			case 't': case 'T': dump_station_turntable (); break;
32
			case 'r': case 'R': dump_station_rbom      (); break;
27 33
			case ESC: return;
28 34
			default: break;
29 35
		}
......
38 44

  
39 45
		char choice = usb_getc ();
40 46
		switch (choice) {
41
			case 'e': case 'E': /*dump_robot_encoders ()*/; break;
47
			case 'e': case 'E': dump_robot_encoders (); break;
42 48
			case ESC: return;
43 49
			default: break;
44 50
		}
trunk/code/projects/diagnostic_station/station/hardware_rbom.c
22 22
	}
23 23
}
24 24

  
25
uint16_t rbom_read (uint8_t value)
25
void rbom_read (uint16_t *top, uint16_t *left, uint16_t *right)
26 26
{
27 27
	usb_puts ("# Reading RBOM" NL);
28 28
	// FIXME implement
29 29
	
30
	return 0;
30
	*top=0;
31
	*left=0;
32
	*right=0;
31 33
}
32 34

  
33 35
void rbom_update (void)
trunk/code/projects/diagnostic_station/station/hardware_rbom.h
8 8
 * Inverse BOM sensor macros for (N)orth,
9 9
 * (S)outh, (E)ast, and (W)est positions.
10 10
 */
11
#define RBOM_SENSOR_N AN3
12
#define RBOM_SENSOR_E AN4
13
#define RBOM_SENSOR_S AN5
14
#define RBOM_SENSOR_W AN6
11
// FIXME do it right
12
#define RBOM_SENSOR_LEFT AN3
13
#define RBOM_SENSOR_RIGHT AN4
14
#define RBOM_SENSOR_TOP AN5
15
//#define RBOM_SENSOR_ AN6
15 16

  
16 17
void rbom_init (void);
17 18

  
18 19
void rbom_set (bool on);
19
uint16_t rbom_read (uint8_t value);
20
void rbom_read (uint16_t *top, uint16_t *left, uint16_t *right);
20 21
void rbom_update (void);
21 22
void rbom_debug (void);
22 23

  
trunk/code/projects/diagnostic_station/robot/main.c
94 94
// ** Message acknowledging **
95 95
// ***************************
96 96

  
97
static void send_done ()
97
static void send_done (void)
98 98
{
99 99
	wl_send_global_packet (robot_station_group, robot_station_done, NULL, 0, 0);
100 100
}

Also available in: Unified diff