Esempio n. 1
0
        private ChannelInfo ReadChannel(SignalSource source, int index, int nameLength)
        {
            ChannelInfo ci = new ChannelInfo(source, index, 0, "");
              //ci.RecordIndex = svlMapping.GetWord("RecordId");
              ci.OldProgramNr = svlMapping.GetWord("ChannelId") >> 2;

              var nwMask = svlMapping.GetDword("NwMask");
              ci.Skip = (nwMask & svlMapping.Settings.GetInt("NwMask_Skip")) != 0;
              ci.Lock = (nwMask & svlMapping.Settings.GetInt("NwMask_Lock")) != 0;
              ci.Hidden = (nwMask & svlMapping.Settings.GetInt("NwMask_Hide")) != 0;
              for (int i = 0; i < 3; i++)
              {
            bool isFav = (nwMask & svlMapping.Settings.GetInt("NwMask_Fav" + (i + 1))) != 0;
            if (isFav)
              ci.Favorites |= (Favorites) (1 << i);
              }

              var fieldMask = svlMapping.GetDword("HashcodeFieldMask");

              if ((fieldMask & svlMapping.Settings.GetInt("HashcodeFieldMask_Name")) != 0)
              {
            ci.Name = svlMapping.GetString("Name", nameLength);
            int term = ci.Name.IndexOf('\0');
            if (term >= 0)
              ci.Name = ci.Name.Substring(0, term);
              }

              var serviceType = svlMapping.GetByte("ServiceType");
              if (serviceType == 1)
              {
            ci.SignalSource |= SignalSource.Tv;
            ci.ServiceTypeName = "TV";
              }
              else if (serviceType == 2)
              {
            ci.SignalSource |= SignalSource.Radio;
            ci.ServiceTypeName = "Radio";
              }
              else
              {
            ci.ServiceTypeName = "Data";
              }

              if ((fieldMask & svlMapping.Settings.GetInt("HashcodeFieldMask_TslRecId")) != 0)
              {
            int transpTableId = svlMapping.GetByte("TslTableId");
            int transpRecordId = svlMapping.GetByte("TslRecordId");
            var transpId = (transpTableId << 16) + transpRecordId;
            var transp = this.transponder.TryGet(transpId);
            if (transp != null)
            {
              ci.Transponder = transp;
              ci.FreqInMhz = transp.FrequencyInMhz;
              ci.SymbolRate = transp.SymbolRate;
            }
              }

              if ((fieldMask & svlMapping.Settings.GetInt("HashcodeFieldMask_BroadcastType")) != 0)
              {
            var bcastType = svlMapping.GetByte("BroadcastType");
            if (bcastType == 1)
              ReadAnalogData(ci);
            else if (bcastType == 2)
              ReadDvbData(ci);
              }

              ci.Encrypted = (fieldMask & svlMapping.Settings.GetInt("HashcodeFieldMask_Encrypted")) != 0;

              //ci.AddDebug("u1=");
              //ci.AddDebug(svlMapping.Data, svlMapping.BaseOffset + 2, 2);
              //ci.AddDebug("u2=");
              //ci.AddDebug(svlMapping.Data, svlMapping.BaseOffset + 4, 2);
              //ci.AddDebug(", hash=");
              //ci.AddDebug(svlMapping.Data, svlMapping.BaseOffset + 8, 2);
              //ci.AddDebug(", nw=");
              //ci.AddDebug(svlMapping.Data, svlMapping.BaseOffset + 12, 4);
              //ci.AddDebug(", o1=");
              //ci.AddDebug(svlMapping.Data, svlMapping.BaseOffset + 16, 4);
              ci.AddDebug(", o2=");
              ci.AddDebug(svlMapping.Data, svlMapping.BaseOffset + 20, 4);
              ci.AddDebug("progId=");
              ci.AddDebug(svlMapping.Data, svlMapping.BaseOffset + 24, 4);

              return ci;
        }