From 7b4ecde5fb09c0ec750520ea7a43c9320ee97676 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Mon, 28 Apr 2025 13:07:13 +0300 Subject: [PATCH] improve to libusefull_macros v0.3.2 --- LocCorr_new.old.tgz | Bin 0 -> 80006 bytes LocCorr_new/CANSERVER_pusirobo | 9 --------- LocCorr_new/CMakeLists.txt | 6 +++--- LocCorr_new/Changelog | 3 +++ LocCorr_new/basler.c | 14 +++++++------- LocCorr_new/cameracapture.c | 6 +++--- LocCorr_new/cmdlnopts.c | 10 +++++----- LocCorr_new/config.c | 2 +- LocCorr_new/debug.c | 4 +++- LocCorr_new/debug.h | 3 ++- LocCorr_new/grasshopper.c | 9 +++++---- LocCorr_new/hikrobot.c | 8 ++++---- LocCorr_new/improc.c | 16 ++++++++-------- LocCorr_new/inotify.c | 25 +++++++++++++++++++------ LocCorr_new/main.c | 18 +++++++++--------- LocCorr_new/median.c | 8 ++++---- LocCorr_new/steppers.c | 22 +++++++++++----------- 17 files changed, 87 insertions(+), 76 deletions(-) create mode 100644 LocCorr_new.old.tgz delete mode 100644 LocCorr_new/CANSERVER_pusirobo create mode 100644 LocCorr_new/Changelog diff --git a/LocCorr_new.old.tgz b/LocCorr_new.old.tgz new file mode 100644 index 0000000000000000000000000000000000000000..47ac934b07b1b13808b172564d1ccbc9ffda88b6 GIT binary patch literal 80006 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 literal 0 HcmV?d00001 diff --git a/LocCorr_new/CANSERVER_pusirobo b/LocCorr_new/CANSERVER_pusirobo deleted file mode 100644 index a7cf164..0000000 --- a/LocCorr_new/CANSERVER_pusirobo +++ /dev/null @@ -1,9 +0,0 @@ -MULTIPLY steps & speed by microsteps!!! - -register U 0x581 stepper -> OK\nU maxspeed=OK -mesg U maxspeed 12800 -> OK\nU maxspeed=OK -register V 0x582 stepper -> OK\nV maxspeed=OK -mesg V maxspeed 12800 -> OK\nV maxspeed=OK -mesg U relmove 1600 -> OK\nU rotdir=OK\nU relsteps=OK -mesg U setzero -> OK\nU curpos=OK -mesg V setzero -> OK\nV curpos=OK diff --git a/LocCorr_new/CMakeLists.txt b/LocCorr_new/CMakeLists.txt index eff40e0..9450ac8 100644 --- a/LocCorr_new/CMakeLists.txt +++ b/LocCorr_new/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.20) set(PROJ loccorr) -set(MINOR_VERSION "1") -set(MID_VERSION "0") +set(MINOR_VERSION "0") +set(MID_VERSION "1") set(MAJOR_VERSION "0") set(VERSION "${MAJOR_VERSION}.${MID_VERSION}.${MINOR_VERSION}") @@ -40,7 +40,7 @@ message("Build type: ${CMAKE_BUILD_TYPE}") ###### pkgconfig ###### # pkg-config modules (for pkg-check-modules) -set(MODULES usefull_macros cfitsio improc) +set(MODULES usefull_macros>=0.3.2 cfitsio improc) # find packages: SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) diff --git a/LocCorr_new/Changelog b/LocCorr_new/Changelog new file mode 100644 index 0000000..9dfcdcc --- /dev/null +++ b/LocCorr_new/Changelog @@ -0,0 +1,3 @@ +Mon Apr 28 13:05:48 MSK 2025 +Move to libusefull_macros v0.3.2. +Fixed some troubles with `inotifying` log files. \ No newline at end of file diff --git a/LocCorr_new/basler.c b/LocCorr_new/basler.c index 0b52f12..1589171 100644 --- a/LocCorr_new/basler.c +++ b/LocCorr_new/basler.c @@ -63,7 +63,7 @@ static char* describeError(GENAPIC_RESULT reserr){ #define PYLONFN(fn, ...) do{register GENAPIC_RESULT reserr; if(GENAPI_E_OK != (reserr=fn(__VA_ARGS__))){ \ WARNX(#fn "(): %s", describeError(reserr)); return FALSE;}}while(0) -static void disconnect(){ +static void cam_disconnect(){ FNAME(); if(!isopened) return; FREE(imgBuf); @@ -180,13 +180,13 @@ static void disableauto(){ } static void GENAPIC_CC removalCallbackFunction(_U_ PYLON_DEVICE_HANDLE hDevice){ - disconnect(); + cam_disconnect(); } -static int connect(){ +static int cam_connect(){ FNAME(); size_t numDevices; - disconnect(); + cam_disconnect(); PylonInitialize(); PYLONFN(PylonEnumerateDevices, &numDevices); if(!numDevices){ @@ -223,7 +223,7 @@ static Image *capture(){ static double t0 = 0.; if(!getFloat("DeviceTemperature", &f)) WARNX("Can't get temperature"); else{ - double t = dtime(); + double t = sl_dtime(); if(t - t0 >= 30.){ // log T each 30 seconds LOGMSG("Basler temperature: %.1f", f.val); t0 = t; @@ -327,8 +327,8 @@ static float gainmax(){ // exported object camera Basler = { - .disconnect = disconnect, - .connect = connect, + .disconnect = cam_disconnect, + .connect = cam_connect, .capture = capture, .setbrightness = setbrightness, .setexp = setexp, diff --git a/LocCorr_new/cameracapture.c b/LocCorr_new/cameracapture.c index 289c9d2..6bff645 100644 --- a/LocCorr_new/cameracapture.c +++ b/LocCorr_new/cameracapture.c @@ -228,13 +228,13 @@ static void *procthread(void* v){ typedef void (*procfn_t)(Image*); void (*process)(Image*) = (procfn_t)v; #ifdef EBUG - double t0 = dtime(); + double t0 = sl_dtime(); #endif while(!stopwork){ while(iCaptured < 0) usleep(1000); pthread_mutex_lock(&capt_mutex); if(Icap[iCaptured]){ - DBG("---- got image #%d @ %g", iCaptured, dtime() - t0); + DBG("---- got image #%d @ %g", iCaptured, sl_dtime() - t0); Image *oIma = Icap[iCaptured]; // take image here and free buffer Icap[iCaptured] = NULL; pthread_mutex_unlock(&capt_mutex); @@ -263,7 +263,7 @@ static void *procthread(void* v){ } FREE(oIma->data); FREE(oIma); - DBG("---- cleared image data @ %g", dtime() - t0); + DBG("---- cleared image data @ %g", sl_dtime() - t0); }else pthread_mutex_unlock(&capt_mutex); usleep(1000); } diff --git a/LocCorr_new/cmdlnopts.c b/LocCorr_new/cmdlnopts.c index 057a53b..323d032 100644 --- a/LocCorr_new/cmdlnopts.c +++ b/LocCorr_new/cmdlnopts.c @@ -61,7 +61,7 @@ static glob_pars G = { * Define command line options by filling structure: * name has_arg flag val type argptr help */ -static myoption cmdlnopts[] = { +static sl_option_t cmdlnopts[] = { // common options {"maxexp", NEED_ARG, NULL, 0, arg_double, APTR(&G.maxexp), _("maximal exposition time (ms), default: 500")}, {"minexp", NEED_ARG, NULL, 0, arg_double, APTR(&G.minexp), _("minimal exposition time (ms), default: 0.001")}, @@ -106,13 +106,13 @@ glob_pars *parse_args(int argc, char **argv){ char helpstring[1024], *hptr = helpstring; snprintf(hptr, hlen, "Usage: %%s [args]\n\n\tWhere args are:\n"); // format of help: "Usage: progname [args]\n" - change_helpstring(helpstring); + sl_helpstring(helpstring); // parse arguments - parseargs(&argc, &argv, cmdlnopts); - if(help) showhelp(-1, cmdlnopts); + sl_parseargs(&argc, &argv, cmdlnopts); + if(help) sl_showhelp(-1, cmdlnopts); if(argc > 0){ WARNX("Extra parameters!"); - showhelp(-1, cmdlnopts); + sl_showhelp(-1, cmdlnopts); } return &G; } diff --git a/LocCorr_new/config.c b/LocCorr_new/config.c index 1566900..75ba0c8 100644 --- a/LocCorr_new/config.c +++ b/LocCorr_new/config.c @@ -290,7 +290,7 @@ confparam *chk_keyval(const char *key, const char *val, key_value *result){ break; case PAR_DOUBLE: //DBG("DOUBLE"); - if(!str2double(&result->val.dblval, val)){ + if(!sl_str2d(&result->val.dblval, val)){ WARNX("Wrong double value '%s' of parameter '%s'", val, key); return NULL; } diff --git a/LocCorr_new/debug.c b/LocCorr_new/debug.c index 6e813f1..4759d66 100644 --- a/LocCorr_new/debug.c +++ b/LocCorr_new/debug.c @@ -18,6 +18,7 @@ #ifdef EBUG +#include #include #include @@ -25,10 +26,11 @@ #define DEBUGLOG "DEBUG.log" -sl_log *debuglog = NULL; +sl_log_t *debuglog = NULL; void makedebuglog(){ unlink(DEBUGLOG); + DBG("Create debug log file: " DEBUGLOG); debuglog = sl_createlog(DEBUGLOG, LOGLEVEL_ANY, 0); } diff --git a/LocCorr_new/debug.h b/LocCorr_new/debug.h index 00c41f5..a3709b4 100644 --- a/LocCorr_new/debug.h +++ b/LocCorr_new/debug.h @@ -27,7 +27,7 @@ #ifdef EBUG -extern sl_log *debuglog; +extern sl_log_t *debuglog; void makedebuglog(); void *my_malloc(size_t N, size_t S); void my_free(void *ptr); @@ -36,6 +36,7 @@ void my_free(void *ptr); #undef ALLOC #undef MALLOC #undef FREE +#undef DBGLOG #define _LOG(...) do{if(!debuglog) makedebuglog(); sl_putlogt(1, debuglog, LOGLEVEL_ERR, __VA_ARGS__);}while(0) #define DBGLOG(...) do{_LOG("%s (%s, line %d)", __func__, __FILE__, __LINE__); \ sl_putlogt(0, debuglog, LOGLEVEL_ERR, __VA_ARGS__);}while(0) diff --git a/LocCorr_new/grasshopper.c b/LocCorr_new/grasshopper.c index c9aac7a..64d8884 100644 --- a/LocCorr_new/grasshopper.c +++ b/LocCorr_new/grasshopper.c @@ -20,6 +20,7 @@ #include #include // FLT_EPSILON #include +#include #include #include @@ -39,7 +40,7 @@ static fc2Error err = FC2_ERROR_OK; #define FC2FN(fn, ...) do{err = FC2_ERROR_OK; if(FC2_ERROR_OK != (err=fn(context __VA_OPT__(,) __VA_ARGS__))){ \ WARNX(Stringify(fn) "(): %s", fc2ErrorToDescription(err)); return FALSE;}}while(0) -static void disconnect(){ +static void cam_disconnect(){ fc2DestroyContext(context); } @@ -178,7 +179,7 @@ static int changeformat(frameformat *fmt){ return TRUE; } -static int connect(){ +static int cam_connect(){ FNAME(); unsigned int numCameras = 0; if(FC2_ERROR_OK != (err = fc2CreateContext(&context))){ @@ -263,8 +264,8 @@ static float maxgain(){ // exported object camera GrassHopper = { - .disconnect = disconnect, - .connect = connect, + .disconnect = cam_disconnect, + .connect = cam_connect, .capture = capture, .setbrightness = setbrightness, .setexp = setexp, diff --git a/LocCorr_new/hikrobot.c b/LocCorr_new/hikrobot.c index 3e23ab5..4f2a740 100644 --- a/LocCorr_new/hikrobot.c +++ b/LocCorr_new/hikrobot.c @@ -235,7 +235,7 @@ static int cam_findCCD(){ return TRUE; } -static int connect(){ +static int cam_connect(){ if(!cam_findCCD()) return FALSE; cam_closecam(); lastecode = MV_CC_CreateHandleWithoutLog(&handle, stDeviceList.pDeviceInfo[0]); @@ -374,10 +374,10 @@ static int cam_startexp(){ static Image* capture(){ if(!cam_startexp()) return NULL; MV_FRAME_OUT_INFO_EX stImageInfo = {0}; // last image info - double starttime = dtime(); + double starttime = sl_dtime(); do{ usleep(100); - double diff = exptime - (dtime() - starttime); + double diff = exptime - (sl_dtime() - starttime); if(diff > 0.) continue; // wait until exposure ends DBG("diff = %g", diff); if(diff < -5.0){ // wait much longer than exp lasts @@ -393,7 +393,7 @@ static Image* capture(){ camera Hikrobot = { .disconnect = cam_closecam, - .connect = connect, + .connect = cam_connect, .capture = capture, .setbrightness = cam_setbright, .setexp = setexp, diff --git a/LocCorr_new/improc.c b/LocCorr_new/improc.c index 3d8db63..f6a4f2c 100644 --- a/LocCorr_new/improc.c +++ b/LocCorr_new/improc.c @@ -107,7 +107,7 @@ static void getDeviation(object *curobj){ Xc[counter] = curobj->xc; Yc[counter] = curobj->yc; if(fXYlog){ // make log record fprintf(fXYlog, "%-14.2f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t", - dtime() - tstart, curobj->xc, curobj->yc, + sl_dtime() - tstart, curobj->xc, curobj->yc, curobj->xsigma, curobj->ysigma, curobj->WdivH); } //DBG("counter = %d", counter); @@ -209,8 +209,8 @@ void process_file(Image *I){ il_ConnComps *cc = NULL; size_t *S = NULL; #ifdef EBUG - double t0 = dtime(), tlast = t0; -#define DELTA(p) do{double t = dtime(); DBG("---> %s @ %gms (delta: %gms)", p, (t-t0)*1e3, (t-tlast)*1e3); tlast = t;}while(0) + double t0 = sl_dtime(), tlast = t0; +#define DELTA(p) do{double t = sl_dtime(); DBG("---> %s @ %gms (delta: %gms)", p, (t-t0)*1e3, (t-tlast)*1e3); tlast = t;}while(0) #else #define DELTA(x) #endif @@ -324,7 +324,7 @@ void process_file(Image *I){ qsort(Objects, objctr, sizeof(object), compDist); } SKIP_FULL_PROCESS: - DBGLOG("T%.2f, N=%d\n", dtime(), objctr); + DBGLOG("T%.2f, N=%d\n", sl_dtime(), objctr); DELTA("Calculate deviations"); if(objctr){ #ifdef EBUG @@ -386,8 +386,8 @@ SKIP_FULL_PROCESS: } }else Image_write_jpg(I, GP->outputjpg, theconf.equalize); ++ImNumber; - if(lastTproc > 1.) FPS = 1. / (dtime() - lastTproc); - lastTproc = dtime(); + if(lastTproc > 1.) FPS = 1. / (sl_dtime() - lastTproc); + lastTproc = sl_dtime(); DELTA("End"); } @@ -408,7 +408,7 @@ static char *watchfl(const char *messageid, char *buf, int buflen){ } int process_input(InputType tp, char *name){ - DBG("process_input(%d, %s)", tp, name); + LOGDBG("process_input(%d, %s)", tp, name); if(tp == T_DIRECTORY){ imagedata = watchdr; return watch_directory(name, process_file); @@ -460,7 +460,7 @@ void openXYlog(const char *name){ fprintf(fXYlog, "# Start at: %s", ctime(&t)); fprintf(fXYlog, "# time\t\tXc\tYc\tSx\tSy\tW/H\taverX\taverY\tSX\tSY\n"); fflush(fXYlog); - tstart = dtime(); + tstart = sl_dtime(); } void closeXYlog(){ if(!fXYlog) return; diff --git a/LocCorr_new/inotify.c b/LocCorr_new/inotify.c index 6d46ed9..20d601d 100644 --- a/LocCorr_new/inotify.c +++ b/LocCorr_new/inotify.c @@ -43,16 +43,25 @@ static int changed(const char *name, int fd, uint32_t mask){ WARN("inotify read()"); return -1; } + DBG("got: %zd", len); if(len < 1) return 0; // not ready uint32_t bm = buf[0].mask; buf[0].mask = 0; - for(int i = 0; i < 10; ++i) - DBG("CHANGED: %s (%d)\n", buf[i].name, bm); + int i = 9; + for(; i > -1; --i){ // find last changed file + DBG("%d: mask=%04x; len=%u", i, buf[i].mask, buf[i].len); + if(buf[i].mask & IN_IGNORED || buf[i].len < 1) continue; + DBG("%d: name=%s", i, buf[i].name); + } + if(i == -1){ + DBG("NO names found"); + return -1; + } if(bm & mask){ if(name){ - snprintf(filenm, FILENAME_MAX, "%s/%s", name, buf[0].name); // full path + snprintf(filenm, FILENAME_MAX, "%s/%s", name, buf[i].name); // full path }else{ - snprintf(filenm, FILENAME_MAX, "%s", buf[0].name); // file name + snprintf(filenm, FILENAME_MAX, "%s", buf[i].name); // file name } return 1; } @@ -98,6 +107,10 @@ static int watch_any(const char *name, void (*process)(Image*), uint32_t mask){ if(ch == 1){ // changed if(process){ Image *I = Image_read(filenm); + if(!I && (mask & IN_ISDIR)){ // changed file isn't an image + DBG("Changed file isn't an image"); + continue; + } process(I); } } @@ -109,7 +122,7 @@ static int watch_any(const char *name, void (*process)(Image*), uint32_t mask){ int watch_file(const char *name, void (*process)(Image*)){ - FNAME(); + DBG("try to watch file %s", name); if(!name){ WARNX("Need filename"); return 1; @@ -118,7 +131,7 @@ int watch_file(const char *name, void (*process)(Image*)){ } int watch_directory(char *name, void (*process)(Image*)){ - FNAME(); + DBG("try to watch directory %s", name); if(!name){ WARNX("Need directory name"); return 1; diff --git a/LocCorr_new/main.c b/LocCorr_new/main.c index 0e3329a..53c3932 100644 --- a/LocCorr_new/main.c +++ b/LocCorr_new/main.c @@ -66,14 +66,15 @@ void iffound_default(pid_t pid){ } static void *procinp_thread(_U_ void* arg){ + LOGDBG("procinp_thread(%s)", GP->inputname); int p = process_input(tp, GP->inputname); - LOGDBG("process_input=%d", p); + LOGERR("procinp_thread(%s)=%d", GP->inputname, p); return NULL; } static InputType chk_inp(const char *name){ if(!name) ERRX("Point file or directory name to monitor"); - InputType itp = chkinput(GP->inputname); + InputType itp = chkinput(name); if(T_WRONG == itp) return T_WRONG; green("\n%s is a ", name); switch(itp){ @@ -116,7 +117,7 @@ static InputType chk_inp(const char *name){ } int main(int argc, char *argv[]){ - initial_setup(); + sl_init(); char *self = strdup(argv[0]); GP = parse_args(argc, argv); if(!chkconfig(GP->configname)){ @@ -142,11 +143,8 @@ int main(int argc, char *argv[]){ fclose(f); } if(GP->logfile){ - sl_loglevel lvl = LOGLEVEL_ERR; // default log level - errors - int v = GP->verb; - while(v--){ // increase loglevel for each "-v" - if(++lvl == LOGLEVEL_ANY) break; - } + sl_loglevel_e lvl = LOGLEVEL_ERR + GP->verb; // default log level - errors + if(lvl > LOGLEVEL_ANY) lvl = LOGLEVEL_ANY; OPENLOG(GP->logfile, lvl, 1); DBG("Opened log file @ level %d", lvl); } @@ -194,7 +192,7 @@ int main(int argc, char *argv[]){ theconf.stpserverport = GP->steppersport; } } - check4running(self, GP->pidfile); + sl_check4running(self, GP->pidfile); DBG("%s started, snippets library version is %s\n", self, sl_libversion()); free(self); self = NULL; signal(SIGTERM, signals); // kill (-15) - quit @@ -202,6 +200,7 @@ int main(int argc, char *argv[]){ signal(SIGINT, signals); // ctrl+C - quit signal(SIGQUIT, signals); // ctrl+\ - quit signal(SIGTSTP, SIG_IGN); // ignore ctrl+Z + DBGLOG("\n\n\nStarted; capt: %s", GP->inputname); while(1){ // guard for dead processes childpid = fork(); if(childpid){ // father @@ -216,6 +215,7 @@ int main(int argc, char *argv[]){ break; // go out to normal functional } } + DBGLOG("start thread; capt: %s", GP->inputname); if(!(theSteppers = steppers_connect())){ LOGERR("Steppers server unavailable, can't run"); WARNX("Steppers server unavailable, can't run"); diff --git a/LocCorr_new/median.c b/LocCorr_new/median.c index 503eab7..b0c4ff9 100644 --- a/LocCorr_new/median.c +++ b/LocCorr_new/median.c @@ -361,7 +361,7 @@ Image *get_median(const Image *img, int seed){ size_t blksz = seed * 2 + 1, fullsz = blksz * blksz; #ifdef EBUG - double t0 = dtime(); + double t0 = sl_dtime(); #endif OMP_FOR(shared(inputima, med)) for(size_t x = seed; x < w - seed; ++x){ @@ -385,7 +385,7 @@ Image *get_median(const Image *img, int seed){ } Image_minmax(out); DBG("time for median filtering %zdx%zd of image %zdx%zd: %gs", blksz, blksz, w, h, - dtime() - t0); + sl_dtime() - t0); return out; } @@ -401,7 +401,7 @@ int get_stat(const Image *in, int seed, Image **mean, Image **std){ if(!in) return FALSE; if(seed < 1 || seed > (in->width - 1)/2 || seed > (in->height - 1)/2) return FALSE; #ifdef EBUG - double t0 = dtime(); + double t0 = sl_dtime(); #endif Image *M = NULL, *S = NULL; if(mean) M = Image_sim(in); @@ -441,6 +441,6 @@ int get_stat(const Image *in, int seed, Image **mean, Image **std){ Image_minmax(S); *std = S; } - DBG("time for mean/sigma computation: %gs", dtime() - t0); + DBG("time for mean/sigma computation: %gs", sl_dtime() - t0); return TRUE; } diff --git a/LocCorr_new/steppers.c b/LocCorr_new/steppers.c index 838cdba..2e1effc 100644 --- a/LocCorr_new/steppers.c +++ b/LocCorr_new/steppers.c @@ -266,10 +266,10 @@ static ssize_t read_message(char *msg, size_t msglen){ LOGWARN("read_message(): pthread_mutex_lock() err"); return 0; } - double t0 = dtime(); + double t0 = sl_dtime(); size_t gotbytes = 0; --msglen; // for trailing zero - while(dtime() - t0 < WAITANSTIME && gotbytes < msglen && sockfd > 0){ + while(sl_dtime() - t0 < WAITANSTIME && gotbytes < msglen && sockfd > 0){ if(!canread()) continue; int n = recv(sockfd, msg+gotbytes, msglen, 0); if(n <= 0){ // disconnect or error @@ -280,7 +280,7 @@ static ssize_t read_message(char *msg, size_t msglen){ gotbytes += n; msglen -= n; if(msg[gotbytes-1] == '\n') break; - t0 = dtime(); + t0 = sl_dtime(); } //DBG("Dt=%g, gotbytes=%zd, sockfd=%d, msg='%s'", dtime()-t0,gotbytes,sockfd,msg); pthread_mutex_unlock(&mesg_mutex); @@ -343,8 +343,8 @@ static errcodes getecode(const char *msg){ */ static errcodes read_and_parse(steppercmd idx){ char value[128], msg[1024]; - double t0 = dtime(); - while(dtime() - t0 < WAITANSTIME*10.){ + double t0 = sl_dtime(); + while(sl_dtime() - t0 < WAITANSTIME*10.){ ssize_t got = read_message(msg, 1024); if(got < 1) continue; //LOGDBG("GOT from stepper server:\n%s\n", msg); @@ -760,7 +760,7 @@ static int try2correct(double dX, double dY){ pidU.Kp = theconf.PIDU_P; pidU.Ki = theconf.PIDU_I; pidU.Kd = theconf.PIDU_D; pidV.Kp = theconf.PIDV_P; pidV.Ki = theconf.PIDV_I; pidV.Kd = theconf.PIDV_D; double dU, dV; - double current_time = dtime(); + double current_time = sl_dtime(); if( current_time - pidU.prev_time > MAX_PID_TIME || current_time - pidV.prev_time > MAX_PID_TIME){ LOGWARN("Too old PID time: have dt=%gs", current_time - pidU.prev_time); @@ -803,7 +803,7 @@ static int try2correct(double dX, double dY){ * This function called from improc.c each time the corrections calculated (ONLY IF Xtarget/Ytarget > -1) */ static void stp_process_corrections(double X, double Y){ - static bool coordstrusted = TRUE; + static int coordstrusted = TRUE; if(!relaxed(Ustepper) || !relaxed(Vstepper)){ // don't process coordinates when moving coordstrusted = FALSE; coordsRdy = FALSE; @@ -958,7 +958,7 @@ static char *set_stpstatus(const char *newstatus, char *buf, int buflen){ // MAIN THREAD static void *stp_process_states(_U_ void *arg){ // FNAME(); - static bool first = TRUE; // flag for logging when can't reconnect + static int first = TRUE; // flag for logging when can't reconnect while(!stopwork){ usleep(10000); // check for disconnection flag @@ -989,10 +989,10 @@ static void *stp_process_states(_U_ void *arg){ if(nth_motor_setter(CMD_RELPOS, Vstepper, dVmove)) dVmove = 0; } static double t0 = -1.; - if(t0 < 0.) t0 = dtime(); + if(t0 < 0.) t0 = sl_dtime(); if(state != STP_DISCONN){ - if(dtime() - t0 >= 0.1){ // each 0.1s check state if steppers aren't disconnected - t0 = dtime(); + if(sl_dtime() - t0 >= 0.1){ // each 0.1s check state if steppers aren't disconnected + t0 = sl_dtime(); chkall(); } if(!relaxed(Ustepper) && !relaxed(Vstepper)) continue;