Henk Meewis / Mbed 2 deprecated USB_serial_LED_controller

Dependencies:   mbed

Fork of frdm_echo by Henk Meewis

Committer:
silverpanda
Date:
Mon Apr 14 21:02:10 2014 +0000
Revision:
9:f9efd3a69c2d
Parent:
8:b715912d684b
Child:
10:85a8da3b7e5e
debugged a bit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
silverpanda 5:03b7c237c4c4 1 #include "mbed.h"
silverpanda 7:19da09fe546b 2 #include "LEDColors.h"
silverpanda 5:03b7c237c4c4 3 #include "shell.h"
silverpanda 5:03b7c237c4c4 4
silverpanda 7:19da09fe546b 5 extern LEDColors *ledColors;
silverpanda 7:19da09fe546b 6
silverpanda 5:03b7c237c4c4 7 // create contructor
silverpanda 5:03b7c237c4c4 8 Shell::Shell(uint32_t thisBaudRate)
silverpanda 5:03b7c237c4c4 9 {
silverpanda 5:03b7c237c4c4 10 usbSerial = new Serial(USBTX, USBRX);
silverpanda 5:03b7c237c4c4 11 usbSerial->baud(115200);
silverpanda 8:b715912d684b 12 characterCount = 0;
silverpanda 8:b715912d684b 13 characterPointer = 0;
silverpanda 5:03b7c237c4c4 14 }
silverpanda 5:03b7c237c4c4 15 //-----------------------------------------------------------------------------
silverpanda 5:03b7c237c4c4 16
silverpanda 5:03b7c237c4c4 17 void Shell::sendText(char *thisText)
silverpanda 5:03b7c237c4c4 18 {
silverpanda 5:03b7c237c4c4 19 // this can send any text
silverpanda 5:03b7c237c4c4 20 usbSerial->printf(thisText);
silverpanda 5:03b7c237c4c4 21 }
silverpanda 5:03b7c237c4c4 22 //-----------------------------------------------------------------------------
silverpanda 5:03b7c237c4c4 23
silverpanda 5:03b7c237c4c4 24 void Shell::sendHelloWorld()
silverpanda 5:03b7c237c4c4 25 {
silverpanda 5:03b7c237c4c4 26 // sends the first greeting
silverpanda 5:03b7c237c4c4 27 sendText("** Hello World **\n\n> ");
silverpanda 5:03b7c237c4c4 28 }
silverpanda 5:03b7c237c4c4 29 //-----------------------------------------------------------------------------
silverpanda 5:03b7c237c4c4 30
silverpanda 5:03b7c237c4c4 31 void Shell::scanUSBSerialRx()
silverpanda 5:03b7c237c4c4 32 {
silverpanda 5:03b7c237c4c4 33 // check if there is something to read
silverpanda 5:03b7c237c4c4 34 if(usbSerial->readable()) {
silverpanda 9:f9efd3a69c2d 35
silverpanda 5:03b7c237c4c4 36 // if so ...
silverpanda 5:03b7c237c4c4 37 char character = usbSerial->getc();
silverpanda 9:f9efd3a69c2d 38
silverpanda 5:03b7c237c4c4 39 // see if this is a semi colon or a carriage return
silverpanda 5:03b7c237c4c4 40 // if so, give a new line cursor
silverpanda 7:19da09fe546b 41 if((character == ';') || (character == 13)) {
silverpanda 9:f9efd3a69c2d 42 finishCharacterBuffer();
silverpanda 9:f9efd3a69c2d 43 parseCommands();
silverpanda 7:19da09fe546b 44 usbSerial->printf("\n> ");
silverpanda 7:19da09fe546b 45 ledColors->flashWhite(10);
silverpanda 7:19da09fe546b 46 }
silverpanda 9:f9efd3a69c2d 47
silverpanda 5:03b7c237c4c4 48 // if not, just print the character
silverpanda 9:f9efd3a69c2d 49 else if(addCharacterToBuffer(character)) {
silverpanda 9:f9efd3a69c2d 50 usbSerial->printf("%c", character);
silverpanda 7:19da09fe546b 51 ledColors->flashGreen(10);
silverpanda 7:19da09fe546b 52 }
silverpanda 5:03b7c237c4c4 53 }
silverpanda 5:03b7c237c4c4 54 }
silverpanda 5:03b7c237c4c4 55 //-----------------------------------------------------------------------------
silverpanda 9:f9efd3a69c2d 56
silverpanda 9:f9efd3a69c2d 57 bool Shell::addCharacterToBuffer(char newCharacter)
silverpanda 8:b715912d684b 58 {
silverpanda 9:f9efd3a69c2d 59 bool accept = (characterPointer < ItsInputBufferSize_);
silverpanda 9:f9efd3a69c2d 60 if(accept) {
silverpanda 8:b715912d684b 61 inputBuffer[characterPointer++] = newCharacter;
silverpanda 8:b715912d684b 62 characterCount = characterPointer;
silverpanda 8:b715912d684b 63 }
silverpanda 9:f9efd3a69c2d 64 return accept;
silverpanda 8:b715912d684b 65 }
silverpanda 8:b715912d684b 66 //-----------------------------------------------------------------------------
silverpanda 8:b715912d684b 67
silverpanda 8:b715912d684b 68 void Shell::finishCharacterBuffer()
silverpanda 8:b715912d684b 69 {
silverpanda 8:b715912d684b 70 characterPointer = 0;
silverpanda 8:b715912d684b 71 }
silverpanda 9:f9efd3a69c2d 72 //-----------------------------------------------------------------------------
silverpanda 9:f9efd3a69c2d 73
silverpanda 9:f9efd3a69c2d 74 bool Shell::findString(char *thisString, uint32_t stringLength)
silverpanda 9:f9efd3a69c2d 75 {
silverpanda 9:f9efd3a69c2d 76 bool found = false;
silverpanda 9:f9efd3a69c2d 77 uint32_t startPointer = 0, characterPointer;
silverpanda 9:f9efd3a69c2d 78 char firstChar, secondChar;
silverpanda 9:f9efd3a69c2d 79
silverpanda 9:f9efd3a69c2d 80 while(!found && (startPointer <= characterCount - stringLength)) {
silverpanda 9:f9efd3a69c2d 81
silverpanda 9:f9efd3a69c2d 82 found = true;
silverpanda 9:f9efd3a69c2d 83 characterPointer = 0;
silverpanda 9:f9efd3a69c2d 84 while(found && (characterPointer < stringLength)) {
silverpanda 9:f9efd3a69c2d 85 firstChar = inputBuffer[startPointer + characterPointer];
silverpanda 9:f9efd3a69c2d 86 secondChar = thisString[characterPointer];
silverpanda 9:f9efd3a69c2d 87 found = (firstChar == secondChar);
silverpanda 9:f9efd3a69c2d 88
silverpanda 9:f9efd3a69c2d 89 // usbSerial->printf("(compare %c with %c)\n", firstChar, secondChar);
silverpanda 9:f9efd3a69c2d 90
silverpanda 9:f9efd3a69c2d 91 characterPointer++;
silverpanda 9:f9efd3a69c2d 92 }
silverpanda 9:f9efd3a69c2d 93 startPointer++;
silverpanda 9:f9efd3a69c2d 94 }
silverpanda 9:f9efd3a69c2d 95
silverpanda 9:f9efd3a69c2d 96 return found;
silverpanda 9:f9efd3a69c2d 97 }
silverpanda 9:f9efd3a69c2d 98 //-----------------------------------------------------------------------------
silverpanda 9:f9efd3a69c2d 99
silverpanda 9:f9efd3a69c2d 100 void Shell::parseCommands()
silverpanda 9:f9efd3a69c2d 101 {
silverpanda 9:f9efd3a69c2d 102 if(findString("set", 3)) sendText(" -- \"set\" found!");
silverpanda 9:f9efd3a69c2d 103 }
silverpanda 9:f9efd3a69c2d 104 //-----------------------------------------------------------------------------
silverpanda 9:f9efd3a69c2d 105