2 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "net_nfc_client_tag_mifare.h"
20 #include "net_nfc_test_tag_mifare.h"
21 #include "net_nfc_target_info.h"
22 #include "net_nfc_typedef_internal.h"
23 #include "net_nfc_test_tag.h"
24 #include "net_nfc_test_util.h"
27 static net_nfc_target_handle_s* tag_get_handle(void);
29 static void mifare_read_cb(net_nfc_error_e result, data_s *resp_data, void *user_data);
31 static void mifare_write_block_cb(net_nfc_error_e result, void* user_data);
33 static void mifare_write_page_cb(net_nfc_error_e result, void* user_data);
35 static void mifare_write_mifare_incr_cb(net_nfc_error_e result, void* user_data);
37 static void mifare_write_mifare_decr_cb(net_nfc_error_e result, void* user_data);
39 static void mifare_write_mifare_transfer_cb(net_nfc_error_e result, void* user_data);
41 static void mifare_write_mifare_restore_cb(net_nfc_error_e result, void* user_data);
43 static void mifare_write_auth_keyA_cb(net_nfc_error_e result, void* user_data);
45 static void mifare_write_auth_keyB_cb(net_nfc_error_e result, void* user_data);
48 static net_nfc_target_handle_s* tag_get_handle(void)
50 net_nfc_target_info_s *info = NULL;
51 net_nfc_target_handle_s *handle = NULL;
53 info = net_nfc_test_tag_get_target_info();
55 net_nfc_get_tag_handle(info, &handle);
60 static void run_next_callback(gpointer user_data)
66 callback = (GCallback)(user_data);
71 static void mifare_read_cb(net_nfc_error_e result,
75 g_print("mifare_read_cb Completed %d\n", result);
76 print_received_data(resp_data);
78 run_next_callback(user_data);
81 static void mifare_write_block_cb(net_nfc_error_e result, void* user_data)
83 g_print("mifare_write_block_cb Completed %d\n", result);
85 run_next_callback(user_data);
88 static void mifare_write_page_cb(net_nfc_error_e result, void* user_data)
90 g_print("mifare_write_page_cb Completed %d\n", result);
92 run_next_callback(user_data);
95 static void mifare_write_mifare_incr_cb(net_nfc_error_e result, void* user_data)
97 g_print("mifare_write_mifare_incr_cb Completed %d\n", result);
99 run_next_callback(user_data);
102 static void mifare_write_mifare_decr_cb(net_nfc_error_e result, void* user_data)
104 g_print("mifare_write_mifare_decr_cb Completed %d\n", result);
106 run_next_callback(user_data);
109 static void mifare_write_mifare_transfer_cb(net_nfc_error_e result, void* user_data)
111 g_print("mifare_write_mifare_transfer_cb Completed %d\n", result);
113 run_next_callback(user_data);
116 static void mifare_write_mifare_restore_cb(net_nfc_error_e result, void* user_data)
118 g_print("mifare_write_mifare_restore_cb Completed %d\n", result);
120 run_next_callback(user_data);
123 static void mifare_write_auth_keyA_cb(net_nfc_error_e result, void* user_data)
125 g_print("mifare_write_auth_keyA_cb Completed %d\n", result);
127 run_next_callback(user_data);
130 static void mifare_write_auth_keyB_cb(net_nfc_error_e result, void* user_data)
132 g_print("mifare_write_auth_keyB_cb Completed %d\n", result);
134 run_next_callback(user_data);
138 void net_nfc_test_tag_mifare_read(gpointer data, gpointer user_data)
140 net_nfc_error_e result = NET_NFC_OK;
141 net_nfc_target_handle_s *handle = NULL;
142 uint8_t block_index = 0x0;
144 handle = tag_get_handle();
147 g_printerr("Handle is NULL\n");
149 run_next_callback(user_data);
152 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
154 result = net_nfc_client_mifare_read(handle, block_index, mifare_read_cb, user_data);
156 g_print("net_nfc_client_mifare_read() : %d\n", result);
159 void net_nfc_test_tag_mifare_write_block(gpointer data, gpointer user_data)
161 net_nfc_error_e result = NET_NFC_OK;
162 net_nfc_target_handle_s *handle = NULL;
163 data_s *write_data = NULL;
164 // create 4 bytes data mifare page size is 4 bytes
165 uint8_t buffer_data [17] = "aaaabbbbccccdddd";
167 net_nfc_create_data(&write_data, buffer_data, 16);
169 uint8_t block_index = 0x04;
171 handle = tag_get_handle();
174 g_printerr("Handle is NULL\n");
176 run_next_callback(user_data);
179 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
181 result = net_nfc_client_mifare_write_block(handle,
184 mifare_write_block_cb,
187 g_print("net_nfc_client_mifare_write_block() : %d\n", result);
190 void net_nfc_test_tag_mifare_write_page(gpointer data, gpointer user_data)
192 net_nfc_error_e result = NET_NFC_OK;
193 net_nfc_target_handle_s *handle = NULL;
194 data_s *write_data = NULL;
195 // create 4 bytes data mifare page size is 4 bytes
196 uint8_t buffer_data [5] = "aaaa";
198 net_nfc_create_data(&write_data, buffer_data, 4);
200 uint8_t block_index = 0x04;
202 handle = tag_get_handle();
205 g_printerr("Handle is NULL\n");
207 run_next_callback(user_data);
210 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
212 result = net_nfc_client_mifare_write_page(handle,
215 mifare_write_page_cb,
218 g_print("net_nfc_client_mifare_write_page() : %d\n", result);
221 void net_nfc_test_tag_mifare_increment(gpointer data, gpointer user_data)
223 net_nfc_error_e result = NET_NFC_OK;
224 net_nfc_target_handle_s *handle = NULL;
226 uint8_t block_index = 0x05;
228 handle = tag_get_handle();
231 g_printerr("Handle is NULL\n");
233 run_next_callback(user_data);
236 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
238 result = net_nfc_client_mifare_increment(handle,
241 mifare_write_mifare_incr_cb,
244 g_print("net_nfc_client_mifare_increment() : %d\n", result);
247 void net_nfc_test_tag_mifare_decrement(gpointer data, gpointer user_data)
249 net_nfc_error_e result = NET_NFC_OK;
250 net_nfc_target_handle_s *handle = NULL;
252 uint8_t block_index = 0x05;
254 handle = tag_get_handle();
257 g_printerr("Handle is NULL\n");
259 run_next_callback(user_data);
262 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
264 result = net_nfc_client_mifare_decrement(handle,
267 mifare_write_mifare_decr_cb,
270 g_print("net_nfc_client_mifare_decrement() : %d\n", result);
273 void net_nfc_test_tag_mifare_transfer(gpointer data, gpointer user_data)
275 net_nfc_error_e result = NET_NFC_OK;
276 net_nfc_target_handle_s *handle = NULL;
277 uint8_t block_index = 0x08;
279 handle = tag_get_handle();
282 g_printerr("Handle is NULL\n");
284 run_next_callback(user_data);
287 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
289 result = net_nfc_client_mifare_transfer(handle,
291 mifare_write_mifare_transfer_cb,
294 g_print("net_nfc_client_mifare_transfer() : %d\n", result);
297 void net_nfc_test_tag_mifare_restore(gpointer data, gpointer user_data)
299 net_nfc_error_e result = NET_NFC_OK;
300 net_nfc_target_handle_s *handle = NULL;
301 uint8_t block_index = 0x08;
303 handle = tag_get_handle();
306 g_printerr("Handle is NULL\n");
308 run_next_callback(user_data);
311 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
313 result = net_nfc_client_mifare_restore(handle,
315 mifare_write_mifare_restore_cb,
318 g_print("net_nfc_client_mifare_restore() : %d\n", result);
321 void net_nfc_test_tag_mifare_authenticate_with_keyA(gpointer data,
324 net_nfc_error_e result = NET_NFC_OK;
325 net_nfc_target_handle_s *handle = NULL;
326 data_s *auth_key = NULL;
327 uint8_t sector_index = 0x02;
329 handle = tag_get_handle();
332 g_printerr("Handle is NULL\n");
334 run_next_callback(user_data);
337 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
339 result = net_nfc_client_mifare_create_default_key(&auth_key);
340 g_print("default key create %d", result);
342 result = net_nfc_client_mifare_authenticate_with_keyA(
346 mifare_write_auth_keyA_cb,
349 g_print("net_nfc_client_mifare_authenticate_with_keyA() : %d\n", result);
352 void net_nfc_test_tag_mifare_authenticate_with_keyB(gpointer data,
355 net_nfc_error_e result = NET_NFC_OK;
356 net_nfc_target_handle_s *handle = NULL;
357 data_s *auth_key = NULL;
358 uint8_t sector_index = 0x02;
360 handle = tag_get_handle();
363 g_printerr("Handle is NULL\n");
365 run_next_callback(user_data);
368 g_print("Handle is %#x\n", GPOINTER_TO_UINT(handle));
370 result = net_nfc_client_mifare_create_default_key(&auth_key);
371 g_print("default key create %d", result);
373 result = net_nfc_client_mifare_authenticate_with_keyB(
377 mifare_write_auth_keyB_cb,
380 g_print("net_nfc_client_mifare_authenticate_with_keyB() : %d\n", result);