/// <summary>
 /// Sends a Packet. This method blocks execution of the current thread until the packet transmission in complete.
 /// </summary>
 /// <param name="packet">The <see cref="TransmitPacket"/> to be transmitted.</param>
 /// <param name="timeout">The timeout value (in milliseconds) for the transmission operation to complete successfully.</param>
 /// <param name="dueTime"> The amount of time to delay before starting the transmission, in milliseconds.
 /// Specify zero (0) to start the timer immediately.
 /// </param>
 /// <returns>The operation result.</returns>
 public Status Transmit(TransmitPacket packet, TimeSpan timeout, TimeSpan dueTime)
 {
     lock (_syncLock)
     {
         if (_initialized)
         {
             return((Status)TransmitNative(packet, timeout, dueTime));
         }
         else
         {
             return(Status.ConfigurationError);
         }
     }
 }
 /// <summary>
 /// Sends a Packet with blocking call. This method blocks execution of the current thread until the packet transmission in complete.
 /// </summary>
 /// <param name="packet">The <see cref="TransmitPacket"/> to be transmitted.</param>
 /// <returns>The operation result.</returns>
 public Status Transmit(TransmitPacket packet)
 {
     lock (_syncLock)
     {
         if (_initialized)
         {
             return((Status)TransmitNative(packet, Timeout.InfiniteTimeSpan, TimeSpan.Zero));
         }
         else
         {
             return(Status.ConfigurationError);
         }
     }
 }
 private extern byte TransmitNative(TransmitPacket packet, TimeSpan timeout, TimeSpan dueTime);
 /// <summary>
 /// Sends a Packet. This method blocks execution of the current thread until the packet transmission in complete.
 /// </summary>
 /// <param name="packet">The <see cref="TransmitPacket"/> to be transmitted.</param>
 /// <param name="timeout">The timeout value for the transmission operation to complete successfully.</param>
 /// <param name="dueTime"> The amount of time to delay before starting the transmission.</param>
 /// <returns>The operation result.</returns>
 public Status Transmit(TransmitPacket packet, TimeSpan timeout)
 {
     return(Transmit(packet, timeout, TimeSpan.Zero));
 }