⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qcalc.c

📁 state machine working with rtos
💻 C
📖 第 1 页 / 共 2 页
字号:
        }    }    return (QSTATE)&QCalc_on;}/*..........................................................................*/QSTATE QCalc_negated2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "negated2-ENTRY");            QCalc_negate_(me);            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "negated2-EXIT");            return (QSTATE)0;        }        case CE_SIG: {            QCalc_clear_(me);            Q_TRAN(&QCalc_opEntered);            return (QSTATE)0;        }        case DIGIT_0_SIG: {            Q_TRAN(&QCalc_zero2);            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_int2);            return (QSTATE)0;        }        case POINT_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_on;}/*..........................................................................*/QSTATE QCalc_operand1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "operand1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "operand1-EXIT");            return (QSTATE)0;        }        case CE_SIG: {            QCalc_clear_(me);            Q_TRAN(&QCalc_begin);            return (QSTATE)0;        }        case OPER_SIG: {            me->operand1_ = strtod(me->display_, (char **)0);            me->opKey_ = ((QCalcEvt *)e)->keyId;            Q_TRAN(&QCalc_opEntered);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_on;}/*..........................................................................*/QSTATE QCalc_zero1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "zero1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "zero1-EXIT");            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_int1);            return (QSTATE)0;        }        case POINT_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_frac1);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_on;}/*..........................................................................*/QSTATE QCalc_int1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "int1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "int1-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                     /* intentionally fall through */        case DIGIT_1_9_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }        case POINT_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_frac1);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_operand1;}/*..........................................................................*/QSTATE QCalc_frac1(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "frac1-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "frac1-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                     /* intentionally fall through */        case DIGIT_1_9_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_operand1;}/*..........................................................................*/QSTATE QCalc_opEntered(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "opEntered-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "opEntered-EXIT");            return (QSTATE)0;        }        case OPER_SIG: {            if (((QCalcEvt *)e)->keyId == KEY_MINUS) {                QCalc_clear_(me);                Q_TRAN(&QCalc_negated2);                return (QSTATE)0;                          /* event handled */            }            break;        }        case DIGIT_0_SIG: {            QCalc_clear_(me);            Q_TRAN(&QCalc_zero2);            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            QCalc_clear_(me);            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_int2);            return (QSTATE)0;        }        case POINT_SIG: {            QCalc_clear_(me);            QCalc_insert_(me, (int)'0');            QCalc_insert_(me, (int)'.');            Q_TRAN(&QCalc_frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_on;}/*..........................................................................*/QSTATE QCalc_operand2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "operand2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "operand2-EXIT");            return (QSTATE)0;        }        case CE_SIG: {            QCalc_clear_(me);            Q_TRAN(&QCalc_opEntered);            return (QSTATE)0;        }        case OPER_SIG: {            me->operand2_ = strtod(me->display_, (char **)0);            if (QCalc_eval_(me)) {                me->operand1_ = strtod(me->display_, (char **)0);                me->opKey_ = ((QCalcEvt *)e)->keyId;                Q_TRAN(&QCalc_opEntered);            }            else {                Q_TRAN(&QCalc_error);            }            return (QSTATE)0;        }        case EQUALS_SIG: {            me->operand2_ = strtod(me->display_, (char **)0);            if (QCalc_eval_(me)) {                Q_TRAN(&QCalc_result);            }            else {                Q_TRAN(&QCalc_error);            }            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_on;}/*..........................................................................*/QSTATE QCalc_zero2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "zero2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "zero2-EXIT");            return (QSTATE)0;        }        case DIGIT_1_9_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_int2);            return (QSTATE)0;        }        case POINT_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_operand2;}/*..........................................................................*/QSTATE QCalc_int2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "int2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "int2-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                     /* intentionally fall through */        case DIGIT_1_9_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }        case POINT_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            Q_TRAN(&QCalc_frac2);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_operand2;}/*..........................................................................*/QSTATE QCalc_frac2(QCalc *me, QEvent const *e) {    switch (e->sig) {        case Q_ENTRY_SIG: {            QCalc_updateState(me, "frac2-ENTRY");            return (QSTATE)0;        }        case Q_EXIT_SIG: {            QCalc_updateState(me, "frac2-EXIT");            return (QSTATE)0;        }        case DIGIT_0_SIG:                    /* intentionally fall through */        case DIGIT_1_9_SIG: {            QCalc_insert_(me, ((QCalcEvt *)e)->keyId);            return (QSTATE)0;        }    }    return (QSTATE)&QCalc_operand2;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -