preparation de la lecture du fichier de conf

This commit is contained in:
tth 2019-01-17 09:07:47 +01:00
parent 2f2bfa641a
commit abdfc44cbe
6 changed files with 144 additions and 12 deletions

View File

@ -2,11 +2,19 @@
# #
# #
OBJS = lut1024f.o parseconf.o
lut1024f.o: lut1024f.c lut1024.h lut1024f.o: lut1024f.c lut1024.h
gcc -Wall -c $< gcc -Wall -c $<
t: t.c lut1024f.o lut1024.h
gcc -Wall $< lut1024f.o -o $@ parseconf.o: parseconf.c config.h
gcc -Wall -c $<
t: t.c ${OBJS} lut1024.h config.h
gcc -Wall $< ${OBJS} -o $@
foo.lut1024f: mklut.pl Makefile foo.lut1024f: mklut.pl Makefile
./mklut.pl quux > $@ ./mklut.pl quux > $@

21
core/config.h Normal file
View File

@ -0,0 +1,21 @@
/*
* config.h
*/
#define SZ_STRINGS 200
typedef struct {
int valid;
} Configuration;
/* ---------------------------------------------------------------- */
int parse_config(char *fname, int flags);
int show_config(char *title);
/* ---------------------------------------------------------------- */

10
core/dd2-monitor.conf Normal file
View File

@ -0,0 +1,10 @@
input_device s /def/ttyACM0

61
core/parseconf.c Normal file
View File

@ -0,0 +1,61 @@
/*
* parseconf
*/
#include <stdio.h>
#include <string.h>
#include "config.h"
extern int verbosity;
extern Configuration config;
/* ---------------------------------------------------------------- */
int parse_config(char *fname, int flags)
{
FILE *fp;
char line[SZ_STRINGS+1];
#if DEBUG_LEVEL
fprintf(stderr, ">>> %s ( '%s' $%x )\n", fname, flags);
#endif
config.valid = 49;
if (NULL==(fp=fopen(fname, "r"))) {
perror(fname);
return -2;
}
while (fgets(line, SZ_STRINGS, fp))
{
/* massage the end of line */
/* skip comments */
/* seek for keyword */
}
fclose(fp);
return -1;
}
/* ---------------------------------------------------------------- */
int show_config(char *title)
{
if (verbosity) {
printf("********** %s **********\n", title);
}
printf("valid %d\n", config.valid);
puts("");
return 0;
}
/* ---------------------------------------------------------------- */

View File

