// https://www.assembla.com/spaces/ibox-processing/wiki/Linux_I_GPRS-connection_I_configuration /// <summary> /// Меняем настройку модема - в консоли cp /etc/chatscript/life-connect /etc/chatscript/mts-connect /// но пишем весь файл /// </summary> /// <param name="ModelModem"></param> public static void CreateScriptFile(this GprsProvider provider, ModelModem modelModem, int tryIndex) { var file = provider.LinuxScriptFile(true); { var filePreconfig = file + '-' + modelModem.ShortName(); if (File.Exists(filePreconfig)) { File.Copy(filePreconfig, file, true); return; } } using (var writer = new StreamWriter(file, false)) { writer.WriteLine("TIMEOUT 45"); writer.WriteLine("ABORT 'NO ANSWER'"); writer.WriteLine("ABORT 'BUSY'"); writer.WriteLine("ABORT 'NO CARRIER'"); writer.WriteLine("SAY 'Starting " + provider.ProviderName() + " GPRS connection\\n'"); writer.WriteLine("ABORT ERROR"); writer.WriteLine("'' 'ATZ'"); writer.WriteLine("OK 'ATE1'"); var addCmd = provider.AdditionalInitCommand(modelModem); if (!string.IsNullOrEmpty(addCmd)) { writer.WriteLine("OK '{0}'", addCmd); } writer.WriteLine("OK 'ATD{0}'", provider.CallNumber(tryIndex)); writer.WriteLine("CONNECT c"); } }
public static string LinuxBridgeFile(this GprsProvider self, bool fullPath) { if (fullPath) { return(LinuxBridgePath + self.LinuxName()); } return(self.LinuxName()); }
public static string LinuxScriptFile(this GprsProvider self, bool fullPath) { if (fullPath) { return("/etc/chatscript/" + self.LinuxName() + "-connect"); } return(self.LinuxName() + "-connect"); }
/// <summary> /// Настраиваем бридж cp /etc/ppp/peers/life /etc/ppp/peers/mts /// Открываем для редактирования nano -w /etc/ppp/peers/mts /// Меняем connect '/usr/sbin/chat -v -f /etc/chatscript/life-connect' на connect '/usr/sbin/chat -v -f /// /etc/chatscript/mts-connect' /// ( в начале открывшегося файла должен быть указан порт, по которому подключен модем скорее всего dev/ttyS0 ) /// но пишем весь файл /// </summary> public static void CreateBridgeFile(this GprsProvider provider, ModelModem modelModem, string ttyDevice, int speed) { var file = provider.LinuxBridgeFile(true); { var filePreconfig = file + '-' + modelModem.ShortName(); if (File.Exists(filePreconfig)) { File.Copy(filePreconfig, file, true); ShellConsole.WriteInfo("Modem.CreateBridgeFile: Copy {0} to {1}", filePreconfig, file); return; } } try { using (var writer = new StreamWriter(file, false)) { ShellConsole.WriteInfo("Modem.CreateBridgeFile: WriteFile {0}", file); writer.Write(ttyDevice); // tty device writer.Write(" "); writer.WriteLine(speed); // Serial port line speed var preconfig = ReadPreconfig(modelModem); writer.Write(preconfig); writer.WriteLine("connect '/usr/sbin/chat -e -v -f " + provider.LinuxScriptFile(true) + "'"); if (modelModem == ModelModem.Wavecom && preconfig.Contains("user ibox")) { try { using (var writer2 = new StreamWriter("/etc/ppp/pap-secrets", false)) { writer2.WriteLine("# Secrets for authentication using PAP"); writer2.WriteLine("# client server secret IP addresses"); writer2.WriteLine("ibox * 1 *"); } } catch (Exception ex) { ShellConsole.WriteInfo("Modem. CreateBridgeFile: WriterPapSecr: " + ex.Message); } } } } catch (Exception ex) { ShellConsole.WriteInfo("Modem. CreateBridgeFile: WriteFileError: " + ex.Message); } }
public static string CallNumber(this GprsProvider self, int tryIndex) { switch (self) { case GprsProvider.Undefined: return(string.Empty); case GprsProvider.Mts: return("*99#"); case GprsProvider.KyivStar: return((tryIndex & 1) == 0 ? "*99***1#" : "*99#"); case GprsProvider.Life: return((tryIndex & 1) == 0 ? "*99***1#" : "*99#"); case GprsProvider.Cdma: return("#777"); } throw new ArgumentOutOfRangeException("...добавь case..."); }
public static GprsProvider NextKnown(this GprsProvider self) { switch (self) { case GprsProvider.Undefined: return(GprsProvider.Mts); case GprsProvider.Mts: return(GprsProvider.KyivStar); case GprsProvider.KyivStar: return(GprsProvider.Life); case GprsProvider.Life: return(GprsProvider.Mts); // Cdma; case GprsProvider.Cdma: return(GprsProvider.Mts); } throw new ArgumentOutOfRangeException("...добавь case..."); }
public static string ProviderName(this GprsProvider self) { switch (self) { case GprsProvider.Undefined: return("Unknown"); case GprsProvider.Mts: return("MTS"); case GprsProvider.KyivStar: return("KyivStar"); case GprsProvider.Cdma: return("CDMA"); case GprsProvider.Life: return("Life"); //case GprsProvider.Ukrtelecom: return "Ukrtelecom"; } throw new ArgumentOutOfRangeException("...добавь case..."); }
public static string AdditionalInitCommand(this GprsProvider self, ModelModem eModelModem) { switch (eModelModem) { //case ModelModem.None: case ModelModem.Unknown: case ModelModem.SiemensMC35: case ModelModem.Cinterion: //DEVSPACE-3943 case ModelModem.PantechUM175: return(self.AdditionalInitCommand()); case ModelModem.Wavecom: return(string.Empty); case ModelModem.MU709: return(self.AdditionalInitCommand()); // TODO: выяснить при тестировании } throw new ArgumentOutOfRangeException("...добавь case..."); }
public static string AdditionalInitCommand(this GprsProvider self) { const string cnstInit = "AT+CGDCONT=1,\"IP\",\"ibox."; switch (self) { case GprsProvider.Undefined: return(string.Empty); case GprsProvider.Mts: return(cnstInit + "umc.ua\""); //"AT+CGDCONT=1,\"IP\",\"ibox.umc.ua\""; case GprsProvider.KyivStar: return(cnstInit + "kyivstar.net\""); //"AT +CGDCONT=1,ip,\"ibox.kyivstar.net\""; case GprsProvider.Life: return (cnstInit + "life.ua\""); //"AT +CGDCONT=1,ip,\"ibox.life.ua\""; // "AT+CGDCONT=1,ip,\"internet\""; // "AT+CGDCONT=1,ip,\"www.djuice.com.ua\""; case GprsProvider.Cdma: return("AT+CRM=1"); } throw new ArgumentOutOfRangeException("...добавь case..."); }
public static string LinuxLogFile(this GprsProvider self) { return("/var/log/" + self.LinuxName()); }
private static string LinuxName(this GprsProvider self) { return(ProviderName(self).Trim().Replace(' ', '_').ToLower()); }