summaryrefslogtreecommitdiff
path: root/cleopatre/application
diff options
context:
space:
mode:
authorNélio Laranjeiro2012-03-20 15:04:07 +0100
committerNélio Laranjeiro2012-09-07 08:56:58 +0200
commit57887daee50d68d382ea9b806eb4543b0a3404e0 (patch)
tree6cd747ad383182d043ba1e33fef844d90e671950 /cleopatre/application
parenta663670bc4800c7e165be4c7f45a388c664e6415 (diff)
cleopatre/application: integrate mmtcgen, refs #409
Diffstat (limited to 'cleopatre/application')
-rw-r--r--cleopatre/application/libmme/Makefile15
-rw-r--r--cleopatre/application/libmme/inc/.gitignore1
-rw-r--r--cleopatre/application/libmme/inc/libmme.h37
-rw-r--r--cleopatre/application/libmme/src/mme.c2
-rw-r--r--cleopatre/application/managerd/src/bridge.c9
-rw-r--r--cleopatre/application/managerd/src/vs_mme.c2
-rw-r--r--cleopatre/application/spidapp/src/spidapp.c2
7 files changed, 22 insertions, 46 deletions
diff --git a/cleopatre/application/libmme/Makefile b/cleopatre/application/libmme/Makefile
index b01cd38c07..f6deb24f22 100644
--- a/cleopatre/application/libmme/Makefile
+++ b/cleopatre/application/libmme/Makefile
@@ -23,7 +23,8 @@ DYN_OBJS=$(addprefix $(OBJPATH)/,$(SRCS:.c=.dyn.o))
STAT_OBJS=$(addprefix $(OBJPATH)/,$(SRCS:.c=.stat.o))
DYN_DEPS=$(patsubst %o,%d,$(DYN_OBJS))
STAT_DEPS=$(patsubst %o,%d,$(STAT_OBJS))
-
+MMETYPES=$(INCPATH)/mmtypes.h
+MMTCGEN=$(BASE)/../common/lib/mmtcgen
all: $(STAT_LIB) $(DYN_LIB)
@@ -33,14 +34,20 @@ $(STAT_LIB): $(STAT_OBJS)
$(DYN_LIB): $(DYN_OBJS)
$(CC_WITHOUT_CFLAGS) -shared -fPIC -o $@ $(DYN_OBJS)
-$(OBJPATH)/%.stat.o: $(SRCPATH)/%.c
+$(OBJPATH)/%.stat.o: $(SRCPATH)/%.c $(MMETYPES)
$(CC_WITH_CFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
-$(OBJPATH)/%.dyn.o: $(SRCPATH)/%.c
+$(OBJPATH)/%.dyn.o: $(SRCPATH)/%.c $(MMETYPES)
$(CC_WITH_CFLAGS) $(EXTRA_CFLAGS) -fPIC -o $@ -c $<
$(DYN_OBJS) $(STAT_OBJS): | $(OBJPATH)
+$(MMTCGEN)/parser.py: $(MMTCGEN)/parser.g
+ yapps $<
+
+$(MMETYPES): $(MMTCGEN)/parser.py
+ python $(MMTCGEN)/mmtcgen.py $@
+
$(OBJPATH):
mkdir $(OBJPATH)
@@ -50,5 +57,5 @@ $(OBJPATH):
clean:
rm -f $(DYN_OBJS) $(STAT_OBJS) $(STAT_DEPS) $(DYN_DEPS) $(DYN_LIB) \
- $(STAT_LIB)
+ $(STAT_LIB)
rmdir $(OBJPATH)
diff --git a/cleopatre/application/libmme/inc/.gitignore b/cleopatre/application/libmme/inc/.gitignore
new file mode 100644
index 0000000000..bcf84f608a
--- /dev/null
+++ b/cleopatre/application/libmme/inc/.gitignore
@@ -0,0 +1 @@
+mme.h
diff --git a/cleopatre/application/libmme/inc/libmme.h b/cleopatre/application/libmme/inc/libmme.h
index 83c765990a..43b9347b33 100644
--- a/cleopatre/application/libmme/inc/libmme.h
+++ b/cleopatre/application/libmme/inc/libmme.h
@@ -16,6 +16,8 @@
#define LIBMME_H
#include <linux/if_ether.h>
+/* Include the auto-generated file from mmtcgen. */
+#include "mmtypes.h"
#define PKTSIZE 1514
#define MME_TYPE 0x88e1 /* MME Ethertype (SPiDCOM MME Protocol) */
@@ -30,39 +32,6 @@
#define MME_PAYLOAD_MAX_LEN (MME_MAX_SIZE - sizeof(MME_t) - 3 /* OUI SPIDCOM */)
-#define MME_TYPE_MS 0x8000
-#define MME_TYPE_VS 0xa000
-
-typedef enum
-{
- MME_TYPE_VS_GET_VERSION = (MME_TYPE_VS | 0x00),
- MME_TYPE_VS_RESET = (MME_TYPE_VS | 0x08),
- MME_TYPE_VS_GET_NVRAM = (MME_TYPE_VS | 0x10),
- MME_TYPE_VS_GET_LOOPBACK = (MME_TYPE_VS | 0x14),
- MME_TYPE_VS_SET_LOOPBACK = (MME_TYPE_VS | 0x18),
- MME_TYPE_VS_GET_TONEMASK = (MME_TYPE_VS | 0x1c),
- MME_TYPE_VS_GET_ETH_PHY = (MME_TYPE_VS | 0x20),
- MME_TYPE_VS_ETH_STATS = (MME_TYPE_VS | 0x24),
- MME_TYPE_VS_SNIFFER = (MME_TYPE_VS | 0x2c),
- MME_TYPE_VS_GET_STATUS = (MME_TYPE_VS | 0x30),
- MME_TYPE_VS_GET_TONEMAP = (MME_TYPE_VS | 0x34),
- MME_TYPE_VS_GET_SNR = (MME_TYPE_VS | 0x38),
- MME_TYPE_VS_GET_SPECTRUM = (MME_TYPE_VS | 0x3c),
- MME_TYPE_VS_GET_LINK_STATS = (MME_TYPE_VS | 0x40),
- MME_TYPE_VS_GET_AMP_MAP = (MME_TYPE_VS | 0x44),
- MME_TYPE_VS_GET_STATS = (MME_TYPE_VS | 0x48),
- MME_TYPE_VS_EOC_GET_TOPO = (MME_TYPE_VS | 0x8c),
- MME_TYPE_VS_EOC_GET_DEVICE_INFO = (MME_TYPE_VS | 0x90),
- MME_TYPE_VS_EOC_CCO_SET_WL = (MME_TYPE_VS | 0x94),
- MME_TYPE_VS_EOC_CCO_GET_WL = (MME_TYPE_VS | 0x98),
- MME_TYPE_VS_EOC_CCO_SET_OUT_LEV = (MME_TYPE_VS | 0x9c),
- MME_TYPE_VS_EOC_GET_LINK_INFO = (MME_TYPE_VS | 0xa0),
-} mme_type_t;
-
-#define MME_TYPE_REQ 0x0000
-#define MME_TYPE_CNF 0x0001
-#define MME_TYPE_IND 0x0002
-#define MME_TYPE_RSP 0x0003
#define MME_TYPE_MASK 0x0003
typedef struct
@@ -157,7 +126,7 @@ typedef struct {
typedef mme_error_t (*mme_listen_cb_t) (mme_ctx_t *ctx, char *iface, unsigned char *source);
/* function prototypes */
-mme_error_t mme_init (mme_ctx_t *ctx, const mme_type_t mmtype, unsigned char *buffer, const unsigned int length);
+mme_error_t mme_init (mme_ctx_t *ctx, const mmtype_t mmtype, unsigned char *buffer, const unsigned int length);
mme_error_t mme_get_length (mme_ctx_t *ctx, unsigned int *length);
mme_error_t mme_get_free_space (mme_ctx_t *ctx, unsigned int *length);
mme_error_t mme_push (mme_ctx_t *ctx, const void *data, unsigned int length, unsigned int *result_length);
diff --git a/cleopatre/application/libmme/src/mme.c b/cleopatre/application/libmme/src/mme.c
index 3f2511bfed..3735c47f36 100644
--- a/cleopatre/application/libmme/src/mme.c
+++ b/cleopatre/application/libmme/src/mme.c
@@ -45,7 +45,7 @@
*/
mme_error_t
-mme_init (mme_ctx_t *ctx, const mme_type_t mmtype, unsigned char *buffer, const unsigned int length)
+mme_init (mme_ctx_t *ctx, const mmtype_t mmtype, unsigned char *buffer, const unsigned int length)
{
/* protect from null pointers */
if (ctx == NULL || buffer == NULL)
diff --git a/cleopatre/application/managerd/src/bridge.c b/cleopatre/application/managerd/src/bridge.c
index a72f943088..a022c9d593 100644
--- a/cleopatre/application/managerd/src/bridge.c
+++ b/cleopatre/application/managerd/src/bridge.c
@@ -65,21 +65,20 @@ enum bridge_status bridge_processing(struct managerd_ctx *ctx, uint8_t *buffer,
/* check if this MME needs to be internally processed */
switch(mmehdr->mmtype)
{
- case MME_TYPE_VS_GET_VERSION | MME_TYPE_REQ:
+ case VS_GET_VERSION_REQ:
return vs_mme_get_version (ctx, mmehdr, confirm, MAX_PKT_LEN);
- case MME_TYPE_VS_ETH_STATS | MME_TYPE_REQ:
+ case VS_ETH_STATS_REQ:
return vs_mme_eth_stats (ctx, mmehdr, confirm, MAX_PKT_LEN);
- case MME_TYPE_VS_RESET | MME_TYPE_REQ:
+ case VS_RESET_REQ:
return vs_mme_reset (ctx, mmehdr, confirm, MAX_PKT_LEN);
default:
break;
}
- if((mmehdr->mmtype < MME_TYPE_MS)
- || (mmehdr->mmtype >= MME_TYPE_VS))
+ if(mmehdr->mmtype >= VS_MIN)
{
/* AV or VS MME: give it to MME interface */
mme_nl_send (ctx, buffer, *len);
diff --git a/cleopatre/application/managerd/src/vs_mme.c b/cleopatre/application/managerd/src/vs_mme.c
index cc3191d4d0..a1693660cd 100644
--- a/cleopatre/application/managerd/src/vs_mme.c
+++ b/cleopatre/application/managerd/src/vs_mme.c
@@ -38,7 +38,7 @@ static void _prepare_confirm (struct managerd_ctx *ctx, MME_t *request, MME_t *c
memcpy (confirm->mme_src, ctx->br_mac_addr, ETH_ALEN);
confirm->mtype = request->mtype;
confirm->mmv = request->mmv;
- confirm->mmtype = (request->mmtype & ~MME_TYPE_MASK) | MME_TYPE_CNF;
+ confirm->mmtype = (request->mmtype & ~MME_TYPE_MASK) | MME_CNF;
confirm->fmi = 0;
}
diff --git a/cleopatre/application/spidapp/src/spidapp.c b/cleopatre/application/spidapp/src/spidapp.c
index f851f998a7..e1dc6644e4 100644
--- a/cleopatre/application/spidapp/src/spidapp.c
+++ b/cleopatre/application/spidapp/src/spidapp.c
@@ -385,7 +385,7 @@ cmd_sniffer (struct cmd_entry *cmd_entry, int argc, char **argv)
memcpy (mme_hdr->mme_src, mac_src, ETH_ALEN);
mme_hdr->mtype = htons (MME_TYPE);
mme_hdr->mmv = 1;
- mme_hdr->mmtype = MME_TYPE_VS_SNIFFER | MME_TYPE_REQ;
+ mme_hdr->mmtype = VS_SNIFFER_REQ;
mme_hdr->fmi = 0;
memcpy ((unsigned char *)mme_hdr + sizeof(MME_t), OUI_SPIDCOM, sizeof(OUI_SPIDCOM) - 1);
memcpy ((unsigned char *)mme_hdr + sizeof(MME_t) + sizeof(OUI_SPIDCOM) - 1, &mode, sizeof(mode));