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); }
Diff: MorseEncoder.h
- Revision:
- 1:84ef66bf435d
- Parent:
- 0:4648894e0d80
diff -r 4648894e0d80 -r 84ef66bf435d MorseEncoder.h --- a/MorseEncoder.h Tue Sep 16 16:51:31 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -#ifndef INCLUDE_MORSE_ENCODER_H -#define INCLUDE_MORSE_ENCODER_H - -#include "Morse.h" - -#define MORSE_0 {DASH, DASH, DASH, DASH, DASH} -#define MORSE_1 {DOT, DASH, DASH, DASH, DASH} -#define MORSE_2 {DOT, DOT, DASH, DASH, DASH} -#define MORSE_3 {DOT, DOT, DOT, DASH, DASH} -#define MORSE_4 {DOT, DOT, DOT, DOT, DASH} -#define MORSE_5 {DOT, DOT, DOT, DOT, DOT } -#define MORSE_6 {DASH, DOT, DOT, DOT, DOT } -#define MORSE_7 {DASH, DASH, DOT, DOT, DOT } -#define MORSE_8 {DASH, DASH, DASH, DOT, DOT } -#define MORSE_9 {DASH, DASH, DASH, DASH, DOT } -#define MORSE_A {DOT, DASH, 0, 0, 0 } -#define MORSE_B {DASH, DOT, DOT, DOT, 0 } -#define MORSE_C {DASH, DOT, DASH, DOT, 0 } -#define MORSE_D {DASH, DOT, DOT, 0, 0 } -#define MORSE_E {DOT, 0, 0, 0, 0 } -#define MORSE_F {DOT, DOT, DASH, DOT, 0 } -#define MORSE_G {DASH, DASH, DOT, 0, 0 } -#define MORSE_H {DOT, DOT, DOT, DOT, 0 } -#define MORSE_I {DOT, DOT, 0, 0, 0 } -#define MORSE_J {DOT, DASH, DASH, DASH, 0 } -#define MORSE_K {DASH, DOT, DASH, 0, 0 } -#define MORSE_L {DOT, DASH, DOT, DOT, 0 } -#define MORSE_M {DASH, DASH, 0, 0, 0 } -#define MORSE_N {DASH, DOT, 0, 0, 0 } -#define MORSE_O {DASH, DASH, DASH, 0, 0 } -#define MORSE_P {DOT, DASH, DASH, DOT, 0 } -#define MORSE_Q {DASH, DASH, DOT, DASH, 0 } -#define MORSE_R {DOT, DASH, DOT, 0, 0 } -#define MORSE_S {DOT, DOT, DOT, 0, 0 } -#define MORSE_T {DASH, 0, 0, 0, 0 } -#define MORSE_U {DOT, DOT, DASH, 0, 0 } -#define MORSE_V {DOT, DOT, DOT, DASH, 0 } -#define MORSE_W {DOT, DASH, DASH, 0 , 0 } -#define MORSE_X {DASH, DOT, DOT, DASH, 0 } -#define MORSE_Y {DASH, DOT, DASH, DASH, 0 } -#define MORSE_Z {DASH, DASH, DOT, DOT, 0 } - -#define MORSE_0_SIZE 19 -#define MORSE_1_SIZE 17 -#define MORSE_2_SIZE 15 -#define MORSE_3_SIZE 13 -#define MORSE_4_SIZE 11 -#define MORSE_5_SIZE 9 -#define MORSE_6_SIZE 11 -#define MORSE_7_SIZE 13 -#define MORSE_8_SIZE 15 -#define MORSE_9_SIZE 17 -#define MORSE_A_SIZE 5 -#define MORSE_B_SIZE 9 -#define MORSE_C_SIZE 11 -#define MORSE_D_SIZE 7 -#define MORSE_E_SIZE 1 -#define MORSE_F_SIZE 9 -#define MORSE_G_SIZE 9 -#define MORSE_H_SIZE 7 -#define MORSE_I_SIZE 3 -#define MORSE_J_SIZE 13 -#define MORSE_K_SIZE 9 -#define MORSE_L_SIZE 9 -#define MORSE_M_SIZE 7 -#define MORSE_N_SIZE 5 -#define MORSE_O_SIZE 11 -#define MORSE_P_SIZE 8 -#define MORSE_Q_SIZE 13 -#define MORSE_R_SIZE 7 -#define MORSE_S_SIZE 5 -#define MORSE_T_SIZE 3 -#define MORSE_U_SIZE 7 -#define MORSE_V_SIZE 9 -#define MORSE_W_SIZE 9 -#define MORSE_X_SIZE 11 -#define MORSE_Y_SIZE 13 -#define MORSE_Z_SIZE 11 - -typedef struct { - int length; - bool* data; -} MorseEncoder_data; - -class MorseEncoder { -private: - static const unsigned int _values_size[36]; - static const bool _values[36][5]; - - unsigned int find(char c); - unsigned int addChar(unsigned int index_value, bool* result, unsigned int place); - -public: - MorseEncoder_data* encode(char* word); - void destroy(MorseEncoder_data* data); -}; - -#endif