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@2:6aa52f0d9001, 2010-10-27 (annotated)
- 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?
| 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 | 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 | } |