/// <summary>
        /// Initializes a new instance of the <see cref="T:GSMCommunication.PDUDecoder.RelativeValidityPeriod" />.
        /// </summary>
        /// <param name="period">The validity period.</param>
        /// <remarks>
        /// There are some rules to note:
        /// <list type="bullet">
        /// <item><description>
        /// The smallest validity period is 5 minutes, 63 weeks the largest.
        /// </description></item>
        /// <item><description>
        /// Periods between 5 minutes and 12 hours can be specified in 5 minute steps.
        /// </description></item>
        /// <item><description>
        /// Periods between 12h30min and 24 hours can be specified in 30 minute steps.
        /// </description></item>
        /// <item><description>
        /// Periods between two days and 30 days can be specified in 1 day steps.
        /// </description></item>
        /// <item><description>
        /// Periods between 5 weeks and 63 weeks can be specified in 1 week (=7 days) steps.
        /// </description></item>
        /// </list>
        /// </remarks>
        /// <exception cref="T:System.ArgumentException">Validity timespan is invalid.</exception>
        public RelativeValidityPeriod(TimeSpan period)
        {
            byte num = 0;

            while (num <= 255)
            {
                TimeSpan timeSpan = RelativeValidityPeriod.ToTimeSpan(num);
                if (timeSpan.CompareTo(period) != 0)
                {
                    num = (byte)(num + 1);
                }
                else
                {
                    this.@value = num;
                    return;
                }
            }
            throw new ArgumentException("Invalid validity timespan.");
        }
 /// <summary>
 /// Returns the TimeSpan equivalent of this instance.
 /// </summary>
 /// <returns>The TimeSpan value.</returns>
 public TimeSpan ToTimeSpan()
 {
     return(RelativeValidityPeriod.ToTimeSpan(this.@value));
 }