Example #1
0
/*
 * testing start of queue is default board
 */
int testStartOfQueue()	{

	BoardNode currNode = getQueue(NULL)->start;	
	int row, col;
	if(currNode != NULL)	{
		for(row = 0; row < MAXROW; row++)	{
			for(col = 0; col < MAXCOL; col++)	{
				if(row <= HALFWAY)	{
					if(getButtonStatus(currNode,row,col) != DEAD)	{
						fprintf(stderr,"%d,%d should be dead\n",row,col);
						return 0;
					}
				} else {
					if(getButtonStatus(currNode,row,col) != ALIVE)	{
						fprintf(stderr,"%d,%d should be alive\n",row,col);
						return 0;
					}
				}
			}
		}
	} else {
		fprintf(stderr,"queue empty\n");
		exit(1);
	}
	return 1;
}
Example #2
0
/*
 *Validates a move in a given direction from current position
 */
int validateMove(BoardNode currentBoard, int moveRow, int moveCol, int currRow, int currCol, int distance)  {
    if(distance > MAXDISTOCHECK) { return 1;}
    if(checkBounds(currRow+moveRow,currCol+moveCol))    {
        switch(distance)    {
            case    NEIGHDIS:
                    if(getButtonStatus(currentBoard,currRow+moveRow,currCol+moveCol) == ALIVE)  {
                        if(validateMove(currentBoard,moveRow,moveCol,currRow+moveRow,currCol+moveCol,++distance))   {
                            return 1;
                        }
                    }
                    break;
            case    MAXDISTOCHECK:
                    if(getButtonStatus(currentBoard,currRow+moveRow,currCol+moveCol) == DEAD)   {
                        if(validateMove(currentBoard,moveRow,moveCol,currRow+moveRow,currCol+moveCol,++distance))   {
                            return 1;
                        }
                    }
                    break;
            default:

                    return 0;
        }
    }
    return 0;
}
Example #3
0
/*
 * Calls functions required for generating moves depending on program mode
 */
int generatePossibleMove(BoardNode currentBoard)    {

    int row, col;

    for(row = 0; row < MAXROW; row++)   {
        for(col = 0; col < MAXCOL; col++)   {
            if(getButtonStatus(currentBoard,row,col) == ALIVE)  {

                if(validateMove(currentBoard,DONTMV,MVRIGHT,row, col,NEIGHDIS)) {
					if(getMode() == ZHASH)	{
                   		generateUniqueBoardHash(currentBoard,DONTMV,MVRIGHT,row,col); 		//!extended Zobrist Hash
					} else if(getMode() == BHASH)	{
                   		generateUniqueBoardBitHash(currentBoard,DONTMV,MVRIGHT,row,col); 	//! Extended bit Hash 
					} else {
                   		generateUniqueBoardWithMove(currentBoard,DONTMV,MVRIGHT,row,col); 	//!Basic
					}
                }

				if(validateMove(currentBoard,DONTMV,MVLEFT,row, col,NEIGHDIS))   {
					if(getMode() == ZHASH)	{
                    	generateUniqueBoardHash(currentBoard,DONTMV,MVLEFT,row,col);		//!extended Zobrist Hash
					} else if(getMode() == BHASH)	{
                    	generateUniqueBoardBitHash(currentBoard,DONTMV,MVLEFT,row,col);		//! Extended bit Hash
					} else {
                    	generateUniqueBoardWithMove(currentBoard,DONTMV,MVLEFT,row,col); 	//!Basic 
					}                                                                                            
               	}                                                                       
                                                                                                                 
				if(validateMove(currentBoard,MVUP,DONTMV,row,col,NEIGHDIS))  {         
					if(getMode() == ZHASH)	{
                    	generateUniqueBoardHash(currentBoard,MVUP,DONTMV,row,col);		//!extended Zobrist Hash
					} else if(getMode() == BHASH)	{
                    	generateUniqueBoardBitHash(currentBoard,MVUP,DONTMV,row,col); 	//! Extended bit Hash
					} else {
                    	generateUniqueBoardWithMove(currentBoard,MVUP,DONTMV,row,col);  //!Basic
					}
                }

	 			if(getMode() == LINEAR)	{
					if(validateMove(currentBoard,MVDOWN,DONTMV,row,col,NEIGHDIS))    {
       					   	generateUniqueBoardWithMove(currentBoard,MVDOWN,DONTMV,row,col); //!Basic move down
      				}
				}
            }
        }
    }
    return 1;
}
Example #4
0
BOOL CALLBACK ButtonDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM) 
{
	switch (Message)
	{
		case WM_INITDIALOG :
		{
			return TRUE;
		}

		case WM_COMMAND : 
		{
			switch (wParam)
			{
				case IDC_RESTORE_BUTTON :
				{
					int bs = getButtonStatus();
					bool isFullScreen = (bs & buttonStatus_fullscreen) != 0;
					bool isPostIt = (bs & buttonStatus_postit) != 0;
					int cmd = 0;
					if (isFullScreen && isPostIt)
					{
						// remove postit firstly
						cmd = IDM_VIEW_POSTIT;
					}
					else if (isFullScreen)
					{
						cmd = IDM_VIEW_FULLSCREENTOGGLE;
					}
					else if (isPostIt)
					{
						cmd = IDM_VIEW_POSTIT;
					}
					::SendMessage(_hParent, WM_COMMAND, cmd, 0);
					display(false);
					return TRUE;
				}

				default:
					return FALSE;
			}
		}
		default :
			return FALSE;
	}
}
Example #5
0
/**
  * @brief  Processes serial input and button preses
  * @param  None
  * @retval None
  */
