From 294481ff114b210f3ccb436719e9595e7ffaa96b Mon Sep 17 00:00:00 2001 From: axlecrusher Date: Fri, 3 Mar 2017 06:33:26 -0500 Subject: Remove extra asprintf parameter --- redist/json_helpers.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'redist') diff --git a/redist/json_helpers.c b/redist/json_helpers.c index 74028b2..fd04203 100644 --- a/redist/json_helpers.c +++ b/redist/json_helpers.c @@ -23,7 +23,7 @@ void json_write_float_array(FILE* f, const char* tag, float* v, uint8_t count) { str1=str2; str2=NULL; } - asprintf(&str2, "%s]", str1,v[i]); + asprintf(&str2, "%s]", str1); fputs(str2,f); free(str1); free(str2); @@ -45,7 +45,7 @@ void json_write_double_array(FILE* f, const char* tag, double* v, uint8_t count) str1=str2; str2=NULL; } - asprintf(&str2, "%s]", str1,v[i]); + asprintf(&str2, "%s]", str1); fputs(str2,f); free(str1); free(str2); @@ -61,4 +61,4 @@ void json_write_float(FILE* f, const char* tag, float v) { void json_write_str(FILE* f, const char* tag, const char* v) { fprintf(f, "\"%s\":\"%s\"", tag, v); -} \ No newline at end of file +} -- cgit v1.3.1 From 0ebe84be5824202aecfd87ac58005afa76b36be9 Mon Sep 17 00:00:00 2001 From: Joshua Allen Date: Mon, 6 Mar 2017 22:05:02 -0500 Subject: Load strings from config files. I need to finish the loading of numeric values and arrays. --- calibrate_client.c | 18 ++++---- redist/json_helpers.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++-- redist/json_helpers.h | 6 +++ src/survive_cal.c | 2 +- src/survive_config.c | 57 +++++++++++++++++++++++++ src/survive_config.h | 3 +- 6 files changed, 188 insertions(+), 12 deletions(-) (limited to 'redist') diff --git a/calibrate_client.c b/calibrate_client.c index 08f0715..927f40f 100644 --- a/calibrate_client.c +++ b/calibrate_client.c @@ -142,6 +142,17 @@ void * GuiThread( void * v ) int main() { + + config_init(); + config_read("config.json"); + config_set_str(&global_config_values, "Hello","World!"); + const char *s = config_read_str(&global_config_values, "test123","default"); + printf("%s\n", s); + + +// config_save("config.json"); + + ctx = survive_init( 1 ); survive_install_light_fn( ctx, my_light_process ); @@ -159,13 +170,6 @@ int main() CNFGSetup( "Survive GUI Debug", 640, 480 ); OGCreateThread( GuiThread, 0 ); - config_init(); - config_set_str(&global_config_values, "Hello","World!"); - const char *s = config_read_str(&global_config_values, "TestStr","This is a test."); - printf("%s\n", s); - config_save("config.json"); - - if( !ctx ) { fprintf( stderr, "Fatal. Could not start\n" ); diff --git a/redist/json_helpers.c b/redist/json_helpers.c index fd04203..b7ccb40 100644 --- a/redist/json_helpers.c +++ b/redist/json_helpers.c @@ -6,6 +6,8 @@ #include #include #include "json_helpers.h" +#include + void json_write_float_array(FILE* f, const char* tag, float* v, uint8_t count) { uint8_t i = 0; @@ -14,10 +16,10 @@ void json_write_float_array(FILE* f, const char* tag, float* v, uint8_t count) { asprintf(&str1,"\"%s\":[", tag); for (i=0;i=npos) return NULL; + + char* x = malloc(l); + memcpy(x,str+start,l); + x[l-1] = '\0'; + return x; +} + +static uint16_t json_load_array(const char* JSON_STRING, jsmntok_t* tokens, uint16_t size, char* tag) { + jsmntok_t* t = tokens; + uint16_t i = 0; + + char* values[size]; + + for (i=0;istart, t->end, JSON_STRING_LEN); + } + + if (json_tag_value != NULL) json_tag_value(tag, values, i); + + for (i=0;istart, tag_t->end, JSON_STRING_LEN); + char* value = substr(JSON_STRING, value_t->start, value_t->end, JSON_STRING_LEN); + + printf("%d %d c:%d %d %s \n", tag_t->start, tag_t->end, tag_t->size, tag_t->type, tag); + + + if (value_t->type == JSMN_ARRAY) { + i += json_load_array(JSON_STRING, tokens+i+2,value_t->size, tag); //look at array children + } else if (value_t->type == JSMN_OBJECT) { + printf("Begin Object\n"); + if (json_begin_object != NULL) json_begin_object(tag); + children = value_t->size +1; //+1 to account for this loop where we are not yed parsing children +// i += decode_jsmn_object(JSON_STRING, tokens+i+2,value_t->size); + } + else { + if (json_tag_value != NULL) json_tag_value(tag, &value, 1); + } + + if (children>=0) children--; + if (children == 0) { + children = -1; + printf("End Object\n"); + if (json_end_object!=NULL) json_end_object(); + } + +// printf("%d %s \n", value_t->type, tag); + + free(tag); + free(value); + } + + free(JSON_STRING); +} + diff --git a/redist/json_helpers.h b/redist/json_helpers.h index 8d6eb64..1670058 100644 --- a/redist/json_helpers.h +++ b/redist/json_helpers.h @@ -11,4 +11,10 @@ void json_write_uint32(FILE* f, const char* tag, uint32_t v); void json_write_float(FILE* f, const char* tag, float v); void json_write_str(FILE* f, const char* tag, const char* v); +void json_load_file(const char* path); +extern void (*json_begin_object)(char* tag); +extern void (*json_end_object)(); +extern void (*json_tag_value)(char* tag, char** values, uint16_t count); + + #endif \ No newline at end of file diff --git a/src/survive_cal.c b/src/survive_cal.c index f372309..33d1faa 100644 --- a/src/survive_cal.c +++ b/src/survive_cal.c @@ -53,7 +53,7 @@ void ootx_packet_clbk_d(ootx_decoder_context *ct, ootx_packet* packet) b->OOTXSet = 1; config_set_lighthouse(b,id); - config_save("config.json"); +// config_save("config.json"); } int survive_cal_get_status( struct SurviveContext * ctx, char * description, int description_length ) diff --git a/src/survive_config.c b/src/survive_config.c index c46e300..d91596f 100644 --- a/src/survive_config.c +++ b/src/survive_config.c @@ -109,6 +109,14 @@ FLT config_read_float(config_group *cg, const char *tag, const FLT def) { config_entry* next_unused_entry(config_group *cg) { config_entry *cv = cg->config_entries + cg->used_entries; assert(cg->used_entries < cg->max_entries); + +/* + if (cg->used_entries >= cg->max_entries) { + cg->max_entries+=10; + cg->config_entries = realloc(cg->config_entries, sizeof(config_entry)*cg->max_entries); + } +*/ + cg->used_entries++; return cv; } @@ -213,3 +221,52 @@ void config_save(const char* path) { fclose(f); } +void print_json_value(char* tag, char** values, uint16_t count) { + uint16_t i = 0; + for (i=0;i1) config_set_str +} + +void config_read(const char* path) { + json_begin_object = handle_config_group; + json_end_object = pop_config_group; + json_tag_value = handle_tag_value; + + cg_stack[0] = &global_config_values; + + json_load_file(path); + + json_begin_object = NULL; + json_end_object = NULL; + json_tag_value = NULL; +} + diff --git a/src/survive_config.h b/src/survive_config.h index 14e2fc6..2610e2e 100644 --- a/src/survive_config.h +++ b/src/survive_config.h @@ -37,7 +37,8 @@ extern config_group lh_config[2]; //lighthouse configs void config_init(); -void config_open(const char* path, const char* mode); +//void config_open(const char* path, const char* mode); +void config_read(const char* path); void config_close(); //void config_write_lighthouse(struct BaseStationData* bsd, uint8_t length); void config_set_lighthouse(struct BaseStationData* bsd, uint8_t idx); -- cgit v1.3.1 From b960e4d04b49bee0f60a5b1d1199c256cfbc17d6 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Wed, 8 Mar 2017 00:34:00 -0500 Subject: apparently quat code had been wrong for quite some time. Luckily it was code that would rarely execute. --- redist/linmath.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'redist') diff --git a/redist/linmath.c b/redist/linmath.c index 157141f..1c5c25b 100644 --- a/redist/linmath.c +++ b/redist/linmath.c @@ -93,11 +93,6 @@ void quatsetnone(FLT * q) q[0] = 1; q[1] = 0; q[2] = 0; q[3] = 0; } -void quatsetidentity(FLT * q) -{ - q[0] = 1; q[1] = 0; q[2] = 0; q[3] = 1; -} - void quatcopy(FLT * qout, const FLT * qin) { qout[0] = qin[0]; @@ -447,7 +442,7 @@ void quatfrom2vectors(FLT *q, const FLT *src, const FLT *dest) // If dot == 1, vectors are the same if (d >= 1.0f) { - quatsetidentity(q); + quatsetnone(q); return; } if (d < (1e-6f - 1.0f)) -- cgit v1.3.1 From 26f55787820874629519c589f7c7c1ba1334ef54 Mon Sep 17 00:00:00 2001 From: Joshua Allen Date: Wed, 8 Mar 2017 21:08:30 -0500 Subject: return null if no file is opened --- redist/json_helpers.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'redist') diff --git a/redist/json_helpers.c b/redist/json_helpers.c index b7ccb40..4a3ba55 100644 --- a/redist/json_helpers.c +++ b/redist/json_helpers.c @@ -76,6 +76,7 @@ uint32_t JSON_STRING_LEN; char* load_file_to_mem(const char* path) { FILE * f = fopen( path, "r" ); + if (f==NULL) return NULL; fseek( f, 0, SEEK_END ); int len = ftell( f ); fseek( f, 0, SEEK_SET ); @@ -116,7 +117,10 @@ static uint16_t json_load_array(const char* JSON_STRING, jsmntok_t* tokens, uint void json_load_file(const char* path) { uint32_t i = 0; + char* JSON_STRING = load_file_to_mem(path); + if (JSON_STRING==NULL) return; + JSON_STRING_LEN = strlen(JSON_STRING); jsmn_parser parser; -- cgit v1.3.1