Karl Hobley / MorseOut
Committer:
Kaedroho
Date:
Wed Oct 27 18:54:29 2010 +0000
Revision:
2:6aa52f0d9001
Parent:
1:9a3ebec0fb2c
Child:
3:7c78cf1605d3
Added upper-case letters

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kaedroho 0:bb2a7cd319b4 1 #include "MorseOut.h"
Kaedroho 0:bb2a7cd319b4 2
Kaedroho 0:bb2a7cd319b4 3 MorseOut::MorseOut(PinName Pin):DigitalOut(Pin)
Kaedroho 0:bb2a7cd319b4 4 {
Kaedroho 0:bb2a7cd319b4 5 _Timer.attach(this,&MorseOut::_Update,0.1);
Kaedroho 0:bb2a7cd319b4 6 _InputPos=_OutputPos=0;
Kaedroho 0:bb2a7cd319b4 7 }
Kaedroho 0:bb2a7cd319b4 8
Kaedroho 0:bb2a7cd319b4 9 void MorseOut::putc(char value)
Kaedroho 0:bb2a7cd319b4 10 {
Kaedroho 0:bb2a7cd319b4 11 //Get code
Kaedroho 0:bb2a7cd319b4 12 char *Code=0;
Kaedroho 0:bb2a7cd319b4 13 switch(value){ //a = low, b = high
Kaedroho 0:bb2a7cd319b4 14 case 'a': Code="babbba"; break;
Kaedroho 0:bb2a7cd319b4 15 case 'b': Code="bbbabababa"; break;
Kaedroho 0:bb2a7cd319b4 16 case 'c': Code="bbbababbbaba"; break;
Kaedroho 0:bb2a7cd319b4 17 case 'd': Code="bbbababa"; break;
Kaedroho 0:bb2a7cd319b4 18 case 'e': Code="ba"; break;
Kaedroho 0:bb2a7cd319b4 19 case 'f': Code="bababbbaba"; break;
Kaedroho 0:bb2a7cd319b4 20 case 'g': Code="bbbabbbaba"; break;
Kaedroho 0:bb2a7cd319b4 21 case 'h': Code="babababa"; break;
Kaedroho 0:bb2a7cd319b4 22 case 'i': Code="baba"; break;
Kaedroho 0:bb2a7cd319b4 23 case 'j': Code="babbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 24 case 'k': Code="bbbababbba"; break;
Kaedroho 0:bb2a7cd319b4 25 case 'l': Code="babbbababa"; break;
Kaedroho 0:bb2a7cd319b4 26 case 'm': Code="bbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 27 case 'n': Code="bbbaba"; break;
Kaedroho 0:bb2a7cd319b4 28 case 'o': Code="bbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 29 case 'p': Code="babbbabbbaba"; break;
Kaedroho 0:bb2a7cd319b4 30 case 'q': Code="bbbabbbababbba"; break;
Kaedroho 0:bb2a7cd319b4 31 case 'r': Code="babbbaba"; break;
Kaedroho 0:bb2a7cd319b4 32 case 's': Code="bababa"; break;
Kaedroho 0:bb2a7cd319b4 33 case 't': Code="bbba"; break;
Kaedroho 0:bb2a7cd319b4 34 case 'u': Code="bababbba"; break;
Kaedroho 0:bb2a7cd319b4 35 case 'v': Code="babababbba"; break;
Kaedroho 0:bb2a7cd319b4 36 case 'w': Code="babbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 37 case 'x': Code="bbbabababbba"; break;
Kaedroho 0:bb2a7cd319b4 38 case 'y': Code="bbbababbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 39 case 'z': Code="bbbabbbababa"; break;
Kaedroho 2:6aa52f0d9001 40
Kaedroho 2:6aa52f0d9001 41 case 'A': Code="babbba"; break;
Kaedroho 2:6aa52f0d9001 42 case 'B': Code="bbbabababa"; break;
Kaedroho 2:6aa52f0d9001 43 case 'C': Code="bbbababbbaba"; break;
Kaedroho 2:6aa52f0d9001 44 case 'D': Code="bbbababa"; break;
Kaedroho 2:6aa52f0d9001 45 case 'E': Code="ba"; break;
Kaedroho 2:6aa52f0d9001 46 case 'F': Code="bababbbaba"; break;
Kaedroho 2:6aa52f0d9001 47 case 'G': Code="bbbabbbaba"; break;
Kaedroho 2:6aa52f0d9001 48 case 'H': Code="babababa"; break;
Kaedroho 2:6aa52f0d9001 49 case 'I': Code="baba"; break;
Kaedroho 2:6aa52f0d9001 50 case 'J': Code="babbbabbbabbba"; break;
Kaedroho 2:6aa52f0d9001 51 case 'K': Code="bbbababbba"; break;
Kaedroho 2:6aa52f0d9001 52 case 'L': Code="babbbababa"; break;
Kaedroho 2:6aa52f0d9001 53 case 'M': Code="bbbabbba"; break;
Kaedroho 2:6aa52f0d9001 54 case 'N': Code="bbbaba"; break;
Kaedroho 2:6aa52f0d9001 55 case 'O': Code="bbbabbbabbba"; break;
Kaedroho 2:6aa52f0d9001 56 case 'P': Code="babbbabbbaba"; break;
Kaedroho 2:6aa52f0d9001 57 case 'Q': Code="bbbabbbababbba"; break;
Kaedroho 2:6aa52f0d9001 58 case 'R': Code="babbbaba"; break;
Kaedroho 2:6aa52f0d9001 59 case 'S': Code="bababa"; break;
Kaedroho 2:6aa52f0d9001 60 case 'T': Code="bbba"; break;
Kaedroho 2:6aa52f0d9001 61 case 'U': Code="bababbba"; break;
Kaedroho 2:6aa52f0d9001 62 case 'V': Code="babababbba"; break;
Kaedroho 2:6aa52f0d9001 63 case 'W': Code="babbbabbba"; break;
Kaedroho 2:6aa52f0d9001 64 case 'X': Code="bbbabababbba"; break;
Kaedroho 2:6aa52f0d9001 65 case 'Y': Code="bbbababbbabbba"; break;
Kaedroho 2:6aa52f0d9001 66 case 'Z': Code="bbbabbbababa"; break;
Kaedroho 2:6aa52f0d9001 67
Kaedroho 0:bb2a7cd319b4 68 case '0': Code="bbbabbbabbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 69 case '1': Code="babbbabbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 70 case '2': Code="bababbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 71 case '3': Code="babababbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 72 case '4': Code="bababababbba"; break;
Kaedroho 0:bb2a7cd319b4 73 case '5': Code="bababababa"; break;
Kaedroho 0:bb2a7cd319b4 74 case '6': Code="bbbababababa"; break;
Kaedroho 0:bb2a7cd319b4 75 case '7': Code="bbbabbbabababa"; break;
Kaedroho 0:bb2a7cd319b4 76 case '8': Code="bbbabbbabbbababa"; break;
Kaedroho 0:bb2a7cd319b4 77 case '9': Code="bbbabbbabbbabbbaba"; break;
Kaedroho 0:bb2a7cd319b4 78 case ' ': Code="aa"; break;
Kaedroho 0:bb2a7cd319b4 79 default:
Kaedroho 0:bb2a7cd319b4 80 return;
Kaedroho 0:bb2a7cd319b4 81
Kaedroho 0:bb2a7cd319b4 82 }
Kaedroho 0:bb2a7cd319b4 83
Kaedroho 1:9a3ebec0fb2c 84 //Insert code into buffer
Kaedroho 0:bb2a7cd319b4 85 unsigned short i=0;
Kaedroho 0:bb2a7cd319b4 86 while(Code[i]!=0){
Kaedroho 0:bb2a7cd319b4 87 _Buffer[_InputPos]=Code[i]-'a';
Kaedroho 0:bb2a7cd319b4 88 _InputPos++;
Kaedroho 0:bb2a7cd319b4 89 if(_InputPos>=_BufferSize)
Kaedroho 0:bb2a7cd319b4 90 _InputPos=0;
Kaedroho 0:bb2a7cd319b4 91 i++;
Kaedroho 0:bb2a7cd319b4 92 }
Kaedroho 0:bb2a7cd319b4 93 }
Kaedroho 0:bb2a7cd319b4 94
Kaedroho 0:bb2a7cd319b4 95 void MorseOut::puts(char* value)
Kaedroho 0:bb2a7cd319b4 96 {
Kaedroho 1:9a3ebec0fb2c 97 //Loop through string and convert each character
Kaedroho 0:bb2a7cd319b4 98 unsigned short i=0;
Kaedroho 0:bb2a7cd319b4 99 while(value[i]!=0){
Kaedroho 0:bb2a7cd319b4 100 putc(value[i]);
Kaedroho 0:bb2a7cd319b4 101 i++;
Kaedroho 0:bb2a7cd319b4 102 }
Kaedroho 0:bb2a7cd319b4 103 }
Kaedroho 0:bb2a7cd319b4 104
Kaedroho 0:bb2a7cd319b4 105 void MorseOut::_Update()
Kaedroho 0:bb2a7cd319b4 106 {
Kaedroho 1:9a3ebec0fb2c 107 //Check if there is any new data in the buffer
Kaedroho 0:bb2a7cd319b4 108 if(_InputPos!=_OutputPos){
Kaedroho 0:bb2a7cd319b4 109 //Send next bit
Kaedroho 0:bb2a7cd319b4 110 write(_Buffer[_OutputPos]);
Kaedroho 0:bb2a7cd319b4 111
Kaedroho 0:bb2a7cd319b4 112 //Increase output pos
Kaedroho 0:bb2a7cd319b4 113 _OutputPos++;
Kaedroho 0:bb2a7cd319b4 114 if(_OutputPos>=_BufferSize)
Kaedroho 0:bb2a7cd319b4 115 _OutputPos=0;
Kaedroho 0:bb2a7cd319b4 116 }
Kaedroho 0:bb2a7cd319b4 117 }