Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
MorseOut.cpp@3:7c78cf1605d3, 2011-05-06 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |