summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume2007-08-31 14:25:33 +0000
committerGuillaume2007-08-31 14:25:33 +0000
commita4586dc8be70e48a6bff6d4869da97330180dcd8 (patch)
tree4c59696e949db2362059a829aa1e1941048eed9d
parent6a980f29e66907605086adceb40c83b6a255c696 (diff)
module msg : work in progress
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@643 017c9cb6-072f-447c-8318-d5b54f68fe89
-rw-r--r--cp/msg/Makefile9
-rw-r--r--cp/msg/Module2
-rw-r--r--cp/msg/ecos.ecc.sh5
-rw-r--r--cp/msg/msg.h45
-rw-r--r--cp/msg/src/msg.c23
5 files changed, 72 insertions, 12 deletions
diff --git a/cp/msg/Makefile b/cp/msg/Makefile
new file mode 100644
index 0000000000..b93d72b40e
--- /dev/null
+++ b/cp/msg/Makefile
@@ -0,0 +1,9 @@
+BASE = ../../
+
+ECOS = y
+
+TARGET_PROGRAMS = msg
+msg_SOURCES = msg.c
+msg_MODULES = lib
+
+include $(BASE)/common/make/top.mk
diff --git a/cp/msg/Module b/cp/msg/Module
new file mode 100644
index 0000000000..418e4f001a
--- /dev/null
+++ b/cp/msg/Module
@@ -0,0 +1,2 @@
+SOURCES := msg.c
+
diff --git a/cp/msg/ecos.ecc.sh b/cp/msg/ecos.ecc.sh
new file mode 100644
index 0000000000..8253d98c9a
--- /dev/null
+++ b/cp/msg/ecos.ecc.sh
@@ -0,0 +1,5 @@
+config=${1:-ecos-gen.ecc}
+ecosconfig --config=$config new linux default
+cat >> $config <<EOF
+EOF
+ecosconfig --config=$config check
diff --git a/cp/msg/msg.h b/cp/msg/msg.h
index da118872f0..47c271adcd 100644
--- a/cp/msg/msg.h
+++ b/cp/msg/msg.h
@@ -16,6 +16,12 @@
#include "cp/cp_types.h"
+#include "mac/sar/inc/sar_mf.h"
+/*
+ * Homeplug AV constantes
+ */
+#define MSG_VLAN_TAG 0 // TBD
+#define MSG_MTYPE 0xe188 // 11.1
/*
* Familles et numéros de message
@@ -43,22 +49,22 @@ typedef enum msg_mme_dest_t {MSG_STA, MSG_CCO} msg_mme_dest_t;
typedef struct msg_fmi_t // Table 11-178
{
- u8 nf_fmi:4; // Number of fragments for message
- u8 fn_fmi:4; // fragment number
+ u8 nf_mi:4; // Number of fragments for message
+ u8 fn_mi:4; // fragment number
u8 fmsn; // fragmentation message sequence number
} msg_fmi_t;
-typedef struct msg_mme_t // Table 11-178
+typedef struct msg_mme_t // Table 11-178
{
- mac_adresse_t oda[6];
- mac_adresse_t osa[6];
- u32 v_lan_tag;
- u16 m_type;
+ mac_adresse_t oda;
+ mac_adresse_t osa;
+ u32 v_lan_tag;
+ u16 m_type;
u8 mmv;
- mm_type_t mm_type __attribute__ ((packed));
+ mm_type_t mm_type;
msg_fmi_t fmi;
- u8 mm_entry[MAC_FRAME_SIZE];
-} msg_mme_t;
+ u8 mm_entry[SAR_MSDU_PAYLOAD_MAX_SIZE - 23]; // 23 = header size
+} __attribute__ ((packed)) msg_mme_t;
typedef struct msg_list_mme_t
{
@@ -80,7 +86,7 @@ extern msg_list_mme_t msg_list[];
* \return the message number or UNKNOW_MSG
*/
u16
-msg_get_number(msg_mme_t msg[]);
+msg_get_number(msg_mme_t *msg);
/**
* \brief
@@ -91,5 +97,22 @@ void *
msg_dispatch(msg_mme_t *msg);
+/**
+ * \brief set the const values of mme (ie mtype)
+ * \param Msg : pointer to the message
+ * \return
+ */
+void
+msg_set_mme_const_values(msg_mme_t *msg);
+
+/**
+ * \brief check the const values of mme (ie mtype)
+ * \param Msg : pointer to the message
+ * \return true if ok
+ */
+bool
+msg_check_wrong_mme_const_values(msg_mme_t *msg);
+
+
#endif
diff --git a/cp/msg/src/msg.c b/cp/msg/src/msg.c
index 67bef89fb3..d706a36ed7 100644
--- a/cp/msg/src/msg.c
+++ b/cp/msg/src/msg.c
@@ -45,11 +45,13 @@ msg_list_mme_t msg_list[] =
};
u16
-msg_get_number(msg_mme_t msg[])
+msg_get_number(msg_mme_t *msg)
{
msg_mme_t * mme;
u16 mme_num;
+ dbg_assert( ! msg_check_wrong_mme_const_values(msg));
+
mme = msg;
mme_num = mme->mm_type;
@@ -59,6 +61,7 @@ msg_get_number(msg_mme_t msg[])
if(mme_num >= COUNT(msg_list))
{
+ dbg_assert(0);
return MSG_UNKNOW;
}
return mme_num;
@@ -69,6 +72,8 @@ msg_dispatch(msg_mme_t *msg)
{
u16 mme_num;
+ dbg_assert( ! msg_check_wrong_mme_const_values(msg));
+
mme_num = msg_get_number(msg);
if( (mme_num == MSG_UNKNOW) || (msg_list[mme_num].msg_func == NULL) )
{
@@ -79,3 +84,19 @@ msg_dispatch(msg_mme_t *msg)
return msg_list[mme_num].msg_func;
}
+void
+msg_set_mme_const_values(msg_mme_t *msg)
+{
+ dbg_assert(msg);
+
+ msg->m_type = MSG_MTYPE; // if you know how to init a const value in a struct, tell me !
+}
+
+bool
+msg_check_wrong_mme_const_values(msg_mme_t *msg)
+{
+ dbg_assert(msg);
+
+ return (msg->m_type != MSG_MTYPE);
+}
+