This is a simple program that will pass communications from the STN1110 to the mBed USB port.

Dependencies:   mbed

Committer:
fossum_13
Date:
Tue Mar 19 20:10:45 2013 +0000
Revision:
0:a940e05190bc
initial release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fossum_13 0:a940e05190bc 1 #include "mbed.h"
fossum_13 0:a940e05190bc 2
fossum_13 0:a940e05190bc 3 Serial STN(p28, p27);
fossum_13 0:a940e05190bc 4 Serial pc(USBTX, USBRX);
fossum_13 0:a940e05190bc 5
fossum_13 0:a940e05190bc 6 long STNBAUD = 9600;
fossum_13 0:a940e05190bc 7 long PCBAUD = 38400;
fossum_13 0:a940e05190bc 8
fossum_13 0:a940e05190bc 9 void flushSerialBuffer(Serial *port);
fossum_13 0:a940e05190bc 10
fossum_13 0:a940e05190bc 11 int main() {
fossum_13 0:a940e05190bc 12 // Configure PC BAUD
fossum_13 0:a940e05190bc 13 pc.baud(PCBAUD);
fossum_13 0:a940e05190bc 14
fossum_13 0:a940e05190bc 15 // Setup STN1110 UART
fossum_13 0:a940e05190bc 16 pc.printf("Configuring STN UART\r\n");
fossum_13 0:a940e05190bc 17 STN.baud(STNBAUD);
fossum_13 0:a940e05190bc 18
fossum_13 0:a940e05190bc 19 // Get to a prompt
fossum_13 0:a940e05190bc 20 bool prompt = false;
fossum_13 0:a940e05190bc 21 while(!prompt) {
fossum_13 0:a940e05190bc 22 // Attempt communication
fossum_13 0:a940e05190bc 23 pc.printf("STN not ready\r\n");
fossum_13 0:a940e05190bc 24 STN.printf("\r");
fossum_13 0:a940e05190bc 25 wait(1);
fossum_13 0:a940e05190bc 26
fossum_13 0:a940e05190bc 27 // Did we get a prompt?
fossum_13 0:a940e05190bc 28 while (STN.readable()) {
fossum_13 0:a940e05190bc 29 if (STN.getc() == '>') {
fossum_13 0:a940e05190bc 30 prompt = true;
fossum_13 0:a940e05190bc 31 flushSerialBuffer(&STN);
fossum_13 0:a940e05190bc 32 }
fossum_13 0:a940e05190bc 33 }
fossum_13 0:a940e05190bc 34 }
fossum_13 0:a940e05190bc 35
fossum_13 0:a940e05190bc 36 // Attempt BAUD rate change
fossum_13 0:a940e05190bc 37 STN.printf("ATZ\r");
fossum_13 0:a940e05190bc 38 pc.printf("STN BAUD == %d\r\n", STNBAUD);
fossum_13 0:a940e05190bc 39
fossum_13 0:a940e05190bc 40 // Start terminal communication
fossum_13 0:a940e05190bc 41 while(1) {
fossum_13 0:a940e05190bc 42 if(STN.readable()) {
fossum_13 0:a940e05190bc 43 char c = STN.getc();
fossum_13 0:a940e05190bc 44 pc.putc(c);
fossum_13 0:a940e05190bc 45 if (c == '\r')
fossum_13 0:a940e05190bc 46 pc.putc('\n');
fossum_13 0:a940e05190bc 47 }
fossum_13 0:a940e05190bc 48 if(pc.readable()) {
fossum_13 0:a940e05190bc 49 char c = pc.getc();
fossum_13 0:a940e05190bc 50 STN.putc(c);
fossum_13 0:a940e05190bc 51 }
fossum_13 0:a940e05190bc 52 }
fossum_13 0:a940e05190bc 53 }
fossum_13 0:a940e05190bc 54
fossum_13 0:a940e05190bc 55 // Clears the Serial port buffer so we can get to new messages
fossum_13 0:a940e05190bc 56 void flushSerialBuffer(Serial *port) {
fossum_13 0:a940e05190bc 57 while ((*port).readable()) {
fossum_13 0:a940e05190bc 58 (*port).getc();
fossum_13 0:a940e05190bc 59 }
fossum_13 0:a940e05190bc 60 return;
fossum_13 0:a940e05190bc 61 }