Karl Hobley / MorseOut
Committer:
Kaedroho
Date:
Fri May 06 08:51:20 2011 +0000
Revision:
3:7c78cf1605d3
Parent:
2:6aa52f0d9001
Fixed crash and added GetMorse function to convert text into dash and dot strings.

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 3:7c78cf1605d3 9 char* MorseOut::getmorse(char value)
Kaedroho 3:7c78cf1605d3 10 {
Kaedroho 3:7c78cf1605d3 11 char* Code="";
Kaedroho 3:7c78cf1605d3 12 switch(value){ //a = low, b = high
Kaedroho 3:7c78cf1605d3 13 case 'a': Code=". - "; break;
Kaedroho 3:7c78cf1605d3 14 case 'b': Code="- . . . "; break;
Kaedroho 3:7c78cf1605d3 15 case 'c': Code="- . - . "; break;
Kaedroho 3:7c78cf1605d3 16 case 'd': Code="- . . "; break;
Kaedroho 3:7c78cf1605d3 17 case 'e': Code=". "; break;
Kaedroho 3:7c78cf1605d3 18 case 'f': Code=". . - . "; break;
Kaedroho 3:7c78cf1605d3 19 case 'g': Code="- - . "; break;
Kaedroho 3:7c78cf1605d3 20 case 'h': Code=". . . . "; break;
Kaedroho 3:7c78cf1605d3 21 case 'i': Code=". . "; break;
Kaedroho 3:7c78cf1605d3 22 case 'j': Code=". - - - "; break;
Kaedroho 3:7c78cf1605d3 23 case 'k': Code="- . - "; break;
Kaedroho 3:7c78cf1605d3 24 case 'l': Code=". - . . "; break;
Kaedroho 3:7c78cf1605d3 25 case 'm': Code="- - "; break;
Kaedroho 3:7c78cf1605d3 26 case 'n': Code="- . "; break;
Kaedroho 3:7c78cf1605d3 27 case 'o': Code="- - - "; break;
Kaedroho 3:7c78cf1605d3 28 case 'p': Code=". - - . "; break;
Kaedroho 3:7c78cf1605d3 29 case 'q': Code="- - . - "; break;
Kaedroho 3:7c78cf1605d3 30 case 'r': Code=". - . "; break;
Kaedroho 3:7c78cf1605d3 31 case 's': Code=". . . "; break;
Kaedroho 3:7c78cf1605d3 32 case 't': Code="- "; break;
Kaedroho 3:7c78cf1605d3 33 case 'u': Code=". . - "; break;
Kaedroho 3:7c78cf1605d3 34 case 'v': Code=". . . - "; break;
Kaedroho 3:7c78cf1605d3 35 case 'w': Code=". - - "; break;
Kaedroho 3:7c78cf1605d3 36 case 'x': Code="- . . - "; break;
Kaedroho 3:7c78cf1605d3 37 case 'y': Code="- . - - "; break;
Kaedroho 3:7c78cf1605d3 38 case 'z': Code="- - . . "; break;
Kaedroho 3:7c78cf1605d3 39
Kaedroho 3:7c78cf1605d3 40 case 'A': Code=". - "; break;
Kaedroho 3:7c78cf1605d3 41 case 'B': Code="- . . . "; break;
Kaedroho 3:7c78cf1605d3 42 case 'C': Code="- . - . "; break;
Kaedroho 3:7c78cf1605d3 43 case 'D': Code="- . . "; break;
Kaedroho 3:7c78cf1605d3 44 case 'E': Code=". "; break;
Kaedroho 3:7c78cf1605d3 45 case 'F': Code=". . - . "; break;
Kaedroho 3:7c78cf1605d3 46 case 'G': Code="- - . "; break;
Kaedroho 3:7c78cf1605d3 47 case 'H': Code=". . . . "; break;
Kaedroho 3:7c78cf1605d3 48 case 'I': Code=". . "; break;
Kaedroho 3:7c78cf1605d3 49 case 'J': Code=". - - - "; break;
Kaedroho 3:7c78cf1605d3 50 case 'K': Code="- . - "; break;
Kaedroho 3:7c78cf1605d3 51 case 'L': Code=". - . . "; break;
Kaedroho 3:7c78cf1605d3 52 case 'M': Code="- - "; break;
Kaedroho 3:7c78cf1605d3 53 case 'N': Code="- . "; break;
Kaedroho 3:7c78cf1605d3 54 case 'O': Code="- - - "; break;
Kaedroho 3:7c78cf1605d3 55 case 'P': Code=". - - . "; break;
Kaedroho 3:7c78cf1605d3 56 case 'Q': Code="- - . - "; break;
Kaedroho 3:7c78cf1605d3 57 case 'R': Code=". - . "; break;
Kaedroho 3:7c78cf1605d3 58 case 'S': Code=". . . "; break;
Kaedroho 3:7c78cf1605d3 59 case 'T': Code="- "; break;
Kaedroho 3:7c78cf1605d3 60 case 'U': Code=". . - "; break;
Kaedroho 3:7c78cf1605d3 61 case 'V': Code=". . . - "; break;
Kaedroho 3:7c78cf1605d3 62 case 'W': Code=". - - "; break;
Kaedroho 3:7c78cf1605d3 63 case 'X': Code="- . . - "; break;
Kaedroho 3:7c78cf1605d3 64 case 'Y': Code="- . - - "; break;
Kaedroho 3:7c78cf1605d3 65 case 'Z': Code="- - . . "; break;
Kaedroho 3:7c78cf1605d3 66
Kaedroho 3:7c78cf1605d3 67 case '0': Code="- - - - - "; break;
Kaedroho 3:7c78cf1605d3 68 case '1': Code=". - - - - "; break;
Kaedroho 3:7c78cf1605d3 69 case '2': Code=". . - - - "; break;
Kaedroho 3:7c78cf1605d3 70 case '3': Code=". . . - - "; break;
Kaedroho 3:7c78cf1605d3 71 case '4': Code=". . . . - "; break;
Kaedroho 3:7c78cf1605d3 72 case '5': Code=". . . . . "; break;
Kaedroho 3:7c78cf1605d3 73 case '6': Code="- . . . . "; break;
Kaedroho 3:7c78cf1605d3 74 case '7': Code="- - . . . "; break;
Kaedroho 3:7c78cf1605d3 75 case '8': Code="- - - . . "; break;
Kaedroho 3:7c78cf1605d3 76 case '9': Code="- - - - . "; break;
Kaedroho 3:7c78cf1605d3 77 case ' ': Code=" "; break;
Kaedroho 3:7c78cf1605d3 78 default:
Kaedroho 3:7c78cf1605d3 79 return 0;
Kaedroho 3:7c78cf1605d3 80 }
Kaedroho 3:7c78cf1605d3 81
Kaedroho 3:7c78cf1605d3 82 return Code;
Kaedroho 3:7c78cf1605d3 83 }
Kaedroho 3:7c78cf1605d3 84
Kaedroho 0:bb2a7cd319b4 85 void MorseOut::putc(char value)
Kaedroho 0:bb2a7cd319b4 86 {
Kaedroho 0:bb2a7cd319b4 87 //Get code
Kaedroho 3:7c78cf1605d3 88 char *Code="";
Kaedroho 0:bb2a7cd319b4 89 switch(value){ //a = low, b = high
Kaedroho 0:bb2a7cd319b4 90 case 'a': Code="babbba"; break;
Kaedroho 0:bb2a7cd319b4 91 case 'b': Code="bbbabababa"; break;
Kaedroho 0:bb2a7cd319b4 92 case 'c': Code="bbbababbbaba"; break;
Kaedroho 0:bb2a7cd319b4 93 case 'd': Code="bbbababa"; break;
Kaedroho 0:bb2a7cd319b4 94 case 'e': Code="ba"; break;
Kaedroho 0:bb2a7cd319b4 95 case 'f': Code="bababbbaba"; break;
Kaedroho 0:bb2a7cd319b4 96 case 'g': Code="bbbabbbaba"; break;
Kaedroho 0:bb2a7cd319b4 97 case 'h': Code="babababa"; break;
Kaedroho 0:bb2a7cd319b4 98 case 'i': Code="baba"; break;
Kaedroho 0:bb2a7cd319b4 99 case 'j': Code="babbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 100 case 'k': Code="bbbababbba"; break;
Kaedroho 0:bb2a7cd319b4 101 case 'l': Code="babbbababa"; break;
Kaedroho 0:bb2a7cd319b4 102 case 'm': Code="bbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 103 case 'n': Code="bbbaba"; break;
Kaedroho 0:bb2a7cd319b4 104 case 'o': Code="bbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 105 case 'p': Code="babbbabbbaba"; break;
Kaedroho 0:bb2a7cd319b4 106 case 'q': Code="bbbabbbababbba"; break;
Kaedroho 0:bb2a7cd319b4 107 case 'r': Code="babbbaba"; break;
Kaedroho 0:bb2a7cd319b4 108 case 's': Code="bababa"; break;
Kaedroho 0:bb2a7cd319b4 109 case 't': Code="bbba"; break;
Kaedroho 0:bb2a7cd319b4 110 case 'u': Code="bababbba"; break;
Kaedroho 0:bb2a7cd319b4 111 case 'v': Code="babababbba"; break;
Kaedroho 0:bb2a7cd319b4 112 case 'w': Code="babbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 113 case 'x': Code="bbbabababbba"; break;
Kaedroho 0:bb2a7cd319b4 114 case 'y': Code="bbbababbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 115 case 'z': Code="bbbabbbababa"; break;
Kaedroho 2:6aa52f0d9001 116
Kaedroho 2:6aa52f0d9001 117 case 'A': Code="babbba"; break;
Kaedroho 2:6aa52f0d9001 118 case 'B': Code="bbbabababa"; break;
Kaedroho 2:6aa52f0d9001 119 case 'C': Code="bbbababbbaba"; break;
Kaedroho 2:6aa52f0d9001 120 case 'D': Code="bbbababa"; break;
Kaedroho 2:6aa52f0d9001 121 case 'E': Code="ba"; break;
Kaedroho 2:6aa52f0d9001 122 case 'F': Code="bababbbaba"; break;
Kaedroho 2:6aa52f0d9001 123 case 'G': Code="bbbabbbaba"; break;
Kaedroho 2:6aa52f0d9001 124 case 'H': Code="babababa"; break;
Kaedroho 2:6aa52f0d9001 125 case 'I': Code="baba"; break;
Kaedroho 2:6aa52f0d9001 126 case 'J': Code="babbbabbbabbba"; break;
Kaedroho 2:6aa52f0d9001 127 case 'K': Code="bbbababbba"; break;
Kaedroho 2:6aa52f0d9001 128 case 'L': Code="babbbababa"; break;
Kaedroho 2:6aa52f0d9001 129 case 'M': Code="bbbabbba"; break;
Kaedroho 2:6aa52f0d9001 130 case 'N': Code="bbbaba"; break;
Kaedroho 2:6aa52f0d9001 131 case 'O': Code="bbbabbbabbba"; break;
Kaedroho 2:6aa52f0d9001 132 case 'P': Code="babbbabbbaba"; break;
Kaedroho 2:6aa52f0d9001 133 case 'Q': Code="bbbabbbababbba"; break;
Kaedroho 2:6aa52f0d9001 134 case 'R': Code="babbbaba"; break;
Kaedroho 2:6aa52f0d9001 135 case 'S': Code="bababa"; break;
Kaedroho 2:6aa52f0d9001 136 case 'T': Code="bbba"; break;
Kaedroho 2:6aa52f0d9001 137 case 'U': Code="bababbba"; break;
Kaedroho 2:6aa52f0d9001 138 case 'V': Code="babababbba"; break;
Kaedroho 2:6aa52f0d9001 139 case 'W': Code="babbbabbba"; break;
Kaedroho 2:6aa52f0d9001 140 case 'X': Code="bbbabababbba"; break;
Kaedroho 2:6aa52f0d9001 141 case 'Y': Code="bbbababbbabbba"; break;
Kaedroho 2:6aa52f0d9001 142 case 'Z': Code="bbbabbbababa"; break;
Kaedroho 2:6aa52f0d9001 143
Kaedroho 0:bb2a7cd319b4 144 case '0': Code="bbbabbbabbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 145 case '1': Code="babbbabbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 146 case '2': Code="bababbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 147 case '3': Code="babababbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 148 case '4': Code="bababababbba"; break;
Kaedroho 0:bb2a7cd319b4 149 case '5': Code="bababababa"; break;
Kaedroho 0:bb2a7cd319b4 150 case '6': Code="bbbababababa"; break;
Kaedroho 0:bb2a7cd319b4 151 case '7': Code="bbbabbbabababa"; break;
Kaedroho 0:bb2a7cd319b4 152 case '8': Code="bbbabbbabbbababa"; break;
Kaedroho 0:bb2a7cd319b4 153 case '9': Code="bbbabbbabbbabbbaba"; break;
Kaedroho 0:bb2a7cd319b4 154 case ' ': Code="aa"; break;
Kaedroho 0:bb2a7cd319b4 155 default:
Kaedroho 0:bb2a7cd319b4 156 return;
Kaedroho 0:bb2a7cd319b4 157
Kaedroho 0:bb2a7cd319b4 158 }
Kaedroho 0:bb2a7cd319b4 159
Kaedroho 1:9a3ebec0fb2c 160 //Insert code into buffer
Kaedroho 0:bb2a7cd319b4 161 unsigned short i=0;
Kaedroho 0:bb2a7cd319b4 162 while(Code[i]!=0){
Kaedroho 0:bb2a7cd319b4 163 _Buffer[_InputPos]=Code[i]-'a';
Kaedroho 0:bb2a7cd319b4 164 _InputPos++;
Kaedroho 0:bb2a7cd319b4 165 if(_InputPos>=_BufferSize)
Kaedroho 0:bb2a7cd319b4 166 _InputPos=0;
Kaedroho 0:bb2a7cd319b4 167 i++;
Kaedroho 0:bb2a7cd319b4 168 }
Kaedroho 0:bb2a7cd319b4 169 }
Kaedroho 0:bb2a7cd319b4 170
Kaedroho 0:bb2a7cd319b4 171 void MorseOut::puts(char* value)
Kaedroho 0:bb2a7cd319b4 172 {
Kaedroho 1:9a3ebec0fb2c 173 //Loop through string and convert each character
Kaedroho 0:bb2a7cd319b4 174 unsigned short i=0;
Kaedroho 0:bb2a7cd319b4 175 while(value[i]!=0){
Kaedroho 0:bb2a7cd319b4 176 putc(value[i]);
Kaedroho 0:bb2a7cd319b4 177 i++;
Kaedroho 0:bb2a7cd319b4 178 }
Kaedroho 0:bb2a7cd319b4 179 }
Kaedroho 0:bb2a7cd319b4 180
Kaedroho 0:bb2a7cd319b4 181 void MorseOut::_Update()
Kaedroho 0:bb2a7cd319b4 182 {
Kaedroho 1:9a3ebec0fb2c 183 //Check if there is any new data in the buffer
Kaedroho 0:bb2a7cd319b4 184 if(_InputPos!=_OutputPos){
Kaedroho 0:bb2a7cd319b4 185 //Send next bit
Kaedroho 0:bb2a7cd319b4 186 write(_Buffer[_OutputPos]);
Kaedroho 0:bb2a7cd319b4 187
Kaedroho 0:bb2a7cd319b4 188 //Increase output pos
Kaedroho 0:bb2a7cd319b4 189 _OutputPos++;
Kaedroho 0:bb2a7cd319b4 190 if(_OutputPos>=_BufferSize)
Kaedroho 0:bb2a7cd319b4 191 _OutputPos=0;
Kaedroho 0:bb2a7cd319b4 192 }
Kaedroho 0:bb2a7cd319b4 193 }