OSDN Git Service

Add StateMachine make methods.
authorWink Saville <wink@google.com>
Sat, 15 Sep 2012 14:59:10 +0000 (07:59 -0700)
committerWink Saville <wink@google.com>
Sat, 15 Sep 2012 14:59:10 +0000 (07:59 -0700)
StateMachines must be started before any messages are sent to them
otherwise an exception is thrown.

Bug: 7091976
Change-Id: I05315d45d4d6db42843442b7feb37c665cfabcab

src/com/android/bluetooth/a2dp/A2dpService.java
src/com/android/bluetooth/a2dp/A2dpStateMachine.java
src/com/android/bluetooth/btservice/AdapterService.java
src/com/android/bluetooth/btservice/AdapterState.java
src/com/android/bluetooth/btservice/BondStateMachine.java
src/com/android/bluetooth/hfp/HeadsetService.java
src/com/android/bluetooth/hfp/HeadsetStateMachine.java

index 2780232..64818ce 100755 (executable)
@@ -36,8 +36,7 @@ public class A2dpService extends ProfileService {
     }
 
     protected boolean start() {
-        mStateMachine = new A2dpStateMachine(this,this);
-        mStateMachine.start();
+        mStateMachine = A2dpStateMachine.make(this, this);
         setA2dpService(this);
         return true;
     }
index 2e063d1..d702966 100755 (executable)
@@ -103,7 +103,7 @@ final class A2dpStateMachine extends StateMachine {
         classInitNative();
     }
 
-    A2dpStateMachine(A2dpService svc, Context context) {
+    private A2dpStateMachine(A2dpService svc, Context context) {
         super(TAG);
         mService = svc;
         mContext = context;
@@ -130,6 +130,13 @@ final class A2dpStateMachine extends StateMachine {
 
     }
 
+    static A2dpStateMachine make(A2dpService svc, Context context) {
+        Log.d(TAG, "make");
+        A2dpStateMachine a2dpSm = new A2dpStateMachine(svc, context);
+        a2dpSm.start();
+        return a2dpSm;
+    }
+
     public void doQuit() {
         quitNow();
     }
index 8ff2022..35ca310 100755 (executable)
@@ -238,11 +238,10 @@ public class AdapterService extends Service {
         if (DBG) debugLog("onCreate");
         mBinder = new AdapterServiceBinder(this);
         mAdapterProperties = new AdapterProperties(this);
-        mAdapterStateMachine =  new AdapterState(this, mAdapterProperties);
+        mAdapterStateMachine =  AdapterState.make(this, mAdapterProperties);
         mJniCallbacks =  new JniCallbacks(mAdapterStateMachine, mAdapterProperties);
         initNative();
         mNativeAvailable=true;
-        mAdapterStateMachine.start();
         mCallbacks = new RemoteCallbackList<IBluetoothCallback>();
         //Load the name and address
         getAdapterPropertyNative(AbstractionLayer.BT_PROPERTY_BDADDR);
@@ -273,13 +272,12 @@ public class AdapterService extends Service {
             mProfileServicesState.put(supportedProfileServices[i].getName(),BluetoothAdapter.STATE_OFF);
         }
         mRemoteDevices = new RemoteDevices(this);
-        mBondStateMachine = new BondStateMachine(this, mAdapterProperties, mRemoteDevices);
         mAdapterProperties.init(mRemoteDevices);
-        mJniCallbacks.init(mBondStateMachine,mRemoteDevices);
 
-        //Start Bond State Machine
-        if (DBG) {debugLog("processStart(): Starting Bond State Machine");}
-        mBondStateMachine.start();
+        if (DBG) {debugLog("processStart(): Make Bond State Machine");}
+        mBondStateMachine = BondStateMachine.make(this, mAdapterProperties, mRemoteDevices);
+
+        mJniCallbacks.init(mBondStateMachine,mRemoteDevices);
 
         //FIXME: Set static instance here???
         setAdapterService(this);
index 366674e..de0c5d3 100755 (executable)
@@ -70,7 +70,7 @@ final class AdapterState extends StateMachine {
         return isTurningOff;
     }
 
-    public AdapterState(AdapterService service,AdapterProperties adapterProperties) {
+    private AdapterState(AdapterService service, AdapterProperties adapterProperties) {
         super("BluetoothAdapterState:");
         addState(mOnState);
         addState(mOffState);
@@ -80,6 +80,12 @@ final class AdapterState extends StateMachine {
         setInitialState(mOffState);
     }
 
+    public static AdapterState make(AdapterService service, AdapterProperties adapterProperties) {
+        Log.d(TAG, "make");
+        AdapterState as = new AdapterState(service, adapterProperties);
+        as.start();
+        return as;
+    }
 
     public void doQuit() {
         quitNow();
index c111dff..b9b8eda 100755 (executable)
@@ -51,7 +51,7 @@ final class BondStateMachine extends StateMachine {
     private PendingCommandState mPendingCommandState = new PendingCommandState();
     private StableState mStableState = new StableState();
 
-    public BondStateMachine(AdapterService service,
+    private BondStateMachine(AdapterService service,
             AdapterProperties prop, RemoteDevices remoteDevices) {
         super("BondStateMachine:");
         addState(mStableState);
@@ -63,6 +63,14 @@ final class BondStateMachine extends StateMachine {
         setInitialState(mStableState);
     }
 
+    public static BondStateMachine make(AdapterService service,
+            AdapterProperties prop, RemoteDevices remoteDevices) {
+        Log.d(TAG, "make");
+        BondStateMachine bsm = new BondStateMachine(service, prop, remoteDevices);
+        bsm.start();
+        return bsm;
+    }
+            
     public void doQuit() {
         quitNow();
     }
index 9e9d71b..f147078 100755 (executable)
@@ -45,8 +45,7 @@ public class HeadsetService extends ProfileService {
     }
 
     protected boolean start() {
-        mStateMachine = new HeadsetStateMachine(this);
-        mStateMachine.start();
+        mStateMachine = HeadsetStateMachine.make(this);
         IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
         filter.addAction(AudioManager.VOLUME_CHANGED_ACTION);
         filter.addAction(BluetoothDevice.ACTION_CONNECTION_ACCESS_REPLY);
index dd2396a..3c8106f 100755 (executable)
@@ -149,7 +149,7 @@ final class HeadsetStateMachine extends StateMachine {
         classInitNative();
     }
 
-    HeadsetStateMachine(HeadsetService context) {
+    private HeadsetStateMachine(HeadsetService context) {
         super(TAG);
         mService = context;
         mVoiceRecognitionStarted = false;
@@ -192,6 +192,13 @@ final class HeadsetStateMachine extends StateMachine {
         setInitialState(mDisconnected);
     }
 
+    static HeadsetStateMachine make(HeadsetService context) {
+        Log.d(TAG, "make");
+        HeadsetStateMachine hssm = new HeadsetStateMachine(context);
+        hssm.start();
+        return hssm;
+    }
+
 
     public void doQuit() {
         quitNow();