int ResetStateMachines()
{
    int i;
    unsigned short addr;
    unsigned short command[DIO_MAX_COMMAND_LEN];

    /* reset each state machines to the beginning of its buffer and
     * set its output to be 0 */
    command[0] = 0;
    for (i = 0; i <  DIO_N_STATE_MACHINES; i++) {
	ResetStateMachine(i);
	switch(i) {
	    case 0:
		addr = DIO_OUT_1;
		break;
	    case 1:
		addr = DIO_OUT_2;
		break;
	    case 2:
		addr = DIO_OUT_3;
		break;
	    case 3:
		addr = DIO_OUT_4;
		break;
	}
	/* set the output to be 0 */
	if (!WriteDSPData(DSPDIO, DSP_SRAM, addr, 1, command)) {
	    sprintf(tmpstring, "Error setting port %d to output 0", i);
	    DisplayErrorMessage(tmpstring);
	    return 0;
	}
    }

    return 1;
}
Exemple #2
0
 void Reduce() {
    reduceType == __BRTSTREAM ? ReduceStream() : ReduceScalar();
    ResetStateMachine();
 }
bool Example::States( State_Machine_Event event, MSG_Object * msg, int state, int substate )
{
BeginStateMachine

	//Global message response section
	OnMsg( MSG_Reset )
		ResetStateMachine();

	OnMsg( MSG_MouseClick )
		m_owner->GetMovement().SetTarget( msg->GetVector3Data() );



	///////////////////////////////////////////////////////////////
	DeclareState( STATE_Initialize )

		OnEnter
			m_owner->GetMovement().SetIdleSpeed();
			ChangeStateDelayed( 1.0f, STATE_Idle );
			//m_owner->GetTiny().SetDiffuse(1.0f, 0.0f, 0.0f);	//Color Tiny (Example)
	

	///////////////////////////////////////////////////////////////
	DeclareState( STATE_PickPlayerToChase )

		OnEnter
			m_owner->GetMovement().SetWalkSpeed();
			m_curTarget = GetFarthestAgent();
			if( m_curTarget == 0 ) {
				ChangeState( STATE_MoveToRandomTarget );
			}
			SendMsgToStateMachineNow( MSG_SetTargetPosition );

		OnMsg( MSG_SetTargetPosition )
			GameObject* go = g_database.Find( m_curTarget );
			if( go ) {
				D3DXVECTOR3 target = go->GetBody().GetPos();
				m_owner->GetMovement().SetTarget( target );
			}
			SendMsgToState( MSG_SetTargetPosition );

		OnMsg( MSG_Arrived )
			ChangeState( STATE_Idle );


	///////////////////////////////////////////////////////////////
	DeclareState( STATE_Idle )

		OnEnter
			m_owner->GetMovement().SetIdleSpeed();
			if( rand()%2 == 0 ) {
				ChangeStateDelayed( RandDelay( 1.0f, 2.0f ), STATE_MoveToRandomTarget );
			}
			else {
				ChangeStateDelayed( RandDelay( 1.0f, 2.0f ), STATE_PickPlayerToChase );
			}


	///////////////////////////////////////////////////////////////
	DeclareState( STATE_MoveToRandomTarget )

		OnEnter
			m_owner->GetMovement().SetJogSpeed(); 
			D3DXVECTOR3 target( 0, 0, 0 );
			target.x = (float) ( rand() % 256 ) / 256.f;
			target.z = (float) ( rand() % 256 ) / 256.f;
			m_owner->GetMovement().SetTarget( target );

		OnMsg( MSG_Arrived )
			ChangeState( STATE_Idle );


EndStateMachine
}