From b15892d0a0ffb780bb47a46eb6c3581fca417dff Mon Sep 17 00:00:00 2001 From: QuentinPerret Date: Thu, 1 Jun 2023 17:22:38 +0200 Subject: [PATCH] correct includes --- .gitignore | 1 + Code-C/TSL2561.c | 33 ++++++----- Code-C/average.c | 10 ++-- Code-C/b2hd.c | 70 ++++++++++++---------- Code-C/csv2json.c | 25 -------- Code-C/ctest.c | 16 ++--- Code-C/fileGestion.c | 2 +- Code-C/getArray.c | 6 +- Code-C/growthRate.c | 38 +++++++----- Code-C/main.c | 20 ++++--- Code-C/power.c | 10 ++-- Code-C/queue.c | 2 +- Code-C/simulateFlux.c | 8 +-- Db-Script/Db-Script.py | 40 ------------- Db-Script/database.c | 124 +++++++++++++++++++++++++++++++++++++++ Db-Script/database.h | 14 +++++ Db-Script/database.py | 1 + Db-Script/db | Bin 0 -> 17256 bytes Db-Script/robotgowest.db | 0 19 files changed, 256 insertions(+), 164 deletions(-) delete mode 100644 Code-C/csv2json.c delete mode 100644 Db-Script/Db-Script.py create mode 100644 Db-Script/database.c create mode 100644 Db-Script/database.h create mode 100644 Db-Script/database.py create mode 100755 Db-Script/db create mode 100644 Db-Script/robotgowest.db diff --git a/.gitignore b/.gitignore index e1e226f..bd5c1e0 100644 --- a/.gitignore +++ b/.gitignore @@ -83,6 +83,7 @@ install_manifest.txt compile_commands.json CTestTestfile.cmake _deps +build ### CMake Patch ### # External projects diff --git a/Code-C/TSL2561.c b/Code-C/TSL2561.c index 152fa5d..2cafddf 100644 --- a/Code-C/TSL2561.c +++ b/Code-C/TSL2561.c @@ -1,5 +1,5 @@ // Code from the following github repo: https://github.com/ControlEverythingCommunity/TSL2561/blob/master/C/TSL2561.c -#include "include/TSL2561.h" +#include "./Include/TSL2561.h" void printSpectrum(int file) { @@ -8,15 +8,15 @@ void printSpectrum(int file) char reg[1] = {0x0C | 0x80}; write(file, reg, 1); char data[4] = {0}; - if(read(file, data, 4) != 4) + if (read(file, data, 4) != 4) { printf("Erorr : Input/output Erorr \n"); } else { // Convert the data - float ch0 = (data[1] * 256 + data[0]); //Full Spectrum(IR + Visible) - float ch1 = (data[3] * 256 + data[2]); //Infrared Value + float ch0 = (data[1] * 256 + data[0]); // Full Spectrum(IR + Visible) + float ch1 = (data[3] * 256 + data[2]); // Infrared Value // Output data to screen printf("Full Spectrum(IR + Visible) : %.1f lux \n", ch0); printf("Infrared Value : %.1f lux \n", ch1); @@ -31,14 +31,14 @@ float getFullSpectrum(int file) char reg[1] = {0x0C | 0x80}; write(file, reg, 1); char data[4] = {0}; - if(read(file, data, 4) != 4) + if (read(file, data, 4) != 4) { printf("Erorr : Input/output Erorr \n"); } else { // Convert the data - float ch0 = (data[1] * 256 + data[0]); //Full Spectrum(IR + Visible) + float ch0 = (data[1] * 256 + data[0]); // Full Spectrum(IR + Visible) return ch0; } } @@ -50,14 +50,14 @@ float getInfraredLight(int file) char reg[1] = {0x0C | 0x80}; write(file, reg, 1); char data[4] = {0}; - if(read(file, data, 4) != 4) + if (read(file, data, 4) != 4) { printf("Erorr : Input/output Erorr \n"); } else { // Convert the data - float ch1 = (data[3] * 256 + data[2]); //Infrared Value + float ch1 = (data[3] * 256 + data[2]); // Infrared Value return ch1; } } @@ -65,7 +65,7 @@ float getInfraredLight(int file) int init_TSL2561(char *bus) { int file; - if((file = open(bus, O_RDWR)) < 0) + if ((file = open(bus, O_RDWR)) < 0) { printf("Failed to open the bus. \n"); exit(1); @@ -87,21 +87,22 @@ int init_TSL2561(char *bus) return file; } -void TSL2561() +void TSL2561() { int fe = 1; int file; file = init_TSL2561(bus); - while(1) + while (1) { - sleep(1/fe); + sleep(1 / fe); float a = getFullSpectrum(file); float b = getInfraredLight(file); - printf("%.1f\n",a); - printf("%.1f\n",b); + printf("%.1f\n", a); + printf("%.1f\n", b); printSpectrum(file); } } -void main(){ - TSL2561(); +void main() +{ + TSL2561(); } \ No newline at end of file diff --git a/Code-C/average.c b/Code-C/average.c index afdc6bc..d9795ef 100644 --- a/Code-C/average.c +++ b/Code-C/average.c @@ -1,8 +1,8 @@ -#include "include/average.h" -#include "include/getArray.h" -#include "include/fileGestion.h" -#include "include/initialParameters.h" -#include "include/queue.h" +#include "./Include/average.h" +#include "./Include/getArray.h" +#include "./Include/fileGestion.h" +#include "./Include/initialParameters.h" +#include "./Include/queue.h" /** * @brief realize the average calcul * diff --git a/Code-C/b2hd.c b/Code-C/b2hd.c index 25c0a2d..bf78305 100644 --- a/Code-C/b2hd.c +++ b/Code-C/b2hd.c @@ -1,23 +1,22 @@ -#include "include/b2hd.h" +#include "./Include/b2hd.h" #include +int64_t millis() +{ + // struct timespec now; + struct timespec *now = (struct timespec *)malloc(sizeof(struct timespec)); + // timespec_get(&now, TIME_UTC); + timespec_get(now, TIME_UTC); - -int64_t millis(){ - //struct timespec now; - struct timespec *now = (struct timespec *) malloc(sizeof(struct timespec)); - //timespec_get(&now, TIME_UTC); - timespec_get(now, TIME_UTC); - - //#ifdef __USE_ISOC11 ???? - int64_t tmp = (((int64_t) now->tv_sec) * 1000 + ((int64_t) now->tv_nsec) / ((int64_t) 1000000)); - free(now); - return tmp; + // #ifdef __USE_ISOC11 ???? + int64_t tmp = (((int64_t)now->tv_sec) * 1000 + ((int64_t)now->tv_nsec) / ((int64_t)1000000)); + free(now); + return tmp; } /** * @brief allow to transform all binary hex data send by the Vegetal Signal captor in a .TXT file into decimal values in a .csv - * + * */ void b2hd() { @@ -28,38 +27,47 @@ void b2hd() int32_t values[8]; uint32_t valbin[8]; quartet value; - - while (fread(&buff, 26, 1, stdin)) { - fprintf(stdout , "%ld,", millis()); - for (int i = 1; i < 9; i++){ - /*buff[25] = '\0';*/ - if (strncmp(buff, "#################\n", (size_t)18) == 0) { - if (!(fread(&buff2, 18, 1, stdin))) { + + while (fread(&buff, 26, 1, stdin)) + { + fprintf(stdout, "%ld,", millis()); + for (int i = 1; i < 9; i++) + { + /*buff[25] = '\0';*/ + if (strncmp(buff, "#################\n", (size_t)18) == 0) + { + if (!(fread(&buff2, 18, 1, stdin))) + { fprintf(stderr, "Erreur lesture après ###...#"); - break; - } else { + break; + } + else + { /*buff2[17] = '\0';*/ strncpy(buff, &buff[18], 8); strncpy(&buff[8], buff2, 18); } } - value.octet1 = buff[3*i+1]; - value.octet2 = buff[3*i+2]; - value.octet3 = buff[3*i+3]; + value.octet1 = buff[3 * i + 1]; + value.octet2 = buff[3 * i + 2]; + value.octet3 = buff[3 * i + 3]; value.octet4 = 0; /*memcpy(&values[i], &value, sizeof(quartet));*/ - 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)); - if(i<8){ - fprintf(stdout, "%d,", values[i]/256); + if (i < 8) + { + fprintf(stdout, "%d,", values[i] / 256); } - else{ - fprintf(stdout, "%d\n", values[i]/256); + else + { + fprintf(stdout, "%d\n", values[i] / 256); } } } } -int main(int argc , char** argv){ +int main(int argc, char **argv) +{ b2hd(); } \ No newline at end of file diff --git a/Code-C/csv2json.c b/Code-C/csv2json.c deleted file mode 100644 index 17be9cd..0000000 --- a/Code-C/csv2json.c +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include -#include -#include -#include - -void writeCaptorNumber(int N) -{ - fprintf(stdout ,"{\n\"captorNumber\" : %d , " , N); -} - -void writeTimeArray() -{ - while -} - -void writeValuesArray(int N) -{ - -} - -int main(int argc, char **argv) -{ - -} \ No newline at end of file diff --git a/Code-C/ctest.c b/Code-C/ctest.c index 8beca7e..8e05438 100644 --- a/Code-C/ctest.c +++ b/Code-C/ctest.c @@ -5,14 +5,14 @@ #include #include -#include "include/fileGestion.h" -#include "include/getArray.h" -#include "include/growthRate.h" -#include "include/power.h" -#include "include/simulateFlux.h" -#include "include/queue.h" -#include "include/average.h" -//#include "b2hd.h" +#include "./Include/fileGestion.h" +#include "./Include/getArray.h" +#include "./Include/growthRate.h" +#include "./Include/power.h" +#include "./Include/simulateFlux.h" +#include "./Include/queue.h" +#include "./Include/average.h" +// #include "b2hd.h" bool rawDataWriteFlag; int nRowRawData = 500; diff --git a/Code-C/fileGestion.c b/Code-C/fileGestion.c index 99e0a62..545d3a6 100644 --- a/Code-C/fileGestion.c +++ b/Code-C/fileGestion.c @@ -1,4 +1,4 @@ -#include "include/fileGestion.h" +#include "./Include/fileGestion.h" /** * @brief function that delete nRow lign in the beginning of the file rawData.csv . This function is necessary to not deal with the same ligns over and over diff --git a/Code-C/getArray.c b/Code-C/getArray.c index 903c4f5..12b7fbf 100644 --- a/Code-C/getArray.c +++ b/Code-C/getArray.c @@ -1,6 +1,6 @@ -#include "include/getArray.h" -#include "include/fileGestion.h" -#include "include/initialParameters.h" +#include "./Include/getArray.h" +#include "./Include/fileGestion.h" +#include "./Include/initialParameters.h" // #include long **getlongArray(int N, int M) /* Allocate the array */ diff --git a/Code-C/growthRate.c b/Code-C/growthRate.c index 8188a8f..17255b3 100644 --- a/Code-C/growthRate.c +++ b/Code-C/growthRate.c @@ -1,34 +1,40 @@ -#include "include/initialParameters.h" -#include "include/fileGestion.h" -#include "include/getArray.h" -#include "include/growthRate.h" +#include "./Include/initialParameters.h" +#include "./Include/fileGestion.h" +#include "./Include/getArray.h" +#include "./Include/growthRate.h" /** * @brief calculate de growth rate between to point next to each other - * + * * @param dataArray array with data of points next to each other for each captor (dim : 2 * nCols) * @param gRateArray array that contaigns results of the growth ratecalculation */ -void growthRateCalculation(double **dataArray , double *gRateArray){ - for(int i = 0 ; i < nCol-1 ; i++){ +void growthRateCalculation(double **dataArray, double *gRateArray) +{ + for (int i = 0; i < nCol - 1; i++) + { gRateArray[i] = (dataArray[0][i] - dataArray[1][i]) / period; } } /** * @brief calcul then print differentiate in csv - * - * @param dataLign + * + * @param dataLign */ -void growthRateFunction(double **dataLign , char* fileName){ - double gRateArray[nCol-1]; - growthRateCalculation(dataLign , gRateArray); - appendDataInFile(fileName,gRateArray , nCol-1); +void growthRateFunction(double **dataLign, char *fileName) +{ + double gRateArray[nCol - 1]; + growthRateCalculation(dataLign, gRateArray); + appendDataInFile(fileName, gRateArray, nCol - 1); } -void sumColArray(long **p, double res[] , int N , int M){ - for(int i = 1; i < M; i++){ +void sumColArray(long **p, double res[], int N, int M) +{ + for (int i = 1; i < M; i++) + { int j = 0; res[i] = 0; - while(j < N){ + while (j < N) + { res[i] += p[i][j]; j++; } diff --git a/Code-C/main.c b/Code-C/main.c index 3a20725..2bd72cd 100644 --- a/Code-C/main.c +++ b/Code-C/main.c @@ -1,13 +1,13 @@ #include #include -#include "include/simulateFlux.h" -#include "include/power.h" -#include "include/initialParameters.h" -#include "include/queue.h" -#include "include/average.h" -#include "include/growthRate.h" -#include "include/getArray.h" +#include "./Include/simulateFlux.h" +#include "./Include/power.h" +#include "./Include/initialParameters.h" +#include "./Include/queue.h" +#include "./Include/average.h" +#include "./Include/growthRate.h" +#include "./Include/getArray.h" bool rawDataWriteFlag; int nRowRawData = 5000; @@ -146,8 +146,10 @@ int main(int argc, char **argv) } printf("%d", nCol); - for(int i = 0 ; i < 8 ; i++){ - if(selectionCaptors[i]){ + for (int i = 0; i < 8; i++) + { + if (selectionCaptors[i]) + { nCol++; } } diff --git a/Code-C/power.c b/Code-C/power.c index 87ae6a3..426ea8a 100644 --- a/Code-C/power.c +++ b/Code-C/power.c @@ -1,10 +1,10 @@ #include -#include "include/power.h" -#include "include/getArray.h" -#include "include/fileGestion.h" -#include "include/initialParameters.h" -#include "include/queue.h" +#include "./Include/power.h" +#include "./Include/getArray.h" +#include "./Include/fileGestion.h" +#include "./Include/initialParameters.h" +#include "./Include/queue.h" /** * @brief realize the powerThreadFunction calcul diff --git a/Code-C/queue.c b/Code-C/queue.c index b311c39..4459b9f 100644 --- a/Code-C/queue.c +++ b/Code-C/queue.c @@ -4,7 +4,7 @@ #include #include -#include "include/queue.h" +#include "./Include/queue.h" /** * @brief struct queue struct used for queueing string name diff --git a/Code-C/simulateFlux.c b/Code-C/simulateFlux.c index dd5cef2..d2b0e05 100644 --- a/Code-C/simulateFlux.c +++ b/Code-C/simulateFlux.c @@ -1,6 +1,6 @@ -#include "include/simulateFlux.h" -#include "include/initialParameters.h" -#include "include/queue.h" +#include "./Include/simulateFlux.h" +#include "./Include/initialParameters.h" +#include "./Include/queue.h" #include #include @@ -212,7 +212,7 @@ void *threadSimulateFlux(void *vargp) // prepare next file now fileName = createNewRawDataFileName(); rawDataFile = fopen(fileName, "w+"); - //add test to get p then print it here // p is gotten from fileName file + // add test to get p then print it here // p is gotten from fileName file } } rawDataWriteFlag = false; diff --git a/Db-Script/Db-Script.py b/Db-Script/Db-Script.py deleted file mode 100644 index 9a1fda4..0000000 --- a/Db-Script/Db-Script.py +++ /dev/null @@ -1,40 +0,0 @@ -##Imports - -import sqlite3 as sql -import pandas as pd -import os -import datetime -import matplotlib.pyplot as plt -import numpy as np - -def createMetadataTable(): - """Create the db table which contaign all data """ - db = sql.connect("robotgowestdb.db") - c = db.cursor() - - requestCreate = '''CREATE TABLE IF NOT EXISTS METADATA_TABLE ( - [Id] INTEGER PRIMARY KEY, - [Place] TEXT, - [Start] TEXT - )''' - c.execute(requestCreate) - db.commit() - -def insertMetadataElement(place : str , start : datetime): - """Insert a new element in the metadat table - - Args: - currency (str): name of the currency to fetch its metadata with the yFinance API - """ - db = sql.connect("robotgowestdb.db") - c = db.cursor() - request = f'''INSERT INTO METADATA_TABLE (Place,Start) - VALUES ( - '{place}', - '{start}' - )''' - c.execute(request) - db.commit() - -createMetadataTable() -insertMetadataElement("ici", datetime.datetime.now()) \ No newline at end of file diff --git a/Db-Script/database.c b/Db-Script/database.c new file mode 100644 index 0000000..97cd524 --- /dev/null +++ b/Db-Script/database.c @@ -0,0 +1,124 @@ +#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); +} \ No newline at end of file diff --git a/Db-Script/database.h b/Db-Script/database.h new file mode 100644 index 0000000..1383f6a --- /dev/null +++ b/Db-Script/database.h @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +// Duplication from simulFlux.c + +/** + * @brief convert an interger N into a char* + * + * @param N + * @return char* + */ +char *convertIntegerToChar(int N); \ No newline at end of file diff --git a/Db-Script/database.py b/Db-Script/database.py new file mode 100644 index 0000000..49069d7 --- /dev/null +++ b/Db-Script/database.py @@ -0,0 +1 @@ +##This mist include all fetch function and also init and insert function for nn training annd testing result \ No newline at end of file diff --git a/Db-Script/db b/Db-Script/db new file mode 100755 index 0000000000000000000000000000000000000000..5e51ebf8cfa7a85dadef2ba112dcd10cf44b4a72 GIT binary patch literal 17256 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 literal 0 HcmV?d00001 diff --git a/Db-Script/robotgowest.db b/Db-Script/robotgowest.db new file mode 100644 index 0000000..e69de29