/* * Instantiates a new pointer to the VideoBuffer. * Clears the screen and sets the foreground address * * NOTE: Background and foreground addresses are stored in the VideoBuffer struct. * So, this is the only function where we need to specify addresses */ VideoBuffer* Video_New() { VideoBuffer* this = NULL; this = (VideoBuffer *)malloc(sizeof(VideoBuffer)); // Use the name of your pixel buffer DMA core this->pixel_buffer = Video_openDevice(PIXEL_BUFFER_DMA_NAME); // Set the background buffer address – Although we don’t use the background, // they only provide a function to change the background buffer address, so // we must set that, and then swap it to the foreground. Video_backBufferAddress(this, PIXEL_BASE); // Swap background and foreground buffers Video_swapBuffers(this); // Wait for the swap to complete while (Video_bufferIsSwapping(this)); // Now set the actual background buffer address (Foreground buffer is being displayed) Video_backBufferAddress(this, PIXEL_BASE + (SCREEN_WIDTH*SCREEN_HEIGHT*2)); // Clear the foreground and background buffers Video_clearScreen(this, 0); Video_clearScreen(this, 1); return this; }
/*..........................................................................*/ 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) { Video_clearScreen(VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 0, 80, 1, VIDEO_BGND_RED | VIDEO_BLINK); Video_clearRect( 0, 8, 80, 24, VIDEO_BGND_BLACK | VIDEO_FGND_WHITE); Video_clearRect( 0, 7, 80, 8, VIDEO_BGND_BLUE); Video_clearRect( 0, 24, 80, 25, VIDEO_BGND_BLUE); Video_clearRect(24, 24, 28, 25, VIDEO_BGND_RED | VIDEO_BLINK); Video_clearRect(24, 24, 28, 25, VIDEO_BGND_RED | VIDEO_BLINK); Video_printStrAt(30, 0, VIDEO_FGND_WHITE, "FLY 'n' SHOOT"); Video_printStrAt(15, 2, VIDEO_FGND_BLACK, "Press UP-arrow to move the space ship up"); Video_printStrAt(15, 3, VIDEO_FGND_BLACK, "Press DOWN-arrow to move the space ship down"); Video_printStrAt(15, 4, VIDEO_FGND_BLACK, "Press SPACE to fire the missile"); Video_printStrAt(15, 5, VIDEO_FGND_BLACK, "Press ESC to quit the game"); Video_printStrAt( 8, 24, VIDEO_FGND_WHITE, "Ship Position:"); Video_printStrAt(37, 24, VIDEO_FGND_WHITE, "Triggers:"); Video_printStrAt(61, 24, VIDEO_FGND_WHITE, "Score:"); Video_clearRect(24, 24, 28, 25, VIDEO_BGND_RED); Video_clearRect(47, 24, 51, 25, VIDEO_BGND_RED); Video_clearRect(68, 24, 72, 25, VIDEO_BGND_RED); Video_printNumAt(24, 24, VIDEO_FGND_YELLOW, 0); Video_printNumAt(47, 24, VIDEO_FGND_YELLOW, 0); Video_printNumAt(68, 24, VIDEO_FGND_YELLOW, 0); }
/*..........................................................................*/ QState UI_top_handler(UI_top *me) { switch (Q_SIG(me)) { case Q_ENTRY_SIG: { uint8_t c; 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, "QP-nano"); Video_printStrAt(45, 8, VIDEO_FGND_YELLOW, QP_getVersion()); Video_printStrAt(10, 23, VIDEO_FGND_BLUE, "* Copyright (c) Quantum Leaps, LLC * www.quantum-leaps.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(int argc, char *argv[]) { uint8_t n; if (argc > 1) { l_delay = atol(argv[1]); /* set the delay counter for busy delay */ } 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 Problem (DPP)"); Video_printStrAt(18, 8, VIDEO_FGND_WHITE, "QP-nano (QK) "); Video_printStrAt(32, 8, VIDEO_FGND_YELLOW, QP_getVersion()); Video_printStrAt(41, 10, VIDEO_FGND_WHITE, "Delay Counter"); Video_printNumAt(54, 10, VIDEO_FGND_YELLOW, l_delay); Video_printStrAt( 1, 11, VIDEO_FGND_BLUE, "Active Object State Preemptions"); Video_printStrAt(42, 11, VIDEO_FGND_RED, "ISR Calls Data Preemptions"); 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); } 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, "KbdMgr"); Video_printStrAt(17, 12 + N_PHILO + 1, VIDEO_FGND_YELLOW, "active"); Video_printStrAt( 1, 12 + N_PHILO + 3, VIDEO_FGND_WHITE, "Locked Sched"); Video_printStrAt(42, 12 + 0, VIDEO_FGND_WHITE, "kbdISR"); Video_printStrAt(42, 12 + 1, VIDEO_FGND_WHITE, "tmrISR"); Video_printStrAt(10, 23, VIDEO_FGND_BLUE, "* Copyright (c) Quantum Leaps, LLC * www.quantum-leaps.com *"); Video_printStrAt(28, 24, VIDEO_FGND_LIGHT_RED, "<< Press Esc to quit >>"); }
/*..........................................................................*/ void BSP_init(int argc, char *argv[]) { char const *com = "COM1"; if (argc > 1) { com = argv[1]; } if (!QS_INIT(com)) { /* initialize QS */ Q_ERROR(); } QS_OBJ_DICTIONARY(&l_tmr); QS_OBJ_DICTIONARY(&l_kbd); Video_clearScreen(VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 0, 80, 1, VIDEO_BGND_RED | VIDEO_BLINK); Video_clearRect( 0, 8, 80, 24, VIDEO_BGND_BLACK | VIDEO_FGND_WHITE); Video_clearRect( 0, 7, 80, 8, VIDEO_BGND_BLUE); Video_clearRect( 0, 24, 80, 25, VIDEO_BGND_BLUE); Video_clearRect(24, 24, 28, 25, VIDEO_BGND_RED | VIDEO_BLINK); Video_clearRect(24, 24, 28, 25, VIDEO_BGND_RED | VIDEO_BLINK); Video_printStrAt(35, 0, VIDEO_FGND_WHITE, "FLY 'n' SHOOT"); Video_printStrAt(15, 2, VIDEO_FGND_BLACK, "Press UP-arrow to move the space ship up"); Video_printStrAt(15, 3, VIDEO_FGND_BLACK, "Press DOWN-arrow to move the space ship down"); Video_printStrAt(15, 4, VIDEO_FGND_BLACK, "Press SPACE to fire the missile"); Video_printStrAt(15, 5, VIDEO_FGND_BLACK, "Press ESC to quit the game"); Video_printStrAt( 8, 24, VIDEO_FGND_WHITE, "Ship Position:"); Video_printStrAt(37, 24, VIDEO_FGND_WHITE, "Triggers:"); Video_printStrAt(61, 24, VIDEO_FGND_WHITE, "Score:"); Video_clearRect(24, 24, 28, 25, VIDEO_BGND_RED); Video_clearRect(47, 24, 51, 25, VIDEO_BGND_RED); Video_clearRect(68, 24, 72, 25, VIDEO_BGND_RED); Video_printNumAt(24, 24, VIDEO_FGND_YELLOW, 0); Video_printNumAt(47, 24, VIDEO_FGND_YELLOW, 0); Video_printNumAt(68, 24, VIDEO_FGND_YELLOW, 0); (void)com; /* avoid compiler warning if QS is not used */ }
/*..........................................................................*/ void BSP_init(void) { uint8_t n; Video_clearScreen(VIDEO_BGND_BLACK); Video_clearRect( 0, 0, 80, 7, VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 11, 41, 12, VIDEO_BGND_LIGHT_GRAY); Video_clearRect( 0, 7, 41, 11, VIDEO_BGND_RED); Video_clearRect( 0, 12, 41, 23, VIDEO_BGND_BLUE); 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(10, 8, VIDEO_FGND_WHITE, "PELICAN Crossing Example"); Video_printStrAt(10, 9, VIDEO_FGND_WHITE, "QP-nano"); Video_printStrAt(20, 9, VIDEO_FGND_YELLOW, QP_getVersion()); Video_printStrAt(4, 11, VIDEO_FGND_BLUE, "Active Object State"); Video_printStrAt(4, 13, VIDEO_FGND_WHITE, "PELICAN"); Video_printStrAt(4, 14, VIDEO_FGND_WHITE, "Pedestrian"); Video_printStrAt(4, 17, VIDEO_FGND_WHITE, "Tick #"); n = VIDEO_FGND_WHITE | VIDEO_BGND_BLACK; Video_printStrAt(43, 7, n, " �������Ŀ"); Video_printStrAt(43, 8, n, " � �"); Video_printStrAt(43, 9, n, " � �"); Video_printStrAt(43, 10, n, " ���������"); Video_printStrAt(43, 11, n, "��������������������������������"); Video_printStrAt(43, 12, n, " ^ ���������"); Video_printStrAt(43, 13, n, " | ���������"); Video_printStrAt(43, 14, n, " PEDS ��������� <- CARS ->"); Video_printStrAt(43, 15, n, " | ���������"); Video_printStrAt(43, 16, n, " v ���������"); Video_printStrAt(43, 17, n, "��������������������������������"); Video_printStrAt(43, 18, n, " �������������Ŀ"); Video_printStrAt(43, 19, n, " � �Ŀ �Ŀ �Ŀ �"); Video_printStrAt(43, 20, n, " � � � � � � � �"); Video_printStrAt(43, 21, n, " � ��� ��� ��� �"); Video_printStrAt(43, 22, n, " ���������������"); Video_printStrAt(4, 23, VIDEO_FGND_BLUE, "* Copyright (c) Quantum Leaps, LLC * www.quantum-leaps.com *"); Video_printStrAt(28, 24, VIDEO_FGND_LIGHT_RED, "<< Press Esc to quit >>"); }
/*..........................................................................*/ 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 >>"); }