summaryrefslogtreecommitdiff
path: root/cesar
diff options
context:
space:
mode:
authorlaranjeiro2008-06-11 08:08:01 +0000
committerlaranjeiro2008-06-11 08:08:01 +0000
commit56b9fcbf83033590a57528bb97ce333328db7a39 (patch)
treebbca70cc375a6c890365da6ea83bd84534bc68f4 /cesar
parent891e6dbe85d034a8a707be46f6b7f7fd67aa31c2 (diff)
interface: Split the callbacks init.
* Seperate the init of the callback for the beacon reception. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@2274 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar')
-rw-r--r--cesar/interface/inc/context.h6
-rw-r--r--cesar/interface/interface.h13
-rw-r--r--cesar/interface/src/interface.c32
-rw-r--r--cesar/interface/test/src/test-interface.c7
4 files changed, 44 insertions, 14 deletions
diff --git a/cesar/interface/inc/context.h b/cesar/interface/inc/context.h
index 4ac4809d5b..e1026f22d0 100644
--- a/cesar/interface/inc/context.h
+++ b/cesar/interface/inc/context.h
@@ -52,10 +52,12 @@ struct interface_t
interface_mme_recv_cb_t mme_recv_cb;
/** Callback on buffer add. */
interface_mme_buffer_add_cb_t buffer_add_cb;
+ /** Interface MME user data. */
+ void *interface_mme_user_data;
/** Callback on beacon add. */
interface_beacon_add_cb_t beacon_add_cb;
- /** Actor user data. */
- void *actor_user_data;
+ /** beacon user data. */
+ void *beacon_user_data;
/** Buffer management. */
u8 *buffer_list[INTERFACE_BUFFER_LIST_NUM_SLOTS];
diff --git a/cesar/interface/interface.h b/cesar/interface/interface.h
index 88388cf8eb..e01e80ca88 100644
--- a/cesar/interface/interface.h
+++ b/cesar/interface/interface.h
@@ -88,9 +88,18 @@ interface_uninit (interface_t *ctx);
*/
void
interface_callback_init (interface_t *ctx, interface_mme_recv_cb_t mme_recv_cb,
- interface_mme_buffer_add_cb_t buffer_add_cb,
- interface_beacon_add_cb_t beacon_add_cb, void *user_data);
+ interface_mme_buffer_add_cb_t buffer_add_cb, void *user_data);
+/**
+ * Initialise the callbacks functions.
+ * \param ctx the interface context.
+ * \param beacon_add_cb the function to call on beacon reception
+ * \param user_data the data to provide on each callback function.
+ */
+void
+interface_callback_beacon_init (interface_t *ctx,
+ interface_beacon_add_cb_t beacon_add_cb,
+ void *user_data);
/** Receives an MME from the PWL or the HLE.
* \param ctx the interface context
diff --git a/cesar/interface/src/interface.c b/cesar/interface/src/interface.c
index cba461914d..89bc390ef4 100644
--- a/cesar/interface/src/interface.c
+++ b/cesar/interface/src/interface.c
@@ -118,18 +118,34 @@ interface_uninit (interface_t *ctx)
*/
void
interface_callback_init (interface_t *ctx, interface_mme_recv_cb_t mme_recv_cb,
- interface_mme_buffer_add_cb_t buffer_add_cb,
- interface_beacon_add_cb_t beacon_add_cb, void *user_data)
+ interface_mme_buffer_add_cb_t buffer_add_cb, void *user_data)
{
dbg_assert (ctx);
dbg_assert (mme_recv_cb);
dbg_assert (buffer_add_cb);
- dbg_assert (beacon_add_cb);
ctx->mme_recv_cb = mme_recv_cb;
ctx->buffer_add_cb = buffer_add_cb;
+ ctx->interface_mme_user_data = user_data;
+}
+
+
+/**
+ * Initialise the callbacks functions.
+ * \param ctx the interface context.
+ * \param beacon_add_cb the function to call on beacon reception
+ * \param user_data the data to provide on each callback function.
+ */
+void
+interface_callback_beacon_init (interface_t *ctx,
+ interface_beacon_add_cb_t beacon_add_cb,
+ void *user_data)
+{
+ dbg_assert (ctx);
+ dbg_assert (beacon_add_cb);
+
ctx->beacon_add_cb = beacon_add_cb;
- ctx->actor_user_data = user_data;
+ ctx->beacon_user_data = user_data;
}
@@ -166,8 +182,8 @@ interface_mme_recv (interface_t *ctx, mfs_rx_t *mfs, u8 *buffer, uint length,
// Call the actor callback.
dbg_assert (ctx->mme_recv_cb);
- (*ctx->mme_recv_cb) (ctx->actor_user_data, mfs, buffer, length, mme_data,
- encrypted);
+ (*ctx->mme_recv_cb) (ctx->interface_mme_user_data, mfs, buffer,
+ length, mme_data, encrypted);
}
@@ -283,7 +299,7 @@ void interface_beacon_add (interface_t *ctx, pb_beacon_t *pb,
}
dbg_assert (ctx->beacon_add_cb);
- (*ctx->beacon_add_cb) (ctx->actor_user_data, pb);
+ (*ctx->beacon_add_cb) (ctx->beacon_user_data, pb);
}
@@ -333,7 +349,7 @@ interface_buffer_add (interface_t *ctx, u8 *buffer)
dbg_assert (buffer);
dbg_assert (ctx->buffer_add_cb);
- (*ctx->buffer_add_cb) (ctx->actor_user_data, buffer);
+ (*ctx->buffer_add_cb) (ctx->interface_mme_user_data, buffer);
}
/**
diff --git a/cesar/interface/test/src/test-interface.c b/cesar/interface/test/src/test-interface.c
index 15114aae16..b64455851f 100644
--- a/cesar/interface/test/src/test-interface.c
+++ b/cesar/interface/test/src/test-interface.c
@@ -376,8 +376,11 @@ main (void)
mac_config.sta_mac_address = 0x123456789abcull;
interface = interface_init (hle, cl, sar, &mac_config);
interface_callback_init (interface, test_interface_mme_recv,
- test_interface_mme_buffer_add,
- test_interface_beacon_add, interface);
+ test_interface_mme_buffer_add, cl);
+
+ interface_callback_beacon_init (interface, test_interface_beacon_add,
+ cl);
+
test_configure_sniffer (test);