public StatusChangedEventArgs(ConnMgr.ConnectionStatus connstatus, string desc) { this.connstatus = connstatus; this.desc = desc; }
/// <summary> /// Returns the Status Description for the current GPRS connection /// </summary> public string GetStatusDesc(ConnMgr.ConnectionStatus connstatus) { ConnMgr.ConnectionStatus connectionStatu = connstatus; if (connectionStatu > ConnMgr.ConnectionStatus.Suspended) { switch (connectionStatu) { case ConnMgr.ConnectionStatus.Disconnected: { return "Disconnected"; } case ConnMgr.ConnectionStatus.ConnectionFailed: { return "Connection failed"; } case ConnMgr.ConnectionStatus.ConnectionCanceled: { return "User cancelled"; } case ConnMgr.ConnectionStatus.ConnectionDisabled: { return "The connection can be made, but the connection itself is disabled"; } case ConnMgr.ConnectionStatus.NoPathToDestination: { return "No path to the destination could be found"; } case ConnMgr.ConnectionStatus.WaitingForPath: { return "A path to the destination exists but is not presently available"; } case ConnMgr.ConnectionStatus.WaitingForPhone: { return "A voice call is in progress and is using resources that this connection requires"; } case ConnMgr.ConnectionStatus.PhoneOff: { return "The phone has been turned off"; } case ConnMgr.ConnectionStatus.ExclusiveConflict: { return "The connection could not be established because it would multi-home an exclusive connection"; } case ConnMgr.ConnectionStatus.NoResources: { return "The Connection Manager failed to allocate resources to make the connection"; } case ConnMgr.ConnectionStatus.ConnectionLinkedFailed: { return "The connection link was prematurely disconnected"; } case ConnMgr.ConnectionStatus.AuthenticationFailed: { return "The user could not be authenticated"; } default: { switch (connectionStatu) { case ConnMgr.ConnectionStatus.WaitingConnection: { return "The device is attempting to connect"; } case ConnMgr.ConnectionStatus.WaitingForResource: { return "Another client is using resources that this connection requires"; } case ConnMgr.ConnectionStatus.WaitingForNetwork: { return "The device is waiting for a task with a higher priority to connect to the network before connecting to the same network. This status value is returned only to clients that specify a priority of CONNMGR_PRIORITY_LOWBKGND when requesting a connection"; } default: { switch (connectionStatu) { case ConnMgr.ConnectionStatus.WaitingDisconnection: { return "The connection is being brought down"; } case ConnMgr.ConnectionStatus.WaitingConnectionAbort: { return "The device is aborting the connection attempt"; } } break; } } break; } } } else { if (connectionStatu == ConnMgr.ConnectionStatus.Unknown) { return "Unknown status"; } switch (connectionStatu) { case ConnMgr.ConnectionStatus.Connected: { return "Connected"; } case ConnMgr.ConnectionStatus.Suspended: { return "The connection has been established, but has been suspended"; } } } return "Unknown status"; }
/// <summary> /// Attempts to create and establish a connection to a new GPRS connectoid using the specified ISP parameters /// </summary> /// <param name="EntryName">Name to be given to the new GPRS connectoid</param> /// <param name="mode">ConnectionMode is either Synchronous or Asynchronous</param> /// <param name="Username">User name provided by local ISP</param> /// <param name="Password">Password provided by local ISP</param> /// <param name="APN">Access Point Name provided by local ISP</param> public void Connect(string EntryName, ConnMgr.ConnectionMode mode, string Username, string Password, string APN) { if (EntryName == null || EntryName == "") { throw new ArgumentException("EntryName is invalid"); } if (Username == null) { throw new ArgumentException("Username is invalid"); } if (Password == null) { throw new ArgumentException("Password is invalid"); } if (APN == null) { throw new ArgumentException("APN is invalid"); } int num = 0; Guid guid = new Guid("ADB0B001-10B5-3F39-27C6-9742E785FCD4"); IntPtr zero = IntPtr.Zero; object[] entryName = new object[] { "<wap-provisioningdoc><characteristic type=\"CM_GPRSEntries\"><characteristic type=\"", EntryName, "\"><parm name=\"DestId\" value=\"{", guid, "}\"/><parm name=\"Phone\" value=\"~GPRS!", APN, "\"/><parm name=\"UserName\" value=\"", Username, "\"/><parm name=\"Password\" value=\"", Password, "\"/><parm name=\"DeviceType\" value=\"modem\"/><parm name=\"DeviceName\" value=\"Cellular Line\"/><parm name=\"Enabled\" value=\"1\"/><parm name=\"RequirePw\" value=\"1\"/><characteristic type=\"DevSpecificCellular\"><parm name=\"GPRSInfoAccessPointName\" value=\"", APN, "\"/></characteristic></characteristic></characteristic></wap-provisioningdoc>" }; string str = string.Concat(entryName); num = ConnMgr.sysDMProcessConfigXML(str, 1, out zero); if (num != 0) { ConnMgr.sysOperator_Delete(zero); throw new ExternalException("DMProcessConfigXML failed", Marshal.GetExceptionForHR(num)); } if (zero == IntPtr.Zero) { throw new Exception("xmlOut did not get set"); } string stringUni = Marshal.PtrToStringUni(zero); ConnMgr.sysOperator_Delete(zero); if (stringUni.IndexOf("parm-error") > -1) { string[] strArrays = new string[] { "Can't set username and password for ", EntryName, " [", num.ToString(), "]" }; throw new Exception(string.Concat(strArrays)); } num = ConnMgr.sysConnMgrMapConRef(0, EntryName, out guid); if (num != 0) { string[] entryName1 = new string[] { "Can't map connection reference for ", EntryName, " [", num.ToString(), "]" }; throw new ExternalException(string.Concat(entryName1), Marshal.GetExceptionForHR(num)); } this.Connect(guid, false, mode); }
/// <summary> /// Attempts to create and establish a connection to a new GPRS connectoid using the specified XML string /// </summary> /// <param name="EntryName">Name to be given to the new GPRS connectoid</param> /// <param name="mode">ConnectionMode is either Synchronous or Asynchronous</param> /// <param name="xmlIn">Complete XML string used to create new connectoid (refer to Connection Manager)</param> public void Connect(string EntryName, ConnMgr.ConnectionMode mode, string xmlIn) { Guid guid; if (xmlIn == null || xmlIn == "") { throw new ArgumentException("xmlIn is invalid"); } IntPtr zero = IntPtr.Zero; int num = ConnMgr.sysDMProcessConfigXML(xmlIn, 1, out zero); if (num != 0) { ConnMgr.sysOperator_Delete(zero); throw new ExternalException("DMProcessConfigXML failed", Marshal.GetExceptionForHR(num)); } if (zero == IntPtr.Zero) { throw new Exception("xmlOut did not get set"); } string stringUni = Marshal.PtrToStringUni(zero); ConnMgr.sysOperator_Delete(zero); if (stringUni.IndexOf("parm-error") > -1) { string[] entryName = new string[] { "Can't set username and password for ", EntryName, " [", num.ToString(), "]" }; throw new Exception(string.Concat(entryName)); } num = ConnMgr.sysConnMgrMapConRef(0, EntryName, out guid); if (num != 0) { string[] strArrays = new string[] { "Can't map connection reference for ", EntryName, " [", num.ToString(), "]" }; throw new ExternalException(string.Concat(strArrays), Marshal.GetExceptionForHR(num)); } this.Connect(guid, false, mode); }
/// <summary> /// Attempts to establish a connection using the GUID to an existing connectoid /// </summary> /// <param name="destGuid">GUID of existing connectoid</param> /// <param name="exclusive">Exclusive access of connectoid (boolean)</param> /// <param name="mode">ConnectionMode is either Synchronous or Asynchronous</param> public void Connect(Guid destGuid, bool exclusive, ConnMgr.ConnectionMode mode) { ConnMgr.ConnectionInfo connectionInfo = new ConnMgr.ConnectionInfo(); connectionInfo.dwParams = 1; connectionInfo.dwPriority = 8192; connectionInfo.dwFlags = 65; connectionInfo.bExclusive = exclusive; connectionInfo.bDisabled = false; connectionInfo.guidDestNet = destGuid; connectionInfo.hWnd = this.connMgrWindow.Hwnd; connectionInfo.uMsg = 51917; connectionInfo.lParam = 0; connectionInfo.MarshalToUnManaged(); int num = 0; if (mode != ConnMgr.ConnectionMode.Synchronous) { ConnMgr.sysConnMgrEstablishConnection(connectionInfo.structPtr, out this.hConnMgr); } else { int num1 = ConnMgr.sysConnMgrEstablishConnectionSync(connectionInfo.structPtr, out this.hConnMgr, this.Timeout, out num); if (num1 != 0) { throw new ExternalException("ConnMgrEstablishConnectionSync failed", Marshal.GetExceptionForHR(num1)); } } }