void processInput(void)
{
  static uint8_t buffer[BUFFER_SIZE];
  static uint8_t bufferSize = 0;
  static uint32_t bufferTimeout = TIMEOUT_VALUE;

  if (bufferSize ==0)
  {
    bufferTimeout = TIMEOUT_VALUE;
  }
  
  if (__io_getcharNonBlocking(buffer+bufferSize))
  {
    bufferSize+=1;
  }
  
  if (getButtonStatus(BUTTON_S1) == BUTTON_CLICKED)
  {
    buttonAction(BUTTON_ACTION_1);
  }
#ifdef USE_MB950
  else if (getButtonStatus(BUTTON_S2) == BUTTON_CLICKED)
  {
    buttonAction(BUTTON_ACTION_2);
  }
  else if (getButtonStatus(BUTTON_S3) == BUTTON_CLICKED)
  {
    buttonAction(BUTTON_ACTION_3);
  } 
  else if (getButtonStatus(BUTTON_S4) == BUTTON_CLICKED)
  {
    buttonAction(BUTTON_ACTION_4);
  } 
  else if (getButtonStatus(BUTTON_S5) == BUTTON_CLICKED)
  {
    buttonAction(BUTTON_ACTION_5);
  }
#endif /* USE_MB950 */  
  else
  {
    bufferTimeout--;
    if ((bufferTimeout == 0) || (bufferSize == BUFFER_SIZE))
    {
      if (bufferSize > 0)
      {
        sendData(bufferSize, buffer, TYPE_SERIAL);
		/*if (0==mz_t_)
		{
			mz_t_=1;
			printf("MZ Start\n");
			//ST_RadioStartTransmitTone();
			ST_RadioStartTransmitStream();
		} else {
			mz_t_=0;
			printf("MZ Stop\n");
			//ST_RadioStopTransmitTone();
			ST_RadioStopTransmitStream();
		}*/
        bufferSize = 0;
      }
    }
  }
}
Example #6
0
int main (int argc, char *argv[])
{
  char msg[32] = "\n\rHallo Welt!\n\r";
  char msg_key1[32]		 	= " Pushbutton 1 ";
  char msg_key2[32] 		= " Pushbutton 2 ";
  char msg_key3[32] 		= " Pushbutton 3 ";
  char msg_pos1[32]			= "\r";
	char msg_tmp[32] = "";

  UART_Cfg cfg;
    
  // Initialize peripheral components ...
  // UART
  cfg.fclk = 50000000;
  cfg.baud = UART_CFG_BAUD_115200;
  cfg.frame.msg_len = UART_CFG_MSG_LEN_8;
  cfg.frame.parity = UART_CFG_PARITY_EVEN;
  cfg.frame.stop_bits = UART_CFG_STOP_BITS_1;
  UART_init (cfg);

  // 7-Segment
  dis7seg_initHandle(&display_handle, DISP7SEG_BADDR, 8);
	dis7seg_displayHexUInt32(&display_handle, 0, 0x00000042);
  
	
	uint32_t keys, keys_old, led_port;
	uint8_t i;

	keys_old = 0;
	led_port = 0;
	

  UART_write(0, msg, strlen(msg));

  //register interrupt to line 2
  REGISTER_INTERRUPT(isr, 2);
  // unmask interrupt line 2
  UMASKI(2);
  // globally enable interrupts
  SEI();

  // timer 80000 ticks = 1ms, 80 ticks = 1s
  config_timer(50000000, 0);
  timer_initHandle(&timer_handle, TIMER_BADDR);
  start_timer();

  while(1) {
		// pushbuttons
		keys = getButtonStatus();
		if(keys != keys_old) {
			if(keys & (1<<BUTTON3)) {
				UART_write(0, msg_key3, strlen(msg_key3));
			}
			if(keys & (1<<BUTTON2)) {
				UART_write(0, msg_key2, strlen(msg_key2));
			}
			if(keys & (1<<BUTTON1)) {
				UART_write(0, msg_key1, strlen(msg_key1));
			}
		}
		keys_old = keys;
		// switches & leds
		led_port = 0;
		for(i=0; i<18; i++)
		{
			if (getSwitchStatus(i) == SW_ON) {
				led_port |= (SW_ON<<i);
				//(void) sprintf(msg_tmp, "KEY %i ON", i);
				//UART_write(0, msg_tmp, strlen(msg_tmp));
			}	
		} 
		UART_write(0, msg_pos1, strlen(msg_pos1));

		// leds
		//setLeds(led_port);
	}


  return 0;
}