add database script in c for creation and init
This commit is contained in:
parent
2bd028910f
commit
2443e553c8
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 2.6)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
project(Traitement-signal-plantes C)
|
project(Traitement-signal-plantes C)
|
||||||
|
|
||||||
include(CTest)
|
include(CTest)
|
||||||
|
@ -10,16 +10,21 @@ file(MAKE_DIRECTORY Executable)
|
||||||
|
|
||||||
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY Executable) #Set Executable directory as default exectutable file location
|
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY Executable) #Set Executable directory as default exectutable file location
|
||||||
|
|
||||||
add_executable(exect fileGestion.c getArray.c average.c growthRate.c power.c queue.c simulateFlux.c main.c)
|
add_executable(exect fileGestion.c getArray.c average.c growthRate.c power.c queue.c simulateFlux.c database.c main.c)
|
||||||
# add_executable(exect main.c simulateFlux.c queue.c power.c growthRate.c average.c getArray.c fileGestion.c)
|
# add_executable(exect main.c simulateFlux.c queue.c power.c growthRate.c average.c getArray.c fileGestion.c)
|
||||||
|
|
||||||
|
find_package (SQLite3)
|
||||||
|
include_directories(${SQLite3_INCLUDE_DIRS})
|
||||||
|
target_link_libraries (exect ${SQLite3_LIBRARIES} m)
|
||||||
|
|
||||||
|
|
||||||
find_package(Threads)
|
find_package(Threads)
|
||||||
target_link_libraries(exect ${CMAKE_THREAD_LIBS_INIT} m)
|
target_link_libraries(exect ${CMAKE_THREAD_LIBS_INIT} m)
|
||||||
|
|
||||||
set(CTEST_MEMORYCHECK_TYPE "AddressSanitizer")
|
set(CTEST_MEMORYCHECK_TYPE "AddressSanitizer")
|
||||||
set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS "verbosity=1:symbolize=1:abort_on_error=1:detect_leaks=1")
|
set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS "verbosity=1:symbolize=1:abort_on_error=1:detect_leaks=1")
|
||||||
|
|
||||||
add_executable(ctest fileGestion.c getArray.c average.c growthRate.c queue.c simulateFlux.c ctest.c)
|
add_executable(ctest fileGestion.c getArray.c average.c growthRate.c queue.c simulateFlux.c database.c ctest.c)
|
||||||
target_link_libraries(ctest ${CMAKE_THREAD_LIBS_INIT} m)
|
target_link_libraries(ctest ${CMAKE_THREAD_LIBS_INIT} m)
|
||||||
|
|
||||||
add_test(test_queueCreateEmpty ./ctest queueCreateEmpty)
|
add_test(test_queueCreateEmpty ./ctest queueCreateEmpty)
|
||||||
|
|
11
Code-C/Include/database.h
Normal file
11
Code-C/Include/database.h
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#include <sqlite3.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
int createDb();
|
||||||
|
int initiaizeNewTrial(char *position, double frequency, bool *captorOneHot);
|
||||||
|
int initiaizeNewTrial(char *position, double frequency, bool *captorOneHot);
|
37
Code-C/cmake/FindSQLite3.cmake
Normal file
37
Code-C/cmake/FindSQLite3.cmake
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Copyright (C) 2007-2009 LuaDist.
|
||||||
|
# Created by Peter Kapec <kapecp@gmail.com>
|
||||||
|
# Redistribution and use of this file is allowed according to the terms of the MIT license.
|
||||||
|
# For details see the COPYRIGHT file distributed with LuaDist.
|
||||||
|
# Note:
|
||||||
|
# Searching headers and libraries is very simple and is NOT as powerful as scripts
|
||||||
|
# distributed with CMake, because LuaDist defines directories to search for.
|
||||||
|
# Everyone is encouraged to contact the author with improvements. Maybe this file
|
||||||
|
# becomes part of CMake distribution sometimes.
|
||||||
|
|
||||||
|
# - Find sqlite3
|
||||||
|
# Find the native SQLITE3 headers and libraries.
|
||||||
|
#
|
||||||
|
# SQLITE3_INCLUDE_DIRS - where to find sqlite3.h, etc.
|
||||||
|
# SQLITE3_LIBRARIES - List of libraries when using sqlite.
|
||||||
|
# SQLITE3_FOUND - True if sqlite found.
|
||||||
|
|
||||||
|
# Look for the header file.
|
||||||
|
FIND_PATH(SQLITE3_INCLUDE_DIR NAMES sqlite3.h)
|
||||||
|
|
||||||
|
# Look for the library.
|
||||||
|
FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite)
|
||||||
|
|
||||||
|
# Handle the QUIETLY and REQUIRED arguments and set SQLITE3_FOUND to TRUE if all listed variables are TRUE.
|
||||||
|
INCLUDE(FindPackageHandleStandardArgs)
|
||||||
|
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SQLITE3 DEFAULT_MSG SQLITE3_LIBRARY SQLITE3_INCLUDE_DIR)
|
||||||
|
|
||||||
|
# Copy the results to the output variables.
|
||||||
|
IF(SQLITE3_FOUND)
|
||||||
|
SET(SQLITE3_LIBRARIES ${SQLITE3_LIBRARY})
|
||||||
|
SET(SQLITE3_INCLUDE_DIRS ${SQLITE3_INCLUDE_DIR})
|
||||||
|
ELSE(SQLITE3_FOUND)
|
||||||
|
SET(SQLITE3_LIBRARIES)
|
||||||
|
SET(SQLITE3_INCLUDE_DIRS)
|
||||||
|
ENDIF(SQLITE3_FOUND)
|
||||||
|
|
||||||
|
MARK_AS_ADVANCED(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES)
|
|
@ -1,9 +1,9 @@
|
||||||
#include "./database.h"
|
#include "./Include/simulateFlux.h"
|
||||||
|
#include "./Include/database.h"
|
||||||
|
|
||||||
int initializeTrailsTable()
|
int initializeTrialsTable()
|
||||||
{
|
{
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
char *err_msg;
|
|
||||||
int rc;
|
int rc;
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
|
|
||||||
|
@ -18,12 +18,12 @@ int initializeTrailsTable()
|
||||||
rc = sqlite3_step(stmt);
|
rc = sqlite3_step(stmt);
|
||||||
rc = sqlite3_finalize(stmt);
|
rc = sqlite3_finalize(stmt);
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int initializeCaptorMetadataTable()
|
int initializeCaptorMetadataTable()
|
||||||
{
|
{
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
char *err_msg;
|
|
||||||
int rc;
|
int rc;
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ int initializeCaptorMetadataTable()
|
||||||
rc = sqlite3_step(stmt);
|
rc = sqlite3_step(stmt);
|
||||||
rc = sqlite3_finalize(stmt);
|
rc = sqlite3_finalize(stmt);
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *generateDataTableName(int trialId, int captorNumber)
|
char *generateDataTableName(int trialId, int captorNumber)
|
||||||
|
@ -56,7 +57,6 @@ char *generateDataTableName(int trialId, int captorNumber)
|
||||||
int createCaptorDataTable(int trialId, int captorNumber)
|
int createCaptorDataTable(int trialId, int captorNumber)
|
||||||
{
|
{
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
char *err_msg;
|
|
||||||
int rc;
|
int rc;
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
|
|
||||||
|
@ -81,49 +81,13 @@ int createCaptorDataTable(int trialId, int captorNumber)
|
||||||
return 0;
|
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 insertTrailElement(char *position, int start, double frequency)
|
int insertTrailElement(char *position, int start, double frequency)
|
||||||
{
|
{
|
||||||
|
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
|
|
||||||
char *err_msg;
|
|
||||||
int rc;
|
int rc;
|
||||||
int idx;
|
|
||||||
|
|
||||||
rc = sqlite3_open("robotgowest.db", &db);
|
rc = sqlite3_open("robotgowest.db", &db);
|
||||||
|
|
||||||
|
@ -140,6 +104,7 @@ int insertTrailElement(char *position, int start, double frequency)
|
||||||
rc = sqlite3_step(stmt);
|
rc = sqlite3_step(stmt);
|
||||||
rc = sqlite3_finalize(stmt);
|
rc = sqlite3_finalize(stmt);
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int updateTrailElement(int id, char *position, int start, double frequency)
|
int updateTrailElement(int id, char *position, int start, double frequency)
|
||||||
|
@ -148,9 +113,7 @@ int updateTrailElement(int id, char *position, int start, double frequency)
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
|
|
||||||
char *err_msg;
|
|
||||||
int rc;
|
int rc;
|
||||||
int idx;
|
|
||||||
|
|
||||||
rc = sqlite3_open("robotgowest.db", &db);
|
rc = sqlite3_open("robotgowest.db", &db);
|
||||||
|
|
||||||
|
@ -169,6 +132,7 @@ int updateTrailElement(int id, char *position, int start, double frequency)
|
||||||
rc = sqlite3_step(stmt);
|
rc = sqlite3_step(stmt);
|
||||||
rc = sqlite3_finalize(stmt);
|
rc = sqlite3_finalize(stmt);
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int insertCaptorMetadataElement(int captorNumber, int trialId)
|
int insertCaptorMetadataElement(int captorNumber, int trialId)
|
||||||
|
@ -177,9 +141,7 @@ int insertCaptorMetadataElement(int captorNumber, int trialId)
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
|
|
||||||
char *err_msg;
|
|
||||||
int rc;
|
int rc;
|
||||||
int idx;
|
|
||||||
|
|
||||||
rc = sqlite3_open("robotgowest.db", &db);
|
rc = sqlite3_open("robotgowest.db", &db);
|
||||||
|
|
||||||
|
@ -193,7 +155,9 @@ int insertCaptorMetadataElement(int captorNumber, int trialId)
|
||||||
|
|
||||||
rc = sqlite3_step(stmt);
|
rc = sqlite3_step(stmt);
|
||||||
rc = sqlite3_finalize(stmt);
|
rc = sqlite3_finalize(stmt);
|
||||||
|
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int insertCaptorDataElement(int trialId, int captorNumber, double lux, double mean, double power)
|
int insertCaptorDataElement(int trialId, int captorNumber, double lux, double mean, double power)
|
||||||
|
@ -204,16 +168,13 @@ int insertCaptorDataElement(int trialId, int captorNumber, double lux, double me
|
||||||
sqlite3 *db;
|
sqlite3 *db;
|
||||||
sqlite3_stmt *stmt;
|
sqlite3_stmt *stmt;
|
||||||
|
|
||||||
char *err_msg;
|
|
||||||
int rc;
|
int rc;
|
||||||
int idx;
|
|
||||||
|
|
||||||
rc = sqlite3_open("robotgowest.db", &db);
|
rc = sqlite3_open("robotgowest.db", &db);
|
||||||
|
|
||||||
char sql[70] = "INSERT INTO ";
|
char sql[70] = "INSERT INTO ";
|
||||||
strcat(sql, tableName);
|
strcat(sql, tableName);
|
||||||
strcat(sql, "(Lux,Mean,Power) VALUES ( :lux , :mean , :power)");
|
strcat(sql, "(Lux,Mean,Power) VALUES ( :lux , :mean , :power)");
|
||||||
printf(sql);
|
|
||||||
|
|
||||||
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
|
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
|
||||||
if (rc != SQLITE_OK)
|
if (rc != SQLITE_OK)
|
||||||
|
@ -226,19 +187,62 @@ int insertCaptorDataElement(int trialId, int captorNumber, double lux, double me
|
||||||
rc = sqlite3_step(stmt);
|
rc = sqlite3_step(stmt);
|
||||||
rc = sqlite3_finalize(stmt);
|
rc = sqlite3_finalize(stmt);
|
||||||
sqlite3_close(db);
|
sqlite3_close(db);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(void)
|
int createDb()
|
||||||
{
|
{
|
||||||
sqlite3_initialize();
|
char *dbPosition = "./robotgowest.db";
|
||||||
|
if (access(dbPosition, F_OK))
|
||||||
initializeTrailsTable();
|
{
|
||||||
// initializeCaptorMetadataTable();
|
initializeTrialsTable();
|
||||||
// createCaptorDataTable(12, 8);
|
initializeCaptorMetadataTable();
|
||||||
// insertTrailElement("test", 1, 3.0);
|
return 0;
|
||||||
// insertCaptorMetadataElement(1, 2);
|
}
|
||||||
// insertCaptorDataElement(12, 8, 10, 121, 1513);
|
else
|
||||||
updateTrailElement(1, "test2", 122, 22);
|
{
|
||||||
|
printf("Database already initialized");
|
||||||
sqlite3_shutdown();
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int getMaxTrialIdRow()
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
sqlite3 *db;
|
||||||
|
sqlite3_stmt *stmt;
|
||||||
|
int data = -1;
|
||||||
|
|
||||||
|
rc = sqlite3_open("robotgowest.db", &db);
|
||||||
|
if (rc != SQLITE_OK)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = sqlite3_prepare_v2(db, "SELECT MAX(Id) FROM Trials", -1, &stmt, NULL);
|
||||||
|
|
||||||
|
if (sqlite3_step(stmt) == SQLITE_ROW)
|
||||||
|
{
|
||||||
|
data = sqlite3_column_int(stmt, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = sqlite3_finalize(stmt);
|
||||||
|
sqlite3_close(db);
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
int initiaizeNewTrial(char *position, double frequency, bool *captorOneHot)
|
||||||
|
{
|
||||||
|
insertTrailElement(position, -1, frequency);
|
||||||
|
int trialId = getMaxTrialIdRow();
|
||||||
|
for (int i = 0; i < 8; i++)
|
||||||
|
{
|
||||||
|
if (captorOneHot[i])
|
||||||
|
{
|
||||||
|
insertCaptorMetadataElement(i, trialId);
|
||||||
|
createCaptorDataTable(trialId, i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
|
@ -8,6 +8,7 @@
|
||||||
#include "./Include/average.h"
|
#include "./Include/average.h"
|
||||||
#include "./Include/growthRate.h"
|
#include "./Include/growthRate.h"
|
||||||
#include "./Include/getArray.h"
|
#include "./Include/getArray.h"
|
||||||
|
#include "./Include/database.h"
|
||||||
|
|
||||||
bool rawDataWriteFlag;
|
bool rawDataWriteFlag;
|
||||||
int nRowRawData = 5000;
|
int nRowRawData = 5000;
|
||||||
|
@ -160,6 +161,11 @@ int main(int argc, char **argv)
|
||||||
invTimeBandWidth = 1 / (nRowRawData * period);
|
invTimeBandWidth = 1 / (nRowRawData * period);
|
||||||
firstRawDataQueue = queueCreateEmpty(); // change this for create empty
|
firstRawDataQueue = queueCreateEmpty(); // change this for create empty
|
||||||
|
|
||||||
|
// launch DB related function
|
||||||
|
sqlite3_initialize();
|
||||||
|
createDb(); // Created the Db if not exist
|
||||||
|
initiaizeNewTrial("test", freqEch, selectionCaptors); // Initialize Trials data and tables
|
||||||
|
|
||||||
pthread_t rawData;
|
pthread_t rawData;
|
||||||
if (pthread_create(&rawData, NULL, threadSimulateFlux, "threadSimulflux") != 0)
|
if (pthread_create(&rawData, NULL, threadSimulateFlux, "threadSimulflux") != 0)
|
||||||
{
|
{
|
||||||
|
@ -182,4 +188,6 @@ int main(int argc, char **argv)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
|
|
||||||
|
sqlite3_shutdown();
|
||||||
}
|
}
|
|
@ -152,11 +152,11 @@ bool writeOneRawData(FILE *rawDataFile)
|
||||||
{
|
{
|
||||||
if (selectionCaptors[i - 1])
|
if (selectionCaptors[i - 1])
|
||||||
{
|
{
|
||||||
quartet value;
|
// quartet value;
|
||||||
value.octet1 = buff[3 * i + 1];
|
// value.octet1 = buff[3 * i + 1];
|
||||||
value.octet2 = buff[3 * i + 2];
|
// value.octet2 = buff[3 * i + 2];
|
||||||
value.octet3 = buff[3 * i + 3];
|
// value.octet3 = buff[3 * i + 3];
|
||||||
value.octet4 = 0;
|
// value.octet4 = 0;
|
||||||
|
|
||||||
valbin[i] = buff[3 * i + 1] * 256 * 256 * 256 + buff[3 * i + 2] * 256 * 256 + buff[3 * i + 3] * 256;
|
valbin[i] = buff[3 * i + 1] * 256 * 256 * 256 + buff[3 * i + 2] * 256 * 256 + buff[3 * i + 3] * 256;
|
||||||
memcpy(&values[i], &valbin[i], sizeof(uint32_t));
|
memcpy(&values[i], &valbin[i], sizeof(uint32_t));
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
#include <sqlite3.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
// Duplication from simulFlux.c
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief convert an interger N into a char*
|
|
||||||
*
|
|
||||||
* @param N
|
|
||||||
* @return char*
|
|
||||||
*/
|
|
||||||
char *convertIntegerToChar(int N);
|
|
|
@ -1 +1,3 @@
|
||||||
##This mist include all fetch function and also init and insert function for nn training annd testing result
|
##This mist include all fetch function and also init and insert function for nn training annd testing result
|
||||||
|
|
||||||
|
import numpy
|
||||||
|
|
BIN
Db-Script/db
BIN
Db-Script/db
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue