// --------------------- void serialParse(void) { char charCh; byte hexRead, oldHexRead; charCh = getChar(); if (!charCh) return; if (sysStat & ST_DEBUG_MODE) // Super commands for Monitor { rs485TransmitEna(); putChar(charCh); switch(charCh) { case 'd': putStr("\tNode ID switch test.\n\r"); putStr("\tHit any key to quit.\n\r"); rs485TransmitDisa(); while(1) { charCh = getChar(); if (charCh) break; hexRead = readNodeSw(); if (hexRead != oldHexRead) { rs485TransmitEna(); sprintf(ioBfr, "\n\r Node ID: %02Xh", hexRead); putStr(ioBfr); oldHexRead = hexRead; rs485TransmitDisa(); } } break; case 'f': putStr("\tFlood sensor test: "); adcFloodSensor(ADC_LOQUACIOUS); break; case 'h': adcRHumid(ADC_LOQUACIOUS); break; case 'r': reportInfo(); break; case 't': adcTemper(ADC_LOQUACIOUS); break; case 'T': adcTemperSecondary(ADC_LOQUACIOUS); break; case '1': RELAY1 ^= 1; if (RELAY1) putStr("\tRelay 1 on"); else putStr("\tRelay 1 off"); break; case '2': RELAY2 ^= 1; if (RELAY2) putStr("\tRelay 2 on"); else putStr("\tRelay 2 off"); break; case '3': SwiPwr1 ^= 1; if (SwiPwr1) putStr("\tSwi Pwr1 on"); else putStr("\tSwi Pwr1 off"); break; case '4': SwiPwr2 ^= 1; if (SwiPwr2) putStr("\tSwi Pwr2 on"); else putStr("\tSwi Pwr2 off"); break; case '?': menuDisplay(); break; } // EO switch putPrompt(); rs485TransmitDisa(); } // EO if debug else { childStateMach(charCh); } }
Token DefaultLexer::readToken() { char c = lookChar(); while (true) { // skip whitespace while (isWhiteSpace(c)) { skipChar(); c = lookChar(); } // newlines if (isNewline(c)) { readNewline(c); if (interactive_ && getCurrentBraceNesting() == 0) return Token(TK_Newline); c = lookChar(); continue; } // treat line comments as newlines if (c == '/' && lookChar(1) == '/') { readLineComment(); c = lookChar(); continue; } break; } SourceLocation sloc = getCurrentLocation(); // punctuation if (c == '(') { skipChar(); signalOpenBrace(TK_LParen); return Token(TK_LParen, "(", sloc); } if (c == ')') { skipChar(); signalCloseBrace(TK_LParen); return Token(TK_RParen, ")", sloc); } if (c == '{') { skipChar(); signalOpenBrace(TK_LCurlyBrace); return Token(TK_LCurlyBrace, "{", sloc); } if (c == '}') { skipChar(); signalCloseBrace(TK_LCurlyBrace); return Token(TK_RCurlyBrace, "}", sloc); } if (c == '[') { skipChar(); signalOpenBrace(TK_LSquareBrace); return Token(TK_LSquareBrace, "[", sloc); } if (c == ']') { skipChar(); signalCloseBrace(TK_LSquareBrace); return Token(TK_RSquareBrace, "]", sloc); } if (c == ',') { skipChar(); return Token(TK_Comma, ",", sloc); } if (c == ';') { skipChar(); return Token(TK_Semicolon, ";", sloc); } if (c == ':' && !isOperatorChar(lookChar(1))) { skipChar(); return Token(TK_Colon, ":", sloc); } if (c == '.') { skipChar(); return Token(TK_Period, ".", sloc); } // identifiers if (isLetter(c)) { readIdentifier(c); StringRef str = copyStr(finishToken()); unsigned short keyid = static_cast<unsigned short>( lookupKeyword(str.c_str()) ); if (keyid) { return Token(keyid, str, sloc); } return Token(TK_Identifier, str, sloc); } // generic operators if (isOperatorChar(c)) { readOperator(c); StringRef str = copyStr(finishToken()); unsigned short keyid = static_cast<unsigned short>( lookupKeyword(str.c_str()) ); if (keyid) { return Token(keyid, str, sloc); } return Token(TK_Operator, str, sloc); } // numbers if (isDigit(c)) { if (c == '0' && lookChar(1) == 'x') { putChar('0'); skipChar(); putChar('x'); skipChar(); readHexInteger(); StringRef str = copyStr(finishToken()); return Token(TK_LitInteger, str, sloc); } readInteger(c); char c2 = lookChar(); if (c2 == '.') { readInteger(c2); c2 = lookChar(); if (c2 == 'e' || c2 == 'E') { if (!readFloatExp(c2)) signalLexicalError(); } StringRef str = copyStr(finishToken()); return Token(TK_LitFloat, str, sloc); } else if (c2 == 'e' || c2 == 'E') { if (!readFloatExp(c2)) signalLexicalError(); StringRef str = copyStr(finishToken()); return Token(TK_LitFloat, str, sloc); } else { StringRef str = copyStr(finishToken()); return Token(TK_LitInteger, str, sloc); } } // characters if (c == '\'') { if (!readCharacter()) return Token(TK_Error); StringRef str = copyStr(finishToken()); return Token(TK_LitCharacter, str, sloc); } // strings if (c == '\"') { if (!readString()) return Token(TK_Error); StringRef str = copyStr(finishToken()); return Token(TK_LitString, str, sloc); } // if we're out of buffer, put in an EOF token. if (c == 0 || stream_eof()) { return Token(TK_EOF, "", sloc); } // Can't get the next token -- signal an error and bail. signalLexicalError(); return Token(TK_Error, "", sloc); }
//Places many characters void putPhrase(char *string){ int i; for(i = 0; i < 16; i++){ putChar(string[i]); } }
void INFwfile::putShort(short n) { if (n == 0) { putChar('0'); return; } if (n < 0) { putChar('-'); n = -n; } if (n >= 10000) { putChar((n / 10000) + '0'); n %= 10000; putChar((n / 1000) + '0'); n %= 1000; putChar((n / 100) + '0'); n %= 100; putChar((n / 10) + '0'); n %= 10; } else if (n >= 1000) { putChar((n / 1000) + '0'); n %= 1000; putChar((n / 100) + '0'); n %= 100; putChar((n / 10) + '0'); n %= 10; } else if (n >= 100) { putChar((n / 100) + '0'); n %= 100; putChar((n / 10) + '0'); n %= 10; } else if (n >= 10) { putChar((n / 10) + '0'); n %= 10; } putChar(n + '0'); }
void _int_(12) isr_T3(void){ putChar('.'); IFS0bits.T3IF = 0; }
void Terminal::clearChar(size_t index) { putChar(0, index); }
void Terminal::putWord(const char *c, unsigned short index) { long unsigned int len = strlen(c); for (unsigned short i = 0; i < len; ++i) { putChar(c[i], index + i); } }
void Terminal::clearChar(size_t row, size_t col) { putChar(0, row, col); }
void Terminal::putChar(uint16_t c, size_t row, size_t col) { putChar(c, calcIndex(row, col)); }
int main(void) { SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);//1024hz = 15625 SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1); GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6); GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_3); GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); GPIOPinConfigure(GPIO_PB1_U1TX); GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_1); UARTConfigSetExpClk(b1, SysCtlClockGet(), 9600, UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE); UARTEnable(b1); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1); GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, (GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_1)); GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); frequency = SysCtlClockGet()/2; changeCursorUnderscore(); toggleLED(); //Clear Display clearDisplay(); //putPhrase("Hello World!"); //Timer Configuration TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC); TimerLoadSet(TIMER0_BASE, TIMER_A, frequency); TimerControlEvent(TIMER0_BASE, TIMER_A, TIMER_EVENT_POS_EDGE); TimerEnable(TIMER0_BASE, TIMER_A); //Timer Interrupt Enable TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); TimerIntRegister(TIMER0_BASE, TIMER_A, timer_interrupt); while(1){ if(flag = 1){ //Reset the line read code = 0; //Turn on the scan for a line if(counter == 0) GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_3, 0x8); if(counter == 1) GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, 0x10); if(counter == 2) GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_5, 0x20); if(counter == 3) GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6, 0x40); //Check which button on the line was pressed if(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_5) == 0x20) { code = 1; temp = log_code; } if(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_6) == 0x40) { code = 2; temp = log_code; } if(GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_7) == 0x80) { code = 3; temp = log_code; } //Turn off the scan for a line if(counter == 0) GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_3, 0x0); if(counter == 1) GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, 0x0); if(counter == 2) GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_5, 0x0); if(counter == 3) GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6, 0x0); //Check the next line on the next run and if overflows, reset //Calculate the index_code for the lookup table index_code = temp + code; key_char = lookup_table[index_code]; log_code = log_code + 4; if(log_code > 12){ log_code = 0; } counter++; if(counter > 3) counter = 0; if(key_char != 'x'){ //toggleLED(); putChar(key_char); //SysCtlDelay(100000); index_code = 0; } flag = 0; } } }
void putChar2TX(u8 data) { chkSumTX ^= data; putChar(&mTxRingBuf, data); }
int filebrowser(void* scrbuf, char* file, char* title) { char currentdir[FILENAME_MAX + 1]; char* filenames[1024]; char filenameinput[FILENAME_MAX + 1] = ""; char blockc = '\0'; int focus_filenameinput = 1; int num_files; int filescroll = 0; int fileselected = 0; int i; int inputpause = 0; if (get_last_doc(currentdir) != 0) { getcwd(currentdir, FILENAME_MAX + 1); } else { *(strrchr(currentdir, '/') + 1) = '\0'; } num_files = get_filenames(currentdir, filenames); if (num_files == -1) return 1; wait_no_key_pressed(); while (1) { //disp: clearScreen(scrbuf); filledRect(scrbuf, 0, TITLE_Y, SCREEN_WIDTH, TITLE_HEIGHT, 0); dispStringColor(scrbuf, 4, (TITLE_HEIGHT - CHAR_HEIGHT) / 2, title, WHITE_COLOR, 0); dispHorizLine(scrbuf, 0, DIR_Y + DIR_HEIGHT - 1, 320, 0); dispString(scrbuf, 4, DIR_Y + (DIR_HEIGHT - CHAR_HEIGHT) / 2, currentdir); dispHorizLine(scrbuf, 0, FILENAMEINPUT_Y, 320, 0); dispString(scrbuf, 4, FILENAMEINPUT_Y + (FILENAMEINPUT_HEIGHT - CHAR_HEIGHT) / 2, "Filename:"); dispString(scrbuf, 4 + 10 * CHAR_WIDTH, FILENAMEINPUT_Y + (FILENAMEINPUT_HEIGHT - CHAR_HEIGHT) / 2, filenameinput); if (focus_filenameinput)//if cursor is in the file name input field, disp an underline to show it putChar(scrbuf, 4 + (10 + strlen(filenameinput)) * CHAR_WIDTH, FILENAMEINPUT_Y + (FILENAMEINPUT_HEIGHT - CHAR_HEIGHT) / 2, '_'); for (i = filescroll; i < filescroll + FILES_SHOWN && i < num_files; i++) { //disp file symbol if (is_dir(filenames[i]) && strcmp(filenames[i], ".") && strcmp(filenames[i], "..")) putChar(scrbuf, CHAR_WIDTH * 2, DIRLIST_Y + (i - filescroll) * CHAR_HEIGHT, '\\'); //disp filename, filesize and selection if (i != fileselected || focus_filenameinput) { dispString(scrbuf, CHAR_WIDTH * 3, DIRLIST_Y + (i - filescroll) * CHAR_HEIGHT, filenames[i]); if (!is_dir(filenames[i])) { char size[16]; get_filesize(filenames[i], size); dispString(scrbuf, FILENAME_WIDTH, DIRLIST_Y + (i - filescroll) * CHAR_HEIGHT, size); } } else { filledRect(scrbuf, CHAR_WIDTH * 3, DIRLIST_Y + (i - filescroll) * CHAR_HEIGHT - 1, SCREEN_WIDTH - CHAR_WIDTH * 4, CHAR_HEIGHT + 2, MENU_SELECTION_COLOR); dispStringColor(scrbuf, CHAR_WIDTH * 3, DIRLIST_Y + (i - filescroll) * CHAR_HEIGHT, filenames[i], WHITE_COLOR, MENU_SELECTION_COLOR); if (!is_dir(filenames[i])) { char size[16]; get_filesize(filenames[i], size); dispStringColor(scrbuf, FILENAME_WIDTH, DIRLIST_Y + (i - filescroll) * CHAR_HEIGHT, size, WHITE_COLOR, MENU_SELECTION_COLOR); } } } showBuffer(scrbuf); //input if (!any_key_pressed()) inputpause = 0; else inputpause--; if (isKeyPressed(KEY_NSPIRE_ESC)) break; if (isKeyPressed(KEY_NSPIRE_TAB)) { focus_filenameinput = !focus_filenameinput; wait_no_key_pressed(); } if (!focus_filenameinput) { if (isKeyPressed(KEY_NSPIRE_ENTER) && (blockc != '\n' || inputpause <= 0)) { inputpause = INPUTPAUSE; blockc = '\n'; if (is_dir(filenames[fileselected])) { chdir(filenames[fileselected]); filescroll = 0; fileselected = 0; free_filenames(filenames); getcwd(currentdir, FILENAME_MAX + 1); num_files = get_filenames(currentdir, filenames); } else { strcpy(file, currentdir); strcat(file, filenames[fileselected]); free_filenames(filenames); printf("%s\n", file); return 0; } } else if (isKeyPressed(KEY_NSPIRE_UP) && (blockc != 0x1 || inputpause <= 0)) { inputpause = INPUTPAUSE; blockc = 0x1; fileselected--; if (fileselected < 0) { fileselected = num_files - 1; filescroll = num_files - FILES_SHOWN; if (filescroll < 0) filescroll = 0; } else if (fileselected - filescroll < 0) filescroll--; strcpy(filenameinput, filenames[fileselected]); } else if (isKeyPressed(KEY_NSPIRE_DOWN) && (blockc != 0x2 || inputpause <= 0)) { inputpause = INPUTPAUSE; blockc = 0x2; fileselected++; if (fileselected >= num_files) { fileselected = 0; filescroll = 0; } else if (fileselected - filescroll >= FILES_SHOWN) ++filescroll; strcpy(filenameinput, filenames[fileselected]); } } else { //focus_filenameinput char c = readc(); if (c == blockc && inputpause > 0) continue; if (c != '\0' && c != '\t' && c != '\n') { inputpause = INPUTPAUSE; blockc = c; if (c == '\b') { if (filenameinput[0] != '\0') filenameinput[strlen(filenameinput) - 1] = '\0'; } else { filenameinput[strlen(filenameinput)] = c; filenameinput[strlen(filenameinput) + 1] = '\0'; } } if (isKeyPressed(KEY_NSPIRE_UP) || isKeyPressed(KEY_NSPIRE_TAB)) { inputpause = INPUTPAUSE; focus_filenameinput = 0; } if (isKeyPressed(KEY_NSPIRE_ENTER)) { strcpy(file, currentdir); strcat(file, filenameinput); free_filenames(filenames); printf("%s\n", file); return 0; } } sleep(10); } free_filenames(filenames); return 1; }