Program for generating morse code via a callback.

morsegenerator.h

Committer:
stevep
Date:
2012-04-30
Revision:
1:23b6dc8f569e
Parent:
0:44a2d3f18e9f
Child:
2:bdf2fa2879cf

File content as of revision 1:23b6dc8f569e:

#include <map>
#include <string>
#include "mbed.h"

#define DIT_MS 100

typedef std::map <char, std::string> MapType;
typedef void (*callback_type)(int);

const std::string MORSE_LETTERS[] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
const std::string MORSE_NUMBERS[] = {".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", "-----"};

/** MorseGenerator class.
 *
 * Example:
 * @code
 * #include "mbed.h"
 * #include "main.h"
 * #include "morsegenerator.h"
 *
 * DigitalOut myled(p18);
 *
 * void morse_callback(int val) {
 *     myled = val;
 * }
 * 
 * int main() {
 *     MorseGenerator morse = MorseGenerator(morse_callback);
 * 
 *     while (1) {
 *         morse.transmit("CQCQ DE M6SPX");
 *     }
 * }
 * @endcode
 */
class MorseGenerator {
    MapType morse_map;
    callback_type callback;
    
    void generate_morse_map();
    void add_mappings(std::string morse_chars, const std::string morse_codes[]);
public:
    /** Create a MorseGenerator that calls a specific callback
     *
     * @param callback called when turning on or off.
     */
    MorseGenerator(callback_type callback);
    
    /** transmit a string
     *
     * @param message to transmit.
     */
    void transmit(std::string message);
    
    /** transmit a char
     *
     * @param char to transmit.
     */
    void transmit(char letter);
};