diff -r 3ec477cda546 -r 78e9d5234d15 brewco/util.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/brewco/util.c Sat Dec 05 21:46:22 2015 +0100 @@ -0,0 +1,110 @@ +/***************************************************************************** + * Copyright (C) 2015 + * + * Michiel Broek + * + * This file is part of the mbsePi-apps + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * mbsePi-apps is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with ThermFerm; see the file COPYING. If not, write to the Free + * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + *****************************************************************************/ + +#include "brewco.h" +#include "util.h" + + +/* + * Make directory tree, the name must end with a / + */ +int mkdirs(char *name, mode_t mode) +{ + char buf[PATH_MAX], *p, *q; + int last = 0, oldmask; + + memset(&buf, 0, sizeof(buf)); + strncpy(buf, name, sizeof(buf)-1); + buf[sizeof(buf)-1] = '\0'; + + p = buf+1; + + oldmask = umask(000); + while ((q = strchr(p, '/'))) { + *q = '\0'; + mkdir(buf, mode); + last = errno; + *q = '/'; + p = q+1; + } + + umask(oldmask); + + if ((last == 0) || (last == EEXIST)) { + return TRUE; + } else { + syslog(LOG_NOTICE, "mkdirs(%s)", name); + return FALSE; + } +} + + + +/* + * Test if the given file exists. The second option is: + * R_OK - test for Read rights + * W_OK - test for Write rights + * X_OK - test for eXecute rights + * F_OK - test file presence only + */ +int file_exist(char *path, int mode) +{ + if (access(path, mode) != 0) + return errno; + + return 0; +} + + + +long millis(void) +{ + struct timespec now; + + clock_gettime(CLOCK_REALTIME , &now); + return ((now.tv_sec * 1000000000) + now.tv_nsec) / 1000000; +} + + + +/* From ArdBir */ +float Arrotonda025(float Num){ + // Appoggio la parte intera + int Appoggio= (int)Num; + + // Arrotondo il valore con peso 0.25 + return Appoggio+(int)((Num-Appoggio)*1000/225)*0.25; +} + +float ConvertiCtoF(float Num){ + Num = Num/16; // Recupero il valore + Num = (Num*1.8)+32; // Converto in °F + Num = Arrotonda025(Num); + return Num*16; // Preparo il valore per la registrazione +} +float ConvertiFtoC(float Num){ + Num = Num/16; // Recupero il valore + Num = (Num-32)/1.8; // Converto in °C + Num = Arrotonda025(Num); + return Num*16; // Preparo il valore per la registrazione +} +