From 56b9fcbf83033590a57528bb97ce333328db7a39 Mon Sep 17 00:00:00 2001 From: laranjeiro Date: Wed, 11 Jun 2008 08:08:01 +0000 Subject: 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 --- cesar/interface/inc/context.h | 6 ++++-- cesar/interface/interface.h | 13 +++++++++++-- cesar/interface/src/interface.c | 32 +++++++++++++++++++++++-------- cesar/interface/test/src/test-interface.c | 7 +++++-- 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); -- cgit v1.2.3