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);
}
Committer:
rominos2
Date:
Tue Sep 16 16:51:31 2014 +0000
Revision:
0:4648894e0d80
Initial Release

Who changed what in which revision?

UserRevisionLine numberNew 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