/*..........................................................................*/ int comp_main(int argc, char *argv[]) { printf("Orthogonal Component pattern\nQEP version: %s\nQF version: %s\n" "Press 'o' to turn the Alarm ON\n" "Press 'f' to turn the Alarm OFF\n" "Press '0'..'9' to set the Alarm time\n" "Press 'a' to set the Clock in 12-hour mode\n" "Press 'b' to set the Clock in 24-hour mode\n" "Press ESC to quit...\n", QEP_getVersion(), QF_getVersion()); QF_init(); /* initialize the framework and the underlying RT kernel */ /* initialize event pools... */ QF_poolInit(l_smlPoolSto, sizeof(l_smlPoolSto), sizeof(l_smlPoolSto[0])); /* instantiate and start the active objects... */ AlarmClock_ctor(&l_alarmClock); QActive_start((QActive *)&l_alarmClock, 1, l_alarmClockQSto, Q_DIM(l_alarmClockQSto), (void *)0, 0, (QEvent *)0); QF_run(); /* run the QF application */ return 0; }
/*..........................................................................*/ void BSP_init(void) { SystemInit(); /* initialize STM32 system (clock, PLL and Flash) */ /* initialize LEDs, Key Button, and LCD on STM3210X-EVAL board */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); STM3210C_LCD_Init(); /* initialize the LCD */ LCD_Clear(White); /* clear the LCD */ LCD_SetBackColor(Grey); LCD_SetTextColor(Black); LCD_DisplayString(Line0, 0, " Quantum Leaps "); LCD_DisplayString(Line1, 0, " DPP example "); LCD_DisplayString(Line2, 0, "QP/C(Vanilla) "); LCD_DisplayString(Line2, 14*16, QF_getVersion()); LCD_SetBackColor(White); LCD_DisplayString(Line5, 0, "DPP:"); LCD_SetBackColor(Black); LCD_SetTextColor(Yellow); LCD_DisplayString(Line9, 0, " state-machine.com "); LCD_SetBackColor(Blue); LCD_SetTextColor(White); LCD_DisplayString(Line5, 4*16, "0 ,1 ,2 ,3 ,4 "); if (QS_INIT((void *)0) == 0) { /* initialize the QS software tracing */ Q_ERROR(); } }
/*..........................................................................*/ QState UI_top_handler(UI_top *me, QEvt const *e) { switch (e->sig) { case Q_ENTRY_SIG: { uint8_t c; static char const * const help_unknown[] = { "Unknown Screen Help: ", " ", " ", " ", " " }; me->help_text = help_unknown; me->help_len = Q_DIM(help_unknown); Video_clearScreen(VIDEO_BGND_BLACK); Video_clearRect( 0, 0, 80, 7, VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 10, 80, 11, VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 23, 80, 24, VIDEO_BGND_LIGHT_GRAY); c = VIDEO_FGND_BLUE; Video_printStrAt(10, 0, c, " __"); Video_printStrAt(10, 1, c, " / | _ _ -|- _ _"); Video_printStrAt(10, 2, c, " \\__| | | _\\ | \\ | | | | \\ \\"); Video_printStrAt(10, 3, c, " | \\_/ |_| | | | \\_| | | |"); Video_printStrAt(10, 4, c, " |"); c = VIDEO_FGND_RED; Video_printStrAt(43, 0, c, " _ __ "); Video_printStrAt(43, 1, c, "| /_\\ | \\ TM"); Video_printStrAt(43, 2, c, "| \\_ _ |__/ _"); Video_printStrAt(43, 3, c, "| _\\ | |_"); Video_printStrAt(43, 4, c, "|___ |_| | _|"); Video_printStrAt(10, 5, VIDEO_FGND_BLUE, "_____________________________________________________"); Video_printStrAt(10, 6, VIDEO_FGND_RED, "i n n o v a t i n g e m b e d d e d s y s t e m s"); Video_printStrAt(2, 8, VIDEO_FGND_WHITE, "State-Local Storage Example"); Video_printStrAt(36, 8, VIDEO_FGND_WHITE, "QEP/C"); Video_printStrAt(45, 8, VIDEO_FGND_YELLOW, QEP_getVersion()); Video_printStrAt(55, 8, VIDEO_FGND_WHITE, "QF/C"); Video_printStrAt(64, 8, VIDEO_FGND_YELLOW, QF_getVersion()); Video_printStrAt(10, 23, VIDEO_FGND_BLUE, "* Copyright (c) Quantum Leaps, LLC * www.state-machine.com *"); Video_printStrAt(28, 24, VIDEO_FGND_LIGHT_RED, "<< Press Esc to quit >>"); return Q_HANDLED(); } case Q_EXIT_SIG: { Video_clearScreen(VIDEO_BGND_BLACK); /* clear the screen... */ return Q_HANDLED(); } case QUIT_SIG: { return Q_TRAN(&UI_top_final); } } return Q_SUPER(&QHsm_top); }
/*..........................................................................*/ void BSP_init(void) { printf("Dining Philosopher Problem example" "\nQEP %s\nQF %s\n" "Press 'p' to pause/un-pause\n" "Press ESC to quit...\n", QEP_getVersion(), QF_getVersion()); BSP_randomSeed(1234U); Q_ALLEGE(QS_INIT((void *)0)); QS_OBJ_DICTIONARY(&l_clock_tick); /* must be called *after* QF_init() */ QS_USR_DICTIONARY(PHILO_STAT); }
/*..........................................................................*/ void BSP_init(void) { EXTI_InitTypeDef exti_init; SystemInit(); /* initialize STM32 system (clock, PLL and Flash) */ /* initialize LEDs, Key Button, and LCD on STM3210X-EVAL board */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); /* initialize the EXTI Line0 interrupt used for testing */ exti_init.EXTI_Mode = EXTI_Mode_Interrupt; exti_init.EXTI_Trigger = EXTI_Trigger_Rising; exti_init.EXTI_Line = EXTI_Line0; exti_init.EXTI_LineCmd = ENABLE; EXTI_Init(&exti_init); STM3210C_LCD_Init(); /* initialize the LCD */ LCD_Clear(White); /* clear the LCD */ LCD_SetBackColor(Grey); LCD_SetTextColor(Black); LCD_DisplayString(Line0, 0, " Quantum Leaps "); LCD_DisplayString(Line1, 0, " DPP example "); LCD_DisplayString(Line2, 0, " QP/C (QK) "); LCD_DisplayString(Line2, 14*16, QF_getVersion()); LCD_SetBackColor(White); LCD_DisplayString(Line5, 0, "DPP:"); LCD_SetBackColor(Black); LCD_SetTextColor(Yellow); LCD_DisplayString(Line9, 0, " state-machine.com "); LCD_SetBackColor(Blue); LCD_SetTextColor(White); LCD_DisplayString(Line5, 4*16, "0 ,1 ,2 ,3 ,4 "); if (QS_INIT((void *)0) == 0) { /* initialize the QS software tracing */ Q_ERROR(); } QS_OBJ_DICTIONARY(&l_SysTick_Handler); }
/*..........................................................................*/ void BSP_init(int argc, char *argv[]) { char const *com = "COM1"; if (argc > 1) { l_delay = atol(argv[1]); /* set the delay counter for busy delay */ } if (argc > 2) { com = argv[2]; com = com; /* avoid compiler warning about unused parameter */ } if (!QS_INIT(com)) { /* initialize QS */ Q_ERROR(); } QS_OBJ_DICTIONARY(&l_tmr); QS_OBJ_DICTIONARY(&l_kbd); printf("Dining Philosopher Problem example" "\nQEP %s\nQF %s\n" "Press ESC to quit...\n", QEP_getVersion(), QF_getVersion()); }
/*..........................................................................*/ int main(int argc, char *argv[]) { printf("Reminder state pattern\nQEP version: %s\nQF version: %s\n" "Press 'e' to echo the current value...\n" "Press ESC to quit...\n", QEP_getVersion(), QF_getVersion()); Cruncher_ctor(&l_cruncher); BSP_init(argc, argv); /* initialize the BSP */ QF_init(); /* initialize the framework and the underlying RT kernel */ /* publish-subscribe not used, no call to QF_psInit() */ QF_poolInit(l_smlPoolSto, sizeof(l_smlPoolSto), sizeof(l_smlPoolSto[0])); /* instantiate and start the active objects... */ QACTIVE_START((QActive *)&l_cruncher, 1, l_cruncherQSto, Q_DIM(l_cruncherQSto), (void *)0, 1024, (QEvt *)0); return QF_run(); /* run the QF application */ }
int main(int argc, char* argv[]) { char cmdBuf[SOCK_BUFF_SIZE]; printf("Quantum Test\nQEP %s\nQF %s, QF/Linux port %s\n", QEP_getVersion(), QF_getVersion(), QF_getPortVersion()); QF_init(); QF_psInit(subscrSto, Q_DIM(subscrSto)); QF_poolInit(poolArray, sizeof(poolArray), sizeof(GenEvt)); applicationStart(QSIZE); for (;;) { // Get the incoming string command from the dmsTerminal or the GUI receiveCmd(cmdBuf); // Attempt to parse the command string for IMPL or ACTIVE calls char tmpBuf[USER_ENTRY_SIZE]; char smName[USER_ENTRY_SIZE]; char attrName[USER_ENTRY_SIZE]; char valStr[USER_ENTRY_SIZE]; // scan for IMPL['SM'].set("attr", True/False), allowing blanks // IMPL['trans'].set('guard', False) int cnt = sscanf(strcpy(tmpBuf, cmdBuf), "IMPL[%*['\"]%[^'\"]%*['\"]].set(%*['\"]%[^'\"]%*['\"],%[^)])", smName, attrName, valStr); if (cnt > 0) { // found an IMPL attribute setter! setGuardAttribute(smName, attrName, valStr); continue; } char *word; word = strtok(cmdBuf, " "); // We assume the first word contains the signal that is to be published, // and the remaining words are data to be used to populate the event. GenEvt *event; int signal = strtoul(word, NULL, 10); if (signal == DURING) { QF_tick(); QF_publish( Q_NEW(QEvent, DURING) ); } else { event = Q_NEW(GenEvt, signal); // Loop through the remaining words and populate the event int i = 0; do { word = strtok('\0', " "); if (word) { Q_ASSERT(i<EVENT_SIZE); event->data[i] = strtoul(word, NULL, 16); } i = i + 1; } while (word); QF_publish((QEvent *)event); } QF_run(); } }
/*..........................................................................*/ void BSP_init(int argc, char *argv[]) { char const *com = "COM1"; uint8_t n; if (argc > 1) { l_delay = atol(argv[1]); /* set the delay counter for busy delay */ } if (argc > 2) { com = argv[2]; (void)com; /* avoid compiler warning if Q_SPY not defined */ } if (!QS_INIT(com)) { /* initialize QS */ Q_ERROR(); } QS_OBJ_DICTIONARY(&l_tickHook); QS_OBJ_DICTIONARY(&l_kbdTask); Video_clearScreen(VIDEO_BGND_BLACK); Video_clearRect( 0, 0, 80, 7, VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 11, 80, 12, VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 12, 41, 23, VIDEO_BGND_BLUE); Video_clearRect(41, 12, 80, 23, VIDEO_BGND_RED); Video_clearRect( 0, 23, 80, 24, VIDEO_BGND_LIGHT_GRAY); n = VIDEO_FGND_BLUE; Video_printStrAt(10, 0, n, " __"); Video_printStrAt(10, 1, n, " / | _ _ -|- _ _"); Video_printStrAt(10, 2, n, " \\__| | | _\\ | \\ | | | | \\ \\"); Video_printStrAt(10, 3, n, " | \\_/ |_| | | | \\_| | | |"); Video_printStrAt(10, 4, n, " |"); n = VIDEO_FGND_RED; Video_printStrAt(43, 0, n, " _ __ "); Video_printStrAt(43, 1, n, "| /_\\ | \\ TM"); Video_printStrAt(43, 2, n, "| \\_ _ |__/ _"); Video_printStrAt(43, 3, n, "| _\\ | |_"); Video_printStrAt(43, 4, n, "|___ |_| | _|"); Video_printStrAt(10, 5, VIDEO_FGND_BLUE, "_____________________________________________________"); Video_printStrAt(10, 6, VIDEO_FGND_RED, "i n n o v a t i n g e m b e d d e d s y s t e m s"); Video_printStrAt(18, 7, VIDEO_FGND_WHITE, "Dining Philosophers Example"); Video_printStrAt(18, 8, VIDEO_FGND_WHITE, "QEP/C"); Video_printStrAt(28, 8, VIDEO_FGND_YELLOW, QEP_getVersion()); Video_printStrAt(18, 9, VIDEO_FGND_WHITE, "QF/C"); Video_printStrAt(28, 9, VIDEO_FGND_YELLOW, QF_getVersion()); Video_printStrAt(18, 10, VIDEO_FGND_WHITE, "uC/OS-II"); /* uC/OS-II version is returned as an integer value multiplied by 100 */ Video_printNumAt(29, 10, VIDEO_FGND_YELLOW, OSVersion()%100); Video_printStrAt(28, 10, VIDEO_FGND_YELLOW, "2."); Video_printStrAt( 1, 11, VIDEO_FGND_BLUE, "Active Object State Data"); for (n = 0; n < N_PHILO; ++n) { Video_printStrAt( 1, 12 + n, VIDEO_FGND_WHITE, "Philosopher"); Video_printNumAt(12, 12 + n, VIDEO_FGND_WHITE, n + 1); } Video_printStrAt( 1, 12 + N_PHILO, VIDEO_FGND_WHITE, "Table"); Video_printStrAt(17, 12 + N_PHILO, VIDEO_FGND_YELLOW, "serving"); Video_printStrAt( 1, 12 + N_PHILO + 1, VIDEO_FGND_WHITE, "ucosTask"); Video_printStrAt(17, 12 + N_PHILO + 1, VIDEO_FGND_YELLOW, "active"); Video_printStrAt(4, 23, VIDEO_FGND_BLUE, "* Copyright (c) Quantum Leaps, LLC * www.state-machine.com *"); Video_printStrAt(28, 24, VIDEO_FGND_LIGHT_RED, "<< Press Esc to quit >>"); }
printf("Quantum DPP\nQEP %s\nQF %s, QF port %s\n" "Press ESC to quit...\n", QEP_getVersion(), QF_getVersion(), QF_getPortVersion());
/*..........................................................................*/ char_t const Q_ROM * Q_ROM_VAR QK_getVersion(void) { return QF_getVersion(); }