Program to control an accelerometer, motors and a rangefinder using the ScmRTOS ported to mbed. (Work in progress and buggy)

Dependencies:   mbed

Committer:
jberry
Date:
Mon Nov 01 20:39:01 2010 +0000
Revision:
0:9b057566f9ee

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jberry 0:9b057566f9ee 1 #ifndef SERIAL_H
jberry 0:9b057566f9ee 2 #define SERIAL_H
jberry 0:9b057566f9ee 3 #include <channels.h>
jberry 0:9b057566f9ee 4 #include <Mutexes.h>
jberry 0:9b057566f9ee 5 #include <processes.h>
jberry 0:9b057566f9ee 6
jberry 0:9b057566f9ee 7 #define UART1TX p9
jberry 0:9b057566f9ee 8 #define UART1RX p10
jberry 0:9b057566f9ee 9
jberry 0:9b057566f9ee 10 Serial USB(USBTX, USBRX); // tx, rx
jberry 0:9b057566f9ee 11 Serial XB(UART1TX, UART1RX); // tx, rx
jberry 0:9b057566f9ee 12 Serial *OUT = &USB; //intially set to USB
jberry 0:9b057566f9ee 13
jberry 0:9b057566f9ee 14 extern BusOut leds;
jberry 0:9b057566f9ee 15 void USB_serial() //signal RTOS event that RXinterrupt has been asserted
jberry 0:9b057566f9ee 16 {
jberry 0:9b057566f9ee 17 OS::TISRW ISRW;
jberry 0:9b057566f9ee 18 leds = 0x7;
jberry 0:9b057566f9ee 19 //char count = 0;
jberry 0:9b057566f9ee 20 //led3 = !led3;
jberry 0:9b057566f9ee 21 char temp = 0;
jberry 0:9b057566f9ee 22
jberry 0:9b057566f9ee 23 //leds = 0xa;
jberry 0:9b057566f9ee 24 if(true)//!Serial_Mutex.IsLocked())
jberry 0:9b057566f9ee 25 {
jberry 0:9b057566f9ee 26 //leds = 0xb;
jberry 0:9b057566f9ee 27 //Serial_Mutex.Lock();
jberry 0:9b057566f9ee 28 leds = 0xc;
jberry 0:9b057566f9ee 29 if(USB.readable())
jberry 0:9b057566f9ee 30 {
jberry 0:9b057566f9ee 31 temp = USB.getc();
jberry 0:9b057566f9ee 32 leds = 0xd;
jberry 0:9b057566f9ee 33
jberry 0:9b057566f9ee 34 if(RX_channel.get_free_size() >0 ) //only push a character onto the channel if there is free space
jberry 0:9b057566f9ee 35 {
jberry 0:9b057566f9ee 36 //OUT = &USB;
jberry 0:9b057566f9ee 37 if(temp != '\n')
jberry 0:9b057566f9ee 38 {
jberry 0:9b057566f9ee 39 RX_channel.push(temp);
jberry 0:9b057566f9ee 40 leds = 0xe;
jberry 0:9b057566f9ee 41 }
jberry 0:9b057566f9ee 42 else if(temp == '\n')
jberry 0:9b057566f9ee 43 {
jberry 0:9b057566f9ee 44 RX_channel.push('\0');
jberry 0:9b057566f9ee 45 }
jberry 0:9b057566f9ee 46 }
jberry 0:9b057566f9ee 47 else USB.getc(); //start discarding characters!*/
jberry 0:9b057566f9ee 48 leds = 0xf;
jberry 0:9b057566f9ee 49 leds = 0xa;
jberry 0:9b057566f9ee 50 }
jberry 0:9b057566f9ee 51 leds = 0xb;
jberry 0:9b057566f9ee 52 //Serial_Mutex.Unlock();
jberry 0:9b057566f9ee 53 //Serial_Mutex.Lock();
jberry 0:9b057566f9ee 54 //if(USB.writeable())
jberry 0:9b057566f9ee 55 //USB.putc(temp);
jberry 0:9b057566f9ee 56 //Serial_Mutex.Unlock();
jberry 0:9b057566f9ee 57 leds = 0x1;
jberry 0:9b057566f9ee 58 }
jberry 0:9b057566f9ee 59 else USB.getc(); //start discarding characters!
jberry 0:9b057566f9ee 60
jberry 0:9b057566f9ee 61 leds = 0x9;
jberry 0:9b057566f9ee 62 }
jberry 0:9b057566f9ee 63
jberry 0:9b057566f9ee 64 /*void XB_serial()
jberry 0:9b057566f9ee 65 {
jberry 0:9b057566f9ee 66 //led4 = !led4;
jberry 0:9b057566f9ee 67 char temp = 0;
jberry 0:9b057566f9ee 68 OS::TISRW ISRW;
jberry 0:9b057566f9ee 69 if(!XB_Mutex.IsLocked())
jberry 0:9b057566f9ee 70 {
jberry 0:9b057566f9ee 71 XB_Mutex.Lock();
jberry 0:9b057566f9ee 72 while(XB.readable())
jberry 0:9b057566f9ee 73 {
jberry 0:9b057566f9ee 74 temp = XB.getc();
jberry 0:9b057566f9ee 75 if(RX_channel.get_free_size() >0 ) //only push a character onto the channel if there is free space
jberry 0:9b057566f9ee 76 {
jberry 0:9b057566f9ee 77 OUT = &XB;
jberry 0:9b057566f9ee 78 if(temp != '\n')
jberry 0:9b057566f9ee 79 {
jberry 0:9b057566f9ee 80 RX_channel.push(temp);
jberry 0:9b057566f9ee 81 }
jberry 0:9b057566f9ee 82 else if(temp == '\n')
jberry 0:9b057566f9ee 83 {
jberry 0:9b057566f9ee 84 OUT = &XB;
jberry 0:9b057566f9ee 85 RX_channel.push('\0');
jberry 0:9b057566f9ee 86 }
jberry 0:9b057566f9ee 87 }
jberry 0:9b057566f9ee 88 else temp = XB.getc(); //otherwise, wait until another character is sent and try then
jberry 0:9b057566f9ee 89 }
jberry 0:9b057566f9ee 90 XB_Mutex.Unlock();
jberry 0:9b057566f9ee 91 }
jberry 0:9b057566f9ee 92
jberry 0:9b057566f9ee 93
jberry 0:9b057566f9ee 94 }*/
jberry 0:9b057566f9ee 95
jberry 0:9b057566f9ee 96 #endif
jberry 0:9b057566f9ee 97