aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas "Cakeisalie5" Touhey <thomas@touhey.fr>2018-03-27 23:17:02 +0200
committerThomas "Cakeisalie5" Touhey <thomas@touhey.fr>2018-03-27 23:17:02 +0200
commit1ade62d72740e61c2c3ef65b7a815db9aa49a5b8 (patch)
treeb62502e0360475875167bc635cafdbc08012ce74
parentf0dcaf360f1a5173dde2426063747febfbb00c99 (diff)
Commencé à intégrer les formats de paquet en ASN.1
-rwxr-xr-xMakefile26
-rw-r--r--Makefile.asn1c3
-rw-r--r--README.md57
-rw-r--r--README.rst67
-rw-r--r--daemon/server.c1
-rw-r--r--doc/M2M.notes.txt (renamed from NOTES.txt)0
-rw-r--r--scheme.asn136
7 files changed, 128 insertions, 62 deletions
diff --git a/Makefile b/Makefile
index 4d4aa97..2d741bb 100755
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,6 @@
#!/usr/bin/make -f
+.ONESHELL:
+
VER_MAJ := 0
VER_MIN := 1
@@ -9,7 +11,8 @@
BUILD := build
CC := clang
CFLAGS := -Weverything -Wno-disabled-macro-expansion -Wno-switch-enum \
- -Wno-missing-field-initializers -Wno-format-nonliteral
+ -Wno-missing-field-initializers -Wno-format-nonliteral \
+ -Wno-reserved-id-macro -Wno-padded
LD := clang
DIR_D := daemon
@@ -17,8 +20,8 @@
SRC_D := $(wildcard $(DIR_D)/*.c)
SRC_D := $(foreach x,$(SRC_D),$(x:$(DIR_D)/%=%))
OBJ_D := $(foreach x,$(SRC_D),$(BUILD)/$(DIR_D)/$(x:%=%.o))
- CFL_D := $(CFLAGS) -g $(shell pkg-config libcurl --cflags)
- LIB_D := $(shell pkg-config libcurl --libs)
+ CFL_D := $(CFLAGS) -g $(shell pkg-config libcurl --cflags) -I$(BUILD)/scheme
+ LIB_D := $(shell pkg-config libcurl --libs) -L $(BUILD) -lscheme
DIR_L := lib
HDR_L := $(HDR) $(wildcard $(DIR_L)/*.h $(DIR_L)/**/*.h)
@@ -39,14 +42,27 @@ re: clean all
.PHONY: all clean re
# ---
+# ASN.1 targets.
+# ---
+
+ $(BUILD):
+ mkdir -p $@
+
+ $(BUILD)/libscheme.a: scheme.asn1 | $(BUILD)
+ rm -rf $(BUILD)/scheme && mkdir -p $(BUILD)/scheme
+ cd $(BUILD)/scheme && asn1c -pdu=WeshProtocol ../../scheme.asn1 && cd ../..
+ cp Makefile.asn1c $(BUILD)/scheme/Makefile
+ make -C $(BUILD)/scheme ../libscheme.a
+
+# ---
# Daemon-specific targets.
# ---
$(BUILD)/$(DIR_D):
mkdir -p "$@"
- $(BUILD)/$(BIN): $(OBJ_D) | $(BUILD)/$(DIR_D)
- $(LD) $(LIB_D) -o "$@" $^
+ $(BUILD)/$(BIN): $(BUILD)/libscheme.a $(OBJ_D) | $(BUILD)/$(DIR_D)
+ $(LD) $(LIB_D) -o "$@" $(OBJ_D)
$(BUILD)/$(DIR_D)/%.c.o: $(DIR_D)/%.c $(HDR_D) | $(BUILD)/$(DIR_D)
$(CC) $(CFL_D) -c -o "$@" "$<"
diff --git a/Makefile.asn1c b/Makefile.asn1c
new file mode 100644
index 0000000..c27bb1c
--- /dev/null
+++ b/Makefile.asn1c
@@ -0,0 +1,3 @@
+include Makefile.am.sample
+../libscheme.a: $(ASN_MODULE_SOURCES:%.c=%.o)
+ ar crs $@ $^
diff --git a/README.md b/README.md
deleted file mode 100644
index 74d4c54..0000000
--- a/README.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# Démon de gestion de serveurs WES
-Ce projet, nommé « weshd » pour « WES Handling Daemon », permet de gérer
-un ou plusieurs [serveurs WES][wes], superviseurs d'énergie produits par
-l'entreprise française [Cartelectronic][celec].
-
-Il a été écrit en 2018 par [Thomas Touhey][thomas] à l'occasion
-d'un projet de [BTS SNIR][bts] organisé par le [GRETA de l'Essonne][greta]
-et l'équipe pédagogique du [lycée Michelet d'Arpajon][lyc].
-Ce projet vise à améliorer l'infrastructure de gestion de la consommation
-de ressources telles que l'électricité ou l'eau pour l'association
-[Monde en Marge, Monde en Marche][mem], qui fournit des logements sociaux.
-
-Le projet est disponible sous les conditions de la licence de logiciel
-libre [CeCILL][cecill] dans [sa version 2.1][cecill21]. Cette licence a
-été sélectionnée de par sa compatibilité avec le droit français.
-
-Il contient trois composants :
-
-- le [démon][daemon], qui gère les ressources en elles-mêmes et répond à
- des requêtes concernant celles-ci ;
-- la [bibliothèque][lib] [client][client] qui permet de faire des requêtes
- au démon ;
-- un [client][client] utilisant la bibliothèque citée précédemment pour
- faire quelques opérations, comme servir de callback au serveur DHCP
- lorsque celui-ci a attribué ou retiré une adresse IP à un nouveau
- serveur WES sur le réseau.
-
-La contruction de ces composants se fait en deux étapes :
-
-- la _configuration_, soit la sélection de différentes options de
- construction et d'installation ;
-- la _construction_ en elle-même.
-
-## Dépendances
-| Name | Version |
-|------------------------------------------|---------|
-| [libcurl](https://curl.haxx.se/libcurl/) | >= 7.0 |
-
-## Configuration
-Pour configurer le logiciel, il faut utiliser le script `./configure`.
-
-**TODO**
-
-**TODO: decode CGX using libxml-2.0 package?**
-
-[daemon]: https://fr.wikipedia.org/wiki/Daemon_%28informatique%29
-[lib]: https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_logicielle
-[client]: https://fr.wikipedia.org/wiki/Client_(informatique)
-[celec]: https://www.cartelectronic.fr/
-[wes]: https://www.cartelectronic.fr/content/8-serveur-wes
-[thomas]: https://thomas.touhey.fr/
-[mem]: https://metmmetm.fr/
-[greta]: http://www.greta-essonne.fr/
-[bts]: http://www.onisep.fr/Ressources/Univers-Formation/Formations/Post-bac/BTS-Systemes-numeriques-option-A-informatique-et-reseaux
-[lyc]: http://www.lyc-michelet-arpajon.ac-versailles.fr/
-[cecill]: http://cecill.info/
-[cecill21]: http://cecill.info/licences/Licence_CeCILL_V2.1-fr.html
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..eadfe70
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,67 @@
+Démon de gestion de serveurs WES
+================================
+
+Ce projet, nommé « weshd » pour « WES Handling Daemon », permet de gérer
+un ou plusieurs `serveurs WES`_, superviseurs d'énergie produits par
+l'entreprise française `Cartelectronic`_.
+
+Il a été écrit en 2018 par `Thomas Touhey`_ à l'occasion d'un projet de
+`BTS SNIR`_ organisé par le `GRETA de l'Essonne`_ et l'équipe pédagogique
+du `lycée Michelet d'Arpajon`_. Ce projet vise à améliorer l'infrastructure
+de gestion de la consommation de ressources telles que l'électricité ou
+l'eau pour l'association `Monde en Marge, Monde en Marche`_, qui fournit
+des logements sociaux.
+
+Le projet est disponible sous les conditions de la licence de logiciel
+libre `CeCILL`_ dans `sa version 2.1 <CeCILL 2.1_>`_. Cette licence a
+été sélectionnée de par sa compatibilité avec le droit français.
+
+Il contient trois composants :
+
+- le `démon`_, qui gère les ressources en elles-mêmes et répond à
+ des requêtes concernant celles-ci ;
+- la `bibliothèque`_ `client`_ qui permet de faire des requêtes
+ au démon ;
+- un `client`_ utilisant la bibliothèque citée précédemment pour
+ faire quelques opérations, comme servir de callback au serveur DHCP
+ lorsque celui-ci a attribué ou retiré une adresse IP à un nouveau
+ serveur WES sur le réseau.
+
+La contruction de ces composants se fait en deux étapes :
+
+- la *configuration*, soit la sélection de différentes options de
+ construction et d'installation ;
+- la *construction* en elle-même.
+
+-----------
+Dépendances
+-----------
+
+- un système `POSIX`_-compliant ;
+- la `libcurl`_ >= 7.0 ;
+- `asn1c`_.
+
+-------------
+Configuration
+-------------
+
+Pour configurer le logiciel, il faut utiliser le script ``./configure``.
+
+**TODO**
+**TODO: decode CGX using libxml-2.0 package?**
+
+.. _serveurs WES: https://www.cartelectronic.fr/content/8-serveur-wes
+.. _Cartelectronic: https://www.cartelectronic.fr/
+.. _Thomas Touhey: https://thomas.touhey.fr/
+.. _BTS SNIR: http://www.onisep.fr/Ressources/Univers-Formation/Formations/Post-bac/BTS-Systemes-numeriques-option-A-informatique-et-reseaux
+.. _GRETA de l'Essonne: http://www.greta-essonne.fr/
+.. _lycée Michelet d'Arpajon: http://www.lyc-michelet-arpajon.ac-versailles.fr/
+.. _Monde en Marge, Monde en Marche: https://metmmetm.fr/
+.. _CeCILL: http://cecill.info/
+.. _CeCILL 2.1: http://cecill.info/licences/Licence_CeCILL_V2.1-fr.html
+.. _démon: https://fr.wikipedia.org/wiki/Daemon_%28informatique%29
+.. _bibliothèque: https://fr.wikipedia.org/wiki/Biblioth%C3%A8que_logicielle
+.. _client: https://fr.wikipedia.org/wiki/Client_(informatique)
+.. _POSIX: https://fr.wikipedia.org/wiki/POSIX
+.. _libcurl: https://curl.haxx.se/libcurl/
+.. _asn1c: http://lionet.info/asn1c/compiler.html
diff --git a/daemon/server.c b/daemon/server.c
index 870a0ae..75f55aa 100644
--- a/daemon/server.c
+++ b/daemon/server.c
@@ -28,6 +28,7 @@
* knowledge of the CeCILL license and that you accept its terms.
* ************************************************************************* */
#include "internals.h"
+#include <WeshRequest.h>
/* `run_server()`: lancer le serveur. */
diff --git a/NOTES.txt b/doc/M2M.notes.txt
index 14e8e7b..14e8e7b 100644
--- a/NOTES.txt
+++ b/doc/M2M.notes.txt
diff --git a/scheme.asn1 b/scheme.asn1
new file mode 100644
index 0000000..f54b146
--- /dev/null
+++ b/scheme.asn1
@@ -0,0 +1,36 @@
+WeshProtocol DEFINITIONS ::= BEGIN
+ -- Utilities.
+
+ WeshIPv4 ::= SEQUENCE {
+ comp1 INTEGER(0..255),
+ comp2 INTEGER(0..255),
+ comp3 INTEGER(0..255),
+ comp4 INTEGER(0..255)
+ }
+
+ WeshID ::= INTEGER(1..32766)
+
+ -- Request related.
+
+ WeshRequest ::= CHOICE {
+ create [0] SEQUENCE {
+ ip WeshIPv4
+ },
+ delete [1] SEQUENCE {
+ id WeshID
+ },
+ set [2] SEQUENCE {
+ id WeshID,
+ register UTF8String,
+ value UTF8String
+ },
+ query [3] SEQUENCE {
+ id WeshID,
+ register UTF8String
+ }
+ }
+
+ -- Response-related.
+
+ -- TODO
+END