void net_nfc_neard_set_activated(net_nfc_client_manager_activated callback,
void *user_data);
void net_nfc_neard_unset_activated(void);
+void net_nfc_neard_set_tag_discovered(
+ net_nfc_client_tag_tag_discovered callback, void *user_data);
+void net_nfc_neard_unset_tag_discovered(void);
+void net_nfc_neard_set_tag_detached(
+ net_nfc_client_tag_tag_detached callback, void *user_data);
+void net_nfc_neard_unset_tag_detached(void);
+bool net_nfc_neard_is_tag_connected(void);
net_nfc_error_e net_nfc_neard_initialize(void);
void net_nfc_neard_deinitialize(void);
#include "net_nfc_client_manager.h"
#include "net_nfc_client_tag.h"
#include "net_nfc_client_tag_internal.h"
+#include "net_nfc_neard.h"
static NetNfcGDbusTag *tag_proxy = NULL;
/* internal function */
gboolean net_nfc_client_tag_is_connected(void)
{
- RETV_IF(NULL == client_target_info, FALSE);
- RETV_IF(NULL == client_target_info->handle, FALSE);
-
- return TRUE;
+ return net_nfc_neard_is_tag_connected();
}
net_nfc_target_info_s *net_nfc_client_tag_get_client_target_info(void)
{
RET_IF(NULL == callback);
- tag_discovered_func_data.callback = (gpointer)callback;
- tag_discovered_func_data.user_data = user_data;
+ net_nfc_neard_set_tag_discovered(callback, user_data);
}
API void net_nfc_client_tag_unset_tag_discovered(void)
{
- tag_discovered_func_data.callback = NULL;
- tag_discovered_func_data.user_data = NULL;
+ net_nfc_neard_unset_tag_discovered();
}
API void net_nfc_client_tag_set_tag_detached(
{
RET_IF(NULL == callback);
- tag_detached_func_data.callback = (gpointer)callback;
- tag_detached_func_data.user_data = user_data;
+ net_nfc_neard_set_tag_detached(callback, user_data);
}
API void net_nfc_client_tag_unset_tag_detached(void)
{
- tag_detached_func_data.callback = NULL;
- tag_detached_func_data.user_data = NULL;
+ net_nfc_neard_unset_tag_detached();
}
API void net_nfc_client_tag_set_filter(net_nfc_event_filter_e filter)
/* callback for power status changed */
net_nfc_client_manager_activated activated_cb;
void *activated_ud;
+
+ net_nfc_client_tag_tag_discovered tag_discovered_cb;
+ void *tag_discovered_ud;
+ net_nfc_client_tag_tag_detached tag_detached_cb;
+ void *tag_detached_ud;
} net_nfc_client_cb;
static net_nfc_client_cb client_cb;
}
}
+static void _tag_found_cb(const char *tagName, void *user_data)
+{
+ NFC_DBG("NFC tag found");
+
+ if (neardal_get_tag_properties(tagName, &tag) != NEARDAL_SUCCESS)
+ return;
+ if (tag == NULL && tag->records == NULL)
+ return;
+
+ if (client_cb.tag_discovered_cb != NULL)
+ client_cb.tag_discovered_cb(NULL, client_cb.tag_discovered_ud);
+}
+
+static void _tag_lost_cb(const char *tagName, void *user_data)
+{
+ NFC_DBG("NFC tag lost");
+
+ if (tag != NULL) {
+ neardal_free_tag(tag);
+ tag = NULL;
+ }
+
+ if (nfc_adapter_polling == true)
+ return;
+
+ if (neardal_start_poll_loop(nfc_adapter_path, NEARD_ADP_MODE_DUAL)
+ == NEARDAL_SUCCESS)
+ nfc_adapter_polling = true;
+
+ if (client_cb.tag_detached_cb != NULL)
+ client_cb.tag_detached_cb(client_cb.tag_detached_ud);
+}
+
+bool net_nfc_neard_is_tag_connected(void)
+{
+ if (tag == NULL)
+ return false;
+
+ return true;
+}
+
net_nfc_error_e net_nfc_neard_set_active(int state,
net_nfc_client_manager_set_active_completed callback,
void *user_data)
return NET_NFC_OK;
}
+void net_nfc_neard_set_tag_discovered(
+ net_nfc_client_tag_tag_discovered callback, void *user_data)
+{
+ client_cb.tag_discovered_cb = callback;
+ client_cb.tag_discovered_ud = user_data;
+}
+
+void net_nfc_neard_unset_tag_discovered(void)
+{
+ client_cb.tag_discovered_cb = NULL;
+ client_cb.tag_discovered_ud = NULL;
+}
+
+void net_nfc_neard_set_tag_detached(
+ net_nfc_client_tag_tag_detached callback, void *user_data)
+{
+ client_cb.tag_detached_cb = callback;
+ client_cb.tag_detached_ud = user_data;
+}
+
+void net_nfc_neard_unset_tag_detached(void)
+{
+ client_cb.tag_detached_cb = NULL;
+ client_cb.tag_detached_ud = NULL;
+}
+
void net_nfc_neard_set_activated(net_nfc_client_manager_activated callback,
void *user_data)
{
neardal_set_cb_adapter_property_changed(
_adapter_property_changed_cb, NULL) != NEARDAL_SUCCESS ||
neardal_set_cb_power_completed(_power_completed_cb, NULL)
- != NEARDAL_SUCCESS) {
+ != NEARDAL_SUCCESS ||
+ neardal_set_cb_tag_found(
+ _tag_found_cb, NULL) != NEARDAL_SUCCESS ||
+ neardal_set_cb_tag_lost(
+ _tag_lost_cb, NULL) != NEARDAL_SUCCESS) {
NFC_DBG("failed to register the callback");