@ -7,20 +7,28 @@
#include <getopt.h> #include <getopt.h>
#include "lut1024.h" #include "lut1024.h"
#include "config.h"
int verbosity; int verbosity;
Configuration config;
/* ---------------------------------------------------------------- */ /* ---------------------------------------------------------------- */
int main (int argc, char *argv[]) int main (int argc, char *argv[])
{ {
int foo, opt; int foo, opt;
char *conffile = "dd2-monitor.conf";
fprintf(stderr, "+\n+ DD2 MONITOR\n+\n");
/* set some default values */ /* set some default values */
verbosity = 0; verbosity = 0;
while ((opt = getopt(argc, argv, "v")) != -1) { while ((opt = getopt(argc, argv, "v")) != -1) {
switch (opt) { switch (opt) {
case 'v': verbosity++; break; case 'v': verbosity++; break;
@ -35,9 +43,13 @@ while ((opt = getopt(argc, argv, "v")) != -1) {
} }
foo = parse_config(conffile, 1);
fprintf(stderr, "parse_config(%s) -> %d\n\n", conffile, foo);
show_config("foo");
foo = load_lut1024f("foo.lut1024f", NULL, 1); foo = load_lut1024f("foo.lut1024f", NULL, 1);
fprintf(stderr, "chargement de la lut --> %d\n", foo); fprintf(stderr, "chargement de la lut --> %d\n\n", foo);
return 0; return 0;
} }

View File

@ -15,7 +15,7 @@
\usepackage[verbose]{layout} \usepackage[verbose]{layout}
\makeindex \makeindex
\setlength{\parskip}{0.25cm plus 0.25cm} \setlength{\parskip}{0.20cm plus 0.20cm}
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\title{DD2 Monitoring} \title{DD2 Monitoring}
@ -76,6 +76,8 @@ choix, et nous allons en évaluer quelques uns :
\texttt{gnocchi}\index{Gnocchi} (page \pageref{gnocchi}) \texttt{gnocchi}\index{Gnocchi} (page \pageref{gnocchi})
\texttt{sqlite}\index{sqlite} (page \pageref{sqlite}) \texttt{sqlite}\index{sqlite} (page \pageref{sqlite})
La représentation interne des valeurs reste à définir pour
la plupart d'entre elles.
\subsection{Affichage} \subsection{Affichage}
@ -107,7 +109,8 @@ de bonne efficacité.
Un premier exemple avec rrdb en page \pageref{rrdb}. Un premier exemple avec rrdb en page \pageref{rrdb}.
Le second cause des premiers essais du LM35, capteur de Le second cause des premiers essais du LM35, capteur de
température analogique. température analogique branché sur un Arduino et relié
par un port série (page \pageref{serialcode}).
\subsection{Analyses} \subsection{Analyses}
@ -121,8 +124,9 @@ de choses étranges, comme ça :
d'une criante justesse scientifique ;)} d'une criante justesse scientifique ;)}
Ce qui donne qunad même à réfléchir. À se demander quel savoir Ce qui donne qunad même à réfléchir. À se demander quel savoir
allons-nous pouvir déduire de ces\footnote{non, c'est pas du bigdata.} allons-nous pouvoir déduire de ces\footnote{non, c'est pas du bigdata.}
chiffres improbables. chiffres improbables.
(Re-)Découvrir les lois de l'inertie thermique ?
\subsection{Archivage} \index{archivage} \label{archivage} \subsection{Archivage} \index{archivage} \label{archivage}
@ -138,12 +142,22 @@ ou d'un
\textit{epicfail\footnote{En fait, c'est comme ça que la science avance}}. \textit{epicfail\footnote{En fait, c'est comme ça que la science avance}}.
Nous devons donc rencontrer quelqu'un qui maitrise cette partie Nous devons donc rencontrer quelqu'un qui maitrise cette partie
de la mouvance détournementale de l'espionnage. de la mouvance détournementale de l'espionnage. Yaya\index{Yaya} ?
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{Configuration} \index{configuration} \label{configuration}
Pour adapter cet outil de surveillance aux variations du monde réel,
nous devons nous-même lui décrire ce monde. Une description qui se
fera avec des lignes de la forme '\texttt{input\_device s /dev/ttyACM0}'
qui représentent des tuples
\textit{clef-type-valeur}\footnote{Laissons les canards tranquilles.}
de.
La syntaxe n'est pas encore fixée, mais un fichier exemple est
disponible pour des explication plus récentes, donc plus en
rapport avec la réalité du code.
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{RRDB} \label{rrdb} \section{RRDB} \label{rrdb}
@ -239,6 +253,11 @@ trop fatiguante à compiler pour ce soir, ni même pour ce week-end.
\texttt{pip install gnocchi[postgresql,ceph,keystone]}, finalement, \texttt{pip install gnocchi[postgresql,ceph,keystone]}, finalement,
çe ne me donne pas trop envie. C'est du genre \textit{usinagaz}. çe ne me donne pas trop envie. C'est du genre \textit{usinagaz}.
% -------------------------------------------------------------------
\section{Sqlite} \index{sqlite} \label{sqlite}
\subsection{À regarder de près}
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{Serial coms} \index{serial} \label{serial} \section{Serial coms} \index{serial} \label{serial}
@ -282,6 +301,10 @@ Nous allons donc transférer ces valeurs sous forme de ligne
de texte commençant par un caractère clef (par exemple T pour de texte commençant par un caractère clef (par exemple T pour
les températures) et se terminant par un \textit{newline}. les températures) et se terminant par un \textit{newline}.
\subsection{Un peu de code} \label{serialcode}
% ------------------------------------------------------------------- % -------------------------------------------------------------------
\section{Détournements} \section{Détournements}
@ -293,11 +316,8 @@ Les possibilités ne seront limitées que par votre manque d'imagination.
Si vous voulez un petit exemple, imaginez des courbes de température Si vous voulez un petit exemple, imaginez des courbes de température
qui pilotent un \texttt{uGen} de Chuck\index{chuck} ou des algues dont qui pilotent un \texttt{uGen} de Chuck\index{chuck} ou des algues dont
la lumière envoie du \texttt{cv/gate} en temps réel. la lumière envoie du \texttt{cv/gate} en temps réel.
Le tout en n'utilisant que des circuits\index{ampli op} analogiques,
et peut-être quelques transistors au germanium\index{germanium}.
Ça vous semble peut-être un peu mélangé, mais bon,
c'est facile de comprendre l'esprit. C'est plus délicat d'imaginer.
\subsection{Variante}
% ------------------------------------------------------------------- % -------------------------------------------------------------------