First up, here\'s the background:
We have a Windows Forms application (written in C#, .NET Framework 3.5) currently running on full Windows 7 tablets, which have a 3
Checking the SIM is inserted and working / activated:
try
{
MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
IMbnInterfaceManager mbnInfMgrInterface = mbnInfMgr as IMbnInterfaceManager;
if (mbnInfMgrInterface != null)
{
IMbnInterface[] mobileInterfaces = mbnInfMgrInterface.GetInterfaces() as IMbnInterface[];
if (mobileInterfaces != null && mobileInterfaces.Length > 0)
{
try
{
MBN_READY_STATE readyState = mobileInterfaces[0].GetReadyState();
switch (readyState)
{
case MBN_READY_STATE.MBN_READY_STATE_BAD_SIM:
MessageBox.Show("The SIM is invalid (PIN Unblock Key retrials have exceeded the limit).");
break;
case MBN_READY_STATE.MBN_READY_STATE_DEVICE_BLOCKED:
MessageBox.Show("The device is blocked by a PIN or password which is preventing the device from initializing and registering onto the network.");
break;
case MBN_READY_STATE.MBN_READY_STATE_DEVICE_LOCKED:
MessageBox.Show("The device is locked by a PIN or password which is preventing the device from initializing and registering onto the network.");
break;
case MBN_READY_STATE.MBN_READY_STATE_FAILURE:
MessageBox.Show("General device failure.");
break;
case MBN_READY_STATE.MBN_READY_STATE_INITIALIZED:
try
{
IMbnSubscriberInformation subInfo = mobileInterfaces[0].GetSubscriberInformation();
if (subInfo != null)
{
SIMNumber = subInfo.SimIccID;
}
else
{
SIMNumber = "Unable to read SIM info";
}
}
catch (Exception)
{
SIMNumber = "Unable to read SIM info";
}
IMbnRegistration registration = mobileInterfaces[0] as IMbnRegistration;
if (registration != null)
{
try
{
MBN_REGISTER_STATE regState = registration.GetRegisterState();
switch (regState)
{
case MBN_REGISTER_STATE.MBN_REGISTER_STATE_DENIED:
// SIM Inactive
simInactive = true;
MessageBox.Show("The device was denied registration. The most likely cause of this error is an Inactive SIM.");
break;
case MBN_REGISTER_STATE.MBN_REGISTER_STATE_DEREGISTERED:
// Do nothing - this is returned before the device has tried to register
break;
case MBN_REGISTER_STATE.MBN_REGISTER_STATE_HOME:
// Do nothing
break;
case MBN_REGISTER_STATE.MBN_REGISTER_STATE_NONE:
MessageBox.Show("The device registration state is unknown. This state may be set upon failure of registration mode change requests.");
break;
case MBN_REGISTER_STATE.MBN_REGISTER_STATE_PARTNER:
// Do nothing
break;
case MBN_REGISTER_STATE.MBN_REGISTER_STATE_ROAMING:
// Do nothing
break;
case MBN_REGISTER_STATE.MBN_REGISTER_STATE_SEARCHING:
// Do nothing
break;
default:
MessageBox.Show("GetRegisterState returned an unexpected state: " + regState.ToString());
break;
}
}
catch (Exception ex)
{
MessageBox.Show("GetRegisterState Error: " + ex.Message);
}
}
break;
case MBN_READY_STATE.MBN_READY_STATE_NOT_ACTIVATED:
MessageBox.Show("The subscription is not activated.");
break;
case MBN_READY_STATE.MBN_READY_STATE_OFF:
MessageBox.Show("The mobile broadband device stack is off.");
break;
case MBN_READY_STATE.MBN_READY_STATE_SIM_NOT_INSERTED:
MessageBox.Show("The SIM is not inserted.");
break;
default:
MessageBox.Show("GetReadyState returned an unexpected state: " + readyState.ToString());
break;
}
}
catch (Exception ex)
{
MessageBox.Show("GetReadyState Error: " + ex.Message);
}
}
else
{
MessageBox.Show("No mobileInterfaces found.");
}
}
else
{
MessageBox.Show("mbnInfMgrInterface is null.");
}
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
}