public static bool Transaction_Is_Complete() { bool result = false; if (USBWrite.We_Are_Done_Writing_Data() && !USBRead.m_read_thread_is_processing_a_USB_packet && USBWrite.Update_Status_Packet()) { Utilities.m_flags.g_status_packet_mutex.WaitOne(); if ((Constants.STATUS_PACKET_DATA[37] & 1) == 0 && Constants.STATUS_PACKET_DATA[55] == 0) { result = true; } Utilities.m_flags.g_status_packet_mutex.ReleaseMutex(); } return(result); }