Exemplo n.º 1
0
        private bool SetConnectID(ushort interrupt_id)
        {
            bool result = false;

            for (int i = 0; i < FreeConnNumberTable.Count; i++)
            {
                int    key   = FreeConnNumberTable.Keys[i];
                ushort value = FreeConnNumberTable[key];
                if (interrupt_id >= key && interrupt_id <= value)
                {
                    FreeConnNumberTable.Remove(key);
                    if (interrupt_id - 1 >= key)
                    {
                        FreeConnNumberTable.Add(key, (ushort)(interrupt_id - 1));
                    }
                    if (interrupt_id + 1 <= value)
                    {
                        FreeConnNumberTable.Add((ushort)(interrupt_id + 1), value);
                    }
                    result = true;
                    break;
                }
                else if (interrupt_id < key)
                {
                    break;
                }
            }
            return(result);
        }
Exemplo n.º 2
0
        private int GetConnectID()
        {
            int result = -1;

            if (0 < FreeConnNumberTable.Count)
            {
                int    key   = FreeConnNumberTable.Keys[0];
                ushort value = FreeConnNumberTable[key];
                FreeConnNumberTable.Remove(key);
                result = key;
                key++;
                if (key <= value)
                {
                    FreeConnNumberTable.Add(key, value);
                }
            }

            return(result);
        }
Exemplo n.º 3
0
 private void FreeConnectID(ushort interrupt_id)
 {
     if (!FreeConnNumberTable.ContainsKey(interrupt_id))
     {
         FreeConnNumberTable.Add(interrupt_id, interrupt_id);
         for (int i = 0; i < FreeConnNumberTable.Count - 1; i++)
         {
             int    key   = FreeConnNumberTable.Keys[i];
             ushort value = FreeConnNumberTable.Values[i];
             if (value + 1 == FreeConnNumberTable.Keys[i + 1])
             {
                 value = FreeConnNumberTable.Values[i + 1];
                 int k2 = FreeConnNumberTable.Keys[i + 1];
                 FreeConnNumberTable.Remove(key);
                 FreeConnNumberTable.Remove(k2);
                 FreeConnNumberTable.Add(key, value);
                 break;
             }
         }
     }
 }