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

Commit 5aacacac authored by shinzul's avatar shinzul Committed by Steve Kondik
Browse files

wimax: Add framework support for WiMAX

 * Add support for proprietary WiMAX implementations
 * Uses reflection to avoid any coupling with open-source portions
 * Enable with BOARD_USES_SQN_WIMAX

Change-Id: I3429daf979754fbda4db4a6f1e6dca29873d6475
parent 5d8a239c
Loading
Loading
Loading
Loading
+99 −0
Original line number Diff line number Diff line
@@ -122,6 +122,17 @@
 visibility="public"
>
</field>
<field name="ACCESS_WIMAX_STATE"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;android.permission.ACCESS_WIMAX_STATE&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="ACCOUNT_MANAGER"
 type="java.lang.String"
 transient="false"
@@ -364,6 +375,17 @@
 visibility="public"
>
</field>
<field name="CHANGE_WIMAX_STATE"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;android.permission.CHANGE_WIMAX_STATE&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="CLEAR_APP_CACHE"
 type="java.lang.String"
 transient="false"
@@ -35839,6 +35861,17 @@
 visibility="public"
>
</field>
<field name="WIMAX_SERVICE"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;wimax&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="WINDOW_SERVICE"
 type="java.lang.String"
 transient="false"
@@ -93695,6 +93728,17 @@
 visibility="public"
>
</field>
<field name="TYPE_MOBILE_WIMAX"
 type="int"
 transient="false"
 volatile="false"
 value="6"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="TYPE_WIFI"
 type="int"
 transient="false"
@@ -144164,6 +144208,17 @@
 visibility="public"
>
</field>
<field name="ACTION_WIMAX_SETTINGS"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;android.settings.WIMAX_SETTINGS&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="ACTION_WIRELESS_SETTINGS"
 type="java.lang.String"
 transient="false"
@@ -145112,6 +145167,39 @@
 visibility="public"
>
</field>
<field name="WIMAX_AUTO_CONNECT_ON"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;wimax_auto_connect_on&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="WIMAX_LAST_CONNECTED_NETWORK"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;wimax_last_connected_network&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="WIMAX_ON"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;wimax_on&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</class>
<class name="Settings.SettingNotFoundException"
 extends="android.util.AndroidException"
@@ -145884,6 +145972,17 @@
 visibility="public"
>
</field>
<field name="RADIO_WIMAX"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;wimax&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="RINGTONE"
 type="java.lang.String"
 transient="false"
