From d902e4b159a75a83e3735de99daa21a768f5c9a0 Mon Sep 17 00:00:00 2001 From: Alan Johnston Date: Thu, 4 Oct 2018 07:16:06 -0400 Subject: [PATCH] removed other directories --- piglatin/.cproject | 116 ----- piglatin/.gitignore | 1 - piglatin/.project | 26 -- piglatin/.settings/language.settings.xml | 25 - .../org.eclipse.cdt.managedbuilder.core.prefs | 11 - piglatin/piglatin_main.c | 426 ------------------ 6 files changed, 605 deletions(-) delete mode 100644 piglatin/.cproject delete mode 100644 piglatin/.gitignore delete mode 100644 piglatin/.project delete mode 100644 piglatin/.settings/language.settings.xml delete mode 100644 piglatin/.settings/org.eclipse.cdt.managedbuilder.core.prefs delete mode 100644 piglatin/piglatin_main.c diff --git a/piglatin/.cproject b/piglatin/.cproject deleted file mode 100644 index 1f75d239..00000000 --- a/piglatin/.cproject +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/piglatin/.gitignore b/piglatin/.gitignore deleted file mode 100644 index 3df573fe..00000000 --- a/piglatin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/Debug/ diff --git a/piglatin/.project b/piglatin/.project deleted file mode 100644 index e75a103b..00000000 --- a/piglatin/.project +++ /dev/null @@ -1,26 +0,0 @@ - - - piglatin - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/piglatin/.settings/language.settings.xml b/piglatin/.settings/language.settings.xml deleted file mode 100644 index 74787ed4..00000000 --- a/piglatin/.settings/language.settings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/piglatin/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/piglatin/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index f8db9256..00000000 --- a/piglatin/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/CPATH/delimiter=; -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/CPATH/operation=remove -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/C_INCLUDE_PATH/delimiter=; -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/C_INCLUDE_PATH/operation=remove -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/append=true -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/appendContributed=true -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/LIBRARY_PATH/delimiter=; -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/LIBRARY_PATH/operation=remove -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/append=true -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.968018752/appendContributed=true diff --git a/piglatin/piglatin_main.c b/piglatin/piglatin_main.c deleted file mode 100644 index d9cc24ac..00000000 --- a/piglatin/piglatin_main.c +++ /dev/null @@ -1,426 +0,0 @@ -// Copyright (c) 2018 Brandenburg Tech, LLC -// All right reserved. -// -// THIS SOFTWARE IS PROVIDED BY BRANDENBURG TECH, LLC AND CONTRIBUTORS -// ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BRANDENBURT TECH, LLC -// AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define FALSE (0) -#define TRUE (1) - -#define MAX_MESSAGE_LENGTH (197) -#define MAX_INPUT_LENGTH (1024) -#define MAX_WORD_LENGTH (192) - -extern uint8_t axradio_rxbuffer[]; - -void receive(void); -void transmit(uint8_t *word, size_t length); -void toPigLatin(uint8_t *input); -void readWord(uint8_t *word, unsigned int wordLength, uint8_t **input); -void wordToPigLatin(uint8_t *word, unsigned int wordLength); -void wordToPigLatinVowel(uint8_t *word, unsigned int srcLoc, uint8_t workWord[], - unsigned int destLoc, unsigned int wordLength); -void wordToPigLatinConsonant(uint8_t firstLetter, uint8_t *word, unsigned int srcLoc, - uint8_t *workWord, unsigned int destLoc, unsigned int wordLength); - -enum RadioState {UnknownState, RxState, TxState}; -enum RadioState currentState = UnknownState; - -enum ReceiveState {WaitingForNewPacket, WaitingForPacketCounter1, - WaitingForPacketCounter2, WaitingForMessageLength1, - WaitingForMessageLength2, WaitingForMessage, - WaitingForChecksum1, WaitingForChecksum2}; - -int main(void) -{ - uint8_t retVal; - - // Configure SPI bus to AX5043 - setSpiChannel(SPI_CHANNEL); - setSpiSpeed(SPI_SPEED); - initializeSpi(); - - // Initialize the AX5043 - retVal = axradio_init(); - if (retVal == AXRADIO_ERR_NOCHIP) { - fprintf(stderr, "ERROR: No AX5043 RF chip found\n"); - exit(EXIT_FAILURE); - } - if (retVal != AXRADIO_ERR_NOERROR) { - fprintf(stderr, "ERROR: Unable to initialize AX5043\n"); - exit(EXIT_FAILURE); - } - - printf("INFO: Found and initialized AX5043\n"); - - printf("This utility receives text from another transmitter,\n"); - printf("translates it to pig Latin, then transmits the translation\n"); - - receive(); - - return 0; -} - -void receive(void) { - uint8_t retVal; - uint16_t packetNumber; - uint16_t messageLength; - uint16_t checksum; - uint8_t ch; - - // Allocate space for the translation. I'm choosing to use an array of - // "reasonable" length - uint8_t input[MAX_INPUT_LENGTH]; - uint16_t currentLetter = 0; - input[currentLetter] = '\0'; - - enum ReceiveState currentReceiveState = WaitingForNewPacket; - - for (;;) { - // Enter receive mode only if not already in receive mode - if (currentState != RxState) { - retVal = mode_rx(); - if (retVal != AXRADIO_ERR_NOERROR) { - fprintf(stderr, "ERROR: Unable to enter RX mode\n"); - exit(EXIT_FAILURE); - } - currentState = RxState; - } - - retVal = receive_packet(); - if (retVal > 0) { - uint8_t counter = 0; - while (retVal-- > 0) { - switch(currentReceiveState) { - case WaitingForNewPacket: - printf("Pkt Len: %d\n", (int)axradio_rxbuffer[counter++]); - currentReceiveState = WaitingForPacketCounter1; - break; - case WaitingForPacketCounter1: - packetNumber = (int)axradio_rxbuffer[counter++]; - currentReceiveState = WaitingForPacketCounter2; - break; - case WaitingForPacketCounter2: - packetNumber |= (uint16_t)(axradio_rxbuffer[counter++] << 8); - printf("Pkt Num: %d\n", (int)packetNumber); - currentReceiveState = WaitingForMessageLength1; - break; - case WaitingForMessageLength1: - messageLength = (int)axradio_rxbuffer[counter++]; - currentReceiveState = WaitingForMessageLength2; - break; - case WaitingForMessageLength2: - messageLength |= (uint16_t)(axradio_rxbuffer[counter++] << 8); - printf("Msg Len: %d\n", (int)messageLength); - currentReceiveState = WaitingForMessage; - - currentLetter = 0; - input[currentLetter] = '\0'; - printf("receive: "); - - break; - case WaitingForMessage: - ch = axradio_rxbuffer[counter++]; - - input[currentLetter] = ch; - currentLetter++; - input[currentLetter] = '\0'; - - if (ch != '\n') { - printf("%c", ch); - } - else { - //printf(" "); - printf("\n"); - - toPigLatin(input); - - currentReceiveState = WaitingForChecksum1; - } - break; - case WaitingForChecksum1: - checksum = (int)axradio_rxbuffer[counter++]; - currentReceiveState = WaitingForChecksum2; - break; - case WaitingForChecksum2: - checksum |= (uint16_t)(axradio_rxbuffer[counter++] << 8); - printf("Chksum: %d\n", (int)checksum); - currentReceiveState = WaitingForNewPacket; - break; - default: - fprintf(stderr, "ERROR: Unknown state in receive state machine\n"); - exit(EXIT_FAILURE); - break; - } - } - } - - usleep(25000); - } -} - -void transmit(uint8_t *word, size_t length) { - uint8_t retVal; - - // allocate space for the buffer - static uint8_t packet[MAX_MESSAGE_LENGTH + 1]; - static uint16_t pkt_counter = 0; - - ++pkt_counter; - - // Calculate the number of reserved bytes at the beginning of the packet - size_t reserved_space = 0; - - // if transmitting a packet counter, reserve two bytes - if (framing_insert_counter) { - reserved_space += 2; - } - - // reserve two bytes for the overall length of the packet including the - // packet counter, if present, and the field containing the length - reserved_space += 2; - - size_t msg_length = 0; - - // get a message to transmit. - //msg_length = get_message(&packet[reserved_space], (MAX_MESSAGE_LENGTH + 1) - reserved_space); - msg_length = - length <= (MAX_MESSAGE_LENGTH + 1) - reserved_space ? length : (MAX_MESSAGE_LENGTH + 1) - reserved_space; - strncpy((char*)&packet[reserved_space], (char*)word, msg_length); - - // if message consists only of a newline, terminate - if (msg_length <= 1) { - return; - } - - if (framing_insert_counter) { - packet[framing_counter_pos] = (uint8_t)(pkt_counter & 0xFF); - packet[framing_counter_pos+1] = (uint8_t)((pkt_counter>>8) & 0xFF); - - // include the message length - packet[framing_counter_pos+2] = (uint8_t)(msg_length & 0xFF); - packet[framing_counter_pos+3] = (uint8_t)((msg_length>>8) & 0xFF); - } - else { // only include the message length - packet[framing_counter_pos] = (uint8_t)(msg_length & 0xFF); - packet[framing_counter_pos+1] = (uint8_t)((msg_length>>8) & 0xFF); - } - - // Enter transmit mode only if not already in receive mode - if (currentState != TxState) { - retVal = mode_tx(); - if (retVal != AXRADIO_ERR_NOERROR) { - fprintf(stderr, "ERROR: Unable to enter TX mode\n"); - exit(EXIT_FAILURE); - } - currentState = TxState; - } - - //printf("INFO: Sending another packet...\n"); - //printf("DEBUG: msg_length = %d\n", msg_length); - //printf("DEBUG: reserved_space = %d\n", reserved_space); - retVal = transmit_packet(&remoteaddr_tx, packet, (uint16_t)(msg_length + reserved_space)); - if (retVal != AXRADIO_ERR_NOERROR) { - fprintf(stderr, "ERROR: Unable to transmit a packet\n"); - exit(EXIT_FAILURE); - } - usleep(100000); -} - -void toPigLatin(uint8_t *input) { - //printf("input: %s\n", input); - - // Allocate space for a word. I'm choosing to use an array of - // "reasonable" length - uint8_t word[MAX_WORD_LENGTH]; - word[0] = '\0'; - - readWord(word, MAX_WORD_LENGTH, &input); - - //printf("word: %s\n", word); - - // While there are still words... - while (strlen((char*)word) > 0) { - // convert the word to pig latin - wordToPigLatin(word, MAX_WORD_LENGTH); - strcat((char*)word, "\n"); - printf("%s", word); - transmit(word, strlen((char*)word)); - - // get the next word - readWord(word, MAX_WORD_LENGTH, &input); - - //printf("word: %s\n", word); - } - -} - -void readWord(uint8_t *word, unsigned int wordLength, uint8_t **input) { - // initialize the word to zero length - unsigned int currentLoc = 0; - - if (wordLength == 0) { - printf("ERROR: Internal error. No buffer allocated for word\n"); - return; - } - - word[currentLoc] = '\0'; - - // Examine the first character. - uint8_t ch; - ch = **input; - (*input)++; - - // If it is a newline, we have no more words, so - // read and throw away the newline. That's all we need - // to do - if (ch == '\n') { - // do nothing - } - else { - int foundNonWhiteSpace = FALSE; - - // loop until we find our first non-white space - // character and then the first white-space character - // after that. That means we found a word and - // the end of that word - while (((!foundNonWhiteSpace || !isspace(ch))) && ch != '\n') { - if (wordLength == 0) { - printf("WARNING: Word is too long for buffer. Breaking up the word.\n"); - return; - } - - if (!isspace(ch)) { - foundNonWhiteSpace = TRUE; - } - - word[currentLoc++] = ch; - word[currentLoc] = '\0'; - - // Get the next letter - ch = **input; - (*input)++; - } - - // Push the white space character back into the input buffer - (*input)--; - } -} - -void wordToPigLatin(uint8_t *word, unsigned int wordLength) { - // allocate working space for a word - uint8_t *workWord = malloc(wordLength); - workWord[0] = '\0'; - - unsigned int srcLoc = 0; - unsigned int destLoc = 0; - - // copy over any leading whitespace - while(word[srcLoc] && srcLoc < wordLength && isspace(word[srcLoc])) { - workWord[destLoc++] = word[srcLoc++]; - workWord[destLoc] = '\0'; - } - - // Look at the next character - uint8_t ch = word[srcLoc]; - // If it is a vowel... - if (tolower(ch) == 'a' || tolower(ch) == 'e' || tolower(ch) == 'i' || - tolower(ch) == 'o' || tolower(ch) == 'u') { - // process a word beginning with a vowel - wordToPigLatinVowel(word, srcLoc, workWord, destLoc, wordLength); - } - // If it is a consonant... - else if (isalpha(ch)) { - // save that letter - uint8_t firstLetter = ch; - srcLoc++; - - // Take care of the case of a one letter word - if (!word[srcLoc]) { - // Save the first character, unchanged to the destination - workWord[destLoc++] = ch; - workWord[destLoc] = '\0'; - - // Append "ay" - strcat((char*)workWord, "ay"); - } - // else we have more than one letter - else { - // Process a word beginning with a consonant - wordToPigLatinConsonant(firstLetter, word, srcLoc, workWord, - destLoc, wordLength); - } - } - // else just copy over the word - else { - strcat((char*)workWord, (char*)&word[srcLoc]); - } - - // Copy the workspace into our word - strncpy((char*)word, (char*)workWord, wordLength); - // Ensure it is null-terminated under all circumstances - if (strlen((char*)workWord) < wordLength - 1) { - word[strlen((char*)workWord)] = '\0'; - } - else { - word[wordLength - 1] = '\0'; - } - - // Remember to free up the temporary workspace - free(workWord); - -} - -void wordToPigLatinVowel(uint8_t *word, unsigned int srcLoc, uint8_t workWord[], - unsigned int destLoc, unsigned int wordLength) { - // copy over the word - while (word[srcLoc] && srcLoc < wordLength) { - workWord[destLoc++] = word[srcLoc++]; - workWord[destLoc] = '\0'; - } - // append "way" - strcat((char *)workWord, "way"); -} - -void wordToPigLatinConsonant(uint8_t firstLetter, uint8_t *word, unsigned int srcLoc, - uint8_t *workWord, unsigned int destLoc, unsigned int wordLength) { - // Copy over the next letter, properly capitalizing it - if (isupper(firstLetter)) { - workWord[destLoc++] = (uint8_t)toupper(word[srcLoc++]); - workWord[destLoc] = '\0'; - } else { - workWord[destLoc++] = (uint8_t)tolower(word[srcLoc++]); - workWord[destLoc] = '\0'; - } - while (word[srcLoc] && srcLoc < wordLength) { - workWord[destLoc++] = word[srcLoc++]; - workWord[destLoc] = '\0'; - } - // Append what was previously the first letter - workWord[destLoc++] = (uint8_t)tolower(firstLetter); - workWord[destLoc] = '\0'; - // Append "ay" - strcat((char*)workWord, "ay"); -}