Program for generating morse code via a callback.

Committer:
stevep
Date:
Thu May 03 22:17:04 2012 +0000
Revision:
2:bdf2fa2879cf
Parent:
1:23b6dc8f569e
Child:
3:df8e3f237e26
use std namespace

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stevep 0:44a2d3f18e9f 1 #include <map>
stevep 0:44a2d3f18e9f 2 #include <string>
stevep 0:44a2d3f18e9f 3 #include "mbed.h"
stevep 0:44a2d3f18e9f 4
stevep 0:44a2d3f18e9f 5 #define DIT_MS 100
stevep 0:44a2d3f18e9f 6
stevep 2:bdf2fa2879cf 7 using namespace std;
stevep 2:bdf2fa2879cf 8
stevep 2:bdf2fa2879cf 9 typedef map <char, string> MapType;
stevep 0:44a2d3f18e9f 10 typedef void (*callback_type)(int);
stevep 0:44a2d3f18e9f 11
stevep 2:bdf2fa2879cf 12 const string MORSE_LETTERS[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
stevep 2:bdf2fa2879cf 13 const string MORSE_NUMBERS[] = {".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", "-----"};
stevep 0:44a2d3f18e9f 14
stevep 1:23b6dc8f569e 15 /** MorseGenerator class.
stevep 1:23b6dc8f569e 16 *
stevep 1:23b6dc8f569e 17 * Example:
stevep 1:23b6dc8f569e 18 * @code
stevep 1:23b6dc8f569e 19 * #include "mbed.h"
stevep 1:23b6dc8f569e 20 * #include "main.h"
stevep 1:23b6dc8f569e 21 * #include "morsegenerator.h"
stevep 1:23b6dc8f569e 22 *
stevep 1:23b6dc8f569e 23 * DigitalOut myled(p18);
stevep 1:23b6dc8f569e 24 *
stevep 1:23b6dc8f569e 25 * void morse_callback(int val) {
stevep 1:23b6dc8f569e 26 * myled = val;
stevep 1:23b6dc8f569e 27 * }
stevep 1:23b6dc8f569e 28 *
stevep 1:23b6dc8f569e 29 * int main() {
stevep 1:23b6dc8f569e 30 * MorseGenerator morse = MorseGenerator(morse_callback);
stevep 1:23b6dc8f569e 31 *
stevep 1:23b6dc8f569e 32 * while (1) {
stevep 1:23b6dc8f569e 33 * morse.transmit("CQCQ DE M6SPX");
stevep 1:23b6dc8f569e 34 * }
stevep 1:23b6dc8f569e 35 * }
stevep 1:23b6dc8f569e 36 * @endcode
stevep 1:23b6dc8f569e 37 */
stevep 0:44a2d3f18e9f 38 class MorseGenerator {
stevep 0:44a2d3f18e9f 39 MapType morse_map;
stevep 0:44a2d3f18e9f 40 callback_type callback;
stevep 0:44a2d3f18e9f 41
stevep 0:44a2d3f18e9f 42 void generate_morse_map();
stevep 2:bdf2fa2879cf 43 void add_mappings(string morse_chars, const string morse_codes[]);
stevep 0:44a2d3f18e9f 44 public:
stevep 0:44a2d3f18e9f 45 /** Create a MorseGenerator that calls a specific callback
stevep 0:44a2d3f18e9f 46 *
stevep 0:44a2d3f18e9f 47 * @param callback called when turning on or off.
stevep 0:44a2d3f18e9f 48 */
stevep 0:44a2d3f18e9f 49 MorseGenerator(callback_type callback);
stevep 0:44a2d3f18e9f 50
stevep 0:44a2d3f18e9f 51 /** transmit a string
stevep 0:44a2d3f18e9f 52 *
stevep 0:44a2d3f18e9f 53 * @param message to transmit.
stevep 0:44a2d3f18e9f 54 */
stevep 2:bdf2fa2879cf 55 void transmit(string message);
stevep 0:44a2d3f18e9f 56
stevep 0:44a2d3f18e9f 57 /** transmit a char
stevep 0:44a2d3f18e9f 58 *
stevep 0:44a2d3f18e9f 59 * @param char to transmit.
stevep 0:44a2d3f18e9f 60 */
stevep 0:44a2d3f18e9f 61 void transmit(char letter);
stevep 0:44a2d3f18e9f 62 };