if (test "${debug}" = "yes"); then
CFLAGS="$CFLAGS -g -O0 -DNEARDAL_DEBUG"
- echo 'NEARDAL will be compiled in debug mode. CFLAGS='${CFLAGS}
+ echo 'NEARDAL will be compiled in debug mode.(NEARDAL_DEBUG will be defined)'
else
CFLAGS="$CFLAGS -O2"
- echo 'NEARDAL will not be compiled in debug mode. CFLAGS='${CFLAGS}
+ echo 'NEARDAL will not be compiled in debug mode. (NEARDAL_DEBUG will not be defined)'
fi
## Traces ?
])
if (test "${traces}" = "yes"); then
CFLAGS="$CFLAGS -DNEARDAL_TRACES"
- echo 'NEARDAL will be compiled with debugging traces...('NEARDAL_TRACES' will be defined)'
+ echo "NEARDAL will be compiled with debugging traces...(NEARDAL_TRACES will be defined)"
else
- echo 'NEARDAL will be compiled without debugging traces... ('NEARDAL_TRACES' will not be defined)'
+ echo "NEARDAL will be compiled without debugging traces... (NEARDAL_TRACES will not be defined)"
fi
+echo 'NEARDAL will be compiled with CFLAGS='${CFLAGS}
## Check dependances
GLIB_REQUIRED=2.30.0
* whole NDEF as a raw byte stream and the records object paths.
* If the callback is null, the agent is unregistered
****************************************************************************/
-errorCode_t neardal_agent_set_NDEF_cb(char *tagType,
- ndef_agent_cb cb_ndef_agent,
- void *user_data)
+errorCode_t neardal_agent_set_NDEF_cb(char *tagType
+ , ndef_agent_cb cb_ndef_agent
+ , ndef_agent_free_cb cb_ndef_release_agent
+ , void *user_data)
{
- errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
- neardal_agent_t agent;
+ errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
+ neardal_ndef_agent_t agent;
- memset(&agent, 0, sizeof(neardal_agent_t));
+ memset(&agent, 0, sizeof(neardal_ndef_agent_t));
if (tagType == NULL)
goto exit;
err = NEARDAL_ERROR_NO_MEMORY;
- agent.cb_ndef_agent = cb_ndef_agent;
- agent.pid = getpid();
- agent.user_data = user_data;
- agent.tagType = g_strdup(tagType);
+ agent.cb_ndef_agent = cb_ndef_agent;
+ agent.cb_ndef_release_agent = cb_ndef_release_agent;
+ agent.pid = getpid();
+ agent.user_data = user_data;
+ agent.tagType = g_strdup(tagType);
{ /* replace ':' with '_' */
int len = strlen(agent.tagType);
while (len > 0) {
len--;
}
}
- agent.objPath = g_strdup_printf("%s/%s/%d", AGENT_PREFIX,
- agent.tagType, agent.pid);
+ agent.objPath = g_strdup_printf("%s/%s/%d",
+ AGENT_PREFIX,
+ agent.tagType,
+ agent.pid);
if (agent.objPath == NULL)
goto exit;
- err = neardal_ndefagent_prv_manage(agent);
- if (err != NEARDAL_SUCCESS)
- goto exit;
-
if (cb_ndef_agent != NULL)
/* RegisterNDEFAgent */
org_neard_mgr__call_register_ndefagent_sync(neardalMgr.proxy,
&neardalMgr.gerror);
+ err = neardal_ndefagent_prv_manage(agent);
+ if (err != NEARDAL_SUCCESS)
+ goto exit;
+
if (neardalMgr.gerror != NULL) {
NEARDAL_TRACE_ERR(
"Error with neard dbus method (err:%d:'%s')\n"
* used to pass remote Out Of Band data.
* If one of this callback is null, the agent is unregistered
****************************************************************************/
-errorCode_t neardal_agent_set_handover_cb(oob_push_agent_cb cb_oob_push_agent,
- oob_req_agent_cb cb_oob_req_agent,
- void *user_data)
+errorCode_t neardal_agent_set_handover_cb(oob_push_agent_cb cb_oob_push_agent
+ , oob_req_agent_cb cb_oob_req_agent
+ , oob_agent_free_cb cb_oob_release_agent
+ , void *user_data)
{
- errorCode_t err = NEARDAL_ERROR_INVALID_PARAMETER;
- neardal_agent_t agent;
+ errorCode_t err;
+ neardal_handover_agent_t agent;
err = NEARDAL_ERROR_NO_MEMORY;
- memset(&agent, 0, sizeof(neardal_agent_t));
- agent.cb_oob_push_agent = cb_oob_push_agent;
- agent.cb_oob_req_agent = cb_oob_req_agent;
- agent.pid = getpid();
- agent.user_data = user_data;
- agent.objPath = g_strdup_printf("%s/handover/%d",
- AGENT_PREFIX, agent.pid);
+ memset(&agent, 0, sizeof(neardal_handover_agent_t));
+ agent.cb_oob_push_agent = cb_oob_push_agent;
+ agent.cb_oob_req_agent = cb_oob_req_agent;
+ agent.cb_oob_release_agent = cb_oob_release_agent;
+ agent.pid = getpid();
+ agent.user_data = user_data;
+ agent.objPath = g_strdup_printf("%s/handover/%d"
+ , AGENT_PREFIX
+ , agent.pid);
if (agent.objPath == NULL)
goto exit;
/* @}*/
/*! @brief NEARDAL Callbacks
- * @addtogroup NEARDAL_CALLBACK Callbacks
+ * @addtogroup NEARDAL_CALLBACK CALLBACKS
* @{
*/
void *user_data);
/**
- * @brief TODO
+ * @brief Callback prototype to cleanup agent user data. Gets called when
+ * Neard unregisters the agent.
+ *
+ * @param user_data Client user data
+ **/
+typedef void (*ndef_agent_free_cb) (void *user_data);
+
+/**
+ * @brief Pointer to function used to release oob data generated by callback
+ * @link oob_req_agent_cb @endlink
**/
typedef void (*freeFunc) (void *ptr);
* @param blobEIR EIR blob as described in Bluetooth Core
* Specification 4.0 (Vol 3, Part C, chapter 8.1.6). Used by SSP capable
* devices
- *
+ *
* @param blobSize EIR blob size (in bytes)
- * @param oobData used to build a Handover Request or Select message
- * (oobData* will be never null)
- * @param oobDataSize Number of bytes returned (oobDataSize* will be never null)
+ * @param oobData Out Of Band data returned (as an array of bytes) used to
+ * build a Handover Request or Select message (oobData* will be never null)
+ * @param oobDataSize Out Of Band data size returned (oobDataSize* will be
+ * never null)
* @param freeFunc Free function to release oobData
* @param user_data Client user data
- * @return Out Of Band data (as an array of bytes)
**/
typedef void (*oob_req_agent_cb) (unsigned char *blobEIR,
unsigned int blobSize,
/**
* @brief Callback prototype to to pass remote Out Of Band data to agent to
* start handover
- *
+ *
* @param blobEIR EIR blob as described in Bluetooth Core
* Specification 4.0 (Vol 3, Part C, chapter 8.1.6). Used by SSP capable
* devices
unsigned int blobSize, void *user_data);
+/**
+ * @brief Callback prototype to cleanup agent user data. Gets called when
+ * Neard unregisters the agent.
+ *
+ * @param user_data Client user data
+ **/
+typedef void (*oob_agent_free_cb) (void *user_data);
+
/* @}*/
void neardal_destroy();
/*! @brief NEARDAL Properties identifiers
- * @addtogroup NEARDAL_CALLBACK Defines
+ * @addtogroup NEARDAL_POLLING_MODE
* @{ */
#define NEARD_ADP_MODE_INITIATOR 0
#define NEARD_ADP_MODE_TARGET 1
* specific mode
* \param adpName : DBus interface adapter name (as identifier=dbus object
* path)
-* \param mode : Polling mode (see NEARD_ADP_MODE_...)
+* \param mode : Polling mode (see @link NEARDAL_POLLING_MODE @endlink ...)
* @return errorCode_t error code
*/
errorCode_t neardal_start_poll_loop(char *adpName, int mode);
* byte stream and the records object paths.
* If the callback is null, the agent is unregistered.
* @param tagType tag type to register
- * @param cb_agent Client callback for the registered tag type
+ * @param cb_ndef_agent Client callback for the registered tag type
+ * @param cb_ndef_release_agent Client callback to cleanup agent user data
* @param user_data Client user data
* @return errorCode_t error code
**/
errorCode_t neardal_agent_set_NDEF_cb(char *tagType
, ndef_agent_cb cb_ndef_agent
+ , ndef_agent_free_cb cb_ndef_release_agent
, void *user_data);
* If one of this callback is null, the agent is unregistered.
* @param cb_oob_push_agent used to pass remote Out Of Band data
* @param cb_oob_req_agent used to get Out Of Band data
+ * @param cb_oob_release_agent used to cleanup agent user data
* @param user_data Client user data
* @return errorCode_t error code
**/
errorCode_t neardal_agent_set_handover_cb(oob_push_agent_cb cb_oob_push_agent
, oob_req_agent_cb cb_oob_req_agent
+ , oob_agent_free_cb cb_oob_release_agent
, void *user_data);
/*! @fn errorCode_t neardal_free_array(char ***array)
, GVariant *values
, gpointer user_data)
{
- neardal_agent_t *agent_data = user_data;
- gchar **rcdArray = NULL;
- gsize rcdLen = 0;
- gchar *ndefArray = NULL;
- gsize ndefLen = 0;
- gconstpointer value;
+ neardal_ndef_agent_t *agent_data = user_data;
+ gchar **rcdArray = NULL;
+ gsize rcdLen = 0;
+ gchar *ndefArray = NULL;
+ gsize ndefLen = 0;
+ gconstpointer value;
(void) ndefAgent; /* Avoid warning */
(void) invocation; /* Avoid warning */
return TRUE;
}
+static gboolean on_NDEF_Release( neardalNDEFAgent *agent
+ , GDBusMethodInvocation *invocation
+ , gpointer user_data)
+{
+ neardal_ndef_agent_t *agent_data = user_data;
+ NEARDAL_TRACEIN();
+
+ if (invocation != NULL)
+ neardal_ndefagent_complete_release(agent, invocation);
+ if (agent_data != NULL) {
+ NEARDAL_TRACEF("agent '%s'\n",agent_data->objPath);
+
+ if (agent_data->cb_ndef_release_agent)
+ (agent_data->cb_ndef_release_agent)(
+ agent_data->user_data);
+
+ if (neardal_agent_prv_remove(agent_data->objPath) == TRUE)
+ NEARDAL_TRACE("removed\n");
+ else
+ NEARDAL_TRACE("not removed!\n");
+ g_free(agent_data->objPath);
+ g_free(agent_data->tagType);
+ g_free(agent_data);
+ }
+
+ return TRUE;
+}
+
+static void on_ndef_object_removed( GDBusObjectManager *manager
+ , GDBusObject *object
+ , gpointer user_data)
+{
+ NEARDAL_TRACEIN();
+ (void) manager; /* avoid warning */
+ on_NDEF_Release( NEARDAL_NDEFAGENT(object), NULL, user_data);
+}
+
static gboolean on_RequestOOB(neardalHandoverAgent *handoverAgent
, GDBusMethodInvocation *invocation
, GVariant *values
, gpointer user_data)
{
- neardal_agent_t *agent_data = user_data;
- unsigned char *oobData = NULL;
- unsigned int oobDataLen = 0;
- void (*freeFunc)(void * ptr);
- gchar *blobKey;
- gchar *blob = NULL;
- gsize blobLen = 0;
- gconstpointer value;
- GVariant *result;
- errorCode_t err = NEARDAL_ERROR_GENERAL_ERROR;
+ neardal_handover_agent_t *agent_data = user_data;
+ unsigned char *oobData = NULL;
+ unsigned int oobDataLen = 0;
+ void (*freeFunc)(void * ptr);
+ gchar *blobKey;
+ gchar *blob = NULL;
+ gsize blobLen = 0;
+ gconstpointer value;
+ GVariant *result;
+ errorCode_t err;
(void) handoverAgent; /* Avoid warning */
(void) invocation; /* Avoid warning */
+ err = NEARDAL_ERROR_GENERAL_ERROR;
NEARDAL_TRACEIN();
NEARDAL_TRACEF("%s\n", g_variant_print(values, TRUE));
, agent_data->user_data);
if (oobData != NULL) {
GVariantBuilder *dictBuilder = NULL;
-
+
dictBuilder = g_variant_builder_new(
G_VARIANT_TYPE_ARRAY);
err = neardal_tools_prv_add_dict_entry(
blobKey, oobData, oobDataLen
, -1);
result = g_variant_builder_end(dictBuilder);
-
+
NEARDAL_TRACE_LOG("Sending:\n%s\n",
g_variant_print(result
, TRUE));
-
+
neardal_handover_agent_complete_request_oob(
handoverAgent
, invocation
, G_DBUS_ERROR_FAILED
, G_DBUS_ERROR_FAILED
, neardal_error_get_text(err));
-
+
return TRUE;
}
, GVariant *values
, gpointer user_data)
{
- neardal_agent_t *agent_data = user_data;
- gconstpointer value;
- gchar *blobKey;
- gchar *blob = NULL;
- gsize blobLen = 0;
+ neardal_handover_agent_t *agent_data = user_data;
+ gconstpointer value;
+ gchar *blobKey;
+ gchar *blob = NULL;
+ gsize blobLen = 0;
(void) handoverAgent; /* Avoid warning */
(void) invocation; /* Avoid warning */
return TRUE;
}
-static gboolean on_Release( neardalNDEFAgent *agent
- , GDBusMethodInvocation *invocation
- , gpointer user_data)
+static gboolean on_Handover_Release( neardalHandoverAgent *agent
+ , GDBusMethodInvocation *invocation
+ , gpointer user_data)
{
- neardal_agent_t *agent_data = user_data;
+ neardal_handover_agent_t *agent_data = user_data;
NEARDAL_TRACEIN();
if (invocation != NULL)
- neardal_ndefagent_complete_release(agent, invocation);
+ neardal_handover_agent_complete_release(agent, invocation);
if (agent_data != NULL) {
- NEARDAL_TRACEF("agent '%s' ",agent_data->objPath);
+ NEARDAL_TRACEF("agent '%s'\n",agent_data->objPath);
+
+ if (agent_data->cb_oob_release_agent)
+ (agent_data->cb_oob_release_agent)(
+ agent_data->user_data);
if (neardal_agent_prv_remove(agent_data->objPath) == TRUE)
NEARDAL_TRACE("removed\n");
else
NEARDAL_TRACE("not removed!\n");
g_free(agent_data->objPath);
- g_free(agent_data->tagType);
g_free(agent_data);
}
return TRUE;
}
-static void on_object_removed( GDBusObjectManager *manager
+static void on_handover_object_removed( GDBusObjectManager *manager
, GDBusObject *object
, gpointer user_data)
{
NEARDAL_TRACEIN();
(void) manager; /* avoid warning */
- on_Release( NEARDAL_NDEFAGENT(object), NULL, user_data);
+ on_Handover_Release( NEARDAL_HANDOVER_AGENT(object), NULL, user_data);
}
static void
* neardal_ndefagent_prv_manage: create or release an agent and register or
* unregister it with neardal object manager and Neard
****************************************************************************/
-errorCode_t neardal_ndefagent_prv_manage(neardal_agent_t agentData)
+errorCode_t neardal_ndefagent_prv_manage(neardal_ndef_agent_t agentData)
{
errorCode_t err = NEARDAL_SUCCESS;
neardalObjectSkeleton *objSkel;
neardalNDEFAgent *ndefAgent;
- neardal_agent_t *data;
+ neardal_ndef_agent_t *data;
NEARDAL_TRACEIN();
if (agentData.cb_ndef_agent != NULL) {
- data = g_try_malloc0(sizeof(neardal_agent_t));
+ data = g_try_malloc0(sizeof(neardal_ndef_agent_t));
if (data == NULL)
return NEARDAL_ERROR_NO_MEMORY;
- memcpy(data, &agentData, sizeof(neardal_agent_t));
+ memcpy(data, &agentData, sizeof(neardal_ndef_agent_t));
data->objPath = g_strdup(agentData.objPath);
data->tagType = g_strdup(agentData.tagType);
neardal_object_skeleton_set_ndefagent(objSkel, ndefAgent);
/* Handle GetNDEF D-Bus method invocations */
- g_signal_connect ( ndefAgent, "handle-get-ndef"
- , G_CALLBACK (on_GetNDEF)
- , data);
+ g_signal_connect( ndefAgent, "handle-get-ndef"
+ , G_CALLBACK (on_GetNDEF)
+ , data);
/* Handle Release D-Bus method invocations */
- g_signal_connect ( ndefAgent, "handle-release"
- , G_CALLBACK (on_Release), data);
+ g_signal_connect( ndefAgent, "handle-release"
+ , G_CALLBACK (on_NDEF_Release), data);
- g_signal_connect ( neardalMgr.agentMgr, "object-removed"
- , G_CALLBACK (on_object_removed), data);
- g_object_unref (ndefAgent);
+ g_signal_connect( neardalMgr.agentMgr, "object-removed"
+ , G_CALLBACK (on_ndef_object_removed), data);
+ g_object_unref(ndefAgent);
/* Export the object */
- g_dbus_object_manager_server_export (neardalMgr.agentMgr
+ g_dbus_object_manager_server_export(neardalMgr.agentMgr
, G_DBUS_OBJECT_SKELETON (objSkel));
g_object_unref (objSkel);
} else {
err = NEARDAL_SUCCESS;
else
err = NEARDAL_ERROR_DBUS;
- g_free(agentData.objPath);
- g_free(agentData.tagType);
}
return err;
}
/*****************************************************************************
- * neardal_ndefagent_prv_release: unregister an agent from Neard and neardal
- * object manager
- ****************************************************************************/
-errorCode_t neardal_ndefagent_prv_release(gchar *objPath)
-{
- errorCode_t err = NEARDAL_SUCCESS;
-
- if (neardal_agent_prv_remove(objPath) == TRUE)
- NEARDAL_TRACE("removed\n");
- else
- NEARDAL_TRACE("not removed!\n");
-
- return err;
-}
-
-/*****************************************************************************
* neardal_handoveragent_prv_manage: create or release an agent and register
* or unregister it with neardal object manager and Neard
****************************************************************************/
-errorCode_t neardal_handoveragent_prv_manage(neardal_agent_t agentData)
+errorCode_t neardal_handoveragent_prv_manage(
+ neardal_handover_agent_t agentData)
{
- errorCode_t err = NEARDAL_SUCCESS;
- neardalObjectSkeleton *objSkel;
- neardalHandoverAgent *handoverAgent;
- neardal_agent_t *data;
+ errorCode_t err = NEARDAL_SUCCESS;
+ neardalObjectSkeleton *objSkel;
+ neardalHandoverAgent *handoverAgent;
+ neardal_handover_agent_t *data;
NEARDAL_TRACEIN();
if (agentData.cb_oob_push_agent != NULL &&
agentData.cb_oob_req_agent != NULL) {
- data = g_try_malloc0(sizeof(neardal_agent_t));
+ data = g_try_malloc0(sizeof(neardal_handover_agent_t));
if (data == NULL)
return NEARDAL_ERROR_NO_MEMORY;
- memcpy(data, &agentData, sizeof(neardal_agent_t));
+ memcpy(data, &agentData, sizeof(neardal_handover_agent_t));
data->objPath = g_strdup(agentData.objPath);
NEARDAL_TRACEF("Create agent '%s'\n", data->objPath);
handoverAgent);
/* Handle RequestOOB() D-Bus method invocations */
- g_signal_connect ( handoverAgent, "handle-request-oob"
+ g_signal_connect( handoverAgent, "handle-request-oob"
, G_CALLBACK (on_RequestOOB)
, data);
/* Handle PushOOB() D-Bus method invocations */
- g_signal_connect ( handoverAgent, "handle-push-oob"
+ g_signal_connect( handoverAgent, "handle-push-oob"
, G_CALLBACK (on_PushOOB)
, data);
/* Handle Release D-Bus method invocations */
- g_signal_connect ( handoverAgent, "handle-release"
- , G_CALLBACK (on_Release), data);
+ g_signal_connect( handoverAgent, "handle-release"
+ , G_CALLBACK (on_Handover_Release), data);
- g_signal_connect ( neardalMgr.agentMgr, "object-removed"
- , G_CALLBACK (on_object_removed), data);
- g_object_unref (handoverAgent);
+ g_signal_connect( neardalMgr.agentMgr, "object-removed"
+ , G_CALLBACK (on_handover_object_removed)
+ , data);
+ g_object_unref(handoverAgent);
/* Export the object */
- g_dbus_object_manager_server_export (neardalMgr.agentMgr
+ g_dbus_object_manager_server_export(neardalMgr.agentMgr
, G_DBUS_OBJECT_SKELETON (objSkel));
g_object_unref (objSkel);
} else {
gchar *tagType; /* tag Type to register
(for NDEF agent only )
*/
-
+
gint pid; /* process pid */
-
+
ndef_agent_cb cb_ndef_agent; /* client callback to
retrieve raw NDEF data
and records object path
*/
-
+
+ ndef_agent_free_cb cb_ndef_release_agent; /* client callback gets
+ called when Neard
+ unregisters the agent.
+ Can be used to cleanup
+ tasks. There is no need
+ to unregister the agent,
+ because when this
+ callback gets called it
+ has already been
+ unregistered.*/
+ gpointer user_data;
+} neardal_ndef_agent_t;
+
+typedef struct {
+ gchar *objPath; /* agent object path */
+ gint pid; /* process pid */
+
oob_req_agent_cb cb_oob_req_agent; /* client callback to
get Out Of Band data
from the handover agent
*/
-
+
oob_push_agent_cb cb_oob_push_agent; /* client callback to
pass remote Out Of Band
data to agent to start
handover */
+
+ oob_agent_free_cb cb_oob_release_agent; /* client callback gets
+ called when Neard
+ unregisters the agent.
+ Can be used to cleanup
+ tasks. There is no need
+ to unregister the agent,
+ because when this
+ callback gets called it
+ has already been
+ unregistered.*/
+
gpointer user_data;
-} neardal_agent_t;
+} neardal_handover_agent_t;
/*****************************************************************************
* neardal_agent_acquire_dbus_name: acquire dbus name for management of neard
* neardal_ndefagent_prv_manage: create or release an agent and register or
* unregister it with neardal object manager and Neard for NDEF data
****************************************************************************/
-errorCode_t neardal_ndefagent_prv_manage(neardal_agent_t agentData);
+errorCode_t neardal_ndefagent_prv_manage(neardal_ndef_agent_t agentData);
/*****************************************************************************
* neardal_handoveragent_prv_manage: create or release an agent and register
* or unregister it with neardal object manager and Neard for handover message
* (request / answer)
****************************************************************************/
-errorCode_t neardal_handoveragent_prv_manage(neardal_agent_t agentData);
+errorCode_t neardal_handoveragent_prv_manage(
+ neardal_handover_agent_t agentData);
#ifdef __cplusplus
}
, void *user_data)
{
unsigned int i;
-
+
(void) user_data;
NCL_CMD_PRINTF("Received %d records :\n"
NCL_CMD_DUMP(ndefArray, ndefLen);
NCL_CMD_PRINT("\n");
+ NCL_CMD_PRINTF("user_data= %s\n", user_data);
+
+}
+
+void ncl_cmd_ndef_agent_release_cb(void *user_data)
+{
+ NCL_CMD_PRINTF("Release user_data=%s\n", user_data);
+ g_free(user_data);
}
static NCLError ncl_cmd_register_NDEF_agent(int argc, char *argv[])
errorCode_t ec = NEARDAL_SUCCESS;
NCLError nclErr;
static char *tagType;
+ char *test_user_data;
static GOptionEntry options[] = {
{ "tagType", 's', 0, G_OPTION_ARG_STRING , &tagType
nclErr = NCLERR_PARSING_PARAMETERS;
if (nclErr != NCLERR_NOERROR) {
- ncl_cmd_print(stdout, "Sample (Type 'Text'):");
+ ncl_cmd_print(stdout, "Sample (Type 'URI'):");
ncl_cmd_print(stdout, "e.g. < %s --tagType urn:nfc:wkt:U >\n"
, argv[0]);
}
if (sNclCmdCtx.cb_initialized == false)
ncl_cmd_install_callback();
- ec = neardal_agent_set_NDEF_cb(tagType, ncl_cmd_ndef_agent_cb, NULL);
+ test_user_data = g_strdup("test NDEF user data");
+ ec = neardal_agent_set_NDEF_cb(tagType, ncl_cmd_ndef_agent_cb
+ , ncl_cmd_ndef_agent_release_cb
+ , test_user_data);
if (ec != NEARDAL_SUCCESS) {
NCL_CMD_PRINTF("Set NDEF callback failed! error:%d='%s'.\n",
ec, neardal_error_get_text(ec));
if (sNclCmdCtx.cb_initialized == false)
ncl_cmd_install_callback();
- ec = neardal_agent_set_NDEF_cb(tagType, NULL, NULL);
+ ec = neardal_agent_set_NDEF_cb(tagType, NULL, NULL, NULL);
if (ec != NEARDAL_SUCCESS) {
NCL_CMD_PRINTF("Set NDEF callback failed! error:%d='%s'.\n",
ec, neardal_error_get_text(ec));
NCL_CMD_PRINTF("Received blobEIR = \n");
NCL_CMD_DUMP(blobEIR, blobSize);
+ NCL_CMD_PRINTF("user_data= %s\n", user_data);
+
*oobData = g_try_malloc0(sizeof(test_data));
memcpy(*oobData , test_data, sizeof(test_data));
*oobDataSize = sizeof(test_data);
NCL_CMD_PRINTF("\n");
}
+void ncl_cmd_handover_release_agent_cb(void *user_data)
+{
+ NCL_CMD_PRINTF("Release user_data= %s\n", user_data);
+ g_free(user_data);
+}
+
+
static NCLError ncl_cmd_register_handover_agent(int argc, char *argv[])
{
errorCode_t ec = NEARDAL_SUCCESS;
+ char *test_user_data;
(void) argc;
(void) argv;
if (sNclCmdCtx.cb_initialized == false)
ncl_cmd_install_callback();
+ test_user_data = g_strdup("test HANDOVER user data");
+
ec = neardal_agent_set_handover_cb(ncl_cmd_handover_push_agent_cb
, ncl_cmd_handover_req_agent_cb
- , NULL);
+ , ncl_cmd_handover_release_agent_cb
+ , test_user_data);
if (ec != NEARDAL_SUCCESS) {
NCL_CMD_PRINTF("Set handover callback failed! error:%d='%s'.\n",
ec, neardal_error_get_text(ec));
(void) argc;
(void) argv;
-
+
/* Install Neardal Callback*/
if (sNclCmdCtx.cb_initialized == false)
ncl_cmd_install_callback();
- ec = neardal_agent_set_handover_cb(NULL, NULL, NULL);
+ ec = neardal_agent_set_handover_cb(NULL, NULL, NULL, NULL);
if (ec != NEARDAL_SUCCESS) {
NCL_CMD_PRINTF("Set handover callback failed! error:%d='%s'.\n",
ec, neardal_error_get_text(ec));