Peter Cooper
/
diags
test code for our MBED board
serial.c@1:6877bb99aa17, 2011-05-04 (annotated)
- Committer:
- lolpcc
- Date:
- Wed May 04 08:30:52 2011 +0000
- Revision:
- 1:6877bb99aa17
- Parent:
- 0:9edfcca7cd25
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lolpcc | 0:9edfcca7cd25 | 1 | #include "mbed.h" |
lolpcc | 1:6877bb99aa17 | 2 | #include "useful.h" |
lolpcc | 0:9edfcca7cd25 | 3 | |
lolpcc | 1:6877bb99aa17 | 4 | extern int set_baud_rate; |
lolpcc | 1:6877bb99aa17 | 5 | |
lolpcc | 1:6877bb99aa17 | 6 | Serial rs232(p13, p14); // tx, rx |
lolpcc | 0:9edfcca7cd25 | 7 | /******************************************/ |
lolpcc | 0:9edfcca7cd25 | 8 | /* */ |
lolpcc | 0:9edfcca7cd25 | 9 | /* Test the RS232 interface */ |
lolpcc | 0:9edfcca7cd25 | 10 | /* Should send and recieve data on the */ |
lolpcc | 0:9edfcca7cd25 | 11 | /* serial port, send a string, and get */ |
lolpcc | 0:9edfcca7cd25 | 12 | /* back what is returned from the RX */ |
lolpcc | 0:9edfcca7cd25 | 13 | /* */ |
lolpcc | 0:9edfcca7cd25 | 14 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 15 | void rs232_opener(void) |
lolpcc | 1:6877bb99aa17 | 16 | { |
lolpcc | 1:6877bb99aa17 | 17 | rs232.baud(9600); |
lolpcc | 1:6877bb99aa17 | 18 | rs232.printf("\n\r"); |
lolpcc | 1:6877bb99aa17 | 19 | rs232.printf("MBED Testbed\n\r"); |
lolpcc | 1:6877bb99aa17 | 20 | } |
lolpcc | 1:6877bb99aa17 | 21 | |
lolpcc | 1:6877bb99aa17 | 22 | int rs232_readable(void) |
lolpcc | 0:9edfcca7cd25 | 23 | { |
lolpcc | 1:6877bb99aa17 | 24 | return(rs232.readable()); |
lolpcc | 1:6877bb99aa17 | 25 | } |
lolpcc | 1:6877bb99aa17 | 26 | |
lolpcc | 1:6877bb99aa17 | 27 | void rs232_output_string(char *buf) |
lolpcc | 1:6877bb99aa17 | 28 | { |
lolpcc | 1:6877bb99aa17 | 29 | int a = 0; |
lolpcc | 1:6877bb99aa17 | 30 | while(a != strlen(buf)){ |
lolpcc | 1:6877bb99aa17 | 31 | rs232.putc(buf[a]); |
lolpcc | 1:6877bb99aa17 | 32 | if(buf[a]=='\n') |
lolpcc | 1:6877bb99aa17 | 33 | rs232.putc('\r'); |
lolpcc | 1:6877bb99aa17 | 34 | a++; |
lolpcc | 1:6877bb99aa17 | 35 | } |
lolpcc | 0:9edfcca7cd25 | 36 | } |
lolpcc | 0:9edfcca7cd25 | 37 | |
lolpcc | 1:6877bb99aa17 | 38 | int rs232_gets(char *s,int len) |
lolpcc | 0:9edfcca7cd25 | 39 | { |
lolpcc | 1:6877bb99aa17 | 40 | char c; |
lolpcc | 1:6877bb99aa17 | 41 | int cnt=0; |
lolpcc | 1:6877bb99aa17 | 42 | |
lolpcc | 1:6877bb99aa17 | 43 | while ((c = rs232.getc()) != 0) { |
lolpcc | 1:6877bb99aa17 | 44 | if ((c == 0x0a) || (c==0x0d)) { |
lolpcc | 1:6877bb99aa17 | 45 | rs232.printf("\n\r"); |
lolpcc | 1:6877bb99aa17 | 46 | *s++ = '\0'; |
lolpcc | 1:6877bb99aa17 | 47 | return(cnt); /* Return length */ |
lolpcc | 1:6877bb99aa17 | 48 | } else if (c==0x7f) { /* Delete */ |
lolpcc | 1:6877bb99aa17 | 49 | rs232.putc(0x08); |
lolpcc | 1:6877bb99aa17 | 50 | rs232.putc(0x20); |
lolpcc | 1:6877bb99aa17 | 51 | rs232.putc(0x08); |
lolpcc | 1:6877bb99aa17 | 52 | cnt--; |
lolpcc | 1:6877bb99aa17 | 53 | *s--; |
lolpcc | 1:6877bb99aa17 | 54 | } else if (c==0x08) { /* BS */ |
lolpcc | 1:6877bb99aa17 | 55 | rs232.putc(0x08); |
lolpcc | 1:6877bb99aa17 | 56 | rs232.putc(0x20); |
lolpcc | 1:6877bb99aa17 | 57 | rs232.putc(0x08); |
lolpcc | 1:6877bb99aa17 | 58 | cnt--; |
lolpcc | 1:6877bb99aa17 | 59 | *s--; |
lolpcc | 1:6877bb99aa17 | 60 | } else if (c==025) { /* CTRL-U */ |
lolpcc | 1:6877bb99aa17 | 61 | while (cnt!=0) { |
lolpcc | 1:6877bb99aa17 | 62 | rs232.putc(0x08); |
lolpcc | 1:6877bb99aa17 | 63 | rs232.putc(0x20); |
lolpcc | 1:6877bb99aa17 | 64 | rs232.putc(0x08); |
lolpcc | 1:6877bb99aa17 | 65 | cnt--; |
lolpcc | 1:6877bb99aa17 | 66 | *s--; |
lolpcc | 1:6877bb99aa17 | 67 | } |
lolpcc | 1:6877bb99aa17 | 68 | } else { |
lolpcc | 1:6877bb99aa17 | 69 | *s++ = c; |
lolpcc | 1:6877bb99aa17 | 70 | rs232.putc(c); |
lolpcc | 1:6877bb99aa17 | 71 | cnt++; |
lolpcc | 1:6877bb99aa17 | 72 | } |
lolpcc | 1:6877bb99aa17 | 73 | } |
lolpcc | 1:6877bb99aa17 | 74 | return(cnt); |
lolpcc | 1:6877bb99aa17 | 75 | } |
lolpcc | 1:6877bb99aa17 | 76 | |
lolpcc | 1:6877bb99aa17 | 77 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 78 | /* */ |
lolpcc | 1:6877bb99aa17 | 79 | /* Set the baud rate of the serial line */ |
lolpcc | 1:6877bb99aa17 | 80 | /* from the command line input */ |
lolpcc | 1:6877bb99aa17 | 81 | /* */ |
lolpcc | 1:6877bb99aa17 | 82 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 83 | #define BAUD_NUMBER 10 |
lolpcc | 1:6877bb99aa17 | 84 | void baud_rate(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 85 | { |
lolpcc | 1:6877bb99aa17 | 86 | int b,cnt; |
lolpcc | 1:6877bb99aa17 | 87 | int v[BAUD_NUMBER] = {300,600,1200,2400,4800,9600,19200,38400,57600,15200}; |
lolpcc | 1:6877bb99aa17 | 88 | |
lolpcc | 1:6877bb99aa17 | 89 | b = atoi(a[1]); |
lolpcc | 1:6877bb99aa17 | 90 | cnt = 0; |
lolpcc | 1:6877bb99aa17 | 91 | while(cnt < BAUD_NUMBER){ |
lolpcc | 1:6877bb99aa17 | 92 | if(v[cnt]==b){ |
lolpcc | 1:6877bb99aa17 | 93 | rs232.baud(b); |
lolpcc | 1:6877bb99aa17 | 94 | set_baud_rate = b; |
lolpcc | 1:6877bb99aa17 | 95 | return; |
lolpcc | 1:6877bb99aa17 | 96 | } |
lolpcc | 1:6877bb99aa17 | 97 | cnt++; |
lolpcc | 1:6877bb99aa17 | 98 | } |
lolpcc | 1:6877bb99aa17 | 99 | cnt=0; |
lolpcc | 1:6877bb99aa17 | 100 | lprintf("Select a speed from "); |
lolpcc | 1:6877bb99aa17 | 101 | while(cnt < BAUD_NUMBER){ |
lolpcc | 1:6877bb99aa17 | 102 | lprintf("%d ",v[cnt]); |
lolpcc | 1:6877bb99aa17 | 103 | cnt++; |
lolpcc | 1:6877bb99aa17 | 104 | } |
lolpcc | 1:6877bb99aa17 | 105 | lprintf("\n\r"); |
lolpcc | 1:6877bb99aa17 | 106 | } |
lolpcc | 1:6877bb99aa17 | 107 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 108 | /* */ |
lolpcc | 1:6877bb99aa17 | 109 | /* Send a string to the serial port */ |
lolpcc | 1:6877bb99aa17 | 110 | /* */ |
lolpcc | 1:6877bb99aa17 | 111 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 112 | void rs232_test_code(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 113 | { |
lolpcc | 1:6877bb99aa17 | 114 | char buf[0x100]; |
lolpcc | 1:6877bb99aa17 | 115 | sprintf(buf,"%s\n",a[1]); |
lolpcc | 1:6877bb99aa17 | 116 | rs232_output_string(buf); |
lolpcc | 1:6877bb99aa17 | 117 | |
lolpcc | 0:9edfcca7cd25 | 118 | } |