MorseGenerator test
Embed:
(wiki syntax)
Show/hide line numbers
morsegenerator.cpp
00001 #include "morsegenerator.h" 00002 00003 00004 MorseGenerator::MorseGenerator(callback_type _callback) { 00005 generate_morse_map(); 00006 callback = _callback; 00007 } 00008 00009 void MorseGenerator::generate_morse_map() { 00010 add_mappings("ABCDEFGHIJKLMNOPQRSTUVWXYZ", MORSE_LETTERS); 00011 add_mappings("1234567890", MORSE_NUMBERS); 00012 } 00013 00014 void MorseGenerator::add_mappings(string morse_chars, const string morse_codes[]) { 00015 for (int i=0; i < morse_chars.length(); i++) { 00016 morse_map.insert(MapType::value_type(morse_chars[i], morse_codes[i])); 00017 } 00018 } 00019 00020 void MorseGenerator::transmit(string message) { 00021 for (int i=0; i < message.length(); i++) { 00022 if (strncmp(&message[i], " ", 1) != 0) { 00023 transmit(message[i]); 00024 } 00025 wait_ms(DIT_MS * 7); 00026 } 00027 } 00028 00029 void MorseGenerator::transmit(char letter) { 00030 int d; 00031 string code = morse_map[letter]; 00032 00033 for (int i=0; i < code.length(); i++) { 00034 if (strncmp(&code[i], ".", 1) == 0) { 00035 d = 1; 00036 } else { 00037 d = 3; 00038 } 00039 callback(1); 00040 wait_ms(DIT_MS * d); 00041 callback(0); 00042 wait_ms(DIT_MS); 00043 } 00044 }
Generated on Sat Jul 16 2022 00:49:06 by 1.7.2