// 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"); } }
/// <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); } }
private static string ReadPreconfig(ModelModem modem) { var file = LinuxBridgePath + "_" + modem.Description().Replace(" ", "") + ".cfg"; if (!File.Exists(file)) { using (var writer = new StreamWriter(file, false)) { writer.WriteLine("debug"); if (modem == ModelModem.SiemensMC35 || modem == ModelModem.Cinterion) //DEVSPACE-3943 { writer.WriteLine("noauth"); // TODO !!! login psw writer.WriteLine("defaultroute"); writer.WriteLine("usepeerdns"); // get DNS from the provider writer.WriteLine("persist"); writer.WriteLine("noipdefault"); writer.WriteLine("lock"); writer.WriteLine("modem"); writer.WriteLine("novjccomp"); writer.WriteLine("nopcomp"); writer.WriteLine("noaccomp"); writer.WriteLine("nodeflate"); writer.WriteLine("novj"); } else if (modem == ModelModem.Wavecom) { // http://diff.org.ua/archives/212 writer.WriteLine("nobsdcomp"); writer.WriteLine("nodeflate"); //writer.WriteLine("#demand"); writer.WriteLine("noauth"); writer.WriteLine("noipdefault"); writer.WriteLine("usepeerdns"); writer.WriteLine("defaultroute"); //writer.WriteLine("#nodetach"); writer.WriteLine("persist"); writer.WriteLine("novj"); writer.WriteLine("crtscts"); writer.WriteLine("modem"); writer.WriteLine("lock"); writer.WriteLine("user ibox"); } } } return(File.ReadAllText(file)); }
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 ShortName(this ModelModem self) { switch (self) { //case ModelModem.None: return "none"; case ModelModem.Unknown: return("Unknown"); case ModelModem.SiemensMC35: return("MC35"); case ModelModem.Wavecom: return("Wavecom"); case ModelModem.PantechUM175: return("PantechUM175"); case ModelModem.Cinterion: return("BGS2-E"); //DEVSPACE-3943 case ModelModem.Quectel: return("Quectel M95"); case ModelModem.TU32: return("Huawei TU32"); case ModelModem.MU709: return("iRZ"); } throw new ArgumentOutOfRangeException("...добавь case..."); }