summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/nfc/DeviceHost.java4
-rwxr-xr-xsrc/com/android/nfc/NfcService.java4
-rwxr-xr-xsrc/com/android/nfc/P2pLinkManager.java18
-rw-r--r--src/com/android/nfc/snep/SnepClient.java24
-rw-r--r--src/com/android/nfc/snep/SnepServer.java22
5 files changed, 61 insertions, 11 deletions
diff --git a/src/com/android/nfc/DeviceHost.java b/src/com/android/nfc/DeviceHost.java
index a78a136..b7336ad 100644
--- a/src/com/android/nfc/DeviceHost.java
+++ b/src/com/android/nfc/DeviceHost.java
@@ -220,5 +220,9 @@ public interface DeviceHost {
byte[][] getWipeApdus();
+ int getDefaultLlcpMiu();
+
+ int getDefaultLlcpRwSize();
+
String dump();
}
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index ab294ea..13f224b 100755
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -303,7 +303,9 @@ public class NfcService extends Application implements DeviceHostListener {
HandoverManager handoverManager = new HandoverManager(mContext);
mNfcDispatcher = new NfcDispatcher(this, handoverManager);
- mP2pLinkManager = new P2pLinkManager(mContext, handoverManager);
+
+ mP2pLinkManager = new P2pLinkManager(mContext, handoverManager,
+ mDeviceHost.getDefaultLlcpMiu(), mDeviceHost.getDefaultLlcpRwSize());
mSecureElement = new NativeNfcSecureElement(mContext);
mEeRoutingState = ROUTE_OFF;
diff --git a/src/com/android/nfc/P2pLinkManager.java b/src/com/android/nfc/P2pLinkManager.java
index 253ddaf..9b23f65 100755
--- a/src/com/android/nfc/P2pLinkManager.java
+++ b/src/com/android/nfc/P2pLinkManager.java
@@ -167,6 +167,9 @@ public class P2pLinkManager implements Handler.Callback, P2pEventListener.Callba
final Handler mHandler;
final HandoverManager mHandoverManager;
+ final int mDefaultMiu;
+ final int mDefaultRwSize;
+
// Locked on NdefP2pManager.this
int mLinkState;
int mSendState; // valid during LINK_STATE_UP or LINK_STATE_DEBOUNCE
@@ -179,9 +182,10 @@ public class P2pLinkManager implements Handler.Callback, P2pEventListener.Callba
SharedPreferences mPrefs;
boolean mFirstBeam;
- public P2pLinkManager(Context context, HandoverManager handoverManager) {
+ public P2pLinkManager(Context context, HandoverManager handoverManager, int defaultMiu,
+ int defaultRwSize) {
mNdefPushServer = new NdefPushServer(NDEFPUSH_SAP, mNppCallback);
- mDefaultSnepServer = new SnepServer(mDefaultSnepCallback);
+ mDefaultSnepServer = new SnepServer(mDefaultSnepCallback, defaultMiu, defaultRwSize);
mHandoverServer = new HandoverServer(HANDOVER_SAP, handoverManager, mHandoverCallback);
if (ECHOSERVER_ENABLED) {
@@ -201,6 +205,8 @@ public class P2pLinkManager implements Handler.Callback, P2pEventListener.Callba
mPrefs = context.getSharedPreferences(NfcService.PREF, Context.MODE_PRIVATE);
mFirstBeam = mPrefs.getBoolean(NfcService.PREF_FIRST_BEAM, true);
mHandoverManager = handoverManager;
+ mDefaultMiu = defaultMiu;
+ mDefaultRwSize = defaultRwSize;
}
/**
@@ -417,11 +423,11 @@ public class P2pLinkManager implements Handler.Callback, P2pEventListener.Callba
long time = SystemClock.elapsedRealtime();
-
try {
if (DBG) Log.d(TAG, "Sending ndef via SNEP");
- int snepResult = doSnepProtocol(mHandoverManager, m, uris);
+ int snepResult = doSnepProtocol(mHandoverManager, m, uris,
+ mDefaultMiu, mDefaultRwSize);
switch (snepResult) {
case SNEP_HANDOVER_UNSUPPORTED:
@@ -461,8 +467,8 @@ public class P2pLinkManager implements Handler.Callback, P2pEventListener.Callba
}
static int doSnepProtocol(HandoverManager handoverManager,
- NdefMessage msg, Uri[] uris) throws IOException {
- SnepClient snepClient = new SnepClient();
+ NdefMessage msg, Uri[] uris, int miu, int rwSize) throws IOException {
+ SnepClient snepClient = new SnepClient(miu, rwSize);
try {
snepClient.connect();
} catch (IOException e) {
diff --git a/src/com/android/nfc/snep/SnepClient.java b/src/com/android/nfc/snep/SnepClient.java
index 8dca6ae..fae8143 100644
--- a/src/com/android/nfc/snep/SnepClient.java
+++ b/src/com/android/nfc/snep/SnepClient.java
@@ -29,7 +29,8 @@ public final class SnepClient {
private static final String TAG = "SnepClient";
private static final boolean DBG = false;
private static final int DEFAULT_ACCEPTABLE_LENGTH = 100*1024;
- private static final int MIU = 128;
+ private static final int DEFAULT_MIU = 128;
+ private static final int DEFAULT_RWSIZE = 1;
SnepMessenger mMessenger = null;
private final Object mTransmissionLock = new Object();
@@ -38,6 +39,8 @@ public final class SnepClient {
private int mState = DISCONNECTED;
private final int mAcceptableLength;
private final int mFragmentLength;
+ private final int mMiu;
+ private final int mRwSize;
private static final int DISCONNECTED = 0;
private static final int CONNECTING = 1;
@@ -48,6 +51,8 @@ public final class SnepClient {
mPort = SnepServer.DEFAULT_PORT;
mAcceptableLength = DEFAULT_ACCEPTABLE_LENGTH;
mFragmentLength = -1;
+ mMiu = DEFAULT_MIU;
+ mRwSize = DEFAULT_RWSIZE;
}
public SnepClient(String serviceName) {
@@ -55,6 +60,17 @@ public final class SnepClient {
mPort = -1;
mAcceptableLength = DEFAULT_ACCEPTABLE_LENGTH;
mFragmentLength = -1;
+ mMiu = DEFAULT_MIU;
+ mRwSize = DEFAULT_RWSIZE;
+ }
+
+ public SnepClient(int miu, int rwSize) {
+ mServiceName = SnepServer.DEFAULT_SERVICE_NAME;
+ mPort = SnepServer.DEFAULT_PORT;
+ mAcceptableLength = DEFAULT_ACCEPTABLE_LENGTH;
+ mFragmentLength = -1;
+ mMiu = miu;
+ mRwSize = rwSize;
}
SnepClient(String serviceName, int fragmentLength) {
@@ -62,6 +78,8 @@ public final class SnepClient {
mPort = -1;
mAcceptableLength = DEFAULT_ACCEPTABLE_LENGTH;
mFragmentLength = fragmentLength;
+ mMiu = DEFAULT_MIU;
+ mRwSize = DEFAULT_RWSIZE;
}
SnepClient(String serviceName, int acceptableLength, int fragmentLength) {
@@ -69,6 +87,8 @@ public final class SnepClient {
mPort = -1;
mAcceptableLength = acceptableLength;
mFragmentLength = fragmentLength;
+ mMiu = DEFAULT_MIU;
+ mRwSize = DEFAULT_RWSIZE;
}
public void put(NdefMessage msg) throws IOException {
@@ -122,7 +142,7 @@ public final class SnepClient {
try {
if (DBG) Log.d(TAG, "about to create socket");
// Connect to the snep server on the remote side
- socket = NfcService.getInstance().createLlcpSocket(0, MIU, 1, 1024);
+ socket = NfcService.getInstance().createLlcpSocket(0, mMiu, mRwSize, 1024);
if (socket == null) {
throw new IOException("Could not connect to socket.");
}
diff --git a/src/com/android/nfc/snep/SnepServer.java b/src/com/android/nfc/snep/SnepServer.java
index 84bb673..aa7da48 100644
--- a/src/com/android/nfc/snep/SnepServer.java
+++ b/src/com/android/nfc/snep/SnepServer.java
@@ -34,9 +34,10 @@ import java.io.IOException;
public final class SnepServer {
private static final String TAG = "SnepServer";
private static final boolean DBG = false;
+ private static final int DEFAULT_MIU = 248;
+ private static final int DEFAULT_RW_SIZE = 1;
public static final int DEFAULT_PORT = 4;
- private static final int MIU = 248;
public static final String DEFAULT_SERVICE_NAME = "urn:nfc:sn:snep";
@@ -44,6 +45,8 @@ public final class SnepServer {
final String mServiceName;
final int mServiceSap;
final int mFragmentLength;
+ final int mMiu;
+ final int mRwSize;
/** Protected by 'this', null when stopped, non-null when running */
ServerThread mServerThread = null;
@@ -59,6 +62,8 @@ public final class SnepServer {
mServiceName = DEFAULT_SERVICE_NAME;
mServiceSap = DEFAULT_PORT;
mFragmentLength = -1;
+ mMiu = DEFAULT_MIU;
+ mRwSize = DEFAULT_RW_SIZE;
}
public SnepServer(String serviceName, int serviceSap, Callback callback) {
@@ -66,6 +71,17 @@ public final class SnepServer {
mServiceName = serviceName;
mServiceSap = serviceSap;
mFragmentLength = -1;
+ mMiu = DEFAULT_MIU;
+ mRwSize = DEFAULT_RW_SIZE;
+ }
+
+ public SnepServer(Callback callback, int miu, int rwSize) {
+ mCallback = callback;
+ mServiceName = DEFAULT_SERVICE_NAME;
+ mServiceSap = DEFAULT_PORT;
+ mFragmentLength = -1;
+ mMiu = miu;
+ mRwSize = rwSize;
}
SnepServer(String serviceName, int serviceSap, int fragmentLength, Callback callback) {
@@ -73,6 +89,8 @@ public final class SnepServer {
mServiceName = serviceName;
mServiceSap = serviceSap;
mFragmentLength = fragmentLength;
+ mMiu = DEFAULT_MIU;
+ mRwSize = DEFAULT_RW_SIZE;
}
/** Connection class, used to handle incoming connections */
@@ -168,7 +186,7 @@ public final class SnepServer {
try {
synchronized (SnepServer.this) {
mServerSocket = NfcService.getInstance().createLlcpServerSocket(mServiceSap,
- mServiceName, MIU, 1, 1024);
+ mServiceName, mMiu, mRwSize, 1024);
}
if (mServerSocket == null) {
if (DBG) Log.d(TAG, "failed to create LLCP service socket");