MBN Api: No interfaces found when using mbnInfMgrInterface.GetInterfaces()

1k views Asked by At

Good afternoon

I have a strange problem when using the Mobile Broadband Network API (MBN API). When using netshell and running netsh mbn>show interfaces, I receive 1 interface. That's correct because I have one broadband connection on my system.

When I go to my code (which works on other systems) and I do

IMbnInterface[] mobileInterfaces = mbnInfMgrInterface.GetInterfaces() as IMbnInterface[];

I receive no interfaces.

Shouldn't this somehow be linked? Is there a particular setting I'm forgetting?

My readstate function is:

private void ReadStateMobileNetwork()
    {
        Log.Info("Reading mobile network state");
        try
        {
            MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
            IMbnInterfaceManager mbnInfMgrInterface = mbnInfMgr as IMbnInterfaceManager;
            if (mbnInfMgrInterface != null)
            {
                IMbnInterface[] mobileInterfaces = mbnInfMgrInterface.GetInterfaces() as IMbnInterface[];
                Log.Info("Interfaces: " + mobileInterfaces);
                if (mobileInterfaces != null && mobileInterfaces.Length > 0)
                {
                    // Use the first interface, as there should only be one mobile data adapter
                    IMbnSignal signalDetails = mobileInterfaces[0] as IMbnSignal;

                    Int32.TryParse(signalDetails.GetSignalStrength().ToString(), out _signalStrength);
                    SignalStrength = Convert.ToInt32(((float)SignalStrength / 33) * 100);

                    MBN_PROVIDER provider = mobileInterfaces[0].GetHomeProvider();
                    MobileProvider = provider.providerName.ToString();

                    if (String.IsNullOrEmpty(SIMkaartnumber))
                    {
                        try
                        {
                            IMbnSubscriberInformation subInfo = mobileInterfaces[0].GetSubscriberInformation();

                            if (subInfo != null)
                            {
                                SIMkaartnumber = subInfo.SimIccID;
                            }
                            else
                            {
                                Connected = false;
                                SIMkaartnumber = "";
                                MobileProvider = "Sim unreadable";
                                SignalStrength = 0;
                                State = MobileNetworkMonitorState.UnableToReadSimInfo;
                            }
                        }
                        catch (Exception)
                        {
                            Connected = false;
                            SIMkaartnumber = "";
                            MobileProvider = "Sim unreadable";
                            SignalStrength = 0;
                            State = MobileNetworkMonitorState.UnableToReadSimInfo;
                        }
                    }

                    // Register the connection events
                    uint cookie;
                    MbnConnectionManager connMgr = new MbnConnectionManager();
                    IConnectionPointContainer connPointContainer = connMgr as IConnectionPointContainer;

                    Guid IID_IMbnConnectionEvents = typeof(IMbnConnectionEvents).GUID;
                    IConnectionPoint connPoint;
                    connPointContainer.FindConnectionPoint(ref IID_IMbnConnectionEvents, out connPoint);

                    // Check whether the connection is active
                    IMbnConnection connection = mobileInterfaces[0].GetConnection();

                    if (connection != null)
                    {
                        MBN_ACTIVATION_STATE state;
                        connection.GetConnectionState(out state, out profileName);

                        switch (state)
                        {
                            case MBN_ACTIVATION_STATE.MBN_ACTIVATION_STATE_NONE:
                                Connected = false;
                                MobileProvider = "";
                                State = MobileNetworkMonitorState.Unknown;
                                break;
                            case MBN_ACTIVATION_STATE.MBN_ACTIVATION_STATE_ACTIVATING:
                                Connected = false;
                                State = MobileNetworkMonitorState.Connecting;
                                break;
                            case MBN_ACTIVATION_STATE.MBN_ACTIVATION_STATE_ACTIVATED:
                                Connected = true;
                                State = MobileNetworkMonitorState.Connected;
                                break;
                            case MBN_ACTIVATION_STATE.MBN_ACTIVATION_STATE_DEACTIVATED:
                                Connected = false;
                                State = MobileNetworkMonitorState.NoConnection;
                                break;
                            case MBN_ACTIVATION_STATE.MBN_ACTIVATION_STATE_DEACTIVATING:
                                Connected = false;
                                State = MobileNetworkMonitorState.Disconnecting;
                                break;
                            default:
                                Connected = false;
                                State = MobileNetworkMonitorState.Unknown;
                                StateInfo = state.ToString();
                                break;
                        }
                    }
                    else
                    {
                        Connected = false;
                        MobileProvider = "No connection";
                        SignalStrength = 0;
                        State = MobileNetworkMonitorState.ConnectionNotFound;
                    }
                }
                else
                {
                    Connected = false;
                    MobileProvider = "No interfaces";
                    SignalStrength = 0;
                    State = MobileNetworkMonitorState.MobileInterfacesNotFound;
                }
            }
            else
            {
                Connected = false;
                MobileProvider = "Interfaces null";
                SignalStrength = 0;
                State = MobileNetworkMonitorState.mbnInfMgrInterfaceIsNull;
            }
        }
        catch (Exception ex)
        {
            Log.Debug(ex);

            if (ex.Message.Contains("SIM is not inserted."))
            {
                Connected = false;
                MobileProvider = "No SIM";
                SIMkaartnumber = "";
                State = MobileNetworkMonitorState.NoSimInserted;
            }
            else if (ex.Message.Contains("0x7FF8FB70"))
            {
                Connected = false;
                MobileProvider = "No device";
                State = MobileNetworkMonitorState.DeviceNotFound;
            }
            else if (ex.Message.Contains("0x80070426"))
            {
                Connected = false;
                MobileProvider = "Service not started";
                State = MobileNetworkMonitorState.ServiceNotStarted;
            }
            else if (ex.Message.Contains("0x80070490"))
            {
                Connected = false;
                MobileProvider = "Unknown problem";
                State = MobileNetworkMonitorState.Unknown;
            }
            else
            {
                Connected = false;
                MobileProvider = "Unknown problem";
                State = MobileNetworkMonitorState.Unknown;
                StateInfo = ex.Message;
            }
            SignalStrength = 0;
        }
    }

Thank you for your help. Hope someone experienced this problem before and can help me.

0

There are 0 answers