void NFC_APP_Tasks ( void ) { char inChar; while(1) { while(!xQueueReceive(nfc_appData.inQ, &inChar, portMAX_DELAY)); sendDebugMessage("CHECK NFC\0"); checkNFC(); sendDebugMessage("WAIT ON ACK\0"); while(!getACK()) { sendDebugMessage("SEND NACK\0"); sendNACK(); } sendDebugMessage("GOT ACK\0"); if (getCheckNFC()) { sendDebugMessage("TOKEN FOUND\0"); addToUartTXQ(tokenFound()); } else { sendDebugMessage("NO TOKEN\0"); } } }
void XmlTokenizer::processCharacter(char c) { // increment line count if this // is a newline character if(c == '\n') ++m_line; switch(m_state) { default: case STATE_SEARCHING_FOR_TOKEN: // skip whitespace characters if(isWhitespace(c)) break; // start of tag found if(c == '<') { m_state = STATE_TAG_START_FOUND; break; } // start of content found m_state = STATE_TOKENIZING_CONTENT; m_data = c; break; case STATE_COMMENT0: case STATE_COMMENT1: // expecting "-" if(c == '-') { if(m_state == STATE_COMMENT0) { m_state = STATE_COMMENT1; } else { m_state = STATE_COMMENT2; // STATE_COMMENT2 requires m_data to be 3 characters long m_data = " "; } break; } throw XmlException(m_line, "XmlTokenizer::processCharacter(): Invalid comment format - expected \"-\""); case STATE_COMMENT2: m_data = (m_data + c).substr(1); // end of comment if(m_data == "-->") { m_state = STATE_SEARCHING_FOR_TOKEN; m_data = ""; } break; case STATE_TAG_START_FOUND: // start of comment if(c == '!') { m_state = STATE_COMMENT0; break; } // start of another tag type - emit the "<" // token and go to the STATE_TOKENIZING_TAG case m_state = STATE_TOKENIZING_TAG; tokenFound("<"); case STATE_TOKENIZING_TAG: // skip whitespace characters if(isWhitespace(c)) break; // single character tokens if(c == '/' || c == '!' || c == '?' || c == '=') { m_data = c; tokenFound(m_data.c_str()); break; } // end of tag found if(c == '>') { m_state = STATE_SEARCHING_FOR_TOKEN; tokenFound(">"); break; } // start of quoted identifier if(c == '"' || c == '\'') { m_state = STATE_TOKENIZING_QUOTED_IDENTIFIER; m_data.clear(); m_quoteChar = c; break; } // start of non-quoted identifier m_state = STATE_TOKENIZING_IDENTIFIER; m_data = c; break; case STATE_TOKENIZING_QUOTED_IDENTIFIER: // end of quoted identifier if(c == m_quoteChar) { m_state = STATE_TOKENIZING_TAG; tokenFound(m_data.c_str(), true); break; } m_data += c; break; case STATE_TOKENIZING_IDENTIFIER: // whitespace ends identifier if(isWhitespace(c)) { m_state = STATE_TOKENIZING_TAG; tokenFound(m_data.c_str()); break; } // single character tokens if(c == '/' || c == '!' || c == '?' || c == '=') { m_state = STATE_TOKENIZING_TAG; tokenFound(m_data.c_str()); m_data = c; tokenFound(m_data.c_str()); break; } // end of tag found if(c == '>') { m_state = STATE_SEARCHING_FOR_TOKEN; tokenFound(m_data.c_str()); tokenFound(">"); break; } m_data += c; break; case STATE_TOKENIZING_CONTENT: // start of tag found if(c == '<') { m_state = STATE_TOKENIZING_TAG; tokenFound(trimString(m_data).c_str()); tokenFound("<"); break; } m_data += c; break; } }