A MorseGenerator library that uses LED to blink morse code
Dependents: MorseGenerator_Example2 9v1
Diff: MorseGenerator.cpp
- Revision:
- 0:0ad54d10593c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MorseGenerator.cpp Wed Sep 17 13:29:39 2014 +0000 @@ -0,0 +1,44 @@ +#include "MorseGenerator.h" + + +MorseGenerator::MorseGenerator(callback_type _callback) { + generate_morse_map(); + callback = _callback; +} + +void MorseGenerator::generate_morse_map() { + add_mappings("ABCDEFGHIJKLMNOPQRSTUVWXYZ", MORSE_LETTERS); + add_mappings("1234567890", MORSE_NUMBERS); +} + +void MorseGenerator::add_mappings(string morse_chars, const string morse_codes[]) { + for (int i=0; i < morse_chars.length(); i++) { + morse_map.insert(MapType::value_type(morse_chars[i], morse_codes[i])); + } +} + +void MorseGenerator::transmit(string message) { + for (int i=0; i < message.length(); i++) { + if (strncmp(&message[i], " ", 1) != 0) { + transmit(message[i]); + } + wait_ms(DIT_MS * 7); + } +} + +void MorseGenerator::transmit(char letter) { + int d; + string code = morse_map[letter]; + + for (int i=0; i < code.length(); i++) { + if (strncmp(&code[i], ".", 1) == 0) { + d = 1; + } else { + d = 3; + } + callback(1); + wait_ms(DIT_MS * d); + callback(0); + wait_ms(DIT_MS); + } +} \ No newline at end of file