124 lines
2.7 KiB
C
124 lines
2.7 KiB
C
#include "./database.h"
|
|
|
|
int openDb(sqlite3 *db)
|
|
{
|
|
|
|
int rc = sqlite3_open("robotgowest.db", &db);
|
|
|
|
if (rc != SQLITE_OK)
|
|
{
|
|
|
|
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
|
|
sqlite3_close(db);
|
|
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int initializeTrailsAndCaptorMetadataTables()
|
|
{
|
|
sqlite3 *db;
|
|
char *err_msg = 0;
|
|
int rc;
|
|
if (!openDb(db))
|
|
{
|
|
char *sql = "DROP TABLE IF EXISTS Trials;"
|
|
"DROP TABLE IF EXISTS CaptorMetadata;"
|
|
"CREATE TABLE Trials(Id INTEGER PRIMARY KEY AUTOINCREMENT, Position TEXT, Start INT, Frequency NUMBER, Duration INT);"
|
|
"CREATE TABLE CaptorMetadata(Id INTEGER PRIMARY KEY AUTOINCREMENT, CaptorNumber INT, TrialId INT, FOREIGN KEY (TrialId) REFERENCES Trials(Id));";
|
|
|
|
rc = sqlite3_prepare_v2(db, sql, 0, 0, &err_msg);
|
|
|
|
if (rc != SQLITE_OK)
|
|
{
|
|
|
|
fprintf(stderr, "SQL error: %s\n", err_msg);
|
|
|
|
sqlite3_free(err_msg);
|
|
sqlite3_close(db);
|
|
|
|
return 1;
|
|
}
|
|
sqlite3_close(db);
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int createCaptorDataTable(int trialId, int captorNumber)
|
|
{
|
|
sqlite3 *db;
|
|
char *err_msg = 0;
|
|
int rc;
|
|
|
|
// Create Table Name
|
|
char tableName[8];
|
|
strcpy(tableName, "T");
|
|
strcat(tableName, convertIntegerToChar(trialId));
|
|
strcat(tableName, "C");
|
|
strcat(tableName, convertIntegerToChar(captorNumber));
|
|
strcat(tableName, "Data");
|
|
|
|
if (!openDb(db))
|
|
{
|
|
char sql[101] = "CREATE TABLE ";
|
|
strcat(sql, tableName);
|
|
strcat(sql, " (Id INTEGER PRIMARY KEY AUTOINCREMENT, Lux NUMBER, Mean NUMBER , Power NUMBER);");
|
|
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
|
|
|
|
if (rc != SQLITE_OK)
|
|
{
|
|
printf("Error code : %i", rc);
|
|
fprintf(stderr, "SQL error: %s\n", err_msg);
|
|
|
|
sqlite3_free(err_msg);
|
|
sqlite3_close(db);
|
|
|
|
return 1;
|
|
}
|
|
sqlite3_close(db);
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief convert an interger N into a char*
|
|
*
|
|
* @param N
|
|
* @return char*
|
|
*/
|
|
char *convertIntegerToChar(int N)
|
|
{
|
|
// Count digits in number N
|
|
int m = N;
|
|
int digit = 0;
|
|
while (m)
|
|
{
|
|
digit++;
|
|
m /= 10;
|
|
}
|
|
char *arr;
|
|
char arr1[digit];
|
|
arr = (char *)malloc(digit * sizeof(char));
|
|
int index = 0;
|
|
while (N)
|
|
{
|
|
arr1[++index] = N % 10 + '0';
|
|
N /= 10;
|
|
}
|
|
int i;
|
|
for (i = 0; i < index; i++)
|
|
{
|
|
arr[i] = arr1[index - i];
|
|
}
|
|
arr[i] = '\0';
|
|
return (char *)arr;
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
initializeTrailsAndCaptorMetadataTables();
|
|
// createCaptorDataTable(1, 1);
|
|
} |