For Terrance

Dependencies:   mbed

Committer:
emh203
Date:
Wed Jun 13 15:10:06 2012 +0000
Revision:
0:085749c8446f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emh203 0:085749c8446f 1 #include "System.h"
emh203 0:085749c8446f 2
emh203 0:085749c8446f 3 ByteQueue PCBackDoorTx,PCBackDoorRx;
emh203 0:085749c8446f 4 BYTE PCBackDoorTx_Queue_Storage[PC_BACKDOOR_TX_QUEUE_SIZE];
emh203 0:085749c8446f 5 BYTE PCBackDoorRx_Queue_Storage[PC_BACKDOOR_RX_QUEUE_SIZE];
emh203 0:085749c8446f 6
emh203 0:085749c8446f 7 Serial PCBackDoor(USBTX, USBRX);
emh203 0:085749c8446f 8 Ticker PCBackDoorTxQueueCheck;
emh203 0:085749c8446f 9
emh203 0:085749c8446f 10 //IRQ for when data is received
emh203 0:085749c8446f 11 void PCBackDoorRxIRQ();
emh203 0:085749c8446f 12 void PCBackDoorMoveTxQueue();
emh203 0:085749c8446f 13
emh203 0:085749c8446f 14 void InitPCBackDoor()
emh203 0:085749c8446f 15 {
emh203 0:085749c8446f 16 InitByteQueue(&PCBackDoorTx,PC_BACKDOOR_TX_QUEUE_SIZE,&PCBackDoorTx_Queue_Storage[0]);
emh203 0:085749c8446f 17 InitByteQueue(&PCBackDoorRx,PC_BACKDOOR_RX_QUEUE_SIZE,&PCBackDoorRx_Queue_Storage[0]);
emh203 0:085749c8446f 18
emh203 0:085749c8446f 19 PCBackDoor.baud(57600);
emh203 0:085749c8446f 20 PCBackDoor.format(8,Serial::None,1);
emh203 0:085749c8446f 21
emh203 0:085749c8446f 22
emh203 0:085749c8446f 23 //The Rx IRQ wil fill up my big software Rx Queue
emh203 0:085749c8446f 24 PCBackDoor.attach(&PCBackDoorRxIRQ);
emh203 0:085749c8446f 25
emh203 0:085749c8446f 26 //Periodicically check my outgoing Tx Queue (every 1 mS)
emh203 0:085749c8446f 27 PCBackDoorTxQueueCheck.attach_us(&PCBackDoorMoveTxQueue,500);
emh203 0:085749c8446f 28 }
emh203 0:085749c8446f 29
emh203 0:085749c8446f 30 void PCBackDoorMoveTxQueue()
emh203 0:085749c8446f 31 {
emh203 0:085749c8446f 32 BYTE Temp;
emh203 0:085749c8446f 33
emh203 0:085749c8446f 34 while(PCBackDoor.writeable())
emh203 0:085749c8446f 35 {
emh203 0:085749c8446f 36 if(BytesInQueue(&PCBackDoorTx) == 0)
emh203 0:085749c8446f 37 {
emh203 0:085749c8446f 38 break;
emh203 0:085749c8446f 39 }
emh203 0:085749c8446f 40 else
emh203 0:085749c8446f 41 {
emh203 0:085749c8446f 42 ByteDequeue(&PCBackDoorTx,&Temp);
emh203 0:085749c8446f 43 PCBackDoor.putc(Temp);
emh203 0:085749c8446f 44 }
emh203 0:085749c8446f 45 }
emh203 0:085749c8446f 46
emh203 0:085749c8446f 47 }
emh203 0:085749c8446f 48
emh203 0:085749c8446f 49 void PCBackDoorRxIRQ()
emh203 0:085749c8446f 50 {
emh203 0:085749c8446f 51 while(PCBackDoor.readable())
emh203 0:085749c8446f 52 {
emh203 0:085749c8446f 53 ByteEnqueue(&PCBackDoorRx,(BYTE)PCBackDoor.getc());
emh203 0:085749c8446f 54 }
emh203 0:085749c8446f 55 }