int main( void ) { GOL_MSG msg; // GOL message structure to interact with GOL RGBMapColorPins(); TRISBbits.TRISB1 = 0; // Debug LATBbits.LATB1 = 0; #ifdef USE_FRC OSCCON = 0x1102; // Enable secondary oscillator, use FRC oscillator CLKDIV = 0x0000; // FRC post-scaler (1:1), USB postscaler (1:1), CPU postscaler (1:1) #else #ifdef GO_SLOW OSCCON = 0x3302; // Enable secondary oscillator, use HS oscillator CLKDIV = 0x0080; // (not needed - FRC post-scaler (1:1)), USB postscaler (4:1), CPU postscaler (1:1) #else OSCCON = 0x3302; // Enable secondary oscillator, use HS oscillator CLKDIV = 0x0000; // (not needed - FRC post-scaler (1:1)), USB postscaler (1:1), CPU postscaler (1:1) #endif #endif RCON = 0; // Initialize USB Embedded Host USBInitialize( 0 ); // Initialize the RTCC RTCCInit(); // Initialize the graphics library GOLInit(); // Initialize the touch pads. CTMUInit(); // Initialize the reference timer. TickInit(); while (1) { if (GOLDraw()) // Draw the screen { TouchSenseButtonsMsg( &msg ); // Get a raw touchpad message if ((msg.uiEvent != EVENT_INVALID) && ((tick - displayChangeTime) > MESSAGE_DEAD_TIME)) { TranslateTouchpad( &msg ); // Translate the raw message GOLMsg( &msg ); // Process the message } } } }
int main(void) { unsigned char jloop; unsigned int iloop; char AddrString[30]; char ConstString[256]; InitializeSystem(); unsigned char temp, temp1, temp2, temp3, temp4; unsigned char ones_char, tens_char, huns_char; int16_t change_cnt; ODCAbits.ODA6 = 0; // This is for the Explorer-16 Demo Board TRISAbits.TRISA6 = 0; // This is for the Explorer-16 Demo Board // ODCCbits.ODC2 = 0; // TRISCbits.TRISC2 = 0; unsigned long i; GreenLEDState = 0; RedLEDState = 0; RTCCInit(); // initialization includes set the time and date TimeMinBinary = 0; while (TimeMinBinary < 3) { if (TenSecondTick == 1) { RTCCgrab(); TimeHourBinary = mRTCCDec2Bin(TimeHourBCD); TimeMinBinary = mRTCCDec2Bin(TimeMinBCD); TimeSecBinary = mRTCCDec2Bin(TimeSecBCD); TimeDayOfWeekBinary = mRTCCDec2Bin(TimeDayOfWeekBCD); TimeDayBinary = mRTCCDec2Bin(TimeDayBCD); TimeMonthBinary = mRTCCDec2Bin(TimeMonthBCD); TimeYearBinary = mRTCCDec2Bin(TimeYearBCD); sprintf(OutString, " : : \n / / 20 "); // columns 41, 59 // sprintf(OutString, "Sept4 1:00PM \nputs only "); // columns 41, 59 temp1 = (TimeHourBinary % 10); ones_char = temp1 + 0x30; temp2 = (TimeHourBinary - temp1)/10; tens_char = temp2 + 0x30; OutString[0] = tens_char; OutString[1] = ones_char; temp1 = (TimeMinBinary % 10); ones_char = temp1 + 0x30; temp2 = (TimeMinBinary - temp1)/10; tens_char = temp2 + 0x30; OutString[3] = tens_char; OutString[4] = ones_char; temp1 = (TimeSecBinary % 10); ones_char = temp1 + 0x30; temp2 = (TimeSecBinary - temp1)/10; tens_char = temp2 + 0x30; OutString[6] = tens_char; OutString[7] = ones_char; temp1 = (TimeDayOfWeekBinary % 10); ones_char = temp1 + 0x30; temp2 = (TimeDayOfWeekBinary - temp1)/10; tens_char = temp2 + 0x30; OutString[17] = tens_char; OutString[18] = ones_char; temp1 = (TimeDayBinary % 10); ones_char = temp1 + 0x30; temp2 = (TimeDayBinary - temp1)/10; tens_char = temp2 + 0x30; OutString[20] = tens_char; OutString[21] = ones_char; temp1 = (TimeMonthBinary % 10); ones_char = temp1 + 0x30; temp2 = (TimeMonthBinary - temp1)/10; tens_char = temp2 + 0x30; OutString[23] = tens_char; OutString[24] = ones_char; temp1 = (TimeYearBinary % 10); ones_char = temp1 + 0x30; temp2 = (TimeYearBinary - temp1)/10; tens_char = temp2 + 0x30; OutString[28] = tens_char; OutString[29] = ones_char; Delayms(200); setLCDC(0x00); // point to 1st line Delayms(2000); putsLCD(OutString); TenSecondTick = 0; } // if (TenSecondTick == 1) } // while(TimeMinBinary < 4) sprintf(OutString, "WiFly Pass_thru\nDemo"); putsLCD(OutString); // JKW starts here Delayms(5000); sprintf(OutString,"$$$"); putsWiFly(OutString); putsConsole(OutString); Delayms(5000); sprintf(OutString,"set comm open [\r\n"); putsConsole(OutString); putsWiFly(OutString); Delayms(1000); // sprintf(OutString,"set wlan ssid AMI\r\n"); // sprintf(OutString,"set wlan ssid Arthur$and$Matts$Internet\r\n"); sprintf(OutString,"set wlan ssid Hogwarts\r\n"); putsConsole(OutString); putsWiFly(OutString); Delayms(1000); // sprintf(OutString,"set wlan phrase hot7blue\r\n"); sprintf(OutString,"set wlan phrase pooKums496\r\n"); putsConsole(OutString); putsWiFly(OutString); Delayms(1000); sprintf(OutString,"set ftp timer 80\r\n"); putsConsole(OutString); putsWiFly(OutString); Delayms(1000); sprintf(OutString,"set comm close ]\r\n"); putsConsole(OutString); putsWiFly(OutString); Delayms(1000); sprintf(OutString,"set ftp dir /jackwaterman\r\n"); putsConsole(OutString); putsWiFly(OutString); Delayms(1000); sprintf(OutString,"set ftp user waterallusers\r\n"); putsConsole(OutString); putsWiFly(OutString); Delayms(1000); sprintf(OutString,"set ftp pass aRkeO7755123!\r\n"); putsConsole(OutString); putsWiFly(OutString); //User=jaycen is now waterallusers //Pass=jWes232740 is now aRkeO7755123! //Dir=../../ is now /jackwaterman Delayms(1000); sprintf(OutString,"save\r\n"); putsConsole(OutString); putsWiFly(OutString); // Delayms(1000); // sprintf(OutString,"get everything\r\n"); // putsConsole(OutString); // putsWiFly(OutString); Delayms(200); sprintf(OutString, "Sept7 8:00AM \nputs only "); // columns 41, 59 putsConsole(OutString); Delayms(200); setLCDC(0x00); // point to 1st line Delayms(200); putsLCD(OutString); Delayms(2000); sprintf(OutString, "\r\n"); putsConsole(OutString); change_cnt = 0; // sprintf(ConstString,"A9ABE296E34713800CC11D0D1E0FB197B36810D14F32085E4E50BFB685EC755E26C88F63A105284B0AC627FA90EF3B294D6D549C0A0D88E814B5A2C17794B1EBD1A064868BB377DFD5CD80218D73D3F0A18B642EFAFACEDDBA6E2694D27F3E7EE3B04A57D6CBBE452343D9428133C5209D763B2F776628529B94173B3568"); // 1009 for (iloop = 0; iloop <=999; iloop++) { Delayms(500); // worked well with 5000 sprintf(AddrString,"ftp put sept9__000.txt\r\n"); // sprintf(AddrString,"ftp put arthur_000.txt\r\n"); temp1 = (iloop % 10); ones_char = temp1 + 0x30; temp2 = ((iloop - temp1) % 100)/10; tens_char = temp2 + 0x30; temp3 = (iloop - temp2*10 - temp1)/100; huns_char = temp3 + 0x30; AddrString[15] = huns_char; AddrString[16] = tens_char; AddrString[17] = ones_char; Delayms(500); // worked well with 5000 putsConsole(AddrString); Delayms(500); putsWiFly(AddrString); sprintf(ConstString,"A9ABE296E34713800CC11D0D1E0FB197B36810D14F32085E4E50BFB685EC755E26C88F63A105284B0AC627FA90EF3B294D6D549C0A0D88E814B5A2C17794B1EBD1A064868BB377DFD5CD80218D73D3F0A18B642EFAFACEDDBA6E2694D27F3E7EE3B04A57D6CBBE452343D9428133C5209D763B2F776628529B94173B3568"); // 1009 temp4 = ConstString[change_cnt] - 0x01; if (temp4 < 0x30) { temp4 = 0x30; change_cnt++; if (change_cnt == 251) {change_cnt = 0;} temp4 = ConstString[change_cnt] - 0x01; } if ((temp4 < 0x41) && (temp4 > 0x39)) temp4 = 0x39; ConstString[change_cnt] = temp4; change_cnt++; if (change_cnt == 251) {change_cnt = 0;} temp = 0x00; kickout_seconds = 0; // kicks out if takes longer than 2 minutes RTCCgrab(); TimeHourBinary = mRTCCDec2Bin(TimeHourBCD); TimeMinBinary = mRTCCDec2Bin(TimeMinBCD); TimeSecBinary = mRTCCDec2Bin(TimeSecBCD); time_mark1 = TimeHourBinary*3600 + TimeMinBinary*60+ TimeSecBinary; TimeHourBinarySave = TimeHourBinary; while ( (U1RXREG != '1') && (kickout_seconds < 60) ) // [ = 0x5B, ] = 0x5D { putConsole(U1RXREG); RTCCgrab(); TimeHourBinary = mRTCCDec2Bin(TimeHourBCD); TimeMinBinary = mRTCCDec2Bin(TimeMinBCD); TimeSecBinary = mRTCCDec2Bin(TimeSecBCD); time_mark2 = TimeHourBinary*3600 + TimeMinBinary*60+ TimeSecBinary; if (TimeHourBinary < TimeHourBinarySave) time_mark2 = time_mark2 + 24*3600; kickout_seconds = time_mark2 - time_mark1; Delayms(200); } if (kickout_seconds < 60) { putsConsole(ConstString); Delayms(500); putsWiFly(ConstString); // Delayms(7000); // works OK when ftp_timeout = 40, 1 every 12 sec // Delayms(21000);// works OK when ftp_timeout = 40, 1 every 24 sec Delayms(12000); // works OK when ftp_timeout = 40, 1 every 16 sec } sprintf(ConstString,"$$$"); putsConsole(ConstString); Delayms(500); putsWiFly(ConstString); Delayms(500); setLCDC(0x00); // point to 1st line Delayms(200); sprintf(OutString, "iloop = \nLoop to 1000 "); temp1 = (iloop % 10); ones_char = temp1 + 0x30; // temp2 = (iloop - temp1)/10; temp2 = ((iloop - temp1) % 100)/10; tens_char = temp2 + 0x30; temp3 = (iloop - temp2*10 - temp1)/100; huns_char = temp3 + 0x30; OutString[8] = huns_char; OutString[9] = tens_char; OutString[10] = ones_char; putsLCD(OutString); Delayms(1000); // worked well with 10000 } // JKW ends here while(1) { // check if S4 pressed to trigger WiFly factory restoral if(0 == SwitchLevel(&SW_S4_PORT, SW_S4_PIN, SWITCH_DEBOUNCE_MS)) { sprintf(OutString,"\r\n\r\ninitiating WiFly factory reset...\r\n\r\n"); putsConsole(OutString); // drive GPIO9 high for 10ms before resetting the module RN_GPIO9 = 1; Delayms(1000); // Assert RESET for 10ms RN_RESET = 0; Delayms(100); RN_RESET = 1; Delayms(100); // toggle GPIO9 5 times, delaying at least 1 sec between toggles RN_GPIO9 = 0; Delayms(1200); RN_GPIO9 = 1; Delayms(1200); RN_GPIO9 = 0; Delayms(1200); RN_GPIO9 = 1; Delayms(1200); RN_GPIO9 = 0; Delayms(1200); RN_GPIO9 = 1; Delayms(1200); RN_GPIO9 = 0; Delayms(1200); RN_GPIO9 = 1; Delayms(1200); RN_GPIO9 = 0; Delayms(1200); // now toggle RESET to reboot the module and apply factory default settings RN_RESET = 0; Delayms(100); RN_RESET = 1; // wait for user to release S4 while(0 == SwitchLevel(&SW_S4_PORT, SW_S4_PIN, SWITCH_DEBOUNCE_MS)); } } } // main
/************************************************************************ 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; }
int main(void) { // Start from displaying of PIC24 banners _display_state = DISP_HELLO; // Setup PortA IOs as digital AD1PCFG = 0xffff; //IO Mapping for PIC24FJ64GA004 #ifdef __PIC24FJ64GA004__ //Defined by MPLAB when using 24FJ64GA004 device ioMap(); lockIO(); #endif // Setup SPI to communicate to EEPROM SPIMPolInit(); // Setup EEPROM IOs EEPROMInit(); // Setup the UART UART2Init(); // Setup the timer TimerInit(); // Setup the LCD mLCDInit(); // Setup debounce processing BtnInit(); // Setup the ADC ADCInit(); // Setup the banner processing BannerStart(); // Setup the RTCC RTCCInit(); while (1) { LCDProcessEvents(); ADCProcessEvents(); if (TimerIsOverflowEvent()){ // Button debounce processing BtnProcessEvents(); // State dependent processing switch (_display_state) { // Show Microchip banners case DISP_HELLO: BannerProcessEvents(); break; // Show clock case DISP_CLOCK: TBannerProcessEvents(); break; // Show voltage and temperature case DISP_VOLTAGE: VBannerProcessEvents(); break; default: _display_state = DISP_HELLO; }// End of switch (_display_state)... // If S6 is pressed show the next example if (BtnIsPressed(4)) { // Change state and clear display if(!TBannerIsSetup()){ _display_state++; if(_display_state > DISP_MAX) _display_state = 0; // Initialize state switch (_display_state) { // Microchip banners case DISP_HELLO: BannerInit(); break; // Clock case DISP_CLOCK: TBannerInit(); break; // Voltage and temperature case DISP_VOLTAGE: VBannerInit(); break; default: _display_state = 0; }// End of switch (_display_state)... mLCDClear(); }else TBannerNext(); // wait for button released while (BtnIsPressed(4)){ BtnProcessEvents(); } }// End of if (BtnIsPressed(4)){... if(_display_state == DISP_CLOCK){ if (BtnIsPressed(1)){ TBannerSetup(); // wait for button released while (BtnIsPressed(1)) BtnProcessEvents(); }// End of if (BtnIsPressed(1 ... if(TBannerIsSetup()){ if (BtnIsPressed(2)) { TBannerChangeField(1); // wait for button released while (BtnIsPressed(2)) BtnProcessEvents(); }// End of if (BtnIsPressed(2)){... if (BtnIsPressed(3)) { // wait for button released TBannerChangeField(0); while (BtnIsPressed(3)) BtnProcessEvents(); }// End of if (BtnIsPressed(3)){... }// End of if(TBannerIsSetup( ... }// End of if(_display_state == DISP_SET_CLOCK ... if(_display_state == DISP_VOLTAGE){ if (BtnIsPressed(2)){ ADCSetFromMemory(); // wait for button released while (BtnIsPressed(2)){ BtnProcessEvents(); } }// End of if (BtnIsPressed(2 ... if (BtnIsPressed(3)){ ADCStoreTemperature(); // wait for button released while (BtnIsPressed(3)){ BtnProcessEvents(); } }// End of if (BtnIsPressed(3)){... }// End of if(_display_state ... }// End of if (TimerIsOverflowEvent()... }// End of while(1)... }// End of main()...