From ebd4fceda029f56db21cbc87a7ddf6134712c0cd Mon Sep 17 00:00:00 2001 From: htom Date: Fri, 2 Jan 2026 20:01:19 +0100 Subject: [PATCH] compile commands, working on storing the database data and refactoring the code to read the data --- .../index/duckdb.h.63D53BDB55D39D0A.idx | Bin 0 -> 111138 bytes .../index/lapinfo.c.F9698B9BD3295BA4.idx | Bin 0 -> 808 bytes .../index/lapinfo.h.702DAF4EDA4E0E47.idx | Bin 0 -> 1728 bytes .../clangd/index/main.c.8770424B51F7A3DB.idx | Bin 0 -> 1428 bytes compile_commands.json | 44 +++++++ src/lapinfo.c | 25 +--- src/lapinfo.h | 31 +++++ src/main.c | 117 +++++++++++------- 8 files changed, 148 insertions(+), 69 deletions(-) create mode 100644 .cache/clangd/index/duckdb.h.63D53BDB55D39D0A.idx create mode 100644 .cache/clangd/index/lapinfo.c.F9698B9BD3295BA4.idx create mode 100644 .cache/clangd/index/lapinfo.h.702DAF4EDA4E0E47.idx create mode 100644 .cache/clangd/index/main.c.8770424B51F7A3DB.idx create mode 100644 compile_commands.json create mode 100644 src/lapinfo.h diff --git a/.cache/clangd/index/duckdb.h.63D53BDB55D39D0A.idx b/.cache/clangd/index/duckdb.h.63D53BDB55D39D0A.idx new file mode 100644 index 0000000000000000000000000000000000000000..41cb69d0f4579cbc697b0ade18bb8fef6dd0e557 GIT binary patch literal 111138 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%0ActD!Jo-aOj{jui;19Vra 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

j#Q$?kz`hbO!1L&Wo8YBYJRgvkc z-Vj*;l}K0hOIIa`fJ{|%rYZ)6;HX5VYCxtcQ3PbEqO(*n;NyZyWT^&ZsS-s%jw(7w z6$2u6R3b+;AV-xb0t!_93RDRq!?Xg`umaU65m2HUP@+l{1t2O>jVMu#5dnu){SK=V zL;<-EtA-s`jS>N6s^~IR4496fag?bBl&KO$K&7fzrK&HepiqfQ)xb*C5D`$N>Q$xc zE4oKksRmZ5hKPWxs$N%BeMPRxS5*VAs)mSw232H(s<$Z0cY~^5gDOD;+*L*2RmF(H ze&1CMxT{JO0WGTDEvh)M?L{MPQ6;pfhKhifs@^YEap3)rO1xAhyi^Sp0ZHnCN$MdY zE0HAihe_&jA|O>gAXS|xI^j~)BU064L_nH4I!zrTiY1<=9+0L^6alN%eOIgFLFR$R zv06Q3wR)ro$Wr&qQYU~D4JwhP9+ssZB?9u*iTUc`pd>*h^3`MV)e}TOp}KdWI!>gO zDpV&Fs)vez1L~*)>OK$+7qxLf-T#1kkO;V{rmw0QNEL=kT%qYJG~*<59e<0S=p=I; z-AsQZlDWR4d%UB2ie#?KHS}@~Ba*0Y&_r+0#5hS*$K`825lK|{YNGdQVw@zZV~%Mi zh$O0~G+j?=dN@f`$DP%D;v`WWeNpp~lSFk)t!9FgM0HG^W`dJMbxeb1f|EpbT%+a_ zCyDC#hnk5_64h}}HJ><1RL8VxCOAn{$0lh%c9N)$P0@ZV60^+Lj-9Xl*h!)~W{Gx! zlSFlFy7pryiR$PK?MF@$)zKTYA2~@>KiZ<5EA9JE5gUpfUL#HTB1VFHD)C-D-{lk3G2Ot)gv4f z=db$auQuZs1iXdk)N@W7h0voh);`9%@H!4ErdY=mdxchh04dg#Vh{2A55NM8EHJ|~ zs*`+U)HJHIHp{#yvw|fXtZsufp;!~Z0V4;D;$S5JC#?R2`Os_vU|8}FO95d-=CTx7 zmW*pRTW>x6@aG0pY)jSKQccf~-|zarzpnsrDBU@f9^g1T0B2I>u^D+R;D8`HuMg1LsB_*E0VlYu%IP*b&}VZKrqR}0?6>X3~$25B5a!DjX54f zPXK@|?%m=6yk`Tj$LsgFPYB0Yv5^%UHJO~-e%d;O#@UXoe#hoRr7-L0~#67C_2&r#5EGvsF2VT*BawmPyh+7A))!PX9-Itbuy__ zjB5fgtGCVS9Vn^*u&-C`>vx65%BfCHb!v(ieEin&M2HtWa&#X#dIZ5u!Ew9bxG#X! zvKOmmFHMWYSGLpG`YEg>=c3vn%C%jrM5xV`-;9?Q9VY3TYQfyC{k;p(5iV z85c!`Gk^^j*>KS}<%6H+53CoX+f(k^l-r9*BmmajWX(-cy?69lvetGxor`!#m;14U-T<{c{rMD;R zOvVSL@NXtegGb zAwtVH`N)5hk{_$yc;AdzbFTYO(xd!e$^S0fo;+F{Z2PiPtZ;u~_uALjG&$v`ro5G5 zD6Y&+asq~=*@oAm*L&~mWVU-bP;ACcGke6VTVbxpjmXp!W`Gtym5i7b_0VdatJ|Ey2hm%`4BV4Kui~>+;-3BJGAi zVOB|2HJEWe@1;I+ugxw23UkYI!&NUdx}k7EI({Qin2m=`0H)elcHie8LXKM)Wu)0y z*f?OqFgqBfz%B=R2Mn%n6qnVRrF|G^2%kKk3QSd?+vmdRtfm)$!dxO;(lBBB`3%dn zKdg8I6y}lV(SQlV>|m7wdm3i8j5Ie3w>V6Zj5H4m4-$`;g%^p($HE8a6{Y4Rg3Kr` zN-ow1(u~sI>LQr-oa&y=EF~+$APX~}fk6hrltM6*b5nA}fLsv~FH&(zQb2B8%9t`NJV-^x9ageAB z4@HqVWpOSi+RtHoozHHZaJIQkT_ZDwg;H~FHzh?h| zn(jlI^>1gNZm8WEFEnQd+|j>fIbx2r{~B?BLO)fQd#a?r>2brzrL|*+ZYLEK7N@k` zTzKt#;>hO>kJ2tW@8!AcRkyuGqZ!Wxh8GOy`ZL>7E0bQHwk$Q~P%>Fs{_*PB-lx|bcM8Z#^G3CiFoAq&{f*{PL){8B!Zfd!>$OZ+ z9wE9t=b7rEX(fY% za-lqvrF=v3s+zCG^hyCaXkM$)5+;y8mN58KpY46WfONDhs04utlwUkMMFu_{>cl8) z@xBmoC>&vkUnWBlTDt!MzsVlg6x%Hz3(Z^gRudD*Z_2prPM^-}5s;pibsC+K36$S( z-7P(=Na|A~72Ul}ZsVCOUC(s#rRwpu^MeAi(>yj}D-+1Oj(is*zn3#CAQLTX)EWa5 zD6eTjt+8__rUj&-WwYLFV*=%aGskP{hPVBrMrt~pm-AsvmZm$~T;31s_<4+saC*DK zZbm#OUp#&8_z*Mhs^H15lY~v+v9QQ7Q}48C(t6q_zZR(0#%rwIv|I z1{SF;fe1DbNNou}uz|b~)gp009}^R25&=t_z zTnJE0XG+MzOwWdOomKwULK!9+PNRa?foZf`;upG0gXmIQ;udTGmf8}nU^{<|wYE;q zG}5)ToEAeD@JqWTc%d7(m01>f4f=2z+AX09-9Ra|B}BmnI_0WGDuX^I4uiu66M#^f zmGFctoSoVdmSC$+&Gn`<{W~egM91kc48}y{L<}^+d(f=JEMx&!x*dsCura|LCa?{7 tA$o9zYOo8Irb|kcLblA~Es%cu%G^G78|33H_?@Gf#%Y;>{eucN{s#*Wsxbfn literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/main.c.8770424B51F7A3DB.idx b/.cache/clangd/index/main.c.8770424B51F7A3DB.idx new file mode 100644 index 0000000000000000000000000000000000000000..8f071c75a170abe5718332cc07a78f3ab83b7e95 GIT binary patch literal 1428 zcmWIYbaU%rWngel@vO*AElFfyU|9fA1AcB?+VKN-=uaO1(oZr#1lf7sq;RCF*o`}XT)*$(zIh6_Gk zN?Uqy?=kUi)?UYH7TN197Mv3CED&q)VBVZ zzt3Jj=#BLJRUbp1xUZk4_PF|A@n56c?~jW6?Q3wKb$_48(vLh_=l7m3PL*$!DajI5 z&H8;{U8w9E-NVxC!e1ndD|3_VfZ?>}Lat7&sj(0bgERw!7zZndD3}1sfWhDJSJe-f z^0)CY$N;7FS@b!;1WdXpHLbXZ8DR>e6pHR^y>0*ey0e5CWyCBwEQMi)O*)`>k72r; zCQw*fR@xHggu<@Nb03Mc8#3~UaX4}K!-P}iR?OOUyvPEmTAM{%5+=-CRBdf}_?bNu zj~EvV7dK3pM~s_=8_qK-z3#@Fu_gs*Bqs}}AWYGI3G;`7`q^1PBkeit#bEAgU`amh z%6h02sM>U)#{h55Pp`C)#4Jn`{`Q+a*OKtqJoh2Xw`83qgrP;kLi z>mAjWTK4SSB%mR(9I^s1mqedB7v(D6IuB^bc1D)%jG{2@`O>#9{*E}h0;pb^Ls}H3 z{)^Fz*&ELNT?zEHrK+U?Of`>~y{bK&x6tT@!UgI0jX=Fh3Q8(4y|-JRUf=habrZ9U zmyt5zcdac`BsoDDyU;^E5d$6=5a?z83lzwj}!;P`<8)UNA&+i3LSV2HR2PS-2 z`dt3+J+t2cg~g@BO<=;2Y)l*cZZG`^6y{~&g@>ThuT3EnHXD5ch6slyhZRgUkC+{c z9XvD(S}rbKd%o^BP_K-N3|x_wz@fQYXO{otk`YrDP!@yfl@U`FP(|YDu;_3h>*tT?QY #include -typedef enum { - BOOL, - INT, - FLOAT, - DOUBLE, -} TelemetryDataType; - -typedef struct { - TelemetryDataType type; - int8_t frequency; - void *data; -} TelemetryInfo; - -typedef struct { - int lap_number; - double start_time; - TelemetryInfo throttle_pos; - TelemetryInfo brake_pos; - TelemetryInfo steering_pos; - TelemetryInfo speed; -} LapInfo; +#include "lapinfo.h" void free_telemetry_info(TelemetryInfo *t) { free(t->data); // free(t); } -// Dont use for now void destroyLapinfo(LapInfo *info) { free_telemetry_info(&info->throttle_pos); free_telemetry_info(&info->brake_pos); free_telemetry_info(&info->steering_pos); free_telemetry_info(&info->speed); - free(info); + // free(info); } diff --git a/src/lapinfo.h b/src/lapinfo.h new file mode 100644 index 0000000..e1e7d30 --- /dev/null +++ b/src/lapinfo.h @@ -0,0 +1,31 @@ +#pragma once + +#include + +typedef enum { + BOOL, + INT, + FLOAT, + DOUBLE, +} TelemetryDataType; + +typedef struct { + TelemetryDataType type; + int8_t frequency; + void *data; + uint64_t *validity; + uint32_t data_size; + uint32_t data_last_index; +} TelemetryInfo; + +typedef struct { + int lap_number; + double start_time; + TelemetryInfo throttle_pos; // freq: 50 + TelemetryInfo brake_pos; // freq: 50 + TelemetryInfo steering_pos; // freq: 100 + TelemetryInfo speed; +} LapInfo; + +void free_telemetry_info(TelemetryInfo *t); +void destroyLapinfo(LapInfo *info); diff --git a/src/main.c b/src/main.c index 95f0198..fc56aa0 100644 --- a/src/main.c +++ b/src/main.c @@ -1,9 +1,51 @@ #include -#include #include #include #include +#include "lapinfo.h" + +void get_data_from_db(const char *query, duckdb_connection *conn, TelemetryInfo *info) { + duckdb_result result; + int32_t iterations = 0; + int32_t number_of_data_points = 0; + + duckdb_query(*conn, query, &result); + + while (true) { + iterations++; + + duckdb_data_chunk data_chunk = duckdb_fetch_chunk(result); + if (!data_chunk) { + break; + } + + idx_t row_count = duckdb_data_chunk_get_size(data_chunk); // number of rows from the data chunk + number_of_data_points += row_count; + + // set column + duckdb_vector col1 = duckdb_data_chunk_get_vector(data_chunk, 0); + float *col1_data = (float *)duckdb_vector_get_data(col1); + uint64_t *col1_validity = duckdb_vector_get_validity(col1); + + for (idx_t row = 0; row < row_count; row++) { + if (duckdb_validity_row_is_valid(col1_validity, row)) { + // put a switch here based on the info from the struct + ((float *)info->data)[info->data_last_index] = col1_data[row]; + info->data_last_index++; + // TODO: set info->data_size as capacity at struct creation + printf("%f, ", col1_data[row]); + } else { + printf("NULL"); + } + } + + duckdb_destroy_data_chunk(&data_chunk); + } + duckdb_destroy_result(&result); + printf("\nNumber of iterations: %d, number of data points: %d\n", iterations, number_of_data_points); +} + int main(int argc, char **argv) { printf("Hello from HardCompound!\n"); @@ -137,55 +179,38 @@ int main(int argc, char **argv) { const int event_table_count = sizeof(event_tables) / sizeof(event_tables[0]); - // Test query - duckdb_result result; - int32_t iterations = 0; - int32_t number_of_data_points = 0; + LapInfo info = {.lap_number = 0, + .start_time = 0, + .throttle_pos = {.data_last_index = 0, + .data_size = 75000, + .frequency = 50, + .type = FLOAT, + .validity = NULL, + .data = malloc(sizeof(float) * 75000)}, + .brake_pos = {.data_last_index = 0, + .data_size = 75000, + .frequency = 50, + .type = FLOAT, + .validity = NULL, + .data = malloc(sizeof(float) * 75000)}, + .steering_pos = {.data_last_index = 0, + .data_size = 75000, + .frequency = 50, + .type = FLOAT, + .validity = NULL, + .data = malloc(sizeof(float) * 75000)}, + .speed = {.data_last_index = 0, + .data_size = 75000, + .frequency = 50, + .type = FLOAT, + .validity = NULL, + .data = malloc(sizeof(float) * 75000)}}; - for (int i = 0; i < 1 /*channel_table_count*/; i++) { - char queryBuffer[256]; // buffer to hold the formatted query - - // snprintf(queryBuffer, sizeof(queryBuffer), "SELECT * FROM \"%s\"\n", channel_tables[i]); - - // duckdb_query(conn, queryBuffer, &result); - duckdb_query(conn, "SELECT CAST(value AS FLOAT) from \"Lap Time\"\n", &result); - - while (true) { - iterations++; - - duckdb_data_chunk data_chunk = duckdb_fetch_chunk(result); - - if (!data_chunk) { - break; - } - idx_t row_count = duckdb_data_chunk_get_size(data_chunk); // number of rows from the data chunk - number_of_data_points += row_count; - - // set column - duckdb_vector col1 = duckdb_data_chunk_get_vector(data_chunk, 0); - float_t *col1_data = (float_t *)duckdb_vector_get_data(col1); - uint64_t *col1_validity = duckdb_vector_get_validity(col1); - - for (idx_t row = 0; row < row_count; row++) { - if (duckdb_validity_row_is_valid(col1_validity, row)) { - printf("%f, ", col1_data[row]); - } else { - printf("NULL"); - } - } - - duckdb_destroy_data_chunk(&data_chunk); - } - duckdb_destroy_result(&result); - } - - printf("\nNumber of iterations: %d, number of data points: %d\n", iterations, number_of_data_points); + get_data_from_db("Select * from \"Throttle Pos\"\n", &conn, &info.throttle_pos); + destroyLapinfo(&info); printf("Shutting down HardCompound!\n"); - printf("Destroying result!\n"); - duckdb_destroy_result(&result); - printf("Closing database and any connection.\n"); duckdb_disconnect(&conn); duckdb_close(&db);