/* * 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; }
/* *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; }
/* * 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; }
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; } }
/** * @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; } } } }
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; }