keuzeproject

Dependencies:   mbed HTTPServer RemoteIR mbed-rtos SDFileSystem EthernetInterface mbed-rpc

db.cpp

Committer:
sarvagyavaish
Date:
2013-12-02
Revision:
3:a3b4d032f48f
Child:
10:da52ff0b93c0

File content as of revision 3:a3b4d032f48f:

#include "mbed.h"
#include "db.h"
#include "SDFileSystem.h"

void db_insert_tuple(char *new_name, char *new_code)
{

    char tuple_code[128];
    char tuple_name[128];
    char tuple_id[128];
    int id = 0;

    // create file if it does not exist
    FILE *ftemp = fopen("/sd/SmartRemote/db.txt", "a");
    fclose(ftemp);

    // read file to get last id
    FILE *fdb = fopen("/sd/SmartRemote/db.txt", "r");
    while ( !feof(fdb) ) {
        db_get_tuple(fdb, tuple_id, tuple_name, tuple_code);
        if (strlen(tuple_name) != 0) {
            printf("Tuple: |%s| \t |%s| \t |%s|\n", tuple_id, tuple_name, tuple_code);
            id = atoi(tuple_id);
        }
    }
    fclose(fdb);

    // id of new tuple
    id++;
    sprintf(tuple_id, "%d", id);

    // write new tuple to file
    char new_row[128];
    FILE *fwrite = fopen("/sd/SmartRemote/db.txt", "a");

    if (fwrite == NULL) {                                                   // if error
        printf("Could not open file for write\n");
    }
    sprintf(new_row, "%s\n%s\n%s\n", tuple_id, new_name, new_code);         // create new row

    fprintf(fwrite, new_row);                                               // write to file
    fclose(fwrite);                                                         // close file

    printf("Record Added: %s\n", new_row);
}

void db_print_all(FILE *fread)
{
    char c;
    while ( !feof(fread) ) {
        c=fgetc(fread);
        printf("%c", c);
    }
}

void db_find_tuple(FILE *fread, int id_to_find, char *tuple_name, char *tuple_code)
{
    char tuple_id[128];
    int id;

    while ( !feof(fread) ) {
        db_get_tuple(fread, tuple_id, tuple_name, tuple_code);
        if (strlen(tuple_name) != 0) {
            id = atoi(tuple_id);
            if (id == id_to_find) {
                break;
            }
        }
        else {
            sprintf(tuple_id, "%d", 0);
            sprintf(tuple_id, "%s", "");
            sprintf(tuple_id, "%s", "");
        }
    }

    printf("Tuple Found: |%s| \t |%s| \t |%s|\n", tuple_id, tuple_name, tuple_code);

}

void db_get_tuple(FILE *fread, char *id_str, char *name_str, char *code_str)
{

    unsigned char c;
    int index;

    // read ID;
    index = 0;
    do {
        c = fgetc(fread);
        id_str[index] = c;
        index++;
    } while (c != '\n' &&  !feof(fread) );
    id_str[index-1] = 0;

    // read NAME;
    index = 0;
    do {
        c = fgetc(fread);
        name_str[index] = c;
        index++;
    } while (c != '\n' &&  !feof(fread) );
    name_str[index-1] = 0;

    // read CODE
    index = 0;
    do {
        c = fgetc(fread);
        code_str[index] = c;
        index++;
    } while (c != '\n' &&  !feof(fread) );
    code_str[index-1] = 0;
}