Пример #1
0
/*..........................................................................*/
static RAW_U16 Bomb4_timing(Bomb4 *me, STATE_EVENT *e) {
    switch (e->sig) {
        case STM_ENTRY_SIG: {
			
			idle_tick_arm(&l_bomb22.a1, 50);
			vc_port_printf("timing state enter\n");
            me->code = 0;                          /* clear the defuse code */
            return STM_RET_HANDLED;
        }

		case STM_EXIT_SIG: {
			vc_port_printf("timing state exit\n");
			return STM_RET_HANDLED;
		}
			
        case UP_SIG: {
            me->code <<= 1;
            me->code |= 1;
            return STM_RET_HANDLED;
        }
        case DOWN_SIG: {
            me->code <<= 1;
            return STM_RET_HANDLED;
        }
        case ARM_SIG: {
            if (me->code == me->defuse) {
                return STM_TRAN(&Bomb4_setting);
            }
            return STM_RET_HANDLED;
        }
        case  STM_TIMEOUT_SIG: {

			idle_tick_arm(&l_bomb22.a1, 50);
			
        
            --me->timeout;
           vc_port_printf("me->timeout is %d\n", me->timeout);
		   
            if (me->timeout == 0) {
				vc_port_printf("boom aaaaaa^^^^^^%%%%%$$$$$$\n");
				exit(0);
            }
           
           return STM_RET_HANDLED;
        }
		
    }
    return STM_RET_IGNORED;
}
Пример #2
0
/*..........................................................................*/
static RAW_U16 Bomb4_setting(Bomb4 *me, STATE_EVENT  *e) {
    switch (e->sig) {

		case STM_ENTRY_SIG: {
			//vc_port_printf("STM_ENTRY_SIG\n");
			//idle_tick_arm(&l_bomb22.a1, 100);
            me->code = 0;                          /* clear the defuse code */
            return STM_RET_HANDLED;
        }
		
        case UP_SIG: {
            
            ++me->timeout;
			//vc_port_printf("internal priority is %d\n", me->internal_priority);
            vc_port_printf("me->timeout is %d\n", me->timeout);
			vc_port_printf("event data is %p\n", e->which_pool);
       
            return STM_RET_HANDLED;
        }
        case DOWN_SIG: {
            if (me->timeout > 1) {
                --me->timeout;
				vc_port_printf("me->timeout is %d\n", me->timeout);
            }
            return STM_RET_HANDLED;
        }
        case ARM_SIG: {
            return STM_TRAN(&Bomb4_timing);         /* transition to "timing" */
        }

		case STM_TIMEOUT_SIG:
			//test_count++;
			//vc_port_printf("STM_TIMEOUT_SIG i %d\n", test_count);
			//vc_port_printf("timeout\n");
			//idle_tick_arm(&l_bomb22.a1, 100);
			return STM_RET_HANDLED;
			 

			
		case STM_EXIT_SIG:
			vc_port_printf("setting state exit\n");
			return STM_RET_HANDLED;
			
    }
    return STM_RET_IGNORED;
}
Пример #3
0
/*..........................................................................*/
static RAW_U16 Bomb4_initial(Bomb4 *me, STATE_EVENT  *e) {
    (void)e;
    me->timeout = INIT_TIMEOUT;
    return STM_TRAN(&Bomb4_setting);
}
Пример #4
0
uint8_t block_init(stm_t *me, msg_t *e)
{
    return STM_TRAN(block_idle);
}