Program for generating morse code via a callback.

Committer:
stevep
Date:
Mon Apr 30 21:13:48 2012 +0000
Revision:
1:23b6dc8f569e
Parent:
0:44a2d3f18e9f
Child:
2:bdf2fa2879cf
Update documentation.

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