Morse Encoder/Decoder Library. Transforms char array to binary array and vice-versa.
A Morse Encoding/Decoding Library \n Transforms char arrays into bool arrays and vice-versa
Morse code taken from http://en.wikipedia.org/wiki/Morse_code
Added some more characters :
- : DOT DOT DASH DASH
_ : DASH DASH DASH DOT
. : DASH DASH DASH DASH
/ : DOT DASH DOT DASH
@ : DOT DOT DOT DASH DOT
? : DOT DOT DASH DOT DOT
Here is an quick hello-world that show how to use this library
#include "mbed.h #include "Morse.h" Serial pc(USBTX, USBRX); int main() { int i; Morse_data* data; char message[] = "Hello World"; data = morse_create(morse_getBoolSize(message)); morse_encode(message, data); for (i=0; i<data->length; i++) pc.printf("%d", data->data[i]); morse_decode(data, message); pc.printf("\nMessage was : %s\n", message); while(1); }
MorseEncoder.h@0:4648894e0d80, 2014-09-16 (annotated)
- Committer:
- rominos2
- Date:
- Tue Sep 16 16:51:31 2014 +0000
- Revision:
- 0:4648894e0d80
Initial Release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rominos2 | 0:4648894e0d80 | 1 | #ifndef INCLUDE_MORSE_ENCODER_H |
rominos2 | 0:4648894e0d80 | 2 | #define INCLUDE_MORSE_ENCODER_H |
rominos2 | 0:4648894e0d80 | 3 | |
rominos2 | 0:4648894e0d80 | 4 | #include "Morse.h" |
rominos2 | 0:4648894e0d80 | 5 | |
rominos2 | 0:4648894e0d80 | 6 | #define MORSE_0 {DASH, DASH, DASH, DASH, DASH} |
rominos2 | 0:4648894e0d80 | 7 | #define MORSE_1 {DOT, DASH, DASH, DASH, DASH} |
rominos2 | 0:4648894e0d80 | 8 | #define MORSE_2 {DOT, DOT, DASH, DASH, DASH} |
rominos2 | 0:4648894e0d80 | 9 | #define MORSE_3 {DOT, DOT, DOT, DASH, DASH} |
rominos2 | 0:4648894e0d80 | 10 | #define MORSE_4 {DOT, DOT, DOT, DOT, DASH} |
rominos2 | 0:4648894e0d80 | 11 | #define MORSE_5 {DOT, DOT, DOT, DOT, DOT } |
rominos2 | 0:4648894e0d80 | 12 | #define MORSE_6 {DASH, DOT, DOT, DOT, DOT } |
rominos2 | 0:4648894e0d80 | 13 | #define MORSE_7 {DASH, DASH, DOT, DOT, DOT } |
rominos2 | 0:4648894e0d80 | 14 | #define MORSE_8 {DASH, DASH, DASH, DOT, DOT } |
rominos2 | 0:4648894e0d80 | 15 | #define MORSE_9 {DASH, DASH, DASH, DASH, DOT } |
rominos2 | 0:4648894e0d80 | 16 | #define MORSE_A {DOT, DASH, 0, 0, 0 } |
rominos2 | 0:4648894e0d80 | 17 | #define MORSE_B {DASH, DOT, DOT, DOT, 0 } |
rominos2 | 0:4648894e0d80 | 18 | #define MORSE_C {DASH, DOT, DASH, DOT, 0 } |
rominos2 | 0:4648894e0d80 | 19 | #define MORSE_D {DASH, DOT, DOT, 0, 0 } |
rominos2 | 0:4648894e0d80 | 20 | #define MORSE_E {DOT, 0, 0, 0, 0 } |
rominos2 | 0:4648894e0d80 | 21 | #define MORSE_F {DOT, DOT, DASH, DOT, 0 } |
rominos2 | 0:4648894e0d80 | 22 | #define MORSE_G {DASH, DASH, DOT, 0, 0 } |
rominos2 | 0:4648894e0d80 | 23 | #define MORSE_H {DOT, DOT, DOT, DOT, 0 } |
rominos2 | 0:4648894e0d80 | 24 | #define MORSE_I {DOT, DOT, 0, 0, 0 } |
rominos2 | 0:4648894e0d80 | 25 | #define MORSE_J {DOT, DASH, DASH, DASH, 0 } |
rominos2 | 0:4648894e0d80 | 26 | #define MORSE_K {DASH, DOT, DASH, 0, 0 } |
rominos2 | 0:4648894e0d80 | 27 | #define MORSE_L {DOT, DASH, DOT, DOT, 0 } |
rominos2 | 0:4648894e0d80 | 28 | #define MORSE_M {DASH, DASH, 0, 0, 0 } |
rominos2 | 0:4648894e0d80 | 29 | #define MORSE_N {DASH, DOT, 0, 0, 0 } |
rominos2 | 0:4648894e0d80 | 30 | #define MORSE_O {DASH, DASH, DASH, 0, 0 } |
rominos2 | 0:4648894e0d80 | 31 | #define MORSE_P {DOT, DASH, DASH, DOT, 0 } |
rominos2 | 0:4648894e0d80 | 32 | #define MORSE_Q {DASH, DASH, DOT, DASH, 0 } |
rominos2 | 0:4648894e0d80 | 33 | #define MORSE_R {DOT, DASH, DOT, 0, 0 } |
rominos2 | 0:4648894e0d80 | 34 | #define MORSE_S {DOT, DOT, DOT, 0, 0 } |
rominos2 | 0:4648894e0d80 | 35 | #define MORSE_T {DASH, 0, 0, 0, 0 } |
rominos2 | 0:4648894e0d80 | 36 | #define MORSE_U {DOT, DOT, DASH, 0, 0 } |
rominos2 | 0:4648894e0d80 | 37 | #define MORSE_V {DOT, DOT, DOT, DASH, 0 } |
rominos2 | 0:4648894e0d80 | 38 | #define MORSE_W {DOT, DASH, DASH, 0 , 0 } |
rominos2 | 0:4648894e0d80 | 39 | #define MORSE_X {DASH, DOT, DOT, DASH, 0 } |
rominos2 | 0:4648894e0d80 | 40 | #define MORSE_Y {DASH, DOT, DASH, DASH, 0 } |
rominos2 | 0:4648894e0d80 | 41 | #define MORSE_Z {DASH, DASH, DOT, DOT, 0 } |
rominos2 | 0:4648894e0d80 | 42 | |
rominos2 | 0:4648894e0d80 | 43 | #define MORSE_0_SIZE 19 |
rominos2 | 0:4648894e0d80 | 44 | #define MORSE_1_SIZE 17 |
rominos2 | 0:4648894e0d80 | 45 | #define MORSE_2_SIZE 15 |
rominos2 | 0:4648894e0d80 | 46 | #define MORSE_3_SIZE 13 |
rominos2 | 0:4648894e0d80 | 47 | #define MORSE_4_SIZE 11 |
rominos2 | 0:4648894e0d80 | 48 | #define MORSE_5_SIZE 9 |
rominos2 | 0:4648894e0d80 | 49 | #define MORSE_6_SIZE 11 |
rominos2 | 0:4648894e0d80 | 50 | #define MORSE_7_SIZE 13 |
rominos2 | 0:4648894e0d80 | 51 | #define MORSE_8_SIZE 15 |
rominos2 | 0:4648894e0d80 | 52 | #define MORSE_9_SIZE 17 |
rominos2 | 0:4648894e0d80 | 53 | #define MORSE_A_SIZE 5 |
rominos2 | 0:4648894e0d80 | 54 | #define MORSE_B_SIZE 9 |
rominos2 | 0:4648894e0d80 | 55 | #define MORSE_C_SIZE 11 |
rominos2 | 0:4648894e0d80 | 56 | #define MORSE_D_SIZE 7 |
rominos2 | 0:4648894e0d80 | 57 | #define MORSE_E_SIZE 1 |
rominos2 | 0:4648894e0d80 | 58 | #define MORSE_F_SIZE 9 |
rominos2 | 0:4648894e0d80 | 59 | #define MORSE_G_SIZE 9 |
rominos2 | 0:4648894e0d80 | 60 | #define MORSE_H_SIZE 7 |
rominos2 | 0:4648894e0d80 | 61 | #define MORSE_I_SIZE 3 |
rominos2 | 0:4648894e0d80 | 62 | #define MORSE_J_SIZE 13 |
rominos2 | 0:4648894e0d80 | 63 | #define MORSE_K_SIZE 9 |
rominos2 | 0:4648894e0d80 | 64 | #define MORSE_L_SIZE 9 |
rominos2 | 0:4648894e0d80 | 65 | #define MORSE_M_SIZE 7 |
rominos2 | 0:4648894e0d80 | 66 | #define MORSE_N_SIZE 5 |
rominos2 | 0:4648894e0d80 | 67 | #define MORSE_O_SIZE 11 |
rominos2 | 0:4648894e0d80 | 68 | #define MORSE_P_SIZE 8 |
rominos2 | 0:4648894e0d80 | 69 | #define MORSE_Q_SIZE 13 |
rominos2 | 0:4648894e0d80 | 70 | #define MORSE_R_SIZE 7 |
rominos2 | 0:4648894e0d80 | 71 | #define MORSE_S_SIZE 5 |
rominos2 | 0:4648894e0d80 | 72 | #define MORSE_T_SIZE 3 |
rominos2 | 0:4648894e0d80 | 73 | #define MORSE_U_SIZE 7 |
rominos2 | 0:4648894e0d80 | 74 | #define MORSE_V_SIZE 9 |
rominos2 | 0:4648894e0d80 | 75 | #define MORSE_W_SIZE 9 |
rominos2 | 0:4648894e0d80 | 76 | #define MORSE_X_SIZE 11 |
rominos2 | 0:4648894e0d80 | 77 | #define MORSE_Y_SIZE 13 |
rominos2 | 0:4648894e0d80 | 78 | #define MORSE_Z_SIZE 11 |
rominos2 | 0:4648894e0d80 | 79 | |
rominos2 | 0:4648894e0d80 | 80 | typedef struct { |
rominos2 | 0:4648894e0d80 | 81 | int length; |
rominos2 | 0:4648894e0d80 | 82 | bool* data; |
rominos2 | 0:4648894e0d80 | 83 | } MorseEncoder_data; |
rominos2 | 0:4648894e0d80 | 84 | |
rominos2 | 0:4648894e0d80 | 85 | class MorseEncoder { |
rominos2 | 0:4648894e0d80 | 86 | private: |
rominos2 | 0:4648894e0d80 | 87 | static const unsigned int _values_size[36]; |
rominos2 | 0:4648894e0d80 | 88 | static const bool _values[36][5]; |
rominos2 | 0:4648894e0d80 | 89 | |
rominos2 | 0:4648894e0d80 | 90 | unsigned int find(char c); |
rominos2 | 0:4648894e0d80 | 91 | unsigned int addChar(unsigned int index_value, bool* result, unsigned int place); |
rominos2 | 0:4648894e0d80 | 92 | |
rominos2 | 0:4648894e0d80 | 93 | public: |
rominos2 | 0:4648894e0d80 | 94 | MorseEncoder_data* encode(char* word); |
rominos2 | 0:4648894e0d80 | 95 | void destroy(MorseEncoder_data* data); |
rominos2 | 0:4648894e0d80 | 96 | }; |
rominos2 | 0:4648894e0d80 | 97 | |
rominos2 | 0:4648894e0d80 | 98 | #endif |