void UpdateDateTime( void ) { OBJ_HEADER* obj; RTCCProcessEvents(); // update the time and date // update time edit boxes obj = GOLFindObject(ID_HOUR); EbSetText((EDITBOX*)obj, &_time_str[4]); SetState(obj, EB_DRAW); obj = GOLFindObject(ID_MINUTE); EbSetText((EDITBOX*)obj, &_time_str[7]); SetState(obj, EB_DRAW); // update date edit boxes obj = GOLFindObject(ID_MONTH); EbSetText((EDITBOX*)obj, &_date_str[0]); SetState(obj, EB_DRAW); obj = GOLFindObject(ID_DAY); EbSetText((EDITBOX*)obj, &_date_str[4]); SetState(obj, EB_DRAW); obj = GOLFindObject(ID_YEAR); EbSetText((EDITBOX*)obj, &_date_str[8]); SetState(obj, EB_DRAW); }
/***************************************************************************** * Function: TBannerProcessEvents * * Precondition: TBannerInit must be called before. * * Overview: This is a state mashine to display time and date strings and * show the blinking cursor in SETUP mode. * * Input: None. * * Output: None. * *****************************************************************************/ void TBannerProcessEvents(void) { switch(_uTBannerState){ case 1: // Wait to put a char case 4: if (_uTBannerCharWait) _uTBannerCharWait--; else { _uTBannerState++; _uTBannerCharWait = 2; } break; case 5: case 2: // Put a char on the LCD if (!mLCDIsBusy()) { mLCDPutChar(*_pTBanner); _pTBanner++; _uTBannerLen--; if (!_uTBannerLen) _uTBannerState++; else _uTBannerState--; } break; case 3: if (!mLCDIsBusy()) { mLCDPutCmd(0xC0); _uTBannerLen = LCD_DISPLAY_LEN; if(_uTBannerBlinkWait--){ _uTBannerBlink ^= 1; _uTBannerBlinkWait = TBNR_BLINK_PERIOD; } RTCCProcessEvents(); if(_uTBannerBlink) TBannerClearField(); _pTBanner = _date_str; _uTBannerState++; } break; case 6: if (!mLCDIsBusy()) { mLCDHome(); _uTBannerState = 1; _uTBannerLen = LCD_DISPLAY_LEN; if(_uTBannerBlink) TBannerClearField(); _pTBanner = _time_str; } break; default: _uTBannerState = 0; break; } }
/************************************************************************ Function: void UpdateTime(WORD force) Overview: This function updates the date and time variables. Input: none. Output: none ************************************************************************/ void UpdateTime(WORD force) { static char previousChar; char changeIndicator; OBJ_HEADER *pObject; char currentHour; char hourStr[3]; RTCCProcessEvents(); changeIndicator = _time_str[8]; if ((previousChar != changeIndicator) || (force == FORCE_UPDATE)) { previousChar = changeIndicator; if ((pObject = GOLFindObject(ID_TIME)) != NULL) { strncpy(CurrentTimeStr, _time_str, 9); // change hour to AM/PM format currentHour = mRTCCGetBinHour(); if (hour >= 12) strncpy(&CurrentTimeStr[10], DayNightItems[1], 3); else strncpy(&CurrentTimeStr[10], DayNightItems[0], 3); if (currentHour > 12) { currentHour = currentHour - 12; // now set the hour in the string NumberToString(currentHour, hourStr, 2, 0); CurrentTimeStr[4] = hourStr[0]; CurrentTimeStr[5] = hourStr[1]; } StSetText((STATICTEXT *)pObject, CurrentTimeStr); SetState( pObject, ST_DRAW ); } if ((pObject = GOLFindObject(ID_BATLEVEL)) != NULL) { PbSetPos( (PROGRESSBAR*)pObject, GetBatteryLevel()); SetState( pObject, PB_DRAW_BAR ); } } }
Function: void ShowScreenMain( void ) Description: This function erases the currently displayed screen and replaces it with the main menu screen. Precondition: None Parameters: None Returns: None Remarks: The global list of graphics objects is destroyed and replaced. Therefore, this function cannot be called during the message processing of GOLMsgCallback(). It must be called during GOLDrawCallback() processing. ***************************************************************************/ void ShowScreenMain( void ) { RTCCProcessEvents(); strcpy( pageInformation.title, "PIC24F Starter Kit" ); strcpy( pageInformation.buttonTextTopLeft, "Flash Drive" ); strcpy( pageInformation.buttonTextBottomLeft, "Demos" ); strcpy( pageInformation.buttonTextTopRight, "Utilities" ); strcpy( pageInformation.buttonTextBottomRight, "Games" ); strcpy( pageInformation.buttonTextThirdrow, "" ); pageInformation.buttonBitmapTopLeft = NULL; pageInformation.buttonBitmapBottomLeft = NULL; pageInformation.buttonBitmapTopRight = NULL; pageInformation.buttonBitmapBottomRight = NULL; strcpy( pageInformation.instructions, _date_str ); strcat( pageInformation.instructions, " " ); strcat( pageInformation.instructions, _time_str ); ShowScreenGeneric( ); }
void ShowScreenTime( void ) { WORD textHeight; WORD textWidth; strcpy( pageInformation.title, "Set Date/Time" ); InitializeScreen(); RTCCProcessEvents(); // Draw the hidden controls. BtnCreate( ID_RTCC_BUTTON_HOME, GetMaxX()-8, 0, GetMaxX()-6, 4, 0, BTN_HIDE, NULL, NULL, NULL ); BtnCreate( ID_RTCC_BUTTON_NEXT, GetMaxX()-6, 0, GetMaxX()-4, 4, 0, BTN_HIDE, NULL, NULL, NULL ); BtnCreate( ID_RTCC_BUTTON_PREVIOUS, GetMaxX()-4, 0, GetMaxX()-2, 4, 0, BTN_HIDE, NULL, NULL, NULL ); // ------------------------------------------------------------------------- // Create Month, Day and Year Edit Boxes and Buttons textWidth = GetTextWidth( "Mmm", (void *)&FONTDEFAULT ); textHeight = GetTextHeight( (void *)&FONTDEFAULT ) + 2*GOL_EMBOSS_SIZE; // Create the month components EbCreate( ID_MONTH, MONTH_START_X, MONTH_START_Y, MONTH_END_X, MONTH_END_Y, EB_DRAW, // will be dislayed after creation &_date_str[0], // use the month string value 3, // max characters is 3 NULL ); // default GOL scheme BtnCreate( ID_MONTH_PLUS, MONTH_BUTTON_START_X, MONTH_START_Y, MONTH_BUTTON_END_X, MONTH_START_Y + (textHeight >> 1), 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "+", // DOWN arrow as text NULL ); // use navigation scheme BtnCreate( ID_MONTH_MINUS, MONTH_BUTTON_START_X, MONTH_START_Y + (textHeight >> 1), MONTH_BUTTON_END_X, MONTH_END_Y, 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "-", // DOWN arrow as text NULL ); // use navigation scheme // Create the day components textWidth = GetTextWidth( "MM", (void *)&FONTDEFAULT ); EbCreate( ID_DAY, DAY_START_X, DAY_START_Y, DAY_END_X, DAY_END_Y, EB_DRAW, // will be dislayed after creation &_date_str[4], // use the day string value 2, // max characters is 3 NULL ); // default GOL scheme BtnCreate( ID_DAY_PLUS, DAY_BUTTON_START_X, DAY_START_Y, DAY_BUTTON_END_X, DAY_START_Y + (textHeight >> 1), 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "+", // DOWN arrow as text NULL ); // use navigation scheme BtnCreate( ID_DAY_MINUS, DAY_BUTTON_START_X, DAY_START_Y + (textHeight >> 1), DAY_BUTTON_END_X, DAY_END_Y, 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "-", // DOWN arrow as text NULL ); // use navigation scheme // Create the year components textWidth = GetTextWidth( "MM00", (void *)&FONTDEFAULT ); EbCreate( ID_YEAR, YEAR_START_X, YEAR_START_Y, YEAR_END_X, YEAR_END_Y, EB_DRAW, // will be dislayed after creation &_date_str[8], // use the year string value 4, // max characters is 4 NULL ); // default GOL scheme BtnCreate( ID_YEAR_PLUS, YEAR_BUTTON_START_X, YEAR_START_Y, YEAR_BUTTON_END_X, YEAR_START_Y + (textHeight >> 1), 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "+", // DOWN arrow as text NULL ); // use navigation scheme BtnCreate( ID_YEAR_MINUS, YEAR_BUTTON_START_X, YEAR_START_Y + (textHeight >> 1), YEAR_BUTTON_END_X, YEAR_END_Y, 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "-", // DOWN arrow as text NULL ); // use navigation scheme // ------------------------------------------------------------------------- // Create the Hour and Minute Edit Boxes and Buttons textWidth = GetTextWidth( "MM", (void *)&FONTDEFAULT ) + (GOL_EMBOSS_SIZE<<1); // Create the hour components EbCreate( ID_HOUR, HOUR_START_X, HOUR_START_Y, HOUR_END_X, HOUR_END_Y, EB_DRAW, &_time_str[4], 2, NULL ); BtnCreate( ID_HOUR_PLUS, HOUR_BUTTON_START_X, HOUR_START_Y, HOUR_BUTTON_END_X, HOUR_START_Y + (textHeight >> 1), 0, BTN_DRAW, NULL, "+", NULL ); BtnCreate( ID_HOUR_MINUS, HOUR_BUTTON_START_X, HOUR_START_Y + (textHeight >> 1), HOUR_BUTTON_END_X, HOUR_END_Y, 0, BTN_DRAW, NULL, "-", NULL ); // Create the minute components EbCreate( ID_MINUTE, MINUTE_START_X, MINUTE_START_Y, MINUTE_END_X, MINUTE_END_Y, EB_DRAW, // will be dislayed after creation &_time_str[7], // use minute string value 2, // max characters is 2 NULL ); // default GOL scheme BtnCreate( ID_MINUTE_PLUS, MINUTE_BUTTON_START_X, MINUTE_START_Y, MINUTE_BUTTON_END_X, MINUTE_START_Y + (textHeight >> 1), 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "+", // DOWN arrow as text NULL ); // use navigation scheme BtnCreate( ID_MINUTE_MINUS, MINUTE_BUTTON_START_X, MINUTE_START_Y + (textHeight >> 1), MINUTE_BUTTON_END_X, MINUTE_END_Y, 0, // draw rectangular button BTN_DRAW, // will be dislayed after creation NULL, // no bitmap "-", // DOWN arrow as text NULL ); // use navigation scheme currentControlSet = CONTROL_SET_MONTH; IndicateFocus( WHITE ); }
WORD ProcessMessageTime( WORD translatedMsg, OBJ_HEADER* pObj, GOL_MSG* pMsg ) { signed char change; WORD controlID; signed char day; signed char dayMax; signed char hour; signed char minute; signed char month; signed char year; controlID = GetObjID(pObj); switch (controlID) { case ID_RTCC_BUTTON_NEXT: // Show the old control set as unselected. IndicateFocus( BLACK ); // Set the next control as active. currentControlSet ++; if (currentControlSet > CONTROL_SET_MAX) { currentControlSet = 0; } // Show the new control set as selected. IndicateFocus( WHITE ); return 0; // Hidden button break; case ID_RTCC_BUTTON_PREVIOUS: // Show the old control set as unselected. IndicateFocus( BLACK ); // Set the next control as active. currentControlSet --; if (currentControlSet < 0 ) { currentControlSet = CONTROL_SET_MAX; } // Show the new control set as selected. IndicateFocus( WHITE ); return 0; // Hidden button break; case ID_RTCC_BUTTON_HOME: screenState = SCREEN_DISPLAY_MAIN; return 0; // Hidden button break; case ID_DAY_PLUS: case ID_MONTH_PLUS: case ID_YEAR_PLUS: case ID_HOUR_PLUS: case ID_MINUTE_PLUS: if (translatedMsg == BTN_MSG_PRESSED) { change = +1; } else { return 1; } break; case ID_DAY_MINUS: case ID_MONTH_MINUS: case ID_YEAR_MINUS: case ID_HOUR_MINUS: case ID_MINUTE_MINUS: if (translatedMsg == BTN_MSG_PRESSED) { change = -1; } else { return 1; } break; default: return 0; } // Update the selected field. RTCCProcessEvents(); hour = RTCCGetBinHour(); minute = RTCCGetBinMin(); day = RTCCGetBinDay(); month = RTCCGetBinMonth(); year = RTCCGetBinYear(); dayMax = daysPerMonth[month-1]; // February has one day more for a leap year, unless it is on the thousands if ((month == 2) && ((year % 4) == 0) && (year != 0)) { dayMax ++; } // Change the appropriate setting. Allow the controls to roll over. switch (currentControlSet) { case CONTROL_SET_DAY: day += change; if (day < 1) { day = dayMax; } if (day > dayMax) { day = 1; } break; case CONTROL_SET_MONTH: month += change; if (month < 1) { month = 12; } if (month > 12) { month = 1; } break; case CONTROL_SET_YEAR: year += change; if (year < 0) { year = 99; } if (year > 99) { year = 0; } break; case CONTROL_SET_HOUR: hour += change; if (hour < 0) { hour = 23; } if (hour > 23) { hour = 0; } break; case CONTROL_SET_MINUTE: minute += change; if (minute < 0) { minute = 59; } if (minute > 59) { minute = 0; } break; default: return 0; } RTCCOff(); RTCCSetBinHour( hour ); RTCCSetBinMin( minute ); RTCCSetBinSec( 0 ); RTCCSetBinMonth( month ); RTCCSetBinYear( year ); RTCCSetBinDay( day ); RTCCCalculateWeekDay(); RTCCSet(); // Copy the new values to the RTCC registers UpdateDateTime(); // Update the display. return 1; // Call the default handler to show the button state. }
void PerformBoardTest( void ) { static int elapsedSeconds = 0; static void *picture; RTCCProcessEvents(); if (previousSecond != _time_str[11]) { switch ( elapsedSeconds ) { case 0: // We will test to see if we are plugged into the PC as a // device (on the right side of the board) or if the debugger // side is plugged in (on the left side of the board). If // we are plugged in as a device, we will receive SOF tokens, // which sets the SOF interrupt. picture = &intro; // Turn on the USB module in device mode. First, disable all // USB interrupts, since we are just doing a local test. Then // enable the module in default device mode and turn on the // power. We will let the module take care of pulling up the // correct lines. Note that the interrupt flags in U1IR are // cleared by writing a "1" to each flag. U1IE = 0; U1IR = 0xFF; U1CONbits.USBEN = 1; U1PWRCbits.USBPWR = 1; // Fall through case 2: GOLFree(); SetColor( WHITE ); ClearDevice(); break; case 1: case 3: GOLFree(); SetColor( BLACK ); ClearDevice(); break; case 4: // See if we are plugged into the PC as a device. If so, we // will display a slightly different picture. if (U1IRbits.SOFIF) { // We are receiving SOF tokens, so we must be plugged // into a host. picture = &introDevice; } // Disable and power off the USB module. U1CONbits.USBEN = 1; U1PWRCbits.USBPWR = 0; // Display the selected graphic. PictCreate( ID_ICON, // ID 0,0,GetMaxX(),GetMaxY(), // dimension PICT_DRAW, // will be dislayed, has frame 1, // scale factor is x1 picture, // bitmap NULL ); // default GOL scheme break; case 5: RGBTurnOnLED( RGB_SATURATION_MINIMUM, RGB_SATURATION_MINIMUM, RGB_SATURATION_MINIMUM ); break; case 6: // Red RGBSetRed( RGB_SATURATION_MAXIMUM ); break; case 7: // Yellow RGBSetGreen( RGB_SATURATION_MAXIMUM ); break; case 8: // Green RGBSetRed( RGB_SATURATION_MINIMUM ); break; case 9: // Aqua RGBSetBlue( RGB_SATURATION_MAXIMUM ); break; case 10: // Blue RGBSetGreen( RGB_SATURATION_MINIMUM ); break; case 11: // Fuschia RGBSetRed( RGB_SATURATION_MAXIMUM ); break; case 12: // White RGBSetGreen( RGB_SATURATION_MAXIMUM ); break; case 13: // Pause break; case 14: RGBTurnOffLED(); screenState = SCREEN_DISPLAY_MAIN; previousSecond = ' '; elapsedSeconds = 0; return; break; } previousSecond = _time_str[11]; elapsedSeconds ++; } }
WORD GOLDrawCallback( void ) { unsigned char i; OBJ_HEADER *pObject; extern unsigned int trip[NUM_TOUCHPADS]; switch (screenState) { case SCREEN_BOARD_TEST: PerformBoardTest(); break; case SCREEN_DISPLAY_MAIN: ShowScreenMain(); displayChangeTime = tick; screenState = SCREEN_MAIN; break; case SCREEN_MAIN: RTCCProcessEvents(); if (previousSecond != _time_str[11]) { previousSecond = _time_str[11]; strcpy( pageInformation.instructions, _date_str ); strcat( pageInformation.instructions, " " ); strcat( pageInformation.instructions, _time_str ); pObject = GOLFindObject( ID_INSTRUCTIONS ); StSetText( (STATICTEXT *)pObject, pageInformation.instructions ); SetState( pObject, ST_DRAW ); } break; case SCREEN_DISPLAY_FLASH: ShowScreenFlash(); displayChangeTime = tick; screenState = SCREEN_FLASH; break; case SCREEN_FLASH: FlashMonitorMedia(); break; case SCREEN_DISPLAY_FLASH_ERROR: ShowScreenFlashError(); displayChangeTime = tick; screenState = SCREEN_FLASH_ERROR; break; case SCREEN_FLASH_ERROR: break; case SCREEN_DISPLAY_GAMES: ShowScreenGames(); displayChangeTime = tick; screenState = SCREEN_GAMES; break; case SCREEN_GAMES: break; case SCREEN_DISPLAY_SNAKE: ShowScreenSnake(); displayChangeTime = tick; screenState = SCREEN_SNAKE; break; case SCREEN_SNAKE: DrawSnake(); break; case SCREEN_DISPLAY_SNAKE_SCORE: ShowScreenScore(); displayChangeTime = tick; screenState = SCREEN_SNAKE_SCORE; break; case SCREEN_SNAKE_SCORE: break; case SCREEN_DISPLAY_BLASTER: ShowScreenBlaster(); // Set the touchpad sensitivity for quicker game play. for (i=0; i<NUM_TOUCHPADS; i++) { trip[i]=TRIP_VALUE_BLASTER; } displayChangeTime = tick; screenState = SCREEN_BLASTER; break; case SCREEN_BLASTER: DrawBlaster(); break; case SCREEN_DISPLAY_BLASTER_SCORE: ShowScreenScore(); // Reset the touchpad sensitivity to normal. for(i=0; i<NUM_TOUCHPADS; i++) { trip[i]=TRIP_VALUE; } displayChangeTime = tick; screenState = SCREEN_BLASTER_SCORE; break; case SCREEN_BLASTER_SCORE: break; case SCREEN_DISPLAY_SHAPELET: ShowScreenShapelet(); displayChangeTime = tick; screenState = SCREEN_SHAPELET; break; case SCREEN_SHAPELET: break; case SCREEN_DISPLAY_SHAPELET_SCORE: ShowScreenScore(); displayChangeTime = tick; screenState = SCREEN_SHAPELET_SCORE; break; case SCREEN_SHAPELET_SCORE: break; case SCREEN_DISPLAY_DEMOS: ShowScreenDemos(); displayChangeTime = tick; screenState = SCREEN_DEMOS; break; case SCREEN_DEMOS: break; case SCREEN_DISPLAY_RGB: ShowScreenRGB(); displayChangeTime = tick; screenState = SCREEN_RGB; break; case SCREEN_RGB: break; case SCREEN_DISPLAY_GRAPH: ShowScreenGraph(); displayChangeTime = tick; screenState = SCREEN_GRAPH; break; case SCREEN_GRAPH: UpdateGraph(); break; case SCREEN_DISPLAY_CAPTURE_MEDIA: ShowScreenCaptureMedia(); displayChangeTime = tick; screenState = SCREEN_CAPTURE_MEDIA; break; case SCREEN_CAPTURE_MEDIA: CaptureMonitorMedia(); break; case SCREEN_DISPLAY_CAPTURE: ShowScreenCapture(); displayChangeTime = tick; screenState = SCREEN_CAPTURE; break; case SCREEN_CAPTURE: UpdateGraph(); CaptureMonitorMedia(); break; case SCREEN_DISPLAY_UTILITIES: ShowScreenUtilities(); displayChangeTime = tick; screenState = SCREEN_UTILITIES; break; case SCREEN_UTILITIES: break; case SCREEN_DISPLAY_TIME: ShowScreenTime(); displayChangeTime = tick; screenState = SCREEN_TIME; break; case SCREEN_TIME: break; case SCREEN_DISPLAY_CTMU: ShowScreenCTMU(); displayChangeTime = tick; screenState = SCREEN_CTMU; break; case SCREEN_CTMU: CalibrateCTMU(); break; case SCREEN_DISPLAY_BAR_DEMO: ShowScreenBarDemo(); displayChangeTime = tick; screenState = SCREEN_BAR_DEMO; break; case SCREEN_BAR_DEMO: DrawBarDemo(); break; } return 1; // Callback complete }
/************************************************************************ Function: void InitializeGUI(void) Overview: This function initializes sub modules used in the GUI. Input: none. Output: none ************************************************************************/ void InitializeGUI(void) { // initialize the real time clock RTCCInit(); RTCCProcessEvents(); //make sure the strings are terminated _time_str[13] = 0; _date_str[13] = 0; CurrentTimeStr[13] = 0; // create and initialize style schemes pRemoteScheme = GOLCreateScheme(); // used for the generic scheme pRemoteScheme->TextColor0 = TEXTCOLOR_UNPRESSED; pRemoteScheme->TextColor1 = REMOTE_YELLOW; pRemoteScheme->CommonBkColor = REMOTE_GRAY; pRemoteScheme->EmbossDkColor = KEYPAD_DARKEMBOSS; pRemoteScheme->EmbossLtColor = KEYPAD_LIGHTEMBOSS; pRemoteScheme->Color0 = KEYPAD_BACKGROUND; pRemoteScheme->Color1 = REMOTE_BLACK; pVersionScheme = GOLCreateScheme(); // used for the generic scheme pVersionScheme->TextColor1 = REMOTE_YELLOW; pVersionScheme->TextColor0 = REMOTE_YELLOW; pVersionScheme->CommonBkColor = REMOTE_BLACK; pVersionScheme->EmbossDkColor = REMOTE_BLACK; pVersionScheme->EmbossLtColor = REMOTE_BLACK; pVersionScheme->Color0 = REMOTE_BLACK; pVersionScheme->Color1 = REMOTE_BLACK; pMenuButtonScheme = GOLCreateScheme(); // used for menu buttons that has text pMenuButtonScheme->TextColor0 = REMOTE_BLACK; pMenuButtonScheme->TextColor1 = REMOTE_WHITE; pMenuButtonScheme->CommonBkColor = BACKGROUND_COLOR; pMenuButtonScheme->pFont = (void*)&REMOTEFONT_14; pTimeDateStyleScheme = GOLCreateScheme(); // used for the time and date display pTimeDateStyleScheme->TextColor0 = TEXTCOLOR_UNPRESSED; pTimeDateStyleScheme->TextColor1 = REMOTE_GRAY; pTimeDateStyleScheme->CommonBkColor = BACKGROUND_COLOR; pTimeDateStyleScheme->pFont = (void*)&TIMEDATEFONT; pBatStyleScheme = GOLCreateScheme(); // used for the battery level indicator pBatStyleScheme->EmbossDkColor = REMOTE_BLACK; pBatStyleScheme->EmbossLtColor = REMOTE_BLACK; pBatStyleScheme->Color0 = BATTERY_LEVEL_COLOR; pBatStyleScheme->Color1 = REMOTE_BLACK; // set the font to NULL so the progress bar used will not show // any text on the progress bar pBatStyleScheme->pFont = NULL; pTVRemoteStyleScheme = GOLCreateScheme(); // watch TV button schemes pTVRemoteStyleScheme->EmbossDkColor = KEYPAD_DARKEMBOSS; pTVRemoteStyleScheme->EmbossLtColor = KEYPAD_LIGHTEMBOSS; pTVRemoteStyleScheme->TextColor0 = KEYPAD_TEXTCOLOR0; pTVRemoteStyleScheme->TextColor1 = REMOTE_YELLOW; pTVRemoteStyleScheme->Color0 = KEYPAD_BACKGROUND; pTVRemoteStyleScheme->Color1 = REMOTE_BLACK; pTVRemoteStyleScheme->pFont = (void*)&TVREMOTEFONT; pWatchDiscStyleScheme = GOLCreateScheme(); // watch TV button schemes pWatchDiscStyleScheme->EmbossDkColor = KEYPAD_DARKEMBOSS; pWatchDiscStyleScheme->EmbossLtColor = KEYPAD_LIGHTEMBOSS; pWatchDiscStyleScheme->TextColor0 = KEYPAD_TEXTCOLOR0; pWatchDiscStyleScheme->TextColor1 = REMOTE_YELLOW; pWatchDiscStyleScheme->Color0 = KEYPAD_BACKGROUND; pWatchDiscStyleScheme->Color1 = REMOTE_BLACK; pWatchDiscStyleScheme->pFont = (void*)&FAVMENUFONT; pWatchDiscStyleScheme->TextColorDisabled = REMOTE_BLACK; pWatchDiscStyleScheme->ColorDisabled = REMOTE_GRAY; pWatchDiscStyleScheme->CommonBkColor = BACKGROUND_COLOR; pFavMenuScheme = GOLCreateScheme(); // favorite menu schemes pFavMenuScheme->EmbossDkColor = KEYPAD_DARKEMBOSS; pFavMenuScheme->EmbossLtColor = KEYPAD_LIGHTEMBOSS; pFavMenuScheme->TextColor0 = KEYPAD_TEXTCOLOR0; pFavMenuScheme->TextColor1 = REMOTE_YELLOW; pFavMenuScheme->Color0 = KEYPAD_BACKGROUND; pFavMenuScheme->Color1 = REMOTE_BLACK; pFavMenuScheme->pFont = (void*)&FAVMENUFONT; pSettingsScheme = GOLCreateScheme(); // Settings menu schemes pSettingsScheme->EmbossDkColor = REMOTE_GRAY64; pSettingsScheme->EmbossLtColor = TEXTCOLOR_UNPRESSED; pSettingsScheme->TextColor0 = REMOTE_BLACK; pSettingsScheme->TextColor1 = REMOTE_WHITE; pSettingsScheme->Color0 = REMOTE_BLACK; pSettingsScheme->Color1 = REMOTE_WHITE; pSettingsScheme->pFont = (void*)&TIMEDATEFONT; pSettingsScheme2 = GOLCreateScheme(); // Settings menu schemes 2 pSettingsScheme2->EmbossDkColor = KEYPAD_LIGHTEMBOSS; pSettingsScheme2->EmbossLtColor = KEYPAD_LIGHTEMBOSS; pSettingsScheme2->TextColor0 = REMOTE_WHITE; pSettingsScheme2->TextColor1 = REMOTE_YELLOW; pSettingsScheme2->Color0 = KEYPAD_BACKGROUND; pSettingsScheme2->Color1 = REMOTE_BLACK; pSettingsScheme2->CommonBkColor = REMOTE_GRAY; pSettingsScheme2->pFont = (void*)&FAVMENUFONT; pSettingsScheme2->ColorDisabled = REMOTE_GRAY; pSettingsScheme2->TextColorDisabled = KEYPAD_LIGHTEMBOSS; pTimeSelectScheme = GOLCreateScheme(); pTimeSelectScheme->EmbossDkColor = KEYPAD_DARKEMBOSS; pTimeSelectScheme->EmbossLtColor = KEYPAD_LIGHTEMBOSS; pTimeSelectScheme->TextColor0 = REMOTE_YELLOW;; pTimeSelectScheme->TextColor1 = KEYPAD_TEXTCOLOR1; pTimeSelectScheme->Color0 = REMOTE_BLACK; pTimeSelectScheme->Color1 = REMOTE_BLACK; pTimeSelectScheme->CommonBkColor = REMOTE_GRAY; pTimeSelectScheme->pFont = (void*)&FAVMENUFONT; pSettingsScheme3 = GOLCreateScheme(); // Settings menu schemes 3 pSettingsScheme3->EmbossDkColor = KEYPAD_DARKEMBOSS; pSettingsScheme3->EmbossLtColor = KEYPAD_LIGHTEMBOSS; pSettingsScheme3->TextColor0 = KEYPAD_TEXTCOLOR0; pSettingsScheme3->TextColor1 = REMOTE_YELLOW; pSettingsScheme3->Color0 = KEYPAD_BACKGROUND; pSettingsScheme3->Color1 = REMOTE_BLACK; pSettingsScheme3->CommonBkColor = REMOTE_GRAY; pSettingsScheme3->pFont = (void*)&FAVMENUFONT; }