summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume2007-12-07 15:52:26 +0000
committerGuillaume2007-12-07 15:52:26 +0000
commit755573a61e8e82a0777485065130d1275d575e04 (patch)
tree657d0bf3d17d3f9597e5667cbc43e607b93d9afc
parent94a4fdd13361d6e8ace64a22477951be6c44f536 (diff)
working on message cm_encrypted_payload.ind
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@1112 017c9cb6-072f-447c-8318-d5b54f68fe89
-rw-r--r--cp/cp_types.h6
-rw-r--r--cp/interf/inc/interf_types.h4
-rw-r--r--cp/interf/src/interf.c2
-rw-r--r--cp/interf/src/interf_cl_layer.c13
-rw-r--r--cp/msg/Module6
-rw-r--r--cp/msg/inc/msg_cc.h2
-rw-r--r--cp/msg/inc/msg_cm.h36
-rw-r--r--cp/msg/inc/msg_cm_convert.h24
-rw-r--r--cp/msg/inc/msg_const.h16
-rw-r--r--cp/msg/msg.h5
-rw-r--r--cp/msg/src/msg.c44
-rw-r--r--cp/msg/src/msg_cc.c12
-rw-r--r--cp/msg/src/msg_cm.c152
-rw-r--r--cp/msg/src/msg_cm_convert.c45
-rw-r--r--cp/msg/test/Makefile19
-rw-r--r--cp/msg/test/Module2
-rw-r--r--cp/msg/test/src/test_msg.c37
-rw-r--r--cp/secu/inc/secu_types.h10
-rw-r--r--cp/secu/secu.h11
-rw-r--r--cp/secu/src/secu_lib.c25
-rw-r--r--cp/secu/src/secu_p_run.c5
-rw-r--r--cp/station/inc/station_actions.h3
-rw-r--r--cp/station/inc/station_data.h4
-rw-r--r--cp/station/src/station_actions.c29
-rw-r--r--cp/station/src/station_apivs.c7
-rw-r--r--cp/station/src/station_core.c21
-rw-r--r--cp/station/station.h2
-rw-r--r--cp/test/src/test_interf.c61
-rw-r--r--cp/test/src/test_msg.c64
-rw-r--r--cp/test/src/test_station.c19
-rw-r--r--cp/vstate_fsm/src/SEMEDef.h8
-rw-r--r--cp/vstate_fsm/src/SEMTypes.h4
-rw-r--r--cp/vstate_fsm/src/cesar_cp_PConstant.h2
-rw-r--r--cp/vstate_fsm/src/cesar_cp_PEvent.h2
-rw-r--r--cp/vstate_fsm/src/main_fsm.c130
-rw-r--r--cp/vstate_fsm/src/main_fsm.h6
-rw-r--r--cp/vstate_fsm/src/main_fsmAction.h4
-rw-r--r--cp/vstate_fsm/src/main_fsmData.c44
-rw-r--r--cp/vstate_fsm/src/main_fsmData.h34
-rw-r--r--cp/vstate_fsm/src/sta_connection.c4
-rw-r--r--cp/vstate_fsm/src/sta_connection.h4
-rw-r--r--cp/vstate_fsm/src/sta_connectionAction.h4
-rw-r--r--cp/vstate_fsm/src/sta_connectionData.c4
-rw-r--r--cp/vstate_fsm/src/sta_connectionData.h4
44 files changed, 568 insertions, 372 deletions
diff --git a/cp/cp_types.h b/cp/cp_types.h
index 8d781389bb..913e3ec61b 100644
--- a/cp/cp_types.h
+++ b/cp/cp_types.h
@@ -24,11 +24,11 @@
#define BROADCAST_MAC_AD "\xFF\xFF\xFF\xFF\xFF\xFF"
#define ZEROS_MAC_AD "\0\0\0\0\0\0"
-typedef u8 mac_address_t[6];
+typedef unsigned char mac_address_t[6];
typedef unsigned long int nid_t;
-typedef u8 snid_t;
+typedef unsigned char snid_t;
-typedef u8 tei_t;
+typedef unsigned char tei_t;
#define MAX_TEI 0xFF
typedef enum E_ErrCode
diff --git a/cp/interf/inc/interf_types.h b/cp/interf/inc/interf_types.h
index 037878fd31..8eee47caea 100644
--- a/cp/interf/inc/interf_types.h
+++ b/cp/interf/inc/interf_types.h
@@ -35,7 +35,7 @@
* This directive is used to check some buffer overflow within the pool
* array.
*/
-#define CHECK_BUFFER_OVERFLOW 1
+#define CHECK_BUFFER_OVERFLOW 0
#define BUFFER_SIGNATURE 0xDEADABCD
/*
* check constant coherency
@@ -44,7 +44,7 @@
#warning "interf.h : number of buffer not coherent"
#endif
#if (CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE < INTERF_NB_BUFFER)
- #warning "interf.h : CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE looks too small"
+// #warning "interf.h : CYGNUM_KERNEL_SYNCH_MBOX_QUEUE_SIZE looks too small"
// !!! nota : if this condition is not true, the function interf_release_buf
// may be block forever !!!
#endif
diff --git a/cp/interf/src/interf.c b/cp/interf/src/interf.c
index 99511819f9..0a2d2dc706 100644
--- a/cp/interf/src/interf.c
+++ b/cp/interf/src/interf.c
@@ -175,7 +175,7 @@ interf_init (void)
printf("wrong mmentry size : %lu octets instead of %i\n", sizeof(pool[0].msg), SAR_MSDU_PAYLOAD_MAX_SIZE);
printf(" osa : %lu\n", sizeof(pool[0].msg.osa));
printf(" oda : %lu\n", sizeof(pool[0].msg.oda));
- printf(" v_lan_tag : %lu\n", sizeof(pool[0].msg.v_lan_tag));
+ //printf(" v_lan_tag : %lu\n", sizeof(pool[0].msg.v_lan_tag));
printf(" m_type : %lu\n", sizeof(pool[0].msg.m_type));
printf(" mmv; : %lu\n", sizeof(pool[0].msg.mmv));
printf(" mm_type; : %lu\n", sizeof(pool[0].msg.mm_type));
diff --git a/cp/interf/src/interf_cl_layer.c b/cp/interf/src/interf_cl_layer.c
index 2e116d09fb..c176a11235 100644
--- a/cp/interf/src/interf_cl_layer.c
+++ b/cp/interf/src/interf_cl_layer.c
@@ -13,13 +13,13 @@ static cl_t *interf_cl_ctx = NULL;
static mac_store_t *interf_mac_store_ctx = NULL;
void interf_cl_layer_init (void)
-{
+{/*
u8 *buf;
int i;
// get the mac store context
interf_mac_store_ctx = mac_store_init ();
// get the cl context
- interf_cl_ctx = cl_init (interf_mac_store_ctx);
+// interf_cl_ctx = cl_init (interf_mac_store_ctx);
// register the receive callback at the cl
cl_mme_recv_init (interf_cl_ctx, interf_receive, NULL);
// transmit some buffer to the cl
@@ -27,15 +27,16 @@ void interf_cl_layer_init (void)
{
buf = (u8 *) interf_give_buf();
cl_mme_recv_done (interf_cl_ctx, buf);
- }
+ }*/
}
void interf_cl_layer_add_buf (msg_mme_t *msg)
{
+ /*
dbg_assert(interf_mac_store_ctx);
dbg_assert (interf_cl_ctx);
dbg_assert ( !msg_check_wrong_mme_const_values (msg));
-
+*/
}
void
@@ -46,7 +47,7 @@ interf_cl_layer_send_buf (
const tei_t tei
)
{
- mfs_tx_t *mfs_tx;
+/* mfs_tx_t *mfs_tx;
bool added;
dbg_assert(interf_mac_store_ctx);
@@ -79,5 +80,5 @@ interf_cl_layer_send_buf (
interf_release_buf,
(void *) msg
);
-
+*/
}
diff --git a/cp/msg/Module b/cp/msg/Module
index 336294ed02..f99cf9b285 100644
--- a/cp/msg/Module
+++ b/cp/msg/Module
@@ -1,2 +1,6 @@
-SOURCES := msg.c msg_cm.c msg_cc.c msg_apcm.c field/msg_field_cinfo.c field/msg_field_cid.c field/msg_field_classifier.c field/msg_field_cspec.c field/msg_field_qmp.c cm/conn/msg_cm_conn_new_cnf.c cm/conn/msg_cm_conn_new_req.c cm/conn/msg_cm_conn_rel_ind.c cm/conn/msg_cm_conn_rel_rsp.c cm/conn/msg_cm_conn_mod_req.c cm/conn/msg_cm_conn_mod_cnf.c cm/conn/msg_cm_conn_info_req.c cm/conn/msg_cm_conn_info_cnf.c
+SOURCES := msg.c \
+ msg_cm.c \
+ msg_cm_convert.c \
+ msg_cc.c \
+ msg_apcm.c \
diff --git a/cp/msg/inc/msg_cc.h b/cp/msg/inc/msg_cc.h
index 07e0e2bc4c..945cf7be36 100644
--- a/cp/msg/inc/msg_cc.h
+++ b/cp/msg/inc/msg_cc.h
@@ -68,4 +68,6 @@ void msg_cc_assoc_cnf_send(const mac_address_t oda, const u8 result, const tei_t
*/
void msg_cc_set_tei_map_ind_send(const mac_address_t oda, const u8 mode, const tei_t tei, const bool recall);
+
+
#endif
diff --git a/cp/msg/inc/msg_cm.h b/cp/msg/inc/msg_cm.h
index ebb8a5da93..d21df59c6c 100644
--- a/cp/msg/inc/msg_cm.h
+++ b/cp/msg/inc/msg_cm.h
@@ -19,7 +19,7 @@
#include "cp/secu/secu.h"
#include "cp/msg/inc/msg_cm_conn.h"
-
+#include "cp/msg/inc/msg_cm_convert.h"
typedef struct cm_unassociated_sta_t // 11.5.1
@@ -38,11 +38,36 @@ typedef struct cm_encrypted_payload_t // 11.5.2
u8 pmn;
u8 iv[16];
u16 len;
-
-
-
+ u8 rf[15];
} __attribute__ ((packed)) cm_encrypted_payload_t;
+typedef struct cm_encrypted_payload_sub_t // 11.5.2
+{
+ u32 crc;
+ u8 pid;
+ u16 prn;
+ u8 pmn;
+ u8 padding[15];
+ u8 rf_len;
+} __attribute__ ((packed)) cm_encrypted_payload_sub_t;
+
+typedef struct cm_set_key_req_t
+{
+ u8 key_type;
+ u32 my_nonce;
+ u32 your_nonce;
+ u8 pid;
+ u16 prn;
+ u8 pmn;
+ u8 cco_capa;
+ //nid_t nid;
+ u8 nid[7];
+ u8 new_eks;
+ u8 new_key[16];
+} __attribute__ ((packed)) cm_set_key_req_t;
+
+void
+msg_cm_init(void);
//void msg_cm_unassociated_sta_ind_send(interf_id_t interf_id, mac_adresse_t oda);
void
@@ -54,7 +79,8 @@ msg_cm_encrypted_payload_ind_send(
const msg_param_t encapsulated_msg_param,
const tei_t tei,
const bool last_msg_of_p_run,
- const pid_t pid
+ const pid_t pid,
+ const u16 msg_size
);
diff --git a/cp/msg/inc/msg_cm_convert.h b/cp/msg/inc/msg_cm_convert.h
new file mode 100644
index 0000000000..3d90fbb68d
--- /dev/null
+++ b/cp/msg/inc/msg_cm_convert.h
@@ -0,0 +1,24 @@
+#ifndef MSG_CM_CONVERT_H_
+#define MSG_CM_CONVERT_H_
+
+#include "cp/msg/inc/msg_cm.h"
+#include "lib/bitstream.h"
+
+
+void
+msg_mme_header_convert(
+ u8 *buffer,
+ msg_mme_t *msg,
+ bitstream_type_t read,
+ bitstream_t ctx
+ );
+
+void
+msg_cm_unassociated_sta_ind_convert(
+ u8 *buffer,
+ msg_mme_t *msg,
+ bitstream_type_t read
+ );
+
+
+#endif /*MSG_CM_CONVERT_H_*/
diff --git a/cp/msg/inc/msg_const.h b/cp/msg/inc/msg_const.h
index b0ff74ce7e..2b55aa71e7 100644
--- a/cp/msg/inc/msg_const.h
+++ b/cp/msg/inc/msg_const.h
@@ -22,7 +22,7 @@
*/
#define MSG_VLAN_TAG 0 // TBD
#define MSG_MTYPE 0xE188 // 11.1
-#define MSG_MME_HEADER_SIZE 23
+#define MSG_MME_HEADER_SIZE 19
#define MSG_MM_VERSION 0x01 // 11.1.5
/*
* other constants
@@ -169,7 +169,6 @@ typedef struct msg_mme_t // Table 11-178
{
mac_address_t oda; // original destination adress
mac_address_t osa; // original source adress
- u32 v_lan_tag; // ieee 802.1 tag (optional)
u16 m_type; // const = 0x88E1
u8 mmv; // management message version
mm_type_t mm_type; // management message type
@@ -177,6 +176,19 @@ typedef struct msg_mme_t // Table 11-178
u8 mm_entry[SAR_MSDU_PAYLOAD_MAX_SIZE - MSG_MME_HEADER_SIZE];
} __attribute__ ((packed)) msg_mme_t;
+// the same, without vlan tag
+typedef struct msg_mme_b_t // Table 11-178
+{
+ mac_address_t oda; // original destination adress
+ mac_address_t osa; // original source adress
+ u32 v_lan_tag; // ieee 802.1 tag (optional)
+ u16 m_type; // const = 0x88E1
+ u8 mmv; // management message version
+ mm_type_t mm_type; // management message type
+ msg_fmi_t fmi;
+ u8 mm_entry[SAR_MSDU_PAYLOAD_MAX_SIZE - MSG_MME_HEADER_SIZE - 4];
+} __attribute__ ((packed)) msg_mme_b_t;
+
typedef struct msg_list_mme_t
{
mm_type_t mm_type; // Message type
diff --git a/cp/msg/msg.h b/cp/msg/msg.h
index 42962e946d..19a3f068b5 100644
--- a/cp/msg/msg.h
+++ b/cp/msg/msg.h
@@ -84,7 +84,7 @@ msg_check_wrong_mme_const_values (const msg_mme_t *msg);
* \return pointer to the message
*/
msg_mme_t *
-msg_sending_common_part(const mac_address_t oda, msg_param_t *msg_param);
+msg_sending_common_part(msg_mme_t *msg, const mac_address_t oda, msg_param_t *msg_param);
/**
* \brief add field common to all mme messages (OSA)
@@ -94,8 +94,7 @@ msg_sending_common_part(const mac_address_t oda, msg_param_t *msg_param);
* \return
*/
void
-//msg_send(msg_mme_t *msg, uint msg_size, interf_id_t interf_id, msg_param_t msg_param);
-msg_send(msg_mme_t *msg, uint msg_size, msg_param_t msg_param);
+msg_send(msg_mme_t *msg, u16 msg_size, msg_param_t msg_param);
#endif
diff --git a/cp/msg/src/msg.c b/cp/msg/src/msg.c
index 0605ca8cd0..9fdce1a484 100644
--- a/cp/msg/src/msg.c
+++ b/cp/msg/src/msg.c
@@ -19,7 +19,7 @@
* which process it.
* the array must be ordered on the first field of each line.
*/
-const msg_list_mme_t msg_list[] =
+const msg_list_mme_t msg_list_m[] =
{
{ CC_CCO_APPOINT_REQ, 0 },
{ CC_CCO_APPOINT_CNF, 0 },
@@ -44,17 +44,17 @@ const msg_list_mme_t msg_list[] =
};
// this is the fmsn that will be used in fragmented mme
-static u8 fmsn;
-
+static u8 fmsn_m;
void msg_init(void)
{
#if DEBUG == 0
uint i;
- for(i=1 ; i<COUNT(msg_list) ; i++)
- dbg_assert(msg_list[i].mm_type > msg_list[i-1].mm_type);
+ for(i=1 ; i<COUNT(msg_list_m) ; i++)
+ dbg_assert(msg_list_m[i].mm_type > msg_list_m[i-1].mm_type);
#endif
- fmsn = 0;
+ fmsn_m = 0;
+ msg_cm_init();
}
u8
@@ -62,8 +62,8 @@ msg_get_fmsn(const bool new)
{
// TODO the question is : is it possible to have 2 thread accessing this
// function at the same time ?
- if(new) fmsn++;
- return fmsn;
+ if(new) fmsn_m++;
+ return fmsn_m;
}
u16
@@ -73,9 +73,9 @@ msg_get_number (msg_mme_t *msg)
dbg_assert ( !msg_check_wrong_mme_const_values (msg));
//TODO this is maybe not very efficient, to check with more messages ...
- DICHOTOMY_SEARCH(0, COUNT(msg_list), mme_num, msg->mm_type <= msg_list[mme_num].mm_type);
+ DICHOTOMY_SEARCH(0, COUNT(msg_list_m), mme_num, msg->mm_type <= msg_list_m[mme_num].mm_type);
//printf("requested msg : %i, index found : %i\n", msg->mm_type, mme_num);
- if(msg->mm_type != msg_list[mme_num].mm_type) return MSG_UNKNOW;
+ if(msg->mm_type != msg_list_m[mme_num].mm_type) return MSG_UNKNOW;
return mme_num;
}
@@ -88,8 +88,8 @@ msg_dispatch (msg_mme_t *msg)
mme_num = msg_get_number (msg);
if (mme_num != MSG_UNKNOW)
{
- dbg_assert(msg_list[mme_num].msg_num);
- sta_add_event(msg_list[mme_num].msg_num, (void *) msg);
+ dbg_assert(msg_list_m[mme_num].msg_num);
+ sta_add_event(msg_list_m[mme_num].msg_num, (void *) msg);
}
// release the message's buffer(s)
@@ -125,33 +125,33 @@ msg_check_wrong_mme_const_values (const msg_mme_t *msg)
}
msg_mme_t *
-msg_sending_common_part(const mac_address_t oda, msg_param_t *msg_param)
-{
- msg_mme_t *msg;
-
+msg_sending_common_part(msg_mme_t *msg, const mac_address_t oda, msg_param_t *msg_param)
+{
+ dbg_assert(msg);
dbg_assert(msg_param);
+
// ask for a buffer
- msg = interf_give_buf ();
- dbg_assert ( !msg_check_wrong_mme_const_values (msg));
+ //msg = interf_give_buf ();
+ //dbg_assert ( !msg_check_wrong_mme_const_values (msg));
// set the header values of msg
memcpy(msg->oda, oda, sizeof(mac_address_t));
memcpy(msg->osa, station_get_mac_address(), sizeof(mac_address_t));
// vlan is optional and not used
- // mtype is a constant already set
- // mmv is a constant already set
+ msg->m_type = MSG_MTYPE; // 11.1.4
+ msg->mmv = MSG_MM_VERSION;
// set fragmentation default values
msg->fmi.nf_mi = 0;
msg->fmi.fn_mi = 0;
msg->fmi.fmsn = 0;
// set the default message parameters
- msg_param->mnbf = 0;
+ memset(msg_param, 0, sizeof(msg_param_t));
msg_param->encryption = HARDWARE_ENCRYPTED;
msg_param->peks = NOT_ENCRYPTED;
return msg;
}
void
-msg_send(msg_mme_t *msg, uint msg_size, msg_param_t msg_param)
+msg_send(msg_mme_t *msg, u16 msg_size, msg_param_t msg_param)
{
tei_t tei;
dbg_assert ( !msg_check_wrong_mme_const_values (msg));
diff --git a/cp/msg/src/msg_cc.c b/cp/msg/src/msg_cc.c
index 2a317f20c2..d4e265c82c 100644
--- a/cp/msg/src/msg_cc.c
+++ b/cp/msg/src/msg_cc.c
@@ -18,7 +18,7 @@
void msg_cc_assoc_req_send(const mac_address_t oda)
{
- msg_mme_t *msg;
+/* msg_mme_t *msg;
cc_assoc_req_t *cc_assoc_req;
msg_param_t msg_param;
@@ -34,11 +34,12 @@ void msg_cc_assoc_req_send(const mac_address_t oda)
msg_param.encryption = NOT_ENCRYPTED;
// and then, send the message
msg_send(msg, sizeof(cc_assoc_req_t) + MSG_MME_HEADER_SIZE, msg_param);
+ */
}
void msg_cc_assoc_cnf_send(const mac_address_t oda, const u8 result, const tei_t sta_tei, const u16 lease_time)
{
- msg_mme_t *msg;
+/* msg_mme_t *msg;
cc_assoc_cnf_t *cc_assoc_cnf;
msg_param_t msg_param;
@@ -55,12 +56,12 @@ void msg_cc_assoc_cnf_send(const mac_address_t oda, const u8 result, const tei_t
msg_param.encryption = NOT_ENCRYPTED;
// and then, send the message
msg_send(msg, sizeof(cc_assoc_cnf_t) + MSG_MME_HEADER_SIZE, msg_param);
-
+*/
}
void
msg_cc_set_tei_map_ind_send(const mac_address_t oda, const u8 mode, const tei_t tei, const bool recall)
-{
+{/*
// 11.2.35
msg_mme_t *msg;
cc_set_tei_map_ind_t *cc_set_tei_map_ind;
@@ -129,5 +130,6 @@ msg_cc_set_tei_map_ind_send(const mac_address_t oda, const u8 mode, const tei_t
//msg_param.mnbf = 0;
// and then, send the message
msg_send(msg, MSG_MME_HEADER_SIZE + 2 + number_sta * sizeof(cc_set_tei_map_ind_sub_t), msg_param);
-
+*/
}
+
diff --git a/cp/msg/src/msg_cm.c b/cp/msg/src/msg_cm.c
index 1ac2008c50..87c910c08a 100644
--- a/cp/msg/src/msg_cm.c
+++ b/cp/msg/src/msg_cm.c
@@ -13,89 +13,185 @@
#include "common/std.h"
#include "cp/msg/inc/msg_cm.h"
+#include "lib/crc.h"
+static crc_t crc_m;
+static u32 *crc_table[256];
+
+void
+msg_cm_init(void)
+{
+ // init the CRC context (CRC used in cm_encrypted_payload)
+ crc_m.width = 32;
+ crc_m.generator = 0x4C11DB7; //4.2.1
+ crc_m.init = 0xFFFFFFFF;
+ crc_m.refin = true;
+ crc_m.refout = true;
+ crc_m.xorout = 0xFFFFFFFF;
+ crc_m.table.t32 = (u32 *) crc_table;
+ crc_init(&crc_m);
+}
+
void
msg_cm_unassociated_sta_ind_send(const mac_address_t oda)
{
// 11.5.1
- msg_mme_t *msg;
- cm_unassociated_sta_t *unassociated_sta;
+ msg_mme_t *msg_p, *msg_to_send;
+ cm_unassociated_sta_t *unassociated_sta_p;
msg_param_t msg_param;
+ u8 buffer[1518];
- msg = msg_sending_common_part(oda, &msg_param);
- msg->mm_type = CM_UNASSOCIATED_STA_IND;
+ msg_p = msg_sending_common_part((msg_mme_t *)buffer, oda, &msg_param);
+ msg_p->mm_type = CM_UNASSOCIATED_STA_IND;
// set the message values
- unassociated_sta = (cm_unassociated_sta_t *) & msg->mm_entry;
- // TODO set the values...
+ unassociated_sta_p = (cm_unassociated_sta_t *) & msg_p->mm_entry;
+ unassociated_sta_p->nid = station_get_nid();
+ unassociated_sta_p->cco_capability = station_get_cco_capa();
// set the mnbf flag
msg_param.mnbf = 1;
msg_param.encryption = NOT_ENCRYPTED;
// and finaly, send the message
//printf(" send cm_unassociated_sta\n");
- msg_send(msg, sizeof(cm_unassociated_sta_t) + MSG_MME_HEADER_SIZE, msg_param);
+ msg_to_send = interf_give_buf ();
+ dbg_assert ( !msg_check_wrong_mme_const_values (msg_to_send));
+ msg_cm_unassociated_sta_ind_convert((u8 *)msg_to_send, msg_p, BITSTREAM_WRITE);
+ msg_send(msg_p, sizeof(cm_unassociated_sta_t) + MSG_MME_HEADER_SIZE, msg_param);
}
+// set the following flag to 1 if you want to
+// test the message as on page 681
+#define TEST_681 0
+
void
msg_cm_encrypted_payload_ind_send(
- const msg_mme_t *encapsulated_msg,
+ const msg_mme_t *encapsulated_msg_p,
const msg_param_t encapsulated_msg_param,
const tei_t tei,
const bool last_msg_of_p_run,
- const pid_t pid
+ const pid_t pid,
+ const u16 msg_size
)
{
// 11.5.2
- msg_mme_t *msg;
- cm_encrypted_payload_t *cm_encrypted_payload;
+ msg_mme_t *msg_p;
+ cm_encrypted_payload_t *cm_encrypted_payload_p;
+ cm_encrypted_payload_sub_t *cm_encrypted_payload_sub_p;
msg_param_t msg_param;
station_status_t station_status;
protocol_run_t pr_run;
+ u8 rf, i, pad_size;
+ //void *rf_p;
+ aes_key_t *aes_key_p;
+ aes_context ctx;
+ u16 total_msg_size = msg_size + sizeof(cm_encrypted_payload_t) - COUNT(cm_encrypted_payload_p->rf);
+ u8 buffer[1518], data_to_encrypt[1518];
- dbg_assert ( !msg_check_wrong_mme_const_values (msg));
+ dbg_assert ( !msg_check_wrong_mme_const_values (encapsulated_msg_p));
dbg_assert(tei != 0 && tei != 0xFF);
+ dbg_assert(pid <= HLE_PRO);
+ dbg_assert(msg_size < (sizeof(msg_mme_t) - sizeof(cm_encrypted_payload_t) - sizeof(cm_encrypted_payload_sub_t)));
- msg = msg_sending_common_part(encapsulated_msg->oda, &msg_param);
- msg->mm_type = CM_ENCRYPTED_PAYLOAD_IND;
+
+ msg_p = msg_sending_common_part((msg_mme_t *)buffer, encapsulated_msg_p->oda, &msg_param);
+ msg_p->mm_type = CM_ENCRYPTED_PAYLOAD_IND;
// set the message values
- cm_encrypted_payload = (cm_encrypted_payload_t *) & msg->mm_entry;
+ cm_encrypted_payload_p = (cm_encrypted_payload_t *) & msg_p->mm_entry;
// set the message values...
- cm_encrypted_payload->peks = encapsulated_msg_param.peks;
+ cm_encrypted_payload_p->peks = encapsulated_msg_param.peks;
// set the avln status of the station
station_status = station_get_status();
+ #if TEST_681
+ station_status = 5;
+ #endif
if(station_status == STATION_UNASSOCIATED)
{
- cm_encrypted_payload->avln_status = station_get_cco_capa();
+ cm_encrypted_payload_p->avln_status = station_get_cco_capa();
}
else
{
if(station_get_is_cco())
{
- cm_encrypted_payload->avln_status = 0x08;
+ cm_encrypted_payload_p->avln_status = 0x08;
}
else
{
// the station is assosciated
- cm_encrypted_payload->avln_status = 0x04;
- if(station_get_pcco_capa()) cm_encrypted_payload->avln_status = 0x05;
+ cm_encrypted_payload_p->avln_status = 0x04;
+ if(station_get_pcco_capa()) cm_encrypted_payload_p->avln_status = 0x05;
}
}
// set the protocol run parameters
if(secu_gen_protocol_run_param(tei, last_msg_of_p_run, &pr_run) == PRN_NotInitialised)
{
secu_start_new_protocol_run(tei, pid, &pr_run);
- secu_gen_protocol_run_param(tei, last_msg_of_p_run, &pr_run);
+ secu_gen_protocol_run_param(tei, last_msg_of_p_run, &pr_run);
+ #if TEST_681
+ pr_run.pmn = 3;
+ pr_run.prn = 0x372D;
+ #endif
}
- cm_encrypted_payload->pid = pr_run.pid;
- cm_encrypted_payload->prn = pr_run.prn;
- cm_encrypted_payload->pmn = pr_run.pmn;
- // TODO continuer ici
-
+ cm_encrypted_payload_p->pid = pr_run.pid;
+ cm_encrypted_payload_p->prn = pr_run.prn;
+ cm_encrypted_payload_p->pmn = pr_run.pmn;
+ cm_encrypted_payload_p->len = msg_size;
+ if(pid == HLE_PRO)
+ {
+ // case PID == 0x4
+ // TODO set the UUID field
+ rf = 0;
+ memcpy(cm_encrypted_payload_p->rf, encapsulated_msg_p, msg_size);
+ }
+ else
+ {
+ // TODO set the IV field
+ memcpy(cm_encrypted_payload_p->iv, "\xFE\xDC\xBA\x98\x76\x54\x32\x10\xFE\xDC\xBA\x98\x76\x54\x32\x10", 16);
+ // calculate the rf filler size
+ rf = rand_in(0, COUNT(cm_encrypted_payload_p->rf));
+ // fill the rf field with random data
+ for(i=0 ; i<rf ; i++)
+ data_to_encrypt[i] = (u8) rand_in(0, 0xFF);
+ #if TEST_681
+ rf = 5;
+ data_to_encrypt[0] = 0x24;
+ data_to_encrypt[1] = 0x68;
+ data_to_encrypt[2] = 0xac;
+ data_to_encrypt[3] = 0xe0;
+ data_to_encrypt[4] = 0x35;
+ #endif
+ memcpy(&data_to_encrypt[i], encapsulated_msg_p, msg_size);
+ cm_encrypted_payload_sub_p = (cm_encrypted_payload_sub_t *) &data_to_encrypt[i+msg_size];
+ // calculate CRC of the encapsulated mme
+ cm_encrypted_payload_sub_p->crc = crc_compute_block(&crc_m, (u8 *)encapsulated_msg_p, msg_size);
+ cm_encrypted_payload_sub_p->pid = pid;
+ cm_encrypted_payload_sub_p->prn = pr_run.prn;
+ cm_encrypted_payload_sub_p->pmn = pr_run.pmn;
+ pad_size = 16 - (msg_size + rf + 9) % 16;
+ for(i=0 ; i < pad_size ; i++)
+ cm_encrypted_payload_sub_p->padding[i] = (u8) rand_in(0, 0xFF);
+ #if TEST_681
+ cm_encrypted_payload_sub_p->padding[0] = 0xac ;
+ cm_encrypted_payload_sub_p->padding[1] = 0xbc ;
+ cm_encrypted_payload_sub_p->padding[2] = 0xd2 ;
+ cm_encrypted_payload_sub_p->padding[3] = 0x11 ;
+ cm_encrypted_payload_sub_p->padding[4] = 0x4d ;
+ cm_encrypted_payload_sub_p->padding[5] = 0xae ;
+ cm_encrypted_payload_sub_p->padding[6] = 0x15 ;
+ cm_encrypted_payload_sub_p->padding[7] = 0x77 ;
+ cm_encrypted_payload_sub_p->padding[8] = 0xc6 ;
+ #endif
+ cm_encrypted_payload_sub_p->padding[i] = rf;
+ aes_key_p = secu_get_ek_from_peks(encapsulated_msg_param.peks, tei);
+ aes_set_key(&ctx, (u8 *) aes_key_p, sizeof(aes_key_t)*8);
+ aes_cbc_encrypt (&ctx, (u8 *) cm_encrypted_payload_p->iv, data_to_encrypt, cm_encrypted_payload_p->rf+rf, rf+msg_size+pad_size+9);
+ total_msg_size += rf + 9 + pad_size;
+ }
+ total_msg_size += sizeof(cm_encrypted_payload_t);
// set the mnbf flag
msg_param.encryption = NOT_ENCRYPTED;
// and finaly, send the message
- //printf(" send cm_unassociated_sta\n");
-// msg_send(msg, , msg_param);
+ msg_send(msg_p, total_msg_size, msg_param);
+
}
diff --git a/cp/msg/src/msg_cm_convert.c b/cp/msg/src/msg_cm_convert.c
index 71d55db65f..924803730c 100644
--- a/cp/msg/src/msg_cm_convert.c
+++ b/cp/msg/src/msg_cm_convert.c
@@ -12,36 +12,49 @@
*/
#include "common/std.h"
-#include "cp/msg/inc/msg_cm.h"
+
+#include "cp/msg/inc/msg_cm_convert.h"
void
-msg_mme_header_convert(u8 *buffer, msg_mme_t *msg, bool read, struct bitstream_t ctx)
-{
+msg_mme_header_convert(u8 *buffer, msg_mme_t *msg, bitstream_type_t b_type, bitstream_t ctx)
+{/*
+ dbg_assert(buffer);
+ dbg_assert(msg);
+ u8 tmp;
+
bitstream_access(&ctx, &msg->oda, 48);
bitstream_access(&ctx, &msg->osa, 48);
- bitstream_access(&ctx, &msg->v_lan_tag, 32);
+ //bitstream_access(&ctx, &msg->v_lan_tag, 32);
bitstream_access(&ctx, &msg->m_type, 16);
bitstream_access(&ctx, &msg->mmv, 8);
bitstream_access(&ctx, &msg->mm_type, 16);
- bitstream_access(&ctx, &msg->fmi.nf_mi, 4);
- bitstream_access(&ctx, &msg->fmi.fn_mi, 4);
- bitstream_access(&ctx, &msg->fmi.fmsn, 8);
+ tmp = msg->fmi.nf_mi;
+ bitstream_access(&ctx, &tmp, 4);
+ if(b_type == BITSTREAM_READ) msg->fmi.nf_mi = tmp;
+ tmp = msg->fmi.fn_mi;
+ bitstream_access(&ctx, &tmp, 4);
+ if(b_type == BITSTREAM_READ) msg->fmi.fn_mi = tmp;
+ bitstream_access(&ctx, &msg->fmi.fmsn, 8);
+*/
}
void
-msg_cm_unassociated_sta_ind_convert(u8 *buffer, msg_mme_t *msg, bool read)
+msg_cm_unassociated_sta_ind_convert(u8 *buffer, msg_mme_t *msg, bitstream_type_t read)
{// 11.5.1
- int i;
- struct bitstream_t ctx;
- cm_unassociated_sta_t entry;
- bitstream_init(&ctx, buffer, MME_MAX_SIZE, read);
+ bitstream_t ctx;
+ cm_unassociated_sta_t *entry_p;
+
+ dbg_assert(buffer);
+ dbg_assert(msg);
+
+ bitstream_init(&ctx, buffer, 1518, read);
msg_mme_header_convert(buffer, msg, read, ctx);
- entry = ( cm_unassociated_sta_t *) msg->mm_entry;
- bitstream_access(&ctx, &entry->nid, 2); // this is just to read the 2 non significant bits
- bitstream_access(&ctx, &entry->nid, 54);
- bitstream_access(&ctx, &entry->cco_capability, 1);
+ entry_p = ( cm_unassociated_sta_t *) msg->mm_entry;
+ bitstream_access(&ctx, &entry_p->nid, 2); // this is just to read the 2 non significant bits
+ bitstream_access(&ctx, &entry_p->nid, 54);
+ bitstream_access(&ctx, &entry_p->cco_capability, 1);
bitstream_finalise(&ctx); // don't forget it to write the last word
}
diff --git a/cp/msg/test/Makefile b/cp/msg/test/Makefile
deleted file mode 100644
index ee9aafda1e..0000000000
--- a/cp/msg/test/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-BASE = ../../../
-EXTRA_HOST_CFLAGS+= -DUNIT_TEST -fshort-enums -ggdb3 -O0
-EXTRA_TARGET_CFLAGS += -DUNIT_TEST -fshort-enums -ggdb3 -O0
-# COVERAGE
-# EXTRA_TARGET_CFLAGS += -fprofile-arcs -ftest-coverage
-
-ECOS = y
-
-
-TARGET_PROGRAMS = test_msg
-
-CONFIG_DEBUG = y
-
-test_msg_SOURCES = test_msg.c test_msg_field.c test_msg_cm_conn_new_req.c test_msg_cm_conn_new_cnf.c test_msg_cm_conn_rel_ind.c test_msg_cm_conn_rel_rsp.c test_msg_cm_conn_mod_cnf.c test_msg_cm_conn_mod_req.c
-test_msg_MODULES = lib cp/msg
-
-include $(BASE)/common/make/top.mk
-
-
diff --git a/cp/msg/test/Module b/cp/msg/test/Module
deleted file mode 100644
index b7f5e44789..0000000000
--- a/cp/msg/test/Module
+++ /dev/null
@@ -1,2 +0,0 @@
-SOURCES := test_msg_fied.c test_msg.c
-
diff --git a/cp/msg/test/src/test_msg.c b/cp/msg/test/src/test_msg.c
deleted file mode 100644
index 080e6fe602..0000000000
--- a/cp/msg/test/src/test_msg.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Cesar project {{{
- *
- * Copyright (C) 2007 Spidcom
- *
- * <<<Licence>>>
- *
- * }}}
- * \file test_msg.c
- * \brief File Description
- * \ingroup cp/conn
- *
- */
-
-#include "common/std.h"
-#include "cp/msg/test/inc/test_conn.h"
-
-
-int main(int argc, char ** argv)
-{
- test_t t;
-
-#ifdef CONN_MSG_CHECK_BUFFER_OVERFLOW
- interf_init();
-#endif
-
- test_init(t, argc, argv);
- test_msg_field(t);
- test_msg_cm_conn_new_req(t);
- test_msg_cm_conn_new_cnf(t);
- test_msg_cm_conn_rel_ind(t);
- test_msg_cm_conn_rel_rsp(t);
- test_msg_cm_conn_mod_cnf(t);
- test_msg_cm_conn_mod_req(t);
- test_result (t);
- HAL_PLATFORM_EXIT (test_nb_failed (t) == 0 ? 0 : 1);
- return test_nb_failed (t) == 0 ? 0 : 1;;
-}
diff --git a/cp/secu/inc/secu_types.h b/cp/secu/inc/secu_types.h
index 2cfc31faee..bc74c3c71a 100644
--- a/cp/secu/inc/secu_types.h
+++ b/cp/secu/inc/secu_types.h
@@ -68,11 +68,11 @@ typedef enum sec_state_t
{ JOIN, ADD, ACCEPT} sec_state_t;
typedef enum pid_t
-{ AUTH_REQ_BY_NEW_STA,
- PROV_AUTH_STA_WITH_NEK,
- PROV_STA_WITH_NMK_U_DAK,
- PROV_STA_WITH_NMK_U_UKE,
- HLE_PRO
+{ AUTH_REQ_BY_NEW_STA = 0x0,
+ PROV_AUTH_STA_WITH_NEK = 0x1,
+ PROV_STA_WITH_NMK_U_DAK = 0x2,
+ PROV_STA_WITH_NMK_U_UKE = 0x3,
+ HLE_PRO = 0x4
} pid_t;
typedef struct protocol_run_t
diff --git a/cp/secu/secu.h b/cp/secu/secu.h
index 5ed00a28bd..b2cd417dfe 100644
--- a/cp/secu/secu.h
+++ b/cp/secu/secu.h
@@ -46,6 +46,17 @@ secu_hash (pwd_type_t pwd_type, u8 in[], u8 out[]);
E_ErrCode
secu_gen_aes_key (u8 key[]);
+/**
+ * return the ek for the given peks
+ * \param peks the peks
+ * \param tei tei of the station (only if peks == PEKS_DESTINATION_STA_DAK)
+ * \return the key
+ */
+aes_key_t *
+secu_get_ek_from_peks(const peks_t peks, const tei_t tei);
+
+void
+secu_set_sta_s_dak(const tei_t, const aes_key_t dak);
#endif
diff --git a/cp/secu/src/secu_lib.c b/cp/secu/src/secu_lib.c
index e6cccdb651..54d6c9a8d7 100644
--- a/cp/secu/src/secu_lib.c
+++ b/cp/secu/src/secu_lib.c
@@ -16,8 +16,11 @@
#include "cp/secu/secu.h"
static peks_t m_peks; // see p588
-static u8 m_eks; // see p122
+static u8 m_eks; // see p122
+static aes_key_t m_dak[THEORICAL_MAX_STA_NB];
+static aes_key_t m_tek[PEKS_TEKD + 1];
+static aes_key_t m_nmk;
void
@@ -26,6 +29,9 @@ secu_init (sec_t *p_sec)
dbg_assert (p_sec);
memset (p_sec, 0, sizeof(sec_t));
+ memset (m_dak, 0, sizeof(m_dak));
+ memset (m_tek, 0, sizeof(m_tek));
+
m_peks = PEKS_NOT_ENCRYPTED;
m_eks = 0xF; // 0xF : no encryption key
#ifndef DEBUG
@@ -120,6 +126,23 @@ secu_gen_aes_key (u8 key[])
aes_set_key( &ctx, sec.key, AES_KEY_SIZE * 8);
aes_encrypt( &ctx, tmp_key, key);
return Success;
+}
+aes_key_t *
+secu_get_ek_from_peks(const peks_t peks, const tei_t tei)
+{
+ dbg_assert(peks < PEKS_NOT_ENCRYPTED);
+ dbg_assert(tei != 0 && tei != 0xFF);
+
+ if(peks == PEKS_DESTINATION_STA_DAK) return &m_dak[tei];
+ if(peks == PEKS_NMK) return &m_nmk;
+ if(peks == PEKS_NOT_ENCRYPTED) return NULL;
+ return &m_tek[peks];
}
+void
+secu_set_sta_s_dak(const tei_t tei, const aes_key_t dak)
+{
+ dbg_assert(tei != 0 && tei != 0xFF);
+ memcpy(m_dak[tei], dak, sizeof(m_dak[0]));
+}
diff --git a/cp/secu/src/secu_p_run.c b/cp/secu/src/secu_p_run.c
index 39616a5aef..101c3a274d 100644
--- a/cp/secu/src/secu_p_run.c
+++ b/cp/secu/src/secu_p_run.c
@@ -15,13 +15,16 @@
#include "common/std.h"
#include "cp/secu/inc/secu_p_run.h"
-static protocol_run_t m_p_run[MAX_STA_NB]; // variables du protocol run
+static protocol_run_t m_p_run[THEORICAL_MAX_STA_NB]; // variables du protocol run
void
secu_p_run_init(void)
{
+ uint i;
memset(m_p_run, 0, sizeof(m_p_run));
+ for(i = 0 ; i<COUNT(m_p_run) ; i++)
+ m_p_run[i].pmn = PMN_LAST_MSG;
}
void
diff --git a/cp/station/inc/station_actions.h b/cp/station/inc/station_actions.h
index f2991a3d99..f457f48cae 100644
--- a/cp/station/inc/station_actions.h
+++ b/cp/station/inc/station_actions.h
@@ -29,6 +29,9 @@ station_ustt_expires(void);
void init_system (void);
void launch_bbt_timer (void);
+
+uint rand_in(uint min, uint max);
+
void launch_beacon_timer (void);
void launch_ustt_timer (void);
void transmit_unassoc_sta_mme(void);
diff --git a/cp/station/inc/station_data.h b/cp/station/inc/station_data.h
index 92ca0a6401..6c3a238dfd 100644
--- a/cp/station/inc/station_data.h
+++ b/cp/station/inc/station_data.h
@@ -15,7 +15,9 @@
#include <string.h>
#include "mac/common/store.h"
-
+#include "cp/cp_types.h"
+#include "SEMTypes.h"
+#include "cp/station/inc/station_types.h"
typedef enum process_usta_result_t
{
diff --git a/cp/station/src/station_actions.c b/cp/station/src/station_actions.c
index aad06eb0fc..99e8a4c313 100644
--- a/cp/station/src/station_actions.c
+++ b/cp/station/src/station_actions.c
@@ -40,7 +40,6 @@ launch_bbt_timer (void)
{
bool sta_was_cco = false;
uint min_bbt, max_bbt, bbt;
- double tmp;
//printf("%s\n", __FUNCTION__);
// TODO check if before the previous reboot the sta was CCO
@@ -56,11 +55,7 @@ launch_bbt_timer (void)
min_bbt = MinScanTime_ms;
max_bbt = MaxScanTime_ms;
}
- tmp = rand_r( & station_seed);
- tmp /= RAND_MAX;
- tmp *= (max_bbt - min_bbt);
- bbt = (int) tmp;
- bbt += min_bbt;
+ bbt = rand_in(min_bbt, max_bbt);
dbg_assert( (bbt > MinCCoScanTime_ms) && (bbt < MaxScanTime_ms) );
// set the BBT timer
//printf("bbt = %i ms\n", bbt);
@@ -68,6 +63,16 @@ launch_bbt_timer (void)
}
+uint rand_in(uint min, uint max)
+{
+ double tmp;
+
+ dbg_assert(min < max);
+ tmp = rand_r( & station_seed);
+ tmp /= RAND_MAX;
+ tmp *= (max - min);
+ return (uint) (tmp + min);
+}
void
launch_beacon_timer (void)
@@ -79,13 +84,10 @@ void
launch_ustt_timer (void)
{
uint ustt;
- double tmp;
//printf("%s\n", __FUNCTION__);
- tmp = rand_r( & station_seed);
- tmp /= RAND_MAX;
- tmp *= USAI_ms;
- ustt = (int) tmp;
+
+ ustt = rand_in(0, USAI_ms);
if(ustt < 10) ustt = 10; // tick is 10 ms
//printf("ustt = %i \n", ustt);
dbg_assert(ustt < USAI_ms);
@@ -148,7 +150,7 @@ process_usta_mme (VS_VOIDPTR mme_address)
if(process_usta_result == BECOME_CCO) sta_add_event(TO_CCO, NULL);
}
-#define TRACE_FSM_STATE 0
+#define TRACE_FSM_STATE 1
VS_VOID trace_cco (VS_VOID)
{
@@ -306,7 +308,8 @@ VS_VOID process_cc_set_tei_map_ind (VS_VOIDPTR mme_address)
}
-VS_VOID process_cc_set_tei_map_req (VS_VOIDPTR mme_address)
+VS_VOID
+process_cc_set_tei_map_req (VS_VOIDPTR mme_address)
{//11.2.34
u8 i;
cc_set_tei_map_ind_t *cc_set_tei_map_ind;
diff --git a/cp/station/src/station_apivs.c b/cp/station/src/station_apivs.c
index 87b86ec25a..e5dd770cba 100644
--- a/cp/station/src/station_apivs.c
+++ b/cp/station/src/station_apivs.c
@@ -82,13 +82,13 @@ station_process_fsm_event(void)
void
station_test_fsm(void)
{
- msg_mme_t *msg;
+/* msg_mme_t *msg;
msg_param_t msg_param;
msg = msg_sending_common_part("ABCEFG", &msg_param);
- printf("start of fsm test %u\n", sizeof(SEM_CONTEXT));
+ printf("start of fsm test\n");
// send the reset event to the fsm
if(sta_add_event(SE_RESET, NULL) != EV_OK) dbg_assert(0);
station_process_fsm_event();
@@ -110,7 +110,8 @@ station_test_fsm(void)
if(sta_add_event(BECOME_BACKUP_CCO, NULL) != EV_OK) dbg_assert(0);
if(sta_add_event(BEACON_TIMER_EXPIRES, NULL) != EV_OK) dbg_assert(0);
station_process_fsm_event();
- station_print_fsm_states();
+ station_print_fsm_states();
+ */
}
diff --git a/cp/station/src/station_core.c b/cp/station/src/station_core.c
index be94f84da7..ecc40337de 100644
--- a/cp/station/src/station_core.c
+++ b/cp/station/src/station_core.c
@@ -63,25 +63,22 @@ station_init (void)
sta_initialize_handler();
// initialize the station data
station_data_init();
- // TODO init station_seed
-
- // 2) init the others modules
- interf_init ();
- beacon_init();
- // TODO init the others modules
-
+ // TODO init station_seed
// wait 60 ms for some zero cross (to calculate network frequency)
- #if DEBUG == 0
- cyg_thread_delay (interf_ms_to_cyg_tick (60));
- #endif
+// #if DEBUG == 0
+// cyg_thread_delay (interf_ms_to_cyg_tick (60));
+// #endif
station_init_fsm();
- station_wait_event ();
+ #if DEBUG == 1
+ // TODO remove the following event when not in debug mode
+ if(sta_add_event(RECEIVE_DRV_MAC_START_REQ, NULL) != EV_OK) dbg_assert(0);
+ #endif
}
void
-station_wait_event (void)
+station_wait_event (cyg_addrword_t data)
{
cyg_flag_value_t flag_value, flag_mask;
uint i;
diff --git a/cp/station/station.h b/cp/station/station.h
index e04a6409cb..d65031535f 100644
--- a/cp/station/station.h
+++ b/cp/station/station.h
@@ -49,7 +49,7 @@ station_init (void);
* \return
*/
void
-station_wait_event (void);
+station_wait_event (cyg_addrword_t data);
/**
* \brief create an alarm that will generate an event after
diff --git a/cp/test/src/test_interf.c b/cp/test/src/test_interf.c
index 7813a3c197..d0b28e107a 100644
--- a/cp/test/src/test_interf.c
+++ b/cp/test/src/test_interf.c
@@ -84,21 +84,6 @@ int interf_received_frag_test (void)
}
/*
- * Test de void interf_msg_add(msg_mme_dest_t mme_dest, msg_mme_t *msg)
- *
- */
-int interf_msg_add_test (void)
-{
- /*
- msg_mme_dest_t dest = MSG_STA;
- msg_mme_t msg;
-
- msg_set_mme_const_values ( &msg);
- interf_msg_add (dest, &msg);
-*/
- return 0;
-}
-/*
* Test de void interf_send(msg_mme_t *msg)
*
*/
@@ -136,46 +121,6 @@ int interf_received_test (void)
return 0;
}
-/*
- * Test de void interf_msg_remove(msg_mme_dest_t dest, msg_mme_t *msg)
- */
-#define NB_MSG_REMOVE_TEST 4
-
-int interf_msg_remove_test (void)
-{
- /*
- msg_mme_t msg[NB_MSG_REMOVE_TEST];
- msg_mme_dest_t dest = MSG_STA;
- int i;
-
- // init the msg
- bzero (msg, sizeof(msg));
-
- // init all the interf module
- interf_init();
- // init messages
- for(i=0 ; i < NB_MSG_REMOVE_TEST ; i++)
- {
- msg_set_mme_const_values( & msg[i]);
- }
- // add messages in the fifo
- for(i=0 ; i<NB_MSG_REMOVE_TEST ; i++)
- {
- interf_msg_add(dest, & msg[i]);
- }
-
- // and then remove it with different order
- if( ! interf_msg_remove(dest, & msg[0]) ) return Failure;
- if( ! interf_msg_remove(dest, & msg[3]) ) return Failure;
- if( ! interf_msg_remove(dest, & msg[1]) ) return Failure;
- if( ! interf_msg_remove(dest, & msg[2]) ) return Failure;
- // remove messages from an empty fifo
- if( interf_msg_remove(dest, & msg[0]) ) return Failure;
- if( interf_msg_remove(dest, & msg[3]) ) return Failure;
-*/
- return 0;
-
-}
/*
* test de void interf_release_buf(msg_mme_t *msg)
@@ -373,13 +318,11 @@ int interf_test (void)
{ interf_init_test, "interf_init" },
{ interf_received_frag_test, "interf_received_frag" },
{ interf_received_test, "inter_received"},
- //{ interf_msg_add_test, "interf_msg_add" },
- { interf_msg_remove_test, "interf_msg_remove" },
{ interf_send_test, "interf_send" },
{ interf_received_test, "interf_received" },
{ interf_release_buf_test, "interf_release_buf" },
- { interf_msg_purge_test, "interf_msg_purge" },
- { interf_module_test, "interf : module" }
+ { interf_msg_purge_test, "interf_msg_purge" }
+ //{ interf_module_test, "interf : module" }
};
printf ("test du module interf\n");
diff --git a/cp/test/src/test_msg.c b/cp/test/src/test_msg.c
index 0c16a54a3c..6a2172dedf 100644
--- a/cp/test/src/test_msg.c
+++ b/cp/test/src/test_msg.c
@@ -54,8 +54,69 @@ int msg_get_number_test(void)
return 0;
}
+/*
+ * test cm_encrypted payload
+ */
+void
+int_test_enc(void)
+{
+ //char msg_orig[] = "\x00\x31\x32\x33\x34\x35\x00\x46\x47\x48\x49\x50\x88\xe1\x01\x08\x60\x00\x00\x01\x00\x11\x22\x33\x44\x33\x22\x11\x02\x2d\x37\x03\x02\x02\x6b\xcb\xa5\x35\x4e\x18\x01\xb5\x93\x19\xd7\xe8\x15\x7b\xa0\x01\xb0\x18\x66\x9c\xce\xe3\x0d";
+ unsigned char msg[] = "\x00\x31\x32\x33\x34\x35\x00\x46\x47\x48\x49\x50\x88\xe1\x01\x06\x60\x00\x00\x00\x05\x02\x2d\x37\x03\xfe\xdc\xba\x98\x76\x54\x32\x10\xfe\xdc\xba\x98\x76\x54\x32\x10\x39\x00\x24\x68\xac\xe0\x35\x00\x31\x32\x33\x34\x35\x00\x46\x47\x48\x49\x50\x88\xe1\x01\x08\x60\x00\x00\x01\x00\x11\x22\x33\x44\x33\x22\x11\x02\x2d\x37\x03\x02\x02\x6b\xcb\xa5\x35\x4e\x18\x01\xb5\x93\x19\xd7\xe8\x15\x7b\xa0\x01\xb0\x18\x66\x9c\xce\xe3\x0d\xf1\x66\x28\x20\x02\x2d\x37\x03\xac\xbc\xd2\x11\x4d\xae\x15\x77\xc6\x05";
+ unsigned char iv[] = "\xfe\xdc\xba\x98\x76\x54\x32\x10\xfe\xdc\xba\x98\x76\x54\x32\x10";
+ unsigned char key[] = "\xEE\x7F\x57\x88\xE2\xA0\x21\xC9\x99\x46\x9A\xC5\x2A\xF3\x0A\x06";
+ unsigned char enc[1518];
+ aes_context ctx;
+
+ aes_set_key(&ctx, key, sizeof(aes_key_t)*8);
+ aes_cbc_encrypt (&ctx, iv, &msg[43], enc, 0x50);
+ return ;
+
+}
+int
+msg_cm_encrypted_payload_ind_send_test(void)
+{
+ msg_mme_t msg;
+ cm_set_key_req_t *cm_set_key_req;
+ msg_param_t msg_param;
+ tei_t tei = 1;
+ int_test_enc();
+
+ // create the message cm_set_key.REQ such as in table 13-144
+ memcpy(&msg.oda, "\x00\x31\x32\x33\x34\x35", 6);
+ memcpy(&msg.osa, "\x00\x46\x47\x48\x49\x50", 6);
+ msg_set_mme_const_values((msg_mme_t *)&msg);
+ msg.mm_type = CM_SET_KEY_REQ;
+ msg.fmi.fmsn = 0;
+ msg.fmi.fn_mi = 0;
+ msg.fmi.nf_mi = 0;
+ cm_set_key_req = (cm_set_key_req_t *) msg.mm_entry;
+ cm_set_key_req->key_type = 1;
+ cm_set_key_req->my_nonce = 0x33221100;
+ cm_set_key_req->your_nonce = 0x11223344;
+ cm_set_key_req->pid = 2;
+ cm_set_key_req->prn = 0x372D;
+ cm_set_key_req->pmn = 3;
+ cm_set_key_req->cco_capa = 2;
+ memcpy(cm_set_key_req->nid, "\x02\x6B\xCB\xA5\x35\x4E\x18", 7);
+ cm_set_key_req->new_eks = 1;
+ memcpy(cm_set_key_req->new_key, "\xB5\x93\x19\xD7\xE8\x15\x7B\xA0\x01\xB0\x18\x66\x9C\xCE\xE3\x0D", 16);
+
+ msg_param.peks = PEKS_DESTINATION_STA_DAK;
+ secu_set_sta_s_dak(tei, "\xEE\x7F\x57\x88\xE2\xA0\x21\xC9\x99\x46\x9A\xC5\x2A\xF3\x0A\x06");
+ station_set_mac_address("\x00\x46\x47\x48\x49\x50");
+
+ msg_cm_encrypted_payload_ind_send(
+ (msg_mme_t *)&msg,
+ msg_param,
+ tei,
+ false,
+ 2,
+ sizeof(cm_set_key_req_t) + MSG_MME_HEADER_SIZE
+ );
+ return 0;
+}
struct msg_test_t
{
@@ -72,7 +133,8 @@ int msg_test (void)
{
{ msg_init_test, "msg_init"},
{ msg_set_mme_const_values_test, "msg_xxx_mme_const_values" },
- { msg_get_number_test, "msg_get_number"}
+ { msg_get_number_test, "msg_get_number"},
+ { msg_cm_encrypted_payload_ind_send_test, "cm_encrypted_payload_ind"}
};
printf ("test du module msg\n");
diff --git a/cp/test/src/test_station.c b/cp/test/src/test_station.c
index 84f9ab4ce5..9c6540550b 100644
--- a/cp/test/src/test_station.c
+++ b/cp/test/src/test_station.c
@@ -21,6 +21,7 @@
static unsigned char station_thread_stack[CYGNUM_HAL_STACK_SIZE_TYPICAL];
static cyg_handle_t station_thread_handle;
static cyg_thread station_thread;
+static sec_t sec_m;
/*
@@ -248,6 +249,7 @@ process_cc_assoc_req_test(void)
msg_mme_t *msg;
cc_assoc_req_t *cc_assoc_req;
msg_param_t msg_param;
+ u8 buf[1518];
// init the station with it default parameters
station_data_init();
@@ -267,7 +269,7 @@ process_cc_assoc_req_test(void)
if(tei != 2) return 2;
// simulate the reception of a cc_assoc_req
// 1) construct the message
- msg = msg_sending_common_part("IJKLMN", &msg_param);
+ msg = msg_sending_common_part((msg_mme_t *)buf, "IJKLMN", &msg_param);
msg->mm_type = CC_ASSOC_REQ;
memcpy(&msg->osa, "HELLO!", 6);
// set the message values ( 11.2.28 )
@@ -287,6 +289,13 @@ process_cc_assoc_req_test(void)
*/
int station_run_testing_thread(void)
{
+ // do the CP init procedure
+ beacon_init();
+ interf_init ();
+ msg_init();
+ secu_init(&sec_m);
+ station_init();
+
cyg_thread_resume(station_thread_handle);
// wait for the thread to start and init
cyg_thread_delay(10);
@@ -299,12 +308,13 @@ struct station_test_t
char func_name[30];
};
-
+/*
static void
station_thread_launch(cyg_addrword_t data)
{
- station_init();
+ station_wait_event (data);
}
+*/
int station_test (void)
{
@@ -325,10 +335,11 @@ int station_test (void)
};
printf ("test du module station\n");
+
// for the test, we create a thread STA
cyg_thread_create(
STA_THREAD_PRIORITY,
- &station_thread_launch,
+ &station_wait_event,
0,
"STA",
station_thread_stack,
diff --git a/cp/vstate_fsm/src/SEMEDef.h b/cp/vstate_fsm/src/SEMEDef.h
index b4aade39a2..ec53fec422 100644
--- a/cp/vstate_fsm/src/SEMEDef.h
+++ b/cp/vstate_fsm/src/SEMEDef.h
@@ -3,7 +3,7 @@
*
* Function: SEM Defines Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -23,7 +23,7 @@
#include "SEMTypes.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
@@ -50,8 +50,8 @@
#define SEM_RMN_ACTIONS 4
#define SEM_RMN_GUARDS 0
#define SEM_RMN_NEGATIVE_STATE_SYNCS 1
-#define SEM_RMN_NEXT_STATES 9
-#define SEM_RMN_POSITIVE_STATE_SYNCS 4
+#define SEM_RMN_NEXT_STATES 10
+#define SEM_RMN_POSITIVE_STATE_SYNCS 5
#define SEM_RMN_SIGNALS 0
#define SEM_SIGNAL 0
diff --git a/cp/vstate_fsm/src/SEMTypes.h b/cp/vstate_fsm/src/SEMTypes.h
index 605bac16e3..3db384f508 100644
--- a/cp/vstate_fsm/src/SEMTypes.h
+++ b/cp/vstate_fsm/src/SEMTypes.h
@@ -3,7 +3,7 @@
*
* Function: SEM Types Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -17,7 +17,7 @@
#define __SEMTYPES_H
-#define VS_CODER_GUID 0X0098de850
+#define VS_CODER_GUID 0X009de319e
#include <limits.h>
diff --git a/cp/vstate_fsm/src/cesar_cp_PConstant.h b/cp/vstate_fsm/src/cesar_cp_PConstant.h
index 01f697051a..68e8f6d15a 100644
--- a/cp/vstate_fsm/src/cesar_cp_PConstant.h
+++ b/cp/vstate_fsm/src/cesar_cp_PConstant.h
@@ -3,7 +3,7 @@
*
* Function: VS Project Constant File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
diff --git a/cp/vstate_fsm/src/cesar_cp_PEvent.h b/cp/vstate_fsm/src/cesar_cp_PEvent.h
index d684806edc..37b2e47fbf 100644
--- a/cp/vstate_fsm/src/cesar_cp_PEvent.h
+++ b/cp/vstate_fsm/src/cesar_cp_PEvent.h
@@ -3,7 +3,7 @@
*
* Function: VS Project Event Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
diff --git a/cp/vstate_fsm/src/main_fsm.c b/cp/vstate_fsm/src/main_fsm.c
index 7fa9010836..0b7b6771dd 100644
--- a/cp/vstate_fsm/src/main_fsm.c
+++ b/cp/vstate_fsm/src/main_fsm.c
@@ -3,7 +3,7 @@
*
* Function: VS System Source File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -19,7 +19,7 @@
#include "main_fsm.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
@@ -36,68 +36,82 @@
VSDATAmain_fsm const main_fsm =
{
{
- 0X000000150, 0X00000001B, 0X000000000,
- 0X000000015, 0X000000009, 0X00000000B,
+ 0X000000150, 0X00000001D, 0X000000000,
+ 0X000000017, 0X00000000A, 0X00000000B,
0X000000001, 0X000000000, offsetof(VSDATAmain_fsm, S1) + 0,
- offsetof(VSDATAmain_fsm, S1) + 42, 0X000000000, offsetof(VSDATAmain_fsm, S1) + 96,
- offsetof(VSDATAmain_fsm, S1) + 690, offsetof(VSDATAmain_fsm, S1) + 788, offsetof(VSDATAmain_fsm, S1) + 846,
+ offsetof(VSDATAmain_fsm, S1) + 46, 0X000000000, offsetof(VSDATAmain_fsm, S1) + 104,
+ offsetof(VSDATAmain_fsm, S1) + 888, offsetof(VSDATAmain_fsm, S1) + 998, offsetof(VSDATAmain_fsm, S1) + 1060,
0X000000000, 0X000000000, 0X000000000,
0X000000000, 0X000000000, 0X000000000,
},
{
- 0X00000, 0X00000, 0X00000, 0X00001, 0X00001, 0X00002, 0X00002, 0X00003,
- 0X00003, 0X00003, 0X00004, 0X00004, 0X00005, 0X00005, 0X00006, 0X00006,
- 0X00007, 0X00007, 0X00007, 0X00008, 0X00008, 0X0FFFF, 0X0FFFF, 0X0FFFF,
+ 0X00000, 0X00000, 0X00001, 0X00001, 0X00001, 0X00002, 0X00002, 0X00003,
+ 0X00003, 0X00004, 0X00004, 0X00004, 0X00005, 0X00005, 0X00006, 0X00006,
+ 0X00007, 0X00007, 0X00008, 0X00008, 0X00008, 0X00009, 0X00009, 0X0FFFF,
0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF,
- 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X00000, 0X0FFFF,
- 0X0FFFF, 0X00000, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF,
- 0X04900, 0X00001, 0X00003, 0X00006, 0X00013, 0X00007, 0X0000A, 0X0000C,
- 0X0000F, 0X00010, 0X00000, 0X00003, 0X00001, 0X00006, 0X02201, 0X00000,
- 0X00004, 0X00001, 0X00003, 0X00009, 0X03401, 0X00000, 0X00005, 0X00002,
- 0X0000F, 0X0000C, 0X0000B, 0X00005, 0X0000C, 0X02401, 0X00001, 0X00005,
- 0X00002, 0X0000F, 0X0000C, 0X00005, 0X0000C, 0X02301, 0X00001, 0X00002,
- 0X00006, 0X00013, 0X0000C, 0X00007, 0X01103, 0X00003, 0X00001, 0X0000A,
- 0X00000, 0X00008, 0X01102, 0X00004, 0X00001, 0X00000, 0X00008, 0X03103,
- 0X0000A, 0X00002, 0X00005, 0X00000, 0X0000D, 0X0000E, 0X00008, 0X04203,
- 0X0000B, 0X00002, 0X00005, 0X00004, 0X00001, 0X0000D, 0X0000E, 0X00003,
- 0X00009, 0X01204, 0X0000F, 0X00002, 0X00006, 0X00014, 0X00003, 0X00001,
- 0X0000F, 0X04203, 0X00006, 0X0000F, 0X00002, 0X00003, 0X00001, 0X0000E,
- 0X00003, 0X00001, 0X00006, 0X01203, 0X00002, 0X00006, 0X00014, 0X00004,
- 0X00001, 0X0000F, 0X03202, 0X00006, 0X00002, 0X00004, 0X00001, 0X0000E,
- 0X00003, 0X00009, 0X01101, 0X00001, 0X00001, 0X00003, 0X01102, 0X00001,
- 0X0000B, 0X00001, 0X0000A, 0X01101, 0X00001, 0X00001, 0X00010, 0X01101,
- 0X00001, 0X00001, 0X00011, 0X01202, 0X00003, 0X00001, 0X00004, 0X00001,
- 0X00009, 0X01202, 0X00003, 0X00001, 0X00003, 0X00001, 0X00004, 0X01202,
- 0X00003, 0X00001, 0X00003, 0X00001, 0X00012, 0X01202, 0X00004, 0X00001,
- 0X00004, 0X00001, 0X00013, 0X03303, 0X00002, 0X00008, 0X00005, 0X00014,
- 0X00006, 0X00002, 0X0000D, 0X00007, 0X00014, 0X02202, 0X00005, 0X00002,
- 0X00005, 0X00002, 0X0000D, 0X00015, 0X02202, 0X00005, 0X00002, 0X00005,
- 0X00002, 0X0000D, 0X00016, 0X01404, 0X0000E, 0X00002, 0X00006, 0X00014,
- 0X00005, 0X00002, 0X0000F, 0X0000C, 0X0000F, 0X01403, 0X00006, 0X00002,
- 0X0000E, 0X00005, 0X00002, 0X0000F, 0X0000C, 0X00005, 0X01404, 0X00008,
- 0X00002, 0X00006, 0X00014, 0X00005, 0X00002, 0X0000F, 0X0000C, 0X0000F,
- 0X01403, 0X00006, 0X00002, 0X00008, 0X00005, 0X00002, 0X0000F, 0X0000C,
- 0X00005, 0X01203, 0X00006, 0X00002, 0X00014, 0X00006, 0X00002, 0X0000F,
- 0X02302, 0X00006, 0X00002, 0X00006, 0X00002, 0X00013, 0X00017, 0X00007,
- 0X01303, 0X00013, 0X00006, 0X00002, 0X00014, 0X00006, 0X00002, 0X00014,
- 0X01303, 0X00006, 0X00002, 0X00014, 0X00013, 0X00006, 0X00002, 0X0000F,
- 0X00101, 0X00007, 0X00009, 0X00101, 0X00007, 0X00008, 0X00101, 0X00008,
- 0X00007, 0X00101, 0X00009, 0X00007, 0X01101, 0X0000A, 0X0000B, 0X00002,
- 0X01101, 0X0000B, 0X0000B, 0X00002, 0X00101, 0X0000B, 0X0000A, 0X00101,
- 0X0000C, 0X0000D, 0X00101, 0X0000D, 0X0000C, 0X00101, 0X0000E, 0X0000F,
- 0X00103, 0X0000F, 0X00002, 0X00006, 0X0000E, 0X00111, 0X0000F, 0X00002,
- 0X0000E, 0X00101, 0X00010, 0X00011, 0X00101, 0X00010, 0X00012, 0X00101,
- 0X00011, 0X00010, 0X00102, 0X00012, 0X00001, 0X00011, 0X00101, 0X00012,
- 0X00010, 0X00000, 0X000E0, 0X00081, 0X0000E, 0X00073, 0X000FC, 0X00100,
- 0X00032, 0X00049, 0X00051, 0X000AB, 0X000B5, 0X00104, 0X00110, 0X00115,
- 0X00107, 0X00093, 0X000BE, 0X000C8, 0X000F6, 0X000F9, 0X00037, 0X0003F,
- 0X0010D, 0X0010A, 0X0002C, 0X00077, 0X00014, 0X0009D, 0X000D1, 0X000D8,
- 0X000A4, 0X00087, 0X0008D, 0X00119, 0X0011C, 0X0011F, 0X00126, 0X00122,
- 0X000F3, 0X000F0, 0X00025, 0X0005B, 0X00062, 0X0007B, 0X000E8, 0X0006A,
- 0X0006E, 0X0001D, 0X00000, 0X00001, 0X00002, 0X00003, 0X00007, 0X0000D,
- 0X0000F, 0X00010, 0X00015, 0X00017, 0X00018, 0X00019, 0X0001A, 0X0001B,
- 0X0001D, 0X0001F, 0X00020, 0X00022, 0X00023, 0X00024, 0X00026, 0X00027,
- 0X00028, 0X00029, 0X0002A, 0X0002D, 0X0002E, 0X00030, 0X00031
+ 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF,
+ 0X0FFFF, 0X0FFFF, 0X00000, 0X0FFFF, 0X0FFFF, 0X00000, 0X0FFFF, 0X0FFFF,
+ 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X0FFFF, 0X01A00, 0X00001, 0X00003, 0X00005,
+ 0X00008, 0X00015, 0X00009, 0X0000C, 0X0000E, 0X00011, 0X00012, 0X00000,
+ 0X01103, 0X00000, 0X00004, 0X00007, 0X00001, 0X0000B, 0X01104, 0X00000,
+ 0X00004, 0X00008, 0X00016, 0X00001, 0X0000C, 0X01102, 0X00000, 0X00004,
+ 0X00001, 0X0000D, 0X00101, 0X00000, 0X00001, 0X03301, 0X00001, 0X00000,
+ 0X00003, 0X00005, 0X00003, 0X00001, 0X00006, 0X02302, 0X00002, 0X00000,
+ 0X00006, 0X00003, 0X00000, 0X00003, 0X00009, 0X03502, 0X00002, 0X00000,
+ 0X00007, 0X00004, 0X00000, 0X00011, 0X0000E, 0X0000E, 0X00005, 0X0000F,
+ 0X02502, 0X00003, 0X00000, 0X00007, 0X00004, 0X00000, 0X00011, 0X0000E,
+ 0X00005, 0X0000F, 0X02402, 0X00003, 0X00000, 0X00004, 0X00000, 0X00008,
+ 0X00015, 0X0000F, 0X00007, 0X01204, 0X00005, 0X00003, 0X00000, 0X0000C,
+ 0X00002, 0X00000, 0X00008, 0X01203, 0X00006, 0X00003, 0X00000, 0X00002,
+ 0X00000, 0X00008, 0X03204, 0X00000, 0X0000C, 0X00004, 0X00007, 0X00002,
+ 0X00000, 0X0000B, 0X0000D, 0X00008, 0X04304, 0X00000, 0X0000D, 0X00004,
+ 0X00007, 0X00006, 0X00003, 0X00000, 0X0000B, 0X0000D, 0X00003, 0X00009,
+ 0X01305, 0X00000, 0X00011, 0X00004, 0X00008, 0X00016, 0X00005, 0X00003,
+ 0X00000, 0X0000C, 0X04304, 0X00008, 0X00000, 0X00011, 0X00004, 0X00005,
+ 0X00003, 0X00000, 0X0000D, 0X00003, 0X00001, 0X00006, 0X01304, 0X00000,
+ 0X00004, 0X00008, 0X00016, 0X00006, 0X00003, 0X00000, 0X0000C, 0X03303,
+ 0X00008, 0X00000, 0X00004, 0X00006, 0X00003, 0X00000, 0X0000D, 0X00003,
+ 0X00009, 0X01202, 0X00003, 0X00000, 0X00003, 0X00000, 0X00003, 0X01103,
+ 0X00003, 0X00000, 0X0000D, 0X00000, 0X0000A, 0X01202, 0X00003, 0X00000,
+ 0X00003, 0X00000, 0X00010, 0X01202, 0X00003, 0X00000, 0X00003, 0X00000,
+ 0X00011, 0X01303, 0X00005, 0X00003, 0X00000, 0X00006, 0X00003, 0X00000,
+ 0X00009, 0X01303, 0X00005, 0X00003, 0X00000, 0X00005, 0X00003, 0X00000,
+ 0X00004, 0X01303, 0X00005, 0X00003, 0X00000, 0X00005, 0X00003, 0X00000,
+ 0X00012, 0X01303, 0X00006, 0X00003, 0X00000, 0X00006, 0X00003, 0X00000,
+ 0X00013, 0X03404, 0X00004, 0X00000, 0X0000A, 0X00007, 0X00016, 0X00008,
+ 0X00004, 0X00000, 0X0000B, 0X00007, 0X00014, 0X02303, 0X00007, 0X00004,
+ 0X00000, 0X00007, 0X00004, 0X00000, 0X0000B, 0X00015, 0X02303, 0X00007,
+ 0X00004, 0X00000, 0X00007, 0X00004, 0X00000, 0X0000B, 0X00016, 0X01505,
+ 0X00010, 0X00000, 0X00004, 0X00008, 0X00016, 0X00007, 0X00004, 0X00000,
+ 0X00011, 0X0000E, 0X0000C, 0X01504, 0X00008, 0X00004, 0X00000, 0X00010,
+ 0X00007, 0X00004, 0X00000, 0X00011, 0X0000E, 0X00005, 0X01505, 0X0000A,
+ 0X00000, 0X00004, 0X00008, 0X00016, 0X00007, 0X00004, 0X00000, 0X00011,
+ 0X0000E, 0X0000C, 0X01504, 0X00008, 0X00004, 0X00000, 0X0000A, 0X00007,
+ 0X00004, 0X00000, 0X00011, 0X0000E, 0X00005, 0X01304, 0X00008, 0X00004,
+ 0X00000, 0X00016, 0X00008, 0X00004, 0X00000, 0X0000C, 0X02403, 0X00008,
+ 0X00004, 0X00000, 0X00008, 0X00004, 0X00000, 0X00015, 0X00017, 0X00007,
+ 0X01404, 0X00015, 0X00008, 0X00004, 0X00000, 0X00016, 0X00008, 0X00004,
+ 0X00000, 0X00014, 0X01404, 0X00008, 0X00004, 0X00000, 0X00016, 0X00015,
+ 0X00008, 0X00004, 0X00000, 0X0000C, 0X00101, 0X00009, 0X0000B, 0X00101,
+ 0X00009, 0X0000A, 0X00101, 0X0000A, 0X00009, 0X00101, 0X0000B, 0X00009,
+ 0X01101, 0X0000C, 0X0000D, 0X00002, 0X01101, 0X0000D, 0X0000D, 0X00002,
+ 0X00101, 0X0000D, 0X0000C, 0X00101, 0X0000E, 0X0000F, 0X00101, 0X0000F,
+ 0X0000E, 0X00101, 0X00010, 0X00011, 0X00104, 0X00011, 0X00000, 0X00004,
+ 0X00008, 0X00010, 0X00112, 0X00011, 0X00000, 0X00004, 0X00010, 0X00102,
+ 0X00011, 0X00001, 0X00010, 0X00101, 0X00012, 0X00013, 0X00101, 0X00012,
+ 0X00014, 0X00101, 0X00013, 0X00012, 0X00103, 0X00014, 0X00003, 0X00000,
+ 0X00013, 0X00101, 0X00014, 0X00012, 0X00000, 0X00134, 0X000BD, 0X00029,
+ 0X000A9, 0X00154, 0X00158, 0X00057, 0X00074, 0X0007E, 0X000F3, 0X000FF,
+ 0X0015C, 0X00168, 0X0016E, 0X00173, 0X0015F, 0X000D5, 0X0010A, 0X00116,
+ 0X0014E, 0X00151, 0X0005E, 0X00068, 0X00165, 0X00162, 0X0004F, 0X000AF,
+ 0X00031, 0X000E1, 0X00121, 0X0012A, 0X000EA, 0X00021, 0X0000C, 0X00012,
+ 0X00019, 0X0001E, 0X000C5, 0X000CD, 0X00177, 0X0017A, 0X0017D, 0X00185,
+ 0X00180, 0X0014B, 0X00148, 0X00046, 0X0008A, 0X00093, 0X000B5, 0X0013E,
+ 0X0009D, 0X000A3, 0X0003C, 0X00000, 0X00001, 0X00002, 0X00003, 0X00007,
+ 0X0000D, 0X00010, 0X00011, 0X00016, 0X00018, 0X00019, 0X0001A, 0X0001B,
+ 0X0001C, 0X0001E, 0X00020, 0X00021, 0X00022, 0X00026, 0X00028, 0X00029,
+ 0X0002A, 0X0002C, 0X0002D, 0X0002E, 0X0002F, 0X00030, 0X00033, 0X00034,
+ 0X00036, 0X00037
}
};
diff --git a/cp/vstate_fsm/src/main_fsm.h b/cp/vstate_fsm/src/main_fsm.h
index a1ee3fe2b4..52a4d2a6d7 100644
--- a/cp/vstate_fsm/src/main_fsm.h
+++ b/cp/vstate_fsm/src/main_fsm.h
@@ -3,7 +3,7 @@
*
* Function: Include VS System Data Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -23,7 +23,7 @@
#include "SEMEDef.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
@@ -34,7 +34,7 @@
typedef struct
{
VS_UINT32 S0[0X000000016];
- VS_UINT16 S1[0X001A7];
+ VS_UINT16 S1[0X00212];
} VSDATAmain_fsm;
diff --git a/cp/vstate_fsm/src/main_fsmAction.h b/cp/vstate_fsm/src/main_fsmAction.h
index fddaa9c5e8..b87f655c53 100644
--- a/cp/vstate_fsm/src/main_fsmAction.h
+++ b/cp/vstate_fsm/src/main_fsmAction.h
@@ -3,7 +3,7 @@
*
* Function: VS System Action Expression Pointer Table Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -23,7 +23,7 @@
#include "SEMEDef.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
diff --git a/cp/vstate_fsm/src/main_fsmData.c b/cp/vstate_fsm/src/main_fsmData.c
index dc207a0bb5..96ce050bec 100644
--- a/cp/vstate_fsm/src/main_fsmData.c
+++ b/cp/vstate_fsm/src/main_fsmData.c
@@ -3,7 +3,7 @@
*
* Function: VS System Data Source File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -19,7 +19,7 @@
#include "main_fsmData.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
@@ -56,7 +56,7 @@ typedef union
struct
{
VS_VOIDPTR VS_VOIDPTRVar[0X00001];
- } DB16;
+ } DB18;
} main_fsmVSDBDATA;
@@ -84,22 +84,22 @@ unsigned char main_fsmSMP_Deduct (SEM_CONTEXT VS_TQ_CONTEXT * Context, SEM_EVENT
switch (EventNo)
{
case 3:
- main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
+ main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
break;
case 12:
- main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
+ main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
break;
case 13:
- main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
+ main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
break;
case 14:
- main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
+ main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
break;
case 15:
- main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
+ main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
break;
- case 16:
- main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
+ case 18:
+ main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0] = (VS_VOIDPTR) va_arg(ap, VS_VOIDPTR);
break;
default:
@@ -162,39 +162,39 @@ VS_VOID MainVSAction_10 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
}
VS_VOID MainVSAction_11 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- process_cc_assoc_req(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ station_is_cco(0);
}
VS_VOID MainVSAction_12 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- station_is_associated(1);
+ station_is_authenticated(0);
}
VS_VOID MainVSAction_13 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- station_is_cco(0);
+ station_is_associated(0);
}
VS_VOID MainVSAction_14 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- station_is_associated(0);
+ process_cc_assoc_req(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
VS_VOID MainVSAction_15 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- station_is_authenticated(0);
+ station_is_associated(1);
}
VS_VOID MainVSAction_16 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- try_associate(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ try_associate(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
VS_VOID MainVSAction_17 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- process_cc_assoc_cnf(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ process_cc_assoc_cnf(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
VS_VOID MainVSAction_18 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- record_usta_mme(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ record_usta_mme(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
VS_VOID MainVSAction_19 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- process_usta_mme(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ process_usta_mme(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
VS_VOID MainVSAction_20 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
@@ -202,15 +202,15 @@ VS_VOID MainVSAction_20 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
}
VS_VOID MainVSAction_21 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- process_cc_assoc_req(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ process_cc_assoc_req(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
VS_VOID MainVSAction_22 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- process_cc_set_tei_map_req(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ process_cc_set_tei_map_req(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
VS_VOID MainVSAction_23 (SEM_CONTEXT VS_TQ_CONTEXT * Context)
{
- process_cc_set_tei_map_ind(main_fsmVSDBVar.DB16.VS_VOIDPTRVar[0]);
+ process_cc_set_tei_map_ind(main_fsmVSDBVar.DB18.VS_VOIDPTRVar[0]);
}
diff --git a/cp/vstate_fsm/src/main_fsmData.h b/cp/vstate_fsm/src/main_fsmData.h
index 5ad2439f42..c40a0f19db 100644
--- a/cp/vstate_fsm/src/main_fsmData.h
+++ b/cp/vstate_fsm/src/main_fsmData.h
@@ -3,7 +3,7 @@
*
* Function: VS System Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -23,14 +23,14 @@
#define VS_NOF_ACTION_EXPRESSIONS 0X018 /* 24 */
#define VS_NOF_ACTION_FUNCTIONS 0X00b /* 11 */
#define VS_NOF_EVENT_GROUPS 0X001 /* 1 */
-#define VS_NOF_EVENTS 0X01b /* 27 */
+#define VS_NOF_EVENTS 0X01d /* 29 */
#define VS_NOF_EXTERNAL_VARIABLES 0X000 /* 0 */
#define VS_NOF_GUARD_EXPRESSIONS 0X000 /* 0 */
#define VS_NOF_INSTANCES 0X001 /* 1 */
#define VS_NOF_INTERNAL_VARIABLES 0X000 /* 0 */
#define VS_NOF_SIGNALS 0X000 /* 0 */
-#define VS_NOF_STATE_MACHINES 0X009 /* 9 */
-#define VS_NOF_STATES 0X015 /* 21 */
+#define VS_NOF_STATE_MACHINES 0X00a /* 10 */
+#define VS_NOF_STATES 0X017 /* 23 */
/*
@@ -39,7 +39,7 @@
#include "SEMLibE.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
@@ -87,17 +87,19 @@ extern unsigned char main_fsmSMP_InitAll (SEM_CONTEXT VS_TQ_CONTEXT * * Context)
#define RECEIVE_CC_ASSOC_REQ 0X00D /* 13 */
#define RECEIVE_CC_SET_TEI_MAP_IND 0X00E /* 14 */
#define RECEIVE_CC_SET_TEI_MAP_REQ 0X00F /* 15 */
-#define RECEIVE_USTA_MME 0X010 /* 16 */
-#define SC_ADD 0X011 /* 17 */
-#define SC_JOIN 0X012 /* 18 */
-#define SC_TIMER_EXPIRES 0X013 /* 19 */
-#define TO_CCO 0X014 /* 20 */
-#define TO_HANDOVER 0X015 /* 21 */
-#define TO_HANDOVER_IN_PROGRESS 0X016 /* 22 */
-#define TO_STA 0X017 /* 23 */
-#define TO_USTA 0X018 /* 24 */
-#define UNAUTHENTIFIE_STA 0X019 /* 25 */
-#define USTT_EXPIRES 0X01A /* 26 */
+#define RECEIVE_DRV_MAC_START_REQ 0X010 /* 16 */
+#define RECEIVE_DRV_MAC_STOP_IND 0X011 /* 17 */
+#define RECEIVE_USTA_MME 0X012 /* 18 */
+#define SC_ADD 0X013 /* 19 */
+#define SC_JOIN 0X014 /* 20 */
+#define SC_TIMER_EXPIRES 0X015 /* 21 */
+#define TO_CCO 0X016 /* 22 */
+#define TO_HANDOVER 0X017 /* 23 */
+#define TO_HANDOVER_IN_PROGRESS 0X018 /* 24 */
+#define TO_STA 0X019 /* 25 */
+#define TO_USTA 0X01A /* 26 */
+#define UNAUTHENTIFIE_STA 0X01B /* 27 */
+#define USTT_EXPIRES 0X01C /* 28 */
/*
diff --git a/cp/vstate_fsm/src/sta_connection.c b/cp/vstate_fsm/src/sta_connection.c
index f76c634b26..0f1798b7c7 100644
--- a/cp/vstate_fsm/src/sta_connection.c
+++ b/cp/vstate_fsm/src/sta_connection.c
@@ -3,7 +3,7 @@
*
* Function: VS System Source File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -19,7 +19,7 @@
#include "sta_connection.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
diff --git a/cp/vstate_fsm/src/sta_connection.h b/cp/vstate_fsm/src/sta_connection.h
index fbb041a766..d9e102ae03 100644
--- a/cp/vstate_fsm/src/sta_connection.h
+++ b/cp/vstate_fsm/src/sta_connection.h
@@ -3,7 +3,7 @@
*
* Function: Include VS System Data Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -23,7 +23,7 @@
#include "SEMEDef.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
diff --git a/cp/vstate_fsm/src/sta_connectionAction.h b/cp/vstate_fsm/src/sta_connectionAction.h
index 6dc163c293..ddac80130d 100644
--- a/cp/vstate_fsm/src/sta_connectionAction.h
+++ b/cp/vstate_fsm/src/sta_connectionAction.h
@@ -3,7 +3,7 @@
*
* Function: VS System Action Expression Pointer Table Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -23,7 +23,7 @@
#include "SEMEDef.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
diff --git a/cp/vstate_fsm/src/sta_connectionData.c b/cp/vstate_fsm/src/sta_connectionData.c
index 9ef5ab6594..0e874eb101 100644
--- a/cp/vstate_fsm/src/sta_connectionData.c
+++ b/cp/vstate_fsm/src/sta_connectionData.c
@@ -3,7 +3,7 @@
*
* Function: VS System Data Source File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -19,7 +19,7 @@
#include "sta_connectionData.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif
diff --git a/cp/vstate_fsm/src/sta_connectionData.h b/cp/vstate_fsm/src/sta_connectionData.h
index 973bf51951..e9b76df1e0 100644
--- a/cp/vstate_fsm/src/sta_connectionData.h
+++ b/cp/vstate_fsm/src/sta_connectionData.h
@@ -3,7 +3,7 @@
*
* Function: VS System Header File.
*
- * Generated: Thu Nov 29 11:24:39 2007
+ * Generated: Tue Dec 04 17:07:17 2007
*
* Coder 5, 4, 0, 1273
*
@@ -39,7 +39,7 @@
#include "SEMLibE.h"
-#if (VS_CODER_GUID != 0X0098de850)
+#if (VS_CODER_GUID != 0X009de319e)
#error The generated file does not match the SEMTypes.h header file.
#endif