1 /****************************************************************************** 2 * 3 * Copyright (C) 2010-2014 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 /****************************************************************************** 20 * 21 * This is the public interface file for NFA SNEP, Broadcom's NFC 22 * application layer for mobile phones. 23 * 24 ******************************************************************************/ 25 #ifndef NFA_SNEP_API_H 26 #define NFA_SNEP_API_H 27 28 #include "nfa_api.h" 29 30 /***************************************************************************** 31 ** Constants and data types 32 *****************************************************************************/ 33 34 /* return an NDEF message */ 35 #define NFA_SNEP_REQ_CODE_GET 0x01 36 /* accept an NDEF message */ 37 #define NFA_SNEP_REQ_CODE_PUT 0x02 38 /* do not send remaining fragments */ 39 40 #define tNFA_SNEP_REQ_CODE uint8_t 41 42 #define tNFA_SNEP_RESP_CODE uint8_t 43 44 /* NFA SNEP callback events */ 45 /* Server/client Registeration Status */ 46 #define NFA_SNEP_REG_EVT 0x00 47 /* LLCP link has been activated, client only */ 48 #define NFA_SNEP_ACTIVATED_EVT 0x01 49 /* LLCP link has been deactivated, client only */ 50 #define NFA_SNEP_DEACTIVATED_EVT 0x02 51 /* Data link has been created */ 52 #define NFA_SNEP_CONNECTED_EVT 0x03 53 /* GET request from client */ 54 #define NFA_SNEP_GET_REQ_EVT 0x04 55 /* PUT request from client */ 56 #define NFA_SNEP_PUT_REQ_EVT 0x05 57 /* GET response from server */ 58 #define NFA_SNEP_GET_RESP_EVT 0x06 59 /* PUT response from server */ 60 #define NFA_SNEP_PUT_RESP_EVT 0x07 61 /* Failed to connect or disconnected */ 62 #define NFA_SNEP_DISC_EVT 0x08 63 64 #define NFA_SNEP_ALLOC_BUFF_EVT \ 65 0x09 /* Request to allocate a buffer for \ 66 NDEF*/ 67 #define NFA_SNEP_FREE_BUFF_EVT 0x0A /* Request to deallocate buffer for NDEF*/ 68 /* GET response sent to client */ 69 #define NFA_SNEP_GET_RESP_CMPL_EVT 0x0B 70 71 typedef uint8_t tNFA_SNEP_EVT; 72 73 /* Data for NFA_SNEP_REG_EVT */ 74 typedef struct { 75 tNFA_STATUS status; 76 tNFA_HANDLE reg_handle; /* handle for registered server/client */ 77 char service_name[LLCP_MAX_SN_LEN + 1]; /* only for server */ 78 } tNFA_SNEP_REG; 79 80 /* Data for NFA_SNEP_ACTIVATED_EVT */ 81 typedef struct { 82 tNFA_HANDLE client_handle; /* handle for registered client */ 83 } tNFA_SNEP_ACTIVATED; 84 85 /* Data for NFA_SNEP_DEACTIVATED_EVT */ 86 typedef tNFA_SNEP_ACTIVATED tNFA_SNEP_DEACTIVATED; 87 88 /* Data for NFA_SNEP_CONNECTED_EVT */ 89 /* 90 ** for server, new handle will be assigned for conn_handle 91 ** for client, handle used in NFA_SnepConnect () is returned in conn_handle 92 */ 93 typedef struct { 94 tNFA_HANDLE reg_handle; /* server/client handle */ 95 tNFA_HANDLE conn_handle; /* handle for data link connection */ 96 } tNFA_SNEP_CONNECT; 97 98 /* Data for NFA_SNEP_GET_REQ_EVT */ 99 typedef struct { 100 tNFA_HANDLE conn_handle; /* handle for data link connection */ 101 uint32_t acceptable_length; /* acceptable length from client */ 102 uint32_t ndef_length; /* NDEF message length */ 103 uint8_t* p_ndef; /* NDEF message */ 104 } tNFA_SNEP_GET_REQ; 105 106 /* Data for NFA_SNEP_PUT_REQ_EVT */ 107 typedef struct { 108 tNFA_HANDLE conn_handle; /* handle for data link connection */ 109 uint32_t ndef_length; /* NDEF message length */ 110 uint8_t* p_ndef; /* NDEF message */ 111 } tNFA_SNEP_PUT_REQ; 112 113 /* Data for NFA_SNEP_GET_RESP_EVT */ 114 typedef struct { 115 tNFA_HANDLE conn_handle; /* handle for data link connection */ 116 tNFA_SNEP_RESP_CODE resp_code; /* response code from server */ 117 uint32_t ndef_length; /* NDEF message length */ 118 uint8_t* p_ndef; /* NDEF message */ 119 } tNFA_SNEP_GET_RESP; 120 121 /* Data for NFA_SNEP_PUT_RESP_EVT */ 122 typedef struct { 123 tNFA_HANDLE conn_handle; /* handle for data link connection */ 124 tNFA_SNEP_RESP_CODE resp_code; /* response code from server */ 125 } tNFA_SNEP_PUT_RESP; 126 127 /* Data for NFA_SNEP_DISC_EVT */ 128 typedef struct { 129 tNFA_HANDLE conn_handle; /* handle for data link connection */ 130 /* client_handle if connection failed */ 131 } tNFA_SNEP_DISC; 132 133 /* Data for NFA_SNEP_ALLOC_BUFF_EVT */ 134 typedef struct { 135 tNFA_HANDLE conn_handle; /* handle for data link connection */ 136 tNFA_SNEP_REQ_CODE 137 req_code; /* NFA_SNEP_REQ_CODE_GET or NFA_SNEP_REQ_CODE_PUT */ 138 tNFA_SNEP_RESP_CODE resp_code; /* Response code if cannot allocate buffer */ 139 uint32_t ndef_length; /* NDEF message length */ 140 uint8_t* p_buff; /* buffer for NDEF message */ 141 } tNFA_SNEP_ALLOC; 142 143 /* Data for NFA_SNEP_FREE_BUFF_EVT */ 144 typedef struct { 145 tNFA_HANDLE conn_handle; /* handle for data link connection */ 146 uint8_t* p_buff; /* buffer to free */ 147 } tNFA_SNEP_FREE; 148 149 /* Data for NFA_SNEP_GET_RESP_CMPL_EVT */ 150 typedef struct { 151 tNFA_HANDLE conn_handle; /* handle for data link connection */ 152 uint8_t* p_buff; /* buffer for NDEF message */ 153 } tNFA_SNEP_GET_RESP_CMPL; 154 155 /* Union of all SNEP callback structures */ 156 typedef union { 157 tNFA_SNEP_REG reg; /* NFA_SNEP_REG_EVT */ 158 tNFA_SNEP_ACTIVATED activated; /* NFA_SNEP_ACTIVATED_EVT */ 159 tNFA_SNEP_DEACTIVATED deactivated; /* NFA_SNEP_DEACTIVATED_EVT */ 160 tNFA_SNEP_CONNECT connect; /* NFA_SNEP_CONNECTED_EVT */ 161 tNFA_SNEP_GET_REQ get_req; /* NFA_SNEP_GET_REQ_EVT */ 162 tNFA_SNEP_PUT_REQ put_req; /* NFA_SNEP_PUT_REQ_EVT */ 163 tNFA_SNEP_GET_RESP get_resp; /* NFA_SNEP_GET_RESP_EVT */ 164 tNFA_SNEP_PUT_RESP put_resp; /* NFA_SNEP_PUT_RESP_EVT */ 165 tNFA_SNEP_DISC disc; /* NFA_SNEP_DISC_EVT */ 166 tNFA_SNEP_ALLOC alloc; /* NFA_SNEP_ALLOC_BUFF_EVT */ 167 tNFA_SNEP_FREE free; /* NFA_SNEP_FREE_BUFF_EVT */ 168 tNFA_SNEP_GET_RESP_CMPL get_resp_cmpl; /* NFA_SNEP_GET_RESP_CMPL_EVT */ 169 } tNFA_SNEP_EVT_DATA; 170 171 /* NFA SNEP callback */ 172 typedef void(tNFA_SNEP_CBACK)(tNFA_SNEP_EVT event, tNFA_SNEP_EVT_DATA* p_data); 173 174 #endif /* NFA_P2P_API_H */ 175