1e8b7bcae44e98f43807d77b2597ba43f92f733a
[platform/hal/api/nfc.git] / include / hal-nfc.h
1 /*
2  * HAL (Hardware Abstract Layer) NFC API
3  *
4  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the License);
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 #ifndef __HAL_NFC__
20 #define __HAL_NFC__
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 int hal_nfc_get_backend(void);
27 int hal_nfc_put_backend(void);
28
29 bool hal_nfc_start(int *result);
30 bool hal_nfc_stop(void);
31
32 bool hal_nfc_register_listener(target_detection_listener_cb target_detection_listener, se_transaction_listener_cb se_transaction_listener, llcp_event_listener_cb llcp_event_listener, hce_apdu_listener_cb hce_apdu_listener, net_nfc_error_e * result);
33 bool hal_nfc_unregister_listener(void);
34 bool hal_nfc_support_nfc(net_nfc_error_e * result);
35 bool hal_nfc_get_firmware_version(data_s ** data, net_nfc_error_e * result);
36 bool hal_nfc_check_firmware_version(net_nfc_error_e * result);
37 bool hal_nfc_update_firmware(net_nfc_error_e * result);
38 bool hal_nfc_get_stack_information(net_nfc_stack_information_s * stack_info, net_nfc_error_e * result);
39 bool hal_nfc_configure_discovery(net_nfc_discovery_mode_e mode, net_nfc_event_filter_e config, net_nfc_error_e * result);
40 bool hal_nfc_check_target_presence(net_nfc_target_handle_s * handle, net_nfc_error_e * result);
41 bool hal_nfc_connect(net_nfc_target_handle_s * handle, net_nfc_error_e * result);
42 bool hal_nfc_disconnect(net_nfc_target_handle_s * handle, net_nfc_error_e * result);
43 bool hal_nfc_check_ndef(net_nfc_target_handle_s * handle, uint8_t * ndef_card_state, int *max_data_size, int *real_data_size, net_nfc_error_e * result);
44 bool hal_nfc_read_ndef(net_nfc_target_handle_s * handle, data_s ** data, net_nfc_error_e * result);
45 bool hal_nfc_write_ndef(net_nfc_target_handle_s * handle, data_s * data, net_nfc_error_e * result);
46 bool hal_nfc_make_read_only_ndef(net_nfc_target_handle_s * handle, net_nfc_error_e * result);
47 bool hal_nfc_format_ndef(net_nfc_target_handle_s * handle, data_s * secure_key, net_nfc_error_e * result);
48 bool hal_nfc_transceive(net_nfc_target_handle_s * handle, net_nfc_transceive_info_s * info, data_s ** data, net_nfc_error_e * result);
49 bool hal_nfc_exception_handler(void);
50 bool hal_nfc_is_ready(net_nfc_error_e * result);
51
52 /* llcp api */
53 bool hal_nfc_llcp_config(net_nfc_llcp_config_info_s * config, net_nfc_error_e * result);
54 bool hal_nfc_llcp_check_llcp(net_nfc_target_handle_s * handle, net_nfc_error_e * result);
55 bool hal_nfc_llcp_activate_llcp(net_nfc_target_handle_s * handle, net_nfc_error_e * result);
56 bool hal_nfc_llcp_create_socket(net_nfc_llcp_socket_t * socket, net_nfc_socket_type_e socketType, uint16_t miu, uint8_t rw, net_nfc_error_e * result, void *user_param);
57 bool hal_nfc_llcp_bind(net_nfc_llcp_socket_t socket, uint8_t service_access_point, net_nfc_error_e * result);
58 bool hal_nfc_llcp_listen(net_nfc_target_handle_s * handle, uint8_t * service_access_name, net_nfc_llcp_socket_t socket, net_nfc_error_e * result, void *user_param);
59 bool hal_nfc_llcp_accept(net_nfc_llcp_socket_t socket, net_nfc_error_e * result, void *user_param);
60 bool hal_nfc_llcp_connect_by_url(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, uint8_t * service_access_name, net_nfc_error_e * result, void *user_param);
61 bool hal_nfc_llcp_connect(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, uint8_t service_access_point, net_nfc_error_e * result,void *user_param);
62 bool hal_nfc_llcp_disconnect(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, net_nfc_error_e * result, void *user_param);
63 bool hal_nfc_llcp_socket_close(net_nfc_llcp_socket_t socket, net_nfc_error_e * result);
64 bool hal_nfc_llcp_recv(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, data_s * max_len, net_nfc_error_e * result, void *user_param);
65 bool hal_nfc_llcp_send(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, data_s * data, net_nfc_error_e * result, void *user_param);
66 bool hal_nfc_llcp_recv_from(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, data_s * data, net_nfc_error_e * result,void *user_param);
67 bool hal_nfc_llcp_send_to(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, data_s * data, uint8_t service_access_point, net_nfc_error_e * result, void *user_param);
68 bool hal_nfc_llcp_reject(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, net_nfc_error_e * result);
69 bool hal_nfc_llcp_get_remote_config(net_nfc_target_handle_s * handle, net_nfc_llcp_config_info_s * config, net_nfc_error_e * result);
70 bool hal_nfc_llcp_get_remote_socket_info(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, net_nfc_llcp_socket_option_s * option, net_nfc_error_e * result);
71
72 /* secure element api */
73 bool hal_nfc_secure_element_open(net_nfc_secure_element_type_e element_type, net_nfc_target_handle_s ** handle, net_nfc_error_e * result);
74 bool hal_nfc_secure_element_get_atr(net_nfc_target_handle_s * handle, data_s ** atr, net_nfc_error_e * result);
75 bool hal_nfc_secure_element_send_apdu(net_nfc_target_handle_s * handle, data_s * command, data_s ** response, net_nfc_error_e * result);
76 bool hal_nfc_secure_element_close(net_nfc_target_handle_s * handle, net_nfc_error_e * result);
77 bool hal_nfc_get_secure_element_list(net_nfc_secure_element_info_s * list, int *count, net_nfc_error_e * result);
78 bool hal_nfc_set_secure_element_mode(net_nfc_secure_element_type_e element_type, net_nfc_secure_element_mode_e mode, net_nfc_error_e * result);
79
80 /* test api */
81 bool hal_nfc_sim_test(net_nfc_error_e * result);
82 bool hal_nfc_prbs_test(net_nfc_error_e * result, uint32_t tech, uint32_t rate);
83 bool hal_nfc_test_mode_on(net_nfc_error_e * result);
84 bool hal_nfc_test_mode_off(net_nfc_error_e * result);
85 bool hal_nfc_eedata_register_set(net_nfc_error_e * result, uint32_t mode, uint32_t reg_id, data_s * data);
86 bool hal_nfc_ese_test(net_nfc_error_e * result);
87 bool hal_nfc_test_set_se_tech_type(net_nfc_error_e * result, net_nfc_se_type_e type, uint32_t tech);
88
89 /* hce api */
90 bool hal_nfc_hce_response_apdu(net_nfc_target_handle_s * handle, data_s * response, net_nfc_error_e * result);
91 bool hal_nfc_secure_element_route_aid(data_s * aid, net_nfc_se_type_e se_type, int power, net_nfc_error_e * result);
92 bool hal_nfc_secure_element_unroute_aid(data_s * aid, net_nfc_error_e * result);
93 bool hal_nfc_secure_element_commit_routing(net_nfc_error_e * result);
94 bool hal_nfc_secure_element_set_default_route(net_nfc_se_type_e switch_on, net_nfc_se_type_e switch_off, net_nfc_se_type_e battery_off, net_nfc_error_e * result);
95 bool hal_nfc_secure_element_clear_aid_table(net_nfc_error_e * result);
96 bool hal_nfc_secure_element_get_aid_table_size(int *AIDTableSize, net_nfc_error_e * result);
97 bool hal_nfc_secure_element_set_route_entry(net_nfc_se_entry_type_e type, net_nfc_se_tech_protocol_type_e value, net_nfc_se_type_e route, int power, net_nfc_error_e * result);
98 bool hal_nfc_secure_element_clear_routing_entry(net_nfc_se_entry_type_e type, net_nfc_error_e * result);
99 bool hal_nfc_secure_element_set_listen_tech_mask(net_nfc_se_tech_protocol_type_e screen_state, net_nfc_error_e * result);
100 bool hal_nfc_set_screen_state(net_nfc_screen_state_type_e screen_state, net_nfc_error_e * result);
101
102 #ifdef __cplusplus
103 }
104 #endif
105 #endif /* __HAL_NFC__ */