/* * HAL (Hardware Abstract Layer) NFC API * * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef __HAL_NFC_INTERFACE_1__ #define __HAL_NFC_INTERFACE_1__ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct _hal_backend_nfc_funcs { bool (*start)(net_nfc_error_e * result);; bool (*stop)(void); bool (*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); bool (*unregister_listener)(void); bool (*get_firmware_version)(data_s ** data, net_nfc_error_e * result); bool (*support_nfc)(net_nfc_error_e * result); bool (*check_firmware_version)(net_nfc_error_e * result); bool (*update_firmware)(net_nfc_error_e * result); bool (*get_stack_information)(net_nfc_stack_information_s * stack_info, net_nfc_error_e * result); bool (*configure_discovery)(net_nfc_discovery_mode_e mode, net_nfc_event_filter_e config, net_nfc_error_e * result); bool (*check_target_presence)(net_nfc_target_handle_s * handle, net_nfc_error_e * result); bool (*connect)(net_nfc_target_handle_s * handle, net_nfc_error_e * result); bool (*disconnect)(net_nfc_target_handle_s * handle, net_nfc_error_e * result); bool (*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); bool (*read_ndef)(net_nfc_target_handle_s * handle, data_s ** data, net_nfc_error_e * result); bool (*write_ndef)(net_nfc_target_handle_s * handle, data_s * data, net_nfc_error_e * result); bool (*make_read_only_ndef)(net_nfc_target_handle_s * handle, net_nfc_error_e * result); bool (*format_ndef)(net_nfc_target_handle_s * handle, data_s * secure_key, net_nfc_error_e * result); bool (*transceive)(net_nfc_target_handle_s * handle, net_nfc_transceive_info_s * info, data_s ** data, net_nfc_error_e * result); bool (*exception_handler)(void); bool (*is_ready)(net_nfc_error_e * result); bool (*llcp_config)(net_nfc_llcp_config_info_s * config, net_nfc_error_e * result); bool (*llcp_check_llcp)(net_nfc_target_handle_s * handle, net_nfc_error_e * result); bool (*llcp_activate_llcp)(net_nfc_target_handle_s * handle, net_nfc_error_e * result); bool (*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); bool (*llcp_bind)(net_nfc_llcp_socket_t socket, uint8_t service_access_point, net_nfc_error_e * result); bool (*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); bool (*llcp_accept)(net_nfc_llcp_socket_t socket, net_nfc_error_e * result, void *user_param); bool (*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); bool (*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); bool (*llcp_disconnect)(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, net_nfc_error_e * result, void *user_param); bool (*llcp_socket_close)(net_nfc_llcp_socket_t socket, net_nfc_error_e * result); bool (*llcp_recv)(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, data_s * data, net_nfc_error_e * result, void *user_param); bool (*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); bool (*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); bool (*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); bool (*llcp_reject)(net_nfc_target_handle_s * handle, net_nfc_llcp_socket_t socket, net_nfc_error_e * result); bool (*llcp_get_remote_config)(net_nfc_target_handle_s * handle, net_nfc_llcp_config_info_s * config, net_nfc_error_e * result); bool (*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); bool (*secure_element_open)(net_nfc_secure_element_type_e element_type, net_nfc_target_handle_s ** handle, net_nfc_error_e * result); bool (*secure_element_get_atr)(net_nfc_target_handle_s * handle, data_s ** atr, net_nfc_error_e * result); bool (*secure_element_send_apdu)(net_nfc_target_handle_s * handle, data_s * command, data_s ** response, net_nfc_error_e * result); bool (*secure_element_close)(net_nfc_target_handle_s * handle, net_nfc_error_e * result); bool (*get_secure_element_list)(net_nfc_secure_element_info_s * list, int *count, net_nfc_error_e * result); bool (*set_secure_element_mode)(net_nfc_secure_element_type_e element_type, net_nfc_secure_element_mode_e mode, net_nfc_error_e * result); bool (*sim_test)(net_nfc_error_e * result); bool (*prbs_test)(net_nfc_error_e * result, uint32_t tech, uint32_t rate); bool (*test_mode_on)(net_nfc_error_e * result); bool (*test_mode_off)(net_nfc_error_e * result); bool (*eedata_register_set)(net_nfc_error_e * result, uint32_t mode, uint32_t reg_id, data_s * data); bool (*ese_test)(net_nfc_error_e * result); bool (*test_set_se_tech_type)(net_nfc_error_e * result, net_nfc_se_type_e type, uint32_t tech); bool (*hce_response_apdu)(net_nfc_target_handle_s * handle, data_s * response, net_nfc_error_e * result); bool (*secure_element_route_aid)(data_s * aid, net_nfc_se_type_e se_type, int power, net_nfc_error_e * result); bool (*secure_element_unroute_aid)(data_s * aid, net_nfc_error_e * result); bool (*secure_element_commit_routing)(net_nfc_error_e * result); bool (*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); bool (*secure_element_clear_aid_table)(net_nfc_error_e * result); bool (*secure_element_get_aid_table_size)(int *AIDTableSize, net_nfc_error_e * result); bool (*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); bool (*secure_element_clear_routing_entry)(net_nfc_se_entry_type_e type, net_nfc_error_e * result); bool (*secure_element_set_listen_tech_mask)(net_nfc_se_tech_protocol_type_e screen_state, net_nfc_error_e * result); bool (*set_screen_state)(net_nfc_screen_state_type_e screen_state, net_nfc_error_e * result); } hal_backend_nfc_funcs; #ifdef __cplusplus } #endif #endif /* __HAL_NFC_INTERFACE_1__ */