static void _tag_format_ndef_cb(net_nfc_error_e result,
void *user_data)
{
- nfc_tag_format_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_tag_format_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_tag_format_completed_cb)user_param->callback;
- if (callback != NULL) {
- callback(nfc_common_convert_error_code(__func__, result),
- user_param);
- }
+ if (callback != NULL)
+ callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag,
&handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_ndef_format(
handle,
key_data,
_tag_format_ndef_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
static void _tag_read_ndef_cb(net_nfc_error_e result, ndef_message_h message,
void *user_data)
{
- nfc_tag_read_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_tag_read_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_tag_read_completed_cb)user_param->callback;
if (callback != NULL) {
callback(nfc_common_convert_error_code(__func__, result),
user_param);
}
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_ndef_read(
handle,
_tag_read_ndef_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
static void _tag_write_ndef_cb(net_nfc_error_e result,
void *user_data)
{
- nfc_tag_write_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_tag_write_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_tag_write_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_ndef_write(
handle,
msg,
_tag_write_ndef_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
static void _tag_transceive_data_cb(net_nfc_error_e result, data_h arg_data,
void *user_data)
{
- nfc_tag_transceive_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_tag_transceive_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL)
+ if (user_param == NULL) {
+ LOG_ERR("user_data is NULL");
return;
+ }
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_tag_transceive_completed_cb)user_param->callback;
if (callback != NULL) {
uint8_t *buffer = NULL;
user_param);
}
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_transceive_data(
handle,
rawdata,
_tag_transceive_data_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
static void _mifare_authenticate_with_keyA_cb(net_nfc_error_e result,
void *user_data)
{
- nfc_mifare_authenticate_with_keyA_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_authenticate_with_keyA_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_authenticate_with_keyA_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_authenticate_with_keyA(
handle,
sector_index,
_mifare_authenticate_with_keyA_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
static void _mifare_authenticate_with_keyB_cb(net_nfc_error_e result,
void *user_data)
{
- nfc_mifare_authenticate_with_keyB_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_authenticate_with_keyB_completed_cb callback = NULL;
- if (user_data == NULL) {
+ LOG_BEGIN();
+
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_authenticate_with_keyB_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_authenticate_with_keyB(
handle,
sector_index,
_mifare_authenticate_with_keyB_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
static void _mifare_read_block_cb(net_nfc_error_e result, data_h data,
void *user_data)
{
+ nfc_callback_s *user_param = user_data;
nfc_mifare_read_block_completed_cb callback;
- void *user_param;
- if (user_data == NULL) {
+ LOG_BEGIN();
+
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_read_block_completed_cb)user_param->callback;
if (callback != NULL) {
uint8_t *buffer = NULL;
user_param);
}
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_read(
handle,
block_index,
_mifare_read_block_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
CHECK_INIT();
CHECK_INVALID(tag == NULL);
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
+ parameter = g_variant_new("(uu)",
+ GPOINTER_TO_UINT(callback),
+ GPOINTER_TO_UINT(user_data));
if (parameter != NULL) {
g_variant_unref(parameter);
ret = NET_NFC_OK;
/* LCOV_EXCL_START */
static void _mifare_write_block_cb(net_nfc_error_e result, void *user_data)
{
- nfc_mifare_write_block_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_write_block_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_write_block_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag,
&handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_write_block(
handle,
block_index,
_mifare_write_block_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
/* LCOV_EXCL_START */
static void _mifare_write_page_cb(net_nfc_error_e result, void *user_data)
{
- nfc_mifare_write_page_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_write_page_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_write_page_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag,
&handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_write_page(
handle,
page_index,
_mifare_write_page_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
/* LCOV_EXCL_START */
static void _mifare_increment_cb(net_nfc_error_e result, void *user_data)
{
- nfc_mifare_increment_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_increment_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_increment_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_increment(
handle,
block_index,
_mifare_increment_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
/* LCOV_EXCL_START */
static void _mifare_decrement_cb(net_nfc_error_e result, void *user_data)
{
- nfc_mifare_decrement_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_decrement_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_decrement_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_decrement(
handle,
block_index,
_mifare_decrement_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
/* LCOV_EXCL_START */
static void _mifare_transfer_cb(net_nfc_error_e result, void *user_data)
{
- nfc_mifare_transfer_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_transfer_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_transfer_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_transfer(
handle,
block_index,
_mifare_transfer_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
/* LCOV_EXCL_START */
static void _mifare_restore_cb(net_nfc_error_e result, void *user_data)
{
- nfc_mifare_restore_completed_cb callback;
- void *user_param;
+ nfc_callback_s *user_param = user_data;
+ nfc_mifare_restore_completed_cb callback = NULL;
LOG_BEGIN();
- if (user_data == NULL) {
+ if (user_param == NULL) {
LOG_ERR("user_data is NULL");
return;
}
- g_variant_get((GVariant *)user_data,
- "(tt)",
- &callback,
- &user_param);
+ callback = (nfc_mifare_restore_completed_cb)user_param->callback;
if (callback != NULL)
callback(nfc_common_convert_error_code(__func__, result), user_param);
- g_variant_unref((GVariant *)user_data);
+ free(user_param);
}
/* LCOV_EXCL_STOP */
ret = net_nfc_get_tag_handle((net_nfc_target_info_h)tag, &handle);
if (ret == NET_NFC_OK) {
- GVariant *parameter;
+ nfc_callback_s *parameter = NULL;
+
+ parameter = (nfc_callback_s *)malloc(sizeof(nfc_callback_s));
- parameter = g_variant_new("(tt)",
- callback,
- user_data);
if (parameter != NULL) {
+ parameter->callback = callback;
+ parameter->user_data = user_data;
+
ret = net_nfc_client_mifare_restore(
handle,
block_index,
_mifare_restore_cb,
parameter);
if (ret != NET_NFC_OK)
- g_variant_unref(parameter);
+ free(parameter);
} else {
ret = NET_NFC_ALLOC_FAIL;
}
--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <glib.h>
+#include <unistd.h>
+
+#include <nfc.h>
+
+#define BUFFER_LEN 10
+#define PRT(format, args...) printf("%s:%d() "format, __FUNCTION__, __LINE__, ##args)
+#define TC_PRT(format, args...) PRT(format"\n", ##args)
+
+GMainLoop *main_loop = NULL;
+
+typedef struct {
+ const char *tc_name;
+ int tc_code;
+} tc_table_t;
+
+tc_table_t tc_table[] = {
+ /* manage api*/
+ {"NFC Initialize Test", 1},
+ {"NFC Tag NDEF Read", 2},
+ {"NFC Tag NDEF Write", 3},
+ {"NFC Deinitialize Test", 4},
+
+ /* -----------*/
+ {"Finish" , 0x00ff},
+ {NULL , 0x0000},
+};
+
+void tc_usage_print(void)
+{
+ int i = 0;
+
+ while (tc_table[i].tc_name) {
+ if (tc_table[i].tc_code != 0x00ff)
+ TC_PRT("Key %d : usage %s", tc_table[i].tc_code, tc_table[i].tc_name);
+ else
+ TC_PRT("Key %d : usage %s\n\n", 0x00ff, tc_table[i].tc_name);
+
+ i++;
+ }
+}
+
+void __tag_read_completed(nfc_error_e result, nfc_ndef_message_h message, void *user_data)
+{
+ if (result == NFC_ERROR_NONE) {
+ int count = 0;
+ nfc_ndef_message_get_record_count(message, &count);
+ TC_PRT("tag read successful");
+ TC_PRT("record count : %d", count);
+
+ if (count > 0) {
+ nfc_ndef_record_h record = NULL;
+ nfc_ndef_message_get_record(message, 0, &record);
+
+ if (record != NULL) {
+ char *lang_code = NULL;
+ int id_size = 0;
+ int type_size = 0;
+ unsigned char *id = NULL;
+ unsigned char *type = NULL;
+ TC_PRT("----* record 0 information start *----");
+ nfc_ndef_record_get_langcode(record, &lang_code);
+ TC_PRT("1. lang_code : %s", lang_code);
+
+ nfc_ndef_record_get_id(record, &id, &id_size);
+ TC_PRT("2. id : %s, id_size : %d", id, id_size);
+
+ nfc_ndef_record_get_type(record, &type, &type_size);
+ TC_PRT("3. type : %s, type_size : %d", type, type_size);
+
+ if (strcmp((const char *)type, "T") == 0) {
+ char* text = NULL;
+ nfc_ndef_record_get_text(record, &text);
+
+ TC_PRT("3. This record is Text record.");
+ TC_PRT("3. Stored text : %s", text);
+ }
+
+ TC_PRT("----* record 0 information end *----");
+ }
+ }
+ } else {
+ TC_PRT("tag read error : %d", result);
+ }
+}
+
+void __tag_write_completed(nfc_error_e result, void *user_data)
+{
+ if (result == NFC_ERROR_NONE)
+ TC_PRT("tag write successful");
+ else
+ TC_PRT("tag write error : %d", result);
+}
+
+void __tag_discovered(nfc_discovered_type_e type, nfc_tag_h tag, void *user_data)
+{
+ if (type == NFC_DISCOVERED_TYPE_ATTACHED) {
+ nfc_tag_type_e tag_type = NFC_UNKNOWN_TARGET;
+ bool is_support_ndef = false;
+
+ TC_PRT("tag discovered!!!");
+
+ nfc_tag_get_type(tag, &tag_type);
+ TC_PRT("tag type is %d", tag_type);
+
+ nfc_tag_is_support_ndef(tag, &is_support_ndef);
+ TC_PRT("NDEF is supported? : %d", is_support_ndef);
+
+ } else if (type == NFC_DISCOVERED_TYPE_DETACHED) {
+ TC_PRT("tag detached!!!");
+ }
+}
+
+char* nfc_util_itoa(char* fmt, ...)
+{
+ char str[128];
+ va_list arguments;
+ va_start(arguments, fmt);
+ vsnprintf(str, sizeof(str), fmt, arguments);
+ va_end(arguments);
+
+ return strdup(str);
+}
+
+nfc_ndef_message_h __create_ndef_message()
+{
+ nfc_ndef_message_h msg = NULL;
+ nfc_ndef_record_h ndef_name_record = NULL;
+ unsigned int seed = time(NULL);
+ char* time_str = nfc_util_itoa("The random text : %d", rand_r(&seed));
+
+ nfc_ndef_message_create(&msg);
+ nfc_ndef_record_create_text(&ndef_name_record, time_str, "en-US", NFC_ENCODE_UTF_8);
+ nfc_ndef_message_append_record(msg, ndef_name_record);
+ TC_PRT("Text : %s", time_str);
+
+ return msg;
+}
+
+int test_input_callback(void *data)
+{
+ int ret = 0;
+ long test_id = (long)data;
+
+ switch (test_id) {
+ case 0x00ff:
+ TC_PRT("Finished");
+ g_main_loop_quit(main_loop);
+ break;
+ case 1:
+ {
+ TC_PRT("nfc initialize start");
+ ret = nfc_manager_initialize();
+ if (ret == NFC_ERROR_NONE)
+ TC_PRT("NFC Initialize successful");
+ else
+ TC_PRT("NFC Error occur : %d", ret);
+
+ nfc_manager_set_tag_discovered_cb(__tag_discovered, NULL);
+ TC_PRT("nfc initialize end");
+ }
+ break;
+ case 2:
+ {
+ TC_PRT("Tag read start");
+ nfc_tag_h current_tag = NULL;
+ nfc_manager_get_connected_tag(¤t_tag);
+
+ if (current_tag != NULL)
+ ret = nfc_tag_read_ndef(current_tag, __tag_read_completed, NULL);
+ else
+ TC_PRT("Tag Not Connected");
+
+ TC_PRT("Tag read end");
+ }
+ break;
+ case 3:
+ {
+ TC_PRT("Tag write start");
+
+ nfc_tag_h current_tag = NULL;
+ nfc_manager_get_connected_tag(¤t_tag);
+ nfc_ndef_message_h msg = __create_ndef_message();
+
+ if (msg != NULL) {
+ if (current_tag != NULL)
+ ret = nfc_tag_write_ndef(current_tag, msg, __tag_write_completed, NULL);
+ else
+ TC_PRT("Tag Not Connected.");
+ } else {
+ TC_PRT("NDEF Message create is failed.");
+ }
+
+ TC_PRT("Tag write end");
+ }
+ break;
+ case 4:
+ {
+ TC_PRT("nfc deinitialize start");
+
+ ret = nfc_manager_deinitialize();
+ if (ret == NFC_ERROR_NONE)
+ TC_PRT("NFC Deinitialize successful");
+ else
+ TC_PRT("NFC Error occur : %d", ret);
+
+ TC_PRT("nfc deinitialize end");
+ }
+ break;
+ default:
+ tc_usage_print();
+ break;
+ }
+
+ return 0;
+}
+
+static gboolean key_event_cb(GIOChannel *chan,
+ GIOCondition cond,
+ gpointer data)
+{
+ char buf[BUFFER_LEN] = { 0 };
+
+ gsize len = 0;
+ long test_id;
+
+ memset(buf, 0, sizeof(buf));
+
+ if (g_io_channel_read_chars(chan, buf, sizeof(buf), &len, NULL) == G_IO_STATUS_ERROR)
+ return FALSE;
+
+ test_id = atoi(buf);
+
+ if (test_id)
+ g_idle_add(test_input_callback, (void *)test_id);
+
+ return TRUE;
+}
+
+
+int main(int argc, char ** argv)
+{
+ GIOChannel *key_io;
+
+ tc_usage_print();
+
+ key_io = g_io_channel_unix_new(fileno(stdin));
+
+ g_io_channel_set_encoding(key_io, NULL, NULL);
+ g_io_channel_set_flags(key_io, G_IO_FLAG_NONBLOCK, NULL);
+
+ g_io_add_watch(key_io, G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+ key_event_cb, NULL);
+
+ g_io_channel_unref(key_io);
+
+ main_loop = g_main_loop_new(NULL, FALSE);
+
+ g_main_loop_run(main_loop);
+
+ return 0;
+}