Exemplo n.º 1
0
        // 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");
            }
        }
Exemplo n.º 2
0
        /// <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);
            }
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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...");
        }
Exemplo n.º 5
0
        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...");
        }