Morse code encoder library

Dependents:   MIDI_CW

Revision:
1:e377d081edea
Parent:
0:27c38e4d6e4e
Child:
2:7dc8528b23da
--- a/morse.cpp	Sun Jul 13 09:26:34 2014 +0000
+++ b/morse.cpp	Sat Jul 26 22:48:52 2014 +0000
@@ -35,6 +35,26 @@
  * @endcode
  */
 
+//
+// 0to127-value vs CW_tick table
+//   =0.03*5^(1-i/128)
+const float Morse::table[] = { 0.15000000  ,0.14812575  ,0.14627491  ,0.14444721  ,0.14264234  ,0.14086002  ,0.13909997  ,0.13736192  ,
+                               0.13564558  ,0.13395068  ,0.13227697  ,0.13062416  ,0.12899201  ,0.12738026  ,0.12578864  ,0.12421691  ,
+                               0.12266482  ,0.12113212  ,0.11961857  ,0.11812393  ,0.11664797  ,0.11519045  ,0.11375115  ,0.11232983  ,
+                               0.11092626  ,0.10954024  ,0.10817153  ,0.10681993  ,0.10548521  ,0.10416717  ,0.10286560  ,0.10158029  ,
+                               0.10031105  ,0.09905766  ,0.09781993  ,0.09659767  ,0.09539068  ,0.09419877  ,0.09302176  ,0.09185945  ,
+                               0.09071166  ,0.08957822  ,0.08845894  ,0.08735364  ,0.08626216  ,0.08518431  ,0.08411993  ,0.08306885  ,
+                               0.08203091  ,0.08100593  ,0.07999376  ,0.07899424  ,0.07800720  ,0.07703250  ,0.07606998  ,0.07511948  ,
+                               0.07418086  ,0.07325397  ,0.07233866  ,0.07143479  ,0.07054221  ,0.06966079  ,0.06879037  ,0.06793084  ,
+                               0.06708204  ,0.06624385  ,0.06541613  ,0.06459875  ,0.06379159  ,0.06299452  ,0.06220740  ,0.06143012  ,
+                               0.06066255  ,0.05990457  ,0.05915606  ,0.05841690  ,0.05768698  ,0.05696618  ,0.05625439  ,0.05555149  ,
+                               0.05485737  ,0.05417193  ,0.05349505  ,0.05282663  ,0.05216656  ,0.05151474  ,0.05087106  ,0.05023543  ,
+                               0.04960773  ,0.04898788  ,0.04837578  ,0.04777132  ,0.04717442  ,0.04658497  ,0.04600289  ,0.04542809  ,
+                               0.04486046  ,0.04429993  ,0.04374640  ,0.04319979  ,0.04266001  ,0.04212697  ,0.04160059  ,0.04108079  ,
+                               0.04056749  ,0.04006060  ,0.03956004  ,0.03906574  ,0.03857761  ,0.03809558  ,0.03761958  ,0.03714952  ,
+                               0.03668534  ,0.03622695  ,0.03577430  ,0.03532730  ,0.03488588  ,0.03444998  ,0.03401953  ,0.03359445  ,
+                               0.03317469  ,0.03276017  ,0.03235083  ,0.03194661  ,0.03154744  ,0.03115325  ,0.03076399  ,0.03037959  };
+
 /** beeping function
  * this is a private funciton / internal use only
  */
@@ -86,6 +106,36 @@
     return cw_tick;
 }
 
+void Morse::setidx(int idx)
+{
+    tick_idx = idx;
+    settick(table[tick_idx]);
+}
+
+int Morse::getidx(void)
+{
+    return tick_idx;
+}
+
+void Morse::incidx(void)
+{
+    tick_idx++;
+    if (tick_idx > 127)
+        tick_idx = 127;
+
+    settick(table[tick_idx]);
+}
+
+void Morse::decidx(void)
+{
+    tick_idx--;
+    if (tick_idx < 0)
+        tick_idx = 0;
+
+    settick(table[tick_idx]);
+}
+
+
 /** Coding function
  *
  * @param code - a pointer to code strings