Karl Hobley / MorseOut
Committer:
Kaedroho
Date:
Wed Oct 27 17:53:08 2010 +0000
Revision:
1:9a3ebec0fb2c
Parent:
0:bb2a7cd319b4
Child:
2:6aa52f0d9001
Added a few more comments

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 0:bb2a7cd319b4 40 case '0': Code="bbbabbbabbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 41 case '1': Code="babbbabbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 42 case '2': Code="bababbbabbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 43 case '3': Code="babababbbabbba"; break;
Kaedroho 0:bb2a7cd319b4 44 case '4': Code="bababababbba"; break;
Kaedroho 0:bb2a7cd319b4 45 case '5': Code="bababababa"; break;
Kaedroho 0:bb2a7cd319b4 46 case '6': Code="bbbababababa"; break;
Kaedroho 0:bb2a7cd319b4 47 case '7': Code="bbbabbbabababa"; break;
Kaedroho 0:bb2a7cd319b4 48 case '8': Code="bbbabbbabbbababa"; break;
Kaedroho 0:bb2a7cd319b4 49 case '9': Code="bbbabbbabbbabbbaba"; break;
Kaedroho 0:bb2a7cd319b4 50 case ' ': Code="aa"; break;
Kaedroho 0:bb2a7cd319b4 51 default:
Kaedroho 0:bb2a7cd319b4 52 return;
Kaedroho 0:bb2a7cd319b4 53
Kaedroho 0:bb2a7cd319b4 54 }
Kaedroho 0:bb2a7cd319b4 55
Kaedroho 1:9a3ebec0fb2c 56 //Insert code into buffer
Kaedroho 0:bb2a7cd319b4 57 unsigned short i=0;
Kaedroho 0:bb2a7cd319b4 58 while(Code[i]!=0){
Kaedroho 0:bb2a7cd319b4 59 _Buffer[_InputPos]=Code[i]-'a';
Kaedroho 0:bb2a7cd319b4 60 _InputPos++;
Kaedroho 0:bb2a7cd319b4 61 if(_InputPos>=_BufferSize)
Kaedroho 0:bb2a7cd319b4 62 _InputPos=0;
Kaedroho 0:bb2a7cd319b4 63 i++;
Kaedroho 0:bb2a7cd319b4 64 }
Kaedroho 0:bb2a7cd319b4 65 }
Kaedroho 0:bb2a7cd319b4 66
Kaedroho 0:bb2a7cd319b4 67 void MorseOut::puts(char* value)
Kaedroho 0:bb2a7cd319b4 68 {
Kaedroho 1:9a3ebec0fb2c 69 //Loop through string and convert each character
Kaedroho 0:bb2a7cd319b4 70 unsigned short i=0;
Kaedroho 0:bb2a7cd319b4 71 while(value[i]!=0){
Kaedroho 0:bb2a7cd319b4 72 putc(value[i]);
Kaedroho 0:bb2a7cd319b4 73 i++;
Kaedroho 0:bb2a7cd319b4 74 }
Kaedroho 0:bb2a7cd319b4 75 }
Kaedroho 0:bb2a7cd319b4 76
Kaedroho 0:bb2a7cd319b4 77 void MorseOut::_Update()
Kaedroho 0:bb2a7cd319b4 78 {
Kaedroho 1:9a3ebec0fb2c 79 //Check if there is any new data in the buffer
Kaedroho 0:bb2a7cd319b4 80 if(_InputPos!=_OutputPos){
Kaedroho 0:bb2a7cd319b4 81 //Send next bit
Kaedroho 0:bb2a7cd319b4 82 write(_Buffer[_OutputPos]);
Kaedroho 0:bb2a7cd319b4 83
Kaedroho 0:bb2a7cd319b4 84 //Increase output pos
Kaedroho 0:bb2a7cd319b4 85 _OutputPos++;
Kaedroho 0:bb2a7cd319b4 86 if(_OutputPos>=_BufferSize)
Kaedroho 0:bb2a7cd319b4 87 _OutputPos=0;
Kaedroho 0:bb2a7cd319b4 88 }
Kaedroho 0:bb2a7cd319b4 89 }