preparation de la lecture du fichier de conf

This commit is contained in:
tth 2019-01-17 09:07:47 +01:00
부모 2f2bfa641a
커밋 abdfc44cbe
6개의 변경된 파일144개의 추가작업 그리고 12개의 파일을 삭제

파일 보기

@ -2,11 +2,19 @@
#
#
OBJS = lut1024f.o parseconf.o
lut1024f.o: lut1024f.c lut1024.h
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
./mklut.pl quux > $@

21
core/config.h Normal 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
파일 보기

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

61
core/parseconf.c Normal 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;
}
/* ---------------------------------------------------------------- */

파일 보기

@ -7,20 +7,28 @@
#include <getopt.h>
#include "lut1024.h"
#include "config.h"
int verbosity;
Configuration config;
/* ---------------------------------------------------------------- */
int main (int argc, char *argv[])
{
int foo, opt;
char *conffile = "dd2-monitor.conf";
fprintf(stderr, "+\n+ DD2 MONITOR\n+\n");
/* set some default values */
verbosity = 0;
while ((opt = getopt(argc, argv, "v")) != -1) {
switch (opt) {
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);
fprintf(stderr, "chargement de la lut --> %d\n", foo);
fprintf(stderr, "chargement de la lut --> %d\n\n", foo);
return 0;
}

파일 보기

@ -15,7 +15,7 @@
\usepackage[verbose]{layout}
\makeindex
\setlength{\parskip}{0.25cm plus 0.25cm}
\setlength{\parskip}{0.20cm plus 0.20cm}
% -------------------------------------------------------------------
\title{DD2 Monitoring}
@ -76,6 +76,8 @@ choix, et nous allons en évaluer quelques uns :
\texttt{gnocchi}\index{Gnocchi} (page \pageref{gnocchi})
\texttt{sqlite}\index{sqlite} (page \pageref{sqlite})
La représentation interne des valeurs reste à définir pour
la plupart d'entre elles.
\subsection{Affichage}
@ -107,7 +109,8 @@ de bonne efficacité.
Un premier exemple avec rrdb en page \pageref{rrdb}.
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}
@ -121,8 +124,9 @@ de choses étranges, comme ça :
d'une criante justesse scientifique ;)}
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.
(Re-)Découvrir les lois de l'inertie thermique ?
\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}}.
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}
@ -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,
ç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}
@ -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
les températures) et se terminant par un \textit{newline}.
\subsection{Un peu de code} \label{serialcode}
% -------------------------------------------------------------------
\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
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.
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}
% -------------------------------------------------------------------