Exemplo n.º 1
0
        private void InsertChannelLinkedList(DbCommand cmd, int listId)
        {
            cmd.Parameters.Clear();
            cmd.CommandText = "insert into chanseq(listid,seq,slot) values (" + listId + ",@seq,@slot)";
            var pSeq = cmd.CreateParameter();

            pSeq.ParameterName = "@seq";
            pSeq.DbType        = DbType.Int32;
            cmd.Parameters.Add(pSeq);
            var pSlot = cmd.CreateParameter();

            pSlot.ParameterName = "@slot";
            pSlot.DbType        = DbType.Int32;
            cmd.Parameters.Add(pSlot);

            SatChannelListHeader header = new SatChannelListHeader(this.fileContent,
                                                                   this.dvbsBlockOffset + this.satConfig.ChannelListHeaderOffset);
            int seq              = 0;
            int tableIndex       = header.LinkedListStartIndex;
            int linkedListOffset = this.satConfig.SequenceTableOffset;

            while (tableIndex != 0xFFFF)
            {
                int entryOffset = linkedListOffset + tableIndex * satConfig.sizeOfChannelLinkedListEntry;
                pSeq.Value = seq;
                if (BitConverter.ToInt16(this.fileContent, entryOffset + 4) != tableIndex)
                {
                    break;
                }
                pSlot.Value = tableIndex;
                cmd.ExecuteNonQuery();

                tableIndex = BitConverter.ToInt16(this.fileContent, entryOffset + 2);
                ++seq;
            }
        }
Exemplo n.º 2
0
        private void UpdateChannelLinkedList(int counter)
        {
            var header = new SatChannelListHeader(this.fileContent, this.dvbsBlockOffset + satConfig.ChannelListHeaderOffset);
              header.ChannelCount = counter;
              header.LinkedListStartIndex = 0;
              if (counter == 0)
            counter = 1;
              header.LinkedListEndIndex1 = counter - 1;
              header.LinkedListEndIndex2 = counter - 1;

              // update linked list
              var off = this.dvbsBlockOffset + satConfig.SequenceTableOffset;
              for (int i = 0; i < counter; i++)
              {
            Tools.SetInt16(this.fileContent, off + 0, i - 1);
            Tools.SetInt16(this.fileContent, off + 2, i + 1);
            Tools.SetInt16(this.fileContent, off + 4, i);
            off += satConfig.sizeOfChannelLinkedListEntry;
              }
              Tools.SetInt16(this.fileContent, off - satConfig.sizeOfChannelLinkedListEntry + 2, 0xFFFF);
              Tools.MemSet(fileContent, off, 0, (satConfig.dvbsMaxChannelCount - counter) * satConfig.sizeOfChannelLinkedListEntry);
        }
Exemplo n.º 3
0
        private void ReadDvbsSubblocks(ref int off)
        {
            this.DataRoot.AddChannelList(satTvChannels);
              this.DataRoot.AddChannelList(satRadioChannels);

              this.VerifyDvbsSubblockChecksums(off);

              // subblock 1 (DVBS header)
              off += 16;

              // subblock 2 (satellites)
              off += 84; // irrelevant data
              this.ReadSatellites(ref off);

              // subblock 3 (transponder)
              off += satConfig.sizeOfTransponderBlockHeader;
              this.ReadTransponderData(ref off);

              // subblock 4 (channels)
              SatChannelListHeader header = new SatChannelListHeader(fileContent, off);
              this.dvbsChannelCount = header.ChannelCount;
              off += header.Size;
              off += satConfig.dvbsMaxChannelCount/8; // skip allocation bitmap
              this.ReadDvbsChannelLinkedList(header, ref off);
              off += satConfig.linkedListExtraDataLength;
              this.ReadDvbsChannels(ref off, header.LinkedListStartIndex);

              // subblock 5 (satellite/LNB config)
              this.ReadLnbConfig(ref off);
        }
Exemplo n.º 4
0
 private void ReadDvbsChannelLinkedList(SatChannelListHeader header, ref int off)
 {
     this.nextChannelIndex = new Dictionary<int, ushort>();
       int index = header.LinkedListStartIndex;
       while (index != 0xFFFF)
       {
     int offEntry = off + index*satConfig.sizeOfChannelLinkedListEntry;
     ushort nextIndex = BitConverter.ToUInt16(fileContent, offEntry + 2);
     if (this.nextChannelIndex.ContainsKey(index)) // prevent infinite loop (exists in some test files)
       break;
     this.nextChannelIndex.Add(index, nextIndex);
     index = nextIndex;
       }
       off += satConfig.dvbsMaxChannelCount*satConfig.sizeOfChannelLinkedListEntry;
 }
Exemplo n.º 5
0
    private void InsertChannelLinkedList(DbCommand cmd, int listId)
    {
      cmd.Parameters.Clear();
      cmd.CommandText = "insert into chanseq(listid,seq,slot) values (" + listId + ",@seq,@slot)";
      var pSeq = cmd.CreateParameter();
      pSeq.ParameterName = "@seq";
      pSeq.DbType = DbType.Int32;
      cmd.Parameters.Add(pSeq);
      var pSlot = cmd.CreateParameter();
      pSlot.ParameterName = "@slot";
      pSlot.DbType = DbType.Int32;
      cmd.Parameters.Add(pSlot);

      SatChannelListHeader header = new SatChannelListHeader(this.fileContent,
                                                             this.dvbsBlockOffset + this.satConfig.ChannelListHeaderOffset);
      int seq = 0;
      int tableIndex = header.LinkedListStartIndex;
      int linkedListOffset = this.satConfig.SequenceTableOffset;
      while (tableIndex != 0xFFFF)
      {
        int entryOffset = linkedListOffset + tableIndex * satConfig.sizeOfChannelLinkedListEntry;
        pSeq.Value = seq;
        if (BitConverter.ToInt16(this.fileContent, entryOffset + 4) != tableIndex)
          break;
        pSlot.Value = tableIndex;
        cmd.ExecuteNonQuery();

        tableIndex = BitConverter.ToInt16(this.fileContent, entryOffset + 2);
        ++seq;
      }
    }