+36 −0
Original line number Diff line number Diff line
@@ -116,6 +116,8 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -174,6 +176,7 @@ class ContextImpl extends Context {
    private static ConnectivityManager sConnectivityManager;
    private static ThrottleManager sThrottleManager;
    private static WifiManager sWifiManager;
    private static Object sWimaxController;
    private static LocationManager sLocationManager;
    private static final HashMap<String, SharedPreferencesImpl> sSharedPrefs =
            new HashMap<String, SharedPreferencesImpl>();
@@ -956,6 +959,8 @@ class ContextImpl extends Context {
            return getThrottleManager();
        } else if (WIFI_SERVICE.equals(name)) {
            return getWifiManager();
        } else if (WIMAX_SERVICE.equals(name)) {
            return getWimaxController();
        } else if (NOTIFICATION_SERVICE.equals(name)) {
            return getNotificationManager();
        } else if (KEYGUARD_SERVICE.equals(name)) {
@@ -1079,6 +1084,37 @@ class ContextImpl extends Context {
        return sWifiManager;
    }

    /*
     * Use reflection hacks to get an instance of the WimaxController
     */
    private Object getWimaxController()
    {
        synchronized (sSync) {
            if (sWimaxController == null) {
                try {
                    IBinder b = ServiceManager.getService(WIMAX_SERVICE);
                    if (b != null) {
                        Class<?> klass = Class.forName("com.htc.net.wimax.IWimaxController$Stub");
                        if (klass != null) {
                            Method asInterface = klass.getMethod("asInterface", IBinder.class);
                            Object wc = asInterface.invoke(null, b);
                            if (wc != null) {
                                klass = Class.forName("com.htc.net.wimax.WimaxController");
                                if (klass != null) {
                                    Constructor<?> ctor = klass.getDeclaredConstructors()[1];
                                    sWimaxController = ctor.newInstance(wc, mMainThread.getHandler());
                                }
                            }
                        }
                    }
                } catch (Exception e) {
                    Log.e(TAG, "Unable to create WimaxController instance", e);
                }
            }
        }
        return sWimaxController;
    }

    private NotificationManager getNotificationManager() {
        synchronized (mSync) {
            if (mNotificationManager == null) {
+9 −0
Original line number Diff line number Diff line
@@ -945,4 +945,13 @@ public final class BluetoothAdapter {
        }
        return true;
    }

    /**
     * For compatibility with proprietary code
     *
     * @hide
     */
    public boolean setAFH(boolean paramBoolean, byte paramByte1, byte paramByte2) {
        return true;
    }
}
+15 −0
Original line number Diff line number Diff line
@@ -1205,6 +1205,9 @@ public abstract class Context {
     *  <dt> {@link #WIFI_SERVICE} ("wifi")
     *  <dd> A {@link android.net.wifi.WifiManager WifiManager} for management of
     * Wi-Fi connectivity.
     * <dt> {@link #WIMAX_SERVICE} ("wimax")
     *  <dd> A {@link android.net.wimax.WimaxManager WimaxManager} for management of
     * Wimax connectivity.
     * <dt> {@link #INPUT_METHOD_SERVICE} ("input_method")
     * <dd> An {@link android.view.inputmethod.InputMethodManager InputMethodManager}
     * for management of input methods.
@@ -1251,6 +1254,8 @@ public abstract class Context {
     * @see android.net.ConnectivityManager
     * @see #WIFI_SERVICE
     * @see android.net.wifi.WifiManager
     * @see #WIMAX_SERVICE
     * @see android.net.wimax.WimaxManager
     * @see #AUDIO_SERVICE
     * @see android.media.AudioManager
     * @see #TELEPHONY_SERVICE
@@ -1458,6 +1463,16 @@ public abstract class Context {
     */
    public static final String WIFI_SERVICE = "wifi";

    /**
     * Use with {@link #getSystemService} to retrieve a {@link
     * android.net.wimax.WimaxManager} for handling management of
     * Wimax access.
     *
     * @see #getSystemService
     * @see android.net.wimax.WimaxManager
     */
    public static final String WIMAX_SERVICE = "wimax";
    
    /**
     * Use with {@link #getSystemService} to retrieve a
     * {@link android.media.AudioManager} for handling management of volume,
+13 −1
Original line number Diff line number Diff line
@@ -159,6 +159,8 @@ public class SyncManager implements OnAccountsUpdateListener {

    private final SyncAdaptersCache mSyncAdapters;

    private boolean mWimaxConnected = false;

    private BroadcastReceiver mStorageIntentReceiver =
            new BroadcastReceiver() {
                public void onReceive(Context context, Intent intent) {
@@ -260,12 +262,22 @@ public class SyncManager implements OnAccountsUpdateListener {
            // since we still have a WiFi connection.
            switch (state) {
                case CONNECTED:
                    if (networkInfo.getType() == ConnectivityManager.TYPE_WIMAX) {
                        mWimaxConnected = true;
                    }
                    mDataConnectionIsConnected = true;
                    break;
                case DISCONNECTED:
                    if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
                    if (networkInfo.getType() == ConnectivityManager.TYPE_WIMAX) {
                        mWimaxConnected = false;
                    }
                    if (!mWimaxConnected && intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false)) {
                        Log.v(TAG,"SyncManager::mConnectivityIntentReceiver.onReceive() "
                            + "- DISCONNECTED and no connectivity");
                        mDataConnectionIsConnected = false;
                    } else {
                        Log.v(TAG, "SyncManager::mConnectivityIntentReceiver.onReceive() "
                            + "- DISCONNECTED but there is connectivity");
                        mDataConnectionIsConnected = true;
                    }
                    break;
Loading