X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=server%2Fsensor.c;h=c41d39e042aa96a85cfde4fd628baa4609c2cdf4;hb=5b98dd1c37a6151e734e8fa3a7054248ae3455c6;hp=9c3d2b4dbb0f9ef65474a6e52a1dc688d6a4570e;hpb=450583abb79d5fedb0debabed073d9b191dac80c;p=matches%2FMCTX3420.git diff --git a/server/sensor.c b/server/sensor.c index 9c3d2b4..c41d39e 100644 --- a/server/sensor.c +++ b/server/sensor.c @@ -45,8 +45,6 @@ int Sensor_Add(const char * name, int user_id, ReadFn read, InitFn init, CleanFn s->name = name; s->read = read; // Set read function s->init = init; // Set init function - if (init != NULL) - init(name, user_id); // Call it // Start by averaging values taken over a second s->sample_us = 1e6; @@ -54,6 +52,14 @@ int Sensor_Add(const char * name, int user_id, ReadFn read, InitFn init, CleanFn // Set sanity function s->sanity = sanity; + + if (init != NULL) + { + if (!init(name, user_id)) + Fatal("Couldn't init sensor %s", name); + } + + return g_num_sensors; } @@ -114,11 +120,15 @@ void Sensor_SetMode(Sensor * s, ControlModes mode, void * arg) { // Set filename char filename[BUFSIZ]; - const char *experiment_name = (const char*) arg; + const char *experiment_path = (const char*) arg; + int ret; - if (snprintf(filename, BUFSIZ, "%s_%d", experiment_name, s->id) >= BUFSIZ) + ret = snprintf(filename, BUFSIZ, "%s/sensor_%d", experiment_path, s->id); + + if (ret >= BUFSIZ) { - Fatal("Experiment name \"%s\" too long (>%d)", experiment_name, BUFSIZ); + Fatal("Experiment path \"%s\" too long (%d, limit %d)", + experiment_path, ret, BUFSIZ); } Log(LOGDEBUG, "Sensor %d with DataFile \"%s\"", s->id, filename); @@ -285,7 +295,6 @@ void Sensor_Handler(FCGIContext *context, char * params) struct timeval now; gettimeofday(&now, NULL); double current_time = TIMEVAL_DIFF(now, *Control_GetStartTime()); - int id = 0; const char * name = ""; double start_time = 0;