void Menu_Generic(PVOID course, pOption options[], U8 sizeOf){ pPercurso percurso = (pPercurso)course; U32 currentTime=rtc_getCurrentTime(); U8 elapsedTime=0; U8 idx = 0,bidx = -1; KB_Key key; while(1){ if (bidx != idx){ LCD_clear(); LCD_writeLine(0,"Press OK or Next"); LCD_writeLine(1,options[idx].text); bidx = idx; } if (keyboard_hasKey()){ currentTime=rtc_getCurrentTime(); switch(key = keyboard_getBitMap()){ case OK: options[idx].function(percurso); break; case RIGHT: case DOWN: idx = __FX0(idx,1,sizeOf); break; case LEFT: case UP: idx = __FX0(idx,-1,sizeOf); break; case CANCEL: LCD_clear(); return; default: //do nothing break; } elapsedTime=0; }else{ //no key elapsedTime ++; if(elapsedTime >__WAIT_PERIOD_30_Seconds__){ LCD_clear(); return; } timer_sleep_miliseconds(pTIMER1, 200); } WD_reset(); } }
/********************************************************************* * @fn Board_writeStringValue * * @brief Write a string and value on the LCD display. * * @param str - string to print * @param value - value to print * @param format - base of the value to print (2,8,16 etc) * @param line - line (page) to write (0-7) * * @return void */ void Board_writeStringValue(char *str, uint32_t value, uint8_t format, uint8_t line) { if (lcdHandle != NULL) { // Write string and 32-bit number LCD_writeLine(lcdHandle, 0, str, value, format, line); } }