Interference current stimulation program with kaji-lab ES device.

Dependencies:   mbed SerialInputReactionHandler AMPulseTrain SwArr16MOSFET StrCommandHandler KajiLabES

Revision:
2:5cb68cc8ecaa
Parent:
1:b97639dad576
Child:
3:ef730909a664
--- a/SerialCom/sigbind.cpp	Wed Oct 23 20:08:31 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,288 +0,0 @@
-#include "sigbind.h"
-namespace aktk_sigbind
-{
-//  To avoid pressing key too much
-enum Lock {UNLOCK, LOCK};
-Lock aktk_keylock = UNLOCK;
-
-//private functions
-template<typename T>
-int scanValue(T* arg_val);
-void waitUnpress();
-void setPulseParam();
-void ArrowKeyBind(const char arg_c);
-//void printStimType();
-void printStatus(void);
-void keyBind()
-{
-    //stimulator.DAAD(0);
-    char sig = pc.getc();
-    if (aktk_keylock == UNLOCK) {
-        aktk_keylock = LOCK;
-        switch(sig) {
-            case 'w':
-                spacing = WIDE_CONDITION;
-                pc.printf("Wide condition\n");
-                waitUnpress();
-                break;
-            case 'n':
-                spacing = NARROW_CONDITION;
-                pc.printf("Narrow condition\n");
-                waitUnpress();
-                break;
-            case 'm':
-                switch(pc.getc()) {
-                    case 'b':
-                        smode = BIPOLAR;
-                        pc.printf("BIPOLAR Stimulation\n");
-                        break;
-                    case 'a':
-                        smode = ANODIC;
-                        pc.printf("ANODIC Stimulation\n");
-                        break;
-                    case 'c':
-                        smode = CATHODIC;
-                        pc.printf("CATHODIC Stimulation\n");
-                        break;
-                }
-                waitUnpress();
-                break;
-            case 'p':
-                printStatus();
-                waitUnpress();
-                break;
-            case 'v':
-                setPulseParam();
-                waitUnpress();
-                break;
-            case 'a':   //switch mbed-pc communication on/off
-                if (pstate == MAIN_ROUTINE) {
-                    pstate = WAIT_A_CERTAIN_KEY;
-                    pc.printf("stop\n");
-                } else if (pstate == WAIT_A_CERTAIN_KEY) {
-                    pstate = MAIN_ROUTINE;
-                    //printStimType();
-                    pc.printf("start\n");
-                }
-                waitUnpress();
-                break;
-            case 'E':
-                pstate = TERMINATED;
-                pc.printf("TERMINATED");
-                waitUnpress();
-                break;
-            case 'S':// start
-                if (pstate == WAIT_A_CERTAIN_KEY) {
-                    pstate = MAIN_ROUTINE;
-                    //printStimType();
-                    pc.printf("start\n");
-                }
-                waitUnpress();
-                break;
-            case 'P':// pause
-                pstate = WAIT_A_CERTAIN_KEY;
-                pc.printf("stop\n");
-                waitUnpress();
-                break;
-            case 0x1b:
-                if(pc.getc() == 0x5b) {
-                    ArrowKeyBind(pc.getc());
-                    pc.printf("Hight:%d\n",ph);//sc.getPH());
-                }
-                waitUnpress();
-                break;
-            default:
-                printKBManual();
-                pc.printf("Sent data was: %d(%c)\n", sig, sig);
-                waitUnpress();
-                break;
-        }
-        //aktk_keylock = UNLOCK;
-    } else if (sig == 0x1B) //esc
-        aktk_keylock = UNLOCK;
-}
-
-void waitUnpress()
-{
-    while (1) {
-        if(! pc.readable()) {
-            aktk_keylock = UNLOCK;
-            break;
-        }
-    }
-}
-
-template<typename T>
-int scanValue(T* arg_val)
-{
-    char c = 0;
-    char c_prevent = 0;
-    double tmp = 0.0;
-    double fig = 1.0;
-    bool dot_flag = false;
-    bool no_modified = true;
-
-    T arg_last_val = *arg_val;
-
-    do {
-        c = pc.getc();
-
-        if ('0' <= c && c <= '9') {
-            no_modified = false;
-            pc.putc(c);
-            if(! dot_flag) {
-                tmp *= 10.0;
-                tmp += (double)(c - '0');
-            } else {
-                fig *= 10.0;
-                tmp += (double)(c - '0') / fig;
-            }
-        } else if (c == '.') {
-            if(dot_flag == 0)pc.printf(".");
-            dot_flag = true;
-        } else if (c == 'k' || c == 'K') {
-            pc.printf("(keep present value)\n");
-            tmp = (double) arg_last_val;
-            break;
-        } else if (c == 0x10 || c == 0x08) {
-            pc.putc(0x08);
-            pc.putc(0x20);
-            pc.putc(0x08);
-            if(! dot_flag) {
-                c_prevent = (double)(((int)tmp) % 10);
-                tmp -= (double)(c_prevent);
-                tmp /= 10;
-            } else {
-                if(fig == 1.0)
-                    dot_flag = false;
-                else {
-                    c_prevent = (double)((int)(tmp * fig) % 10);
-                    tmp -= (double)(c_prevent) / fig;
-                    fig /= 10;
-                }
-            }
-            if(tmp == 0) no_modified = true;
-        } else if (c == 0x1b) {
-            pc.printf("CANSELED\n");
-            return -1;
-        } else if (c == 0x0A || c == 0x0D) {
-            pc.printf("\n");
-            break;
-        }
-    } while(1);
-
-    waitUnpress();
-
-    if(no_modified) *arg_val = arg_last_val;
-    else *arg_val = static_cast<T>(tmp);
-    pc.printf("tmp:%f\n",tmp);
-
-    return 0;
-}
-//int scanValue<int>(int*);
-//int scanValue<double>(double*);
-//int scanValue<unsigned short>(unsigned short*);
-
-void setPulseParam()
-{
-    int lph, lpp, lpw;
-
-    lph = ph;//sc.getPH();
-    lpp = pp;//sc.getPP();
-    lpw = pw;//sc.getPW();
-
-    //  read values
-    pc.printf("set pulse Height:");
-    if( scanValue<int>(&lph) ) goto BreakV;
-    pc.printf("set pulse period:");
-    if( scanValue<int>(&lpp) ) goto BreakV;
-    pc.printf("set pulse width :");
-    if( scanValue<int>(&lpw) ) goto BreakV;
-
-    //  set values
-    ph = lph;
-    pp = lpp;
-    pw = lpw;
-BreakV:
-    waitUnpress();
-}
-
-void ArrowKeyBind(const char arg_c)
-{
-    switch(arg_c) {
-        case 0x41 : {
-            if(ph <= 4090) //if(sc.getPH()<4000)
-                ph = ph + 5;//sc.setWaveParam(sc.getPH() + 5, sc.getPP(),sc.getPW());
-            else
-                ph = 4095;
-            pc.printf("up\n");
-            break;
-        }
-        case 0x42 : {
-            if(5 <= ph) //if(5<sc.getPH())
-                ph = ph - 5;//sc.setWaveParam(sc.getPH() - 5, sc.getPP(),sc.getPW());
-            else
-                ph = 0;//sc.setWaveParam(0, sc.getPP(),sc.getPW());
-            pc.printf("down\n");
-            break;
-        }
-        case 0x43 : {
-            if(ph <= 4045)//if(sc.getPH()<4000)
-                ph = ph + 50;//sc.setWaveParam(sc.getPH() + 50, sc.getPP(),sc.getPW());
-            else
-                ph  = 4095;
-            pc.printf("shift up\n");
-            break;
-        }
-        case 0x44 : {
-            if(50 <= ph)//if(50<sc.getPH())
-                ph = ph - 50;//sc.setWaveParam(sc.getPH() - 50, sc.getPP(),sc.getPW());
-            else
-                ph = 0;//sc.setWaveParam(0, sc.getPP(),sc.getPW());
-            pc.printf("shift down\n");
-            break;
-        }
-        default: {
-            //pc.printf("default\n");
-            break;
-        }
-    }
-}
-
-void printKBManual(void)
-{
-    pc.printf( "\n"
-               "keybind are following:\n"
-               "    ---\n"
-               "    v: set all paramater by arbitrary value\n"
-               "    ---\n"
-               "    UP:     pulse hight + 5\n"
-               "    Down:   pulse hight - 5\n"
-               "    right:  pulse hight +50\n"
-               "    left:   pulse hight -50\n"
-               "    ---\n"
-               "    w:  Wide condition\n"
-               "    n:  Narrow condition\n"
-               "    ---\n"
-               "    mb: Bipolar stimulation\n"
-               "    ma: Anodic Stimulation\n"
-               "    mc: Cathodic Stimulation\n"
-               "    ---\n"
-               "    p:  print wave parameter\n"
-               "    ---\n"
-               "    a:  Start or Pause main loop\n"
-               "    S:  Start or Resume Stimulation\n"
-               "    P:  Pause Stimulation\n"
-               "    E(shift+a): terminate the loop\n"
-               "\n");
-}
-void printStatus(void)
-{
-    pc.printf(
-        "PHeight:%05d   "
-        "PPeriod:%05d   "
-        "PWidth :%05d\n"
-        //,(int)sc.getPH(), (int)sc.getPP(), (int)sc.getPW()
-        ,ph,pp,pw);
-}
-}//end of name space
\ No newline at end of file