Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e59ccd8f authored by shinzul's avatar shinzul
Browse files

Support for i2c devices

Change-Id: Ic75764a6bccc7c6be92f21d8e1e1c21fd5f72fae
parent 4103f8e1
Loading
Loading
Loading
Loading
+33 −20
Original line number Diff line number Diff line
@@ -1917,7 +1917,9 @@ public class AudioService extends IAudioService.Stub {
            } else if (action.equals(Intent.ACTION_HEADSET_PLUG)) {
                int state = intent.getIntExtra("state", 0);
                int microphone = intent.getIntExtra("microphone", 0);
                String name = intent.getStringExtra("name");
                
                if (name != null && !name.equalsIgnoreCase("1")) {
                    if (microphone != 0) {
                        boolean isConnected = mConnectedDevices.containsKey(AudioSystem.DEVICE_OUT_WIRED_HEADSET);
                        if (state == 0 && isConnected) {
@@ -1945,6 +1947,17 @@ public class AudioService extends IAudioService.Stub {
                            mConnectedDevices.put( new Integer(AudioSystem.DEVICE_OUT_WIRED_HEADPHONE), "");
                        }
                    }
                } else {
                    if (state == 0) {
                        AudioSystem.setDeviceConnectionState(0x20000,
                                AudioSystem.DEVICE_STATE_UNAVAILABLE,
                                "");
                    } else if (state == 1)  {
                        AudioSystem.setDeviceConnectionState(0x20000,
                                AudioSystem.DEVICE_STATE_AVAILABLE,
                                "");
                    }
                }
            } else if (action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED)) {
                int state = intent.getIntExtra(BluetoothHeadset.EXTRA_AUDIO_STATE,
                                               BluetoothHeadset.STATE_ERROR);
+66 −47
Original line number Diff line number Diff line
@@ -45,6 +45,8 @@ class HeadsetObserver extends UEventObserver {
    private static final int BIT_HEADSET_NO_MIC = (1 << 1);
    private static final int SUPPORTED_HEADSETS = (BIT_HEADSET|BIT_HEADSET_NO_MIC);
    private static final int HEADSETS_WITH_MIC = BIT_HEADSET;
    private static final int I2C_CONNECTED = 2048;
    private static final int I2C_ROUTED = 6144;

    private int mHeadsetState;
    private int mPrevHeadsetState;
@@ -100,6 +102,7 @@ class HeadsetObserver extends UEventObserver {
    }

    private synchronized final void update(String newName, int newState) {
        if (newState != I2C_ROUTED && newState != I2C_CONNECTED) {
            // Retain only relevant bits
            int headsetState = newState & SUPPORTED_HEADSETS;
            int newOrOld = headsetState | mHeadsetState;
@@ -137,6 +140,9 @@ class HeadsetObserver extends UEventObserver {
                                                               mPrevHeadsetState,
                                                               mHeadsetName),
                                        delay);
        } else {
            sendIntent(0, newState, 0, "");
        }
    }

    private synchronized final void sendIntents(int headsetState, int prevHeadsetState, String headsetName) {
@@ -150,6 +156,7 @@ class HeadsetObserver extends UEventObserver {
    }

    private final void sendIntent(int headset, int headsetState, int prevHeadsetState, String headsetName) {
        if (headsetState != I2C_ROUTED && headsetState != I2C_CONNECTED) {
            if ((headsetState & headset) != (prevHeadsetState & headset)) {
                //  Pack up the values and broadcast them to everyone
                Intent intent = new Intent(Intent.ACTION_HEADSET_PLUG);
@@ -171,6 +178,18 @@ class HeadsetObserver extends UEventObserver {
                // TODO: Should we require a permission?
                ActivityManagerNative.broadcastStickyIntent(intent, null);
            }
        } else {
            Intent intent = new Intent("com.teamwin");
            intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
            int state = 0;
            
            if (headsetState == I2C_ROUTED) {
                state = 1;
            }

            intent.putExtra("state", state);
            ActivityManagerNative.broadcastStickyIntent(intent, null);
        }
    }

    private final Handler mHandler = new Handler() {