uses pushing box to publish to google spreadsheets with a state machine instead of a while loop
Fork of GSM_PUSHING_BOX_STATE_MACHINE by
gsmqueue.cpp
- Committer:
- danilob
- Date:
- 2015-03-05
- Revision:
- 0:41904adca656
- Child:
- 1:c1458b739eb6
File content as of revision 0:41904adca656:
#include "gsmqueue.h" #include "mbed.h" /* queue.cpp * Contains functions to read from the DMA buffer in a queue fashion */ char buffer[BUFFER_LENGTH]; char* queueHead; //Initialize variables void queueInit() { //The buffer is initialized in init.cpp queueHead = QUEUETAIL; } //Find an occurrence of the given string in the buffer. //Only advance queueHead until a matching string is found. bool findInQueue(char* str, int strLen) { while (queueHead != QUEUETAIL) { //Does the character match the begin char? if (*queueHead == *str){ //Check the remaining characters char* sPos = str + 1; char * qPos = 0; for (qPos = incrementIndex(queueHead); qPos != QUEUETAIL; qPos = incrementIndex(qPos)){ //Compare the next char if (*qPos == *sPos) { //Increment index (prefix incrementation). If finished, return true. if (++sPos == str + strLen) return true; } else //Not equal, so exit for loop and try again at a different location break; } } //Increment queue index for next iteration queueHead = incrementIndex(queueHead); } //We never finished, so return false return false; } //Increment queue index by 1 char* incrementIndex(char* pointerToIncrement) { if((pointerToIncrement + 1) < (buffer + BUFFER_LENGTH)) return (pointerToIncrement + 1); else return buffer; } //clear queue void flushQueue() { queueHead = QUEUETAIL; } //print queue elements, (will help debug) void printQueue() { char* qPos = queueHead; while (qPos != QUEUETAIL) { //Print the current character pc.printf("%C",*qPos); //Increment index qPos = incrementIndex(qPos); } } //Parse through characters until first integer is found // int parseInt() { char* qPos = queueHead; while (qPos != QUEUETAIL) { //Print the current character pc.printf("%C",*qPos); //Increment index qPos = incrementIndex(qPos); } }