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.
Diff: MorseOut.cpp
- Revision:
- 0:bb2a7cd319b4
- Child:
- 1:9a3ebec0fb2c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MorseOut.cpp Wed Oct 27 17:32:30 2010 +0000
@@ -0,0 +1,87 @@
+#include "MorseOut.h"
+
+MorseOut::MorseOut(PinName Pin):DigitalOut(Pin)
+{
+ _Timer.attach(this,&MorseOut::_Update,0.1);
+ _InputPos=_OutputPos=0;
+}
+
+void MorseOut::putc(char value)
+{
+//Get code
+ char *Code=0;
+ switch(value){ //a = low, b = high
+ case 'a': Code="babbba"; break;
+ case 'b': Code="bbbabababa"; break;
+ case 'c': Code="bbbababbbaba"; break;
+ case 'd': Code="bbbababa"; break;
+ case 'e': Code="ba"; break;
+ case 'f': Code="bababbbaba"; break;
+ case 'g': Code="bbbabbbaba"; break;
+ case 'h': Code="babababa"; break;
+ case 'i': Code="baba"; break;
+ case 'j': Code="babbbabbbabbba"; break;
+ case 'k': Code="bbbababbba"; break;
+ case 'l': Code="babbbababa"; break;
+ case 'm': Code="bbbabbba"; break;
+ case 'n': Code="bbbaba"; break;
+ case 'o': Code="bbbabbbabbba"; break;
+ case 'p': Code="babbbabbbaba"; break;
+ case 'q': Code="bbbabbbababbba"; break;
+ case 'r': Code="babbbaba"; break;
+ case 's': Code="bababa"; break;
+ case 't': Code="bbba"; break;
+ case 'u': Code="bababbba"; break;
+ case 'v': Code="babababbba"; break;
+ case 'w': Code="babbbabbba"; break;
+ case 'x': Code="bbbabababbba"; break;
+ case 'y': Code="bbbababbbabbba"; break;
+ case 'z': Code="bbbabbbababa"; break;
+ case '0': Code="bbbabbbabbbabbbabbba"; break;
+ case '1': Code="babbbabbbabbbabbba"; break;
+ case '2': Code="bababbbabbbabbba"; break;
+ case '3': Code="babababbbabbba"; break;
+ case '4': Code="bababababbba"; break;
+ case '5': Code="bababababa"; break;
+ case '6': Code="bbbababababa"; break;
+ case '7': Code="bbbabbbabababa"; break;
+ case '8': Code="bbbabbbabbbababa"; break;
+ case '9': Code="bbbabbbabbbabbbaba"; break;
+ case ' ': Code="aa"; break;
+ default:
+ return;
+
+ }
+
+//Convert character to morse
+ unsigned short i=0;
+ while(Code[i]!=0){
+ _Buffer[_InputPos]=Code[i]-'a';
+ _InputPos++;
+ if(_InputPos>=_BufferSize)
+ _InputPos=0;
+ i++;
+ }
+}
+
+void MorseOut::puts(char* value)
+{
+ unsigned short i=0;
+ while(value[i]!=0){
+ putc(value[i]);
+ i++;
+ }
+}
+
+void MorseOut::_Update()
+{
+ if(_InputPos!=_OutputPos){
+ //Send next bit
+ write(_Buffer[_OutputPos]);
+
+ //Increase output pos
+ _OutputPos++;
+ if(_OutputPos>=_BufferSize)
+ _OutputPos=0;
+ }
+}
\ No newline at end of file