• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 
17 package com.android.nfc;
18 
19 import android.annotation.Nullable;
20 import android.nfc.NdefMessage;
21 import android.os.Bundle;
22 
23 import java.io.IOException;
24 
25 public interface DeviceHost {
26     public interface DeviceHostListener {
onRemoteEndpointDiscovered(TagEndpoint tag)27         public void onRemoteEndpointDiscovered(TagEndpoint tag);
28 
29         /**
30          */
onHostCardEmulationActivated()31         public void onHostCardEmulationActivated();
onHostCardEmulationData(byte[] data)32         public void onHostCardEmulationData(byte[] data);
onHostCardEmulationDeactivated()33         public void onHostCardEmulationDeactivated();
34 
35         /**
36          * Notifies P2P Device detected, to activate LLCP link
37          */
onLlcpLinkActivated(NfcDepEndpoint device)38         public void onLlcpLinkActivated(NfcDepEndpoint device);
39 
40         /**
41          * Notifies P2P Device detected, to activate LLCP link
42          */
onLlcpLinkDeactivated(NfcDepEndpoint device)43         public void onLlcpLinkDeactivated(NfcDepEndpoint device);
44 
onLlcpFirstPacketReceived(NfcDepEndpoint device)45         public void onLlcpFirstPacketReceived(NfcDepEndpoint device);
46 
onRemoteFieldActivated()47         public void onRemoteFieldActivated();
48 
onRemoteFieldDeactivated()49         public void onRemoteFieldDeactivated();
50     }
51 
52     public interface TagEndpoint {
connect(int technology)53         boolean connect(int technology);
reconnect()54         boolean reconnect();
disconnect()55         boolean disconnect();
56 
presenceCheck()57         boolean presenceCheck();
isPresent()58         boolean isPresent();
startPresenceChecking(int presenceCheckDelay, @Nullable TagDisconnectedCallback callback)59         void startPresenceChecking(int presenceCheckDelay,
60                                    @Nullable TagDisconnectedCallback callback);
61 
getTechList()62         int[] getTechList();
removeTechnology(int tech)63         void removeTechnology(int tech); // TODO remove this one
getTechExtras()64         Bundle[] getTechExtras();
getUid()65         byte[] getUid();
getHandle()66         int getHandle();
67 
transceive(byte[] data, boolean raw, int[] returnCode)68         byte[] transceive(byte[] data, boolean raw, int[] returnCode);
69 
checkNdef(int[] out)70         boolean checkNdef(int[] out);
readNdef()71         byte[] readNdef();
writeNdef(byte[] data)72         boolean writeNdef(byte[] data);
findAndReadNdef()73         NdefMessage findAndReadNdef();
formatNdef(byte[] key)74         boolean formatNdef(byte[] key);
isNdefFormatable()75         boolean isNdefFormatable();
makeReadOnly()76         boolean makeReadOnly();
77 
getConnectedTechnology()78         int getConnectedTechnology();
79     }
80 
81     public interface TagDisconnectedCallback {
onTagDisconnected(long handle)82         void onTagDisconnected(long handle);
83     }
84 
85     public interface NfceeEndpoint {
86         // TODO flesh out multi-EE and use this
87     }
88 
89     public interface NfcDepEndpoint {
90 
91         /**
92          * Peer-to-Peer Target
93          */
94         public static final short MODE_P2P_TARGET = 0x00;
95         /**
96          * Peer-to-Peer Initiator
97          */
98         public static final short MODE_P2P_INITIATOR = 0x01;
99         /**
100          * Invalid target mode
101          */
102         public static final short MODE_INVALID = 0xff;
103 
receive()104         public byte[] receive();
105 
send(byte[] data)106         public boolean send(byte[] data);
107 
connect()108         public boolean connect();
109 
disconnect()110         public boolean disconnect();
111 
transceive(byte[] data)112         public byte[] transceive(byte[] data);
113 
getHandle()114         public int getHandle();
115 
getMode()116         public int getMode();
117 
getGeneralBytes()118         public byte[] getGeneralBytes();
119 
getLlcpVersion()120         public byte getLlcpVersion();
121     }
122 
123     public interface LlcpSocket {
connectToSap(int sap)124         public void connectToSap(int sap) throws IOException;
125 
connectToService(String serviceName)126         public void connectToService(String serviceName) throws IOException;
127 
close()128         public void close() throws IOException;
129 
send(byte[] data)130         public void send(byte[] data) throws IOException;
131 
receive(byte[] recvBuff)132         public int receive(byte[] recvBuff) throws IOException;
133 
getRemoteMiu()134         public int getRemoteMiu();
135 
getRemoteRw()136         public int getRemoteRw();
137 
getLocalSap()138         public int getLocalSap();
139 
getLocalMiu()140         public int getLocalMiu();
141 
getLocalRw()142         public int getLocalRw();
143     }
144 
145     public interface LlcpServerSocket {
accept()146         public LlcpSocket accept() throws IOException, LlcpException;
147 
close()148         public void close() throws IOException;
149     }
150 
151     public interface LlcpConnectionlessSocket {
getLinkMiu()152         public int getLinkMiu();
153 
getSap()154         public int getSap();
155 
send(int sap, byte[] data)156         public void send(int sap, byte[] data) throws IOException;
157 
receive()158         public LlcpPacket receive() throws IOException;
159 
close()160         public void close() throws IOException;
161     }
162 
163     /**
164      * Called at boot if NFC is disabled to give the device host an opportunity
165      * to check the firmware version to see if it needs updating. Normally the firmware version
166      * is checked during {@link #initialize(boolean enableScreenOffSuspend)},
167      * but the firmware may need to be updated after an OTA update.
168      *
169      * <p>This is called from a thread
170      * that may block for long periods of time during the update process.
171      */
checkFirmware()172     public void checkFirmware();
173 
initialize()174     public boolean initialize();
175 
deinitialize()176     public boolean deinitialize();
177 
getName()178     public String getName();
179 
enableDiscovery(NfcDiscoveryParameters params, boolean restart)180     public void enableDiscovery(NfcDiscoveryParameters params, boolean restart);
181 
disableDiscovery()182     public void disableDiscovery();
183 
sendRawFrame(byte[] data)184     public boolean sendRawFrame(byte[] data);
185 
routeAid(byte[] aid, int route)186     public boolean routeAid(byte[] aid, int route);
187 
unrouteAid(byte[] aid)188     public boolean unrouteAid(byte[] aid);
189 
commitRouting()190     public boolean commitRouting();
191 
createLlcpConnectionlessSocket(int nSap, String sn)192     public LlcpConnectionlessSocket createLlcpConnectionlessSocket(int nSap, String sn)
193             throws LlcpException;
194 
createLlcpServerSocket(int nSap, String sn, int miu, int rw, int linearBufferLength)195     public LlcpServerSocket createLlcpServerSocket(int nSap, String sn, int miu,
196             int rw, int linearBufferLength) throws LlcpException;
197 
createLlcpSocket(int sap, int miu, int rw, int linearBufferLength)198     public LlcpSocket createLlcpSocket(int sap, int miu, int rw,
199             int linearBufferLength) throws LlcpException;
200 
doCheckLlcp()201     public boolean doCheckLlcp();
202 
doActivateLlcp()203     public boolean doActivateLlcp();
204 
resetTimeouts()205     public void resetTimeouts();
206 
setTimeout(int technology, int timeout)207     public boolean setTimeout(int technology, int timeout);
208 
getTimeout(int technology)209     public int getTimeout(int technology);
210 
doAbort()211     public void doAbort();
212 
canMakeReadOnly(int technology)213     boolean canMakeReadOnly(int technology);
214 
getMaxTransceiveLength(int technology)215     int getMaxTransceiveLength(int technology);
216 
setP2pInitiatorModes(int modes)217     void setP2pInitiatorModes(int modes);
218 
setP2pTargetModes(int modes)219     void setP2pTargetModes(int modes);
220 
getExtendedLengthApdusSupported()221     boolean getExtendedLengthApdusSupported();
222 
getDefaultLlcpMiu()223     int getDefaultLlcpMiu();
224 
getDefaultLlcpRwSize()225     int getDefaultLlcpRwSize();
226 
dump()227     String dump();
228 
enableScreenOffSuspend()229     boolean enableScreenOffSuspend();
230 
disableScreenOffSuspend()231     boolean disableScreenOffSuspend();
232 }
233