From 173e4648080fdf368552a1463d019c2d72aaf91a Mon Sep 17 00:00:00 2001 From: Alexander Junk Date: Mon, 13 Jul 2015 18:23:51 +0200 Subject: [PATCH] Merged berbox.cpp with main sketch --- beerbox.cpp | 258 ---------------------------------------------------- 1 file changed, 258 deletions(-) delete mode 100644 beerbox.cpp diff --git a/beerbox.cpp b/beerbox.cpp deleted file mode 100644 index ef30311..0000000 --- a/beerbox.cpp +++ /dev/null @@ -1,258 +0,0 @@ - -#include -#include -#include -#include "beerbox.h" -#include -#include - -//Beware! Only valid inside the function it has been set in! -char tmp_filename[FILE_NAME_LEN + FILE_EXTENSION_LEN + 2]; - - - -Beerbox* read_beerbox(Beerbox *box){ - - FILE *read = NULL; - int num_read = 0; - int index; - - char tmp[(DRINK_NAME_MAX_LENGTH + 1) * NUM_OF_DRINKS]; - - int i = 0; - - - read = SD.open("beerbox.config", FILE_READ); - if(read == NULL){ - - perror("error while reading!\n"); - printf("ABORT!\n\n"); - exit(-1); - - } - - for(i = 0 ; i < NUM_OF_DRINKS ; i++){ - - read_line_from_file(read, tmp, sizeof(tmp)); - - if(strlen(tmp)){ - sscanf(tmp, " drink number %d: %s",&index,box->drinks[i].name); - - read_line_from_file(read, tmp, sizeof(tmp)); - sscanf(tmp, " %*s %d ",&box->drinks[i].price); - - read_line_from_file(read, tmp, sizeof(tmp)); - sscanf(tmp, " %*s %d",&box->drinks[i].quantity); - }else{ - strcpy(box->drinks[i].name, "slot empty"); - box->drinks[i].price = -1; - box->drinks[i].quantity = -1; - } - - } - - printf("%d drinks read!\n\n", i); - - for(i = 0; (i < NUM_OF_DRINKS)&&(box->drinks[i].price != -1); i++){ - - printf("drink number %d: %s\nprice: %d\nquantity: %d\n\n",i+1,box->drinks[i].name,box->drinks[i].price,box->drinks[i].quantity); - - } - - if(i < NUM_OF_DRINKS)printf("Slots %d - %d are not in use!\n", i+1, NUM_OF_DRINKS); - - fclose(read); - return box; - -} - -Person read_person(Beerbox *box, char *filename){ - - Person aperson; - - FILE *read = NULL; - - int num_read = 0; - int index; - int tmp_int = 0; - - char tmp[(DRINK_NAME_MAX_LENGTH + 1) * NUM_OF_DRINKS]; - char tmp_drink_name[DRINK_NAME_MAX_LENGTH + 1]; - - int i = 0; - int j = 0; - - memset(tmp_filename, 0, sizeof(tmp_filename)); - - strcat(tmp_filename, filename); - strcat(tmp_filename, "."); - strcat(tmp_filename, FILE_EXTENSION); - - read = fopen(tmp_filename, "r"); - if(read == NULL){ - - perror("error while reading!\n"); - printf("ABORT!\n\n"); - exit(-1); - - } - - strcpy(aperson.file_name, filename); - - for(i = 0; i < NUM_OF_DRINKS; i++){ - aperson.drinks_taken[i] = -1; - } - - - read_line_from_file(read, tmp, sizeof(tmp)); - strcpy(aperson.name, tmp); - - read_line_from_file(read, tmp, sizeof(tmp)); - sscanf(tmp, " %*s %d", &aperson.rfid_uuid); - - read_line_from_file(read, tmp, sizeof(tmp)); - sscanf(tmp, " %*s %d", &aperson.finger_uuid); - - - j = 0; - while(read_line_from_file(read, tmp, sizeof(tmp)), strlen(tmp) > 0){ - - i = 0; - sscanf(tmp, " %*s %s", tmp_drink_name); - - for(i = 0;(i < NUM_OF_DRINKS)&&(strcmp(box->drinks[i].name, tmp_drink_name)); i++){ - //printf("It´s not drink No %d: %s\n", i+1, box->drinks[i].name ); - - } - - if(i == NUM_OF_DRINKS){ - //Is it in? - //printf("Drink \"%s\" does not exist in box!\n", tmp_drink_name); - }else{ - - read_line_from_file(read, tmp, sizeof(tmp)); - sscanf(tmp, " %*s %d", &aperson.drinks_taken[i]); - //printf(">>Quantity: %d\n", aperson.drinks_taken[i].quantity); - read_line_from_file(read, tmp, sizeof(tmp)); - //printf(">>Total: %d\n\n", aperson.drinks_taken[i].total); - } - - } - - - print_person(box, &aperson); - - update_pers_file(box, &aperson); - - fclose(read); - - return aperson; -} - -void print_person(Beerbox *box, Person *aperson){ - - int i = 0; - - memset(tmp_filename, 0, sizeof(tmp_filename)); - strcat(tmp_filename, aperson->file_name); - strcat(tmp_filename, "."); - strcat(tmp_filename, FILE_EXTENSION); - - printf("\nPerson is called \"%s\" and has the filename \"%s\".\n", aperson->name, tmp_filename); - printf("rfid_uuid: %d\n", aperson->rfid_uuid); - printf("finger_uuid: %d\n", aperson->finger_uuid); - - for(i = 0; i < NUM_OF_DRINKS; i++){ - - if(aperson->drinks_taken[i] != -1){ - - printf("\nDrink: %s\n", box->drinks[i].name); - printf("Consumed: %d\n", aperson->drinks_taken[i]); - printf("Total: %d.%02d Euro\n", aperson->drinks_taken[i]*box->drinks[i].price/100, (aperson->drinks_taken[i]*box->drinks[i].price)%100); - - } - - } - -} - -int update_pers_file(Beerbox *box, Person *aperson){ - FILE *write = NULL; - char *tmp = NULL; - //write = fopen() - int i = 0; - - memset(tmp_filename, 0, sizeof(tmp_filename)); - strcat(tmp_filename, aperson->file_name); - strcat(tmp_filename, "."); - strcat(tmp_filename, FILE_EXTENSION); - - write = fopen(tmp_filename, "w"); - if(write == NULL){ - perror("error while reading!\n"); - printf("ABORT!\n\n"); - exit(-1); - - } - - fprintf(write, "%s\n", aperson->name); - fprintf(write, "rfid_uuid: %d\n", aperson->rfid_uuid); - fprintf(write, "finger_uuid: %d\n", aperson->finger_uuid); - - for(i = 0; i < NUM_OF_DRINKS; i++){ - - if(aperson->drinks_taken[i] != -1){ - - fprintf(write, "\nDrink: %s\n", box->drinks[i].name); - fprintf(write, "Consumed: %d\n", aperson->drinks_taken[i]); - fprintf(write, "Total: %d\n\n", aperson->drinks_taken[i]*box->drinks[i].price); - - } - - } - - - fclose(write); - - return 0; - -} - -char* read_from_file_until(FILE *stream, char *str, int max_len, char until){ - - int i = 0; - int tmp_int = 0; - - memset(str, 0, max_len); - - for(i = 0; (tmp_int != until)&&(i < (max_len-1))&&(tmp_int != EOF); i++){ - tmp_int = fgetc(stream); - //printf("%c", tmp_int); - str[i] = tmp_int; - } - - - if(tmp_int == EOF){ - - //May occur more often as the function tries to read a certain number of drinks. - //printf("END OF FILE REACHED!\nABORT!!\n\n"); - - str[0] = 0; - return str; - } - - if(str[0] != '\n')str[i-1] = 0; - - - return str; -} - -char *read_line_from_file(FILE *stream, char *str, int max_len){ - - do{ - str = read_from_file_until(stream, str, max_len, '\n'); - }while((str[0] == '\n')); - - - return str; -}