Ejemplo n.º 1
0
 internal static void initialize_LIN_frames()
 {
     LIN.m_stopwatch = new Stopwatch();
     LIN.m_opmode    = LIN.OPMODE.LISTEN;
     LIN.m_working_frame.FrameInfo.FrameData = new byte[9];
     LIN.reset_working_frame();
     LIN.Reset_LIN_Frame_Buffers();
     LIN.m_FrameStartTimer = new Timer(new TimerCallback(LIN.frame_has_timed_out), null, -1, -1);
     LIN.m_working_frame.BuildState.we_have_transmitted           = false;
     LIN.m_working_frame.BuildState.transmit_data_byte_count_zero = false;
     LIN.m_working_frame_is_done      = new AutoResetEvent(false);
     LIN.m_slave_profile_id_read      = new AutoResetEvent(false);
     LIN.m_slave_profile_id.ByteCount = 0;
     LIN.m_slave_profile_id.FrameID   = 0;
     LIN.m_slave_profile_id.Data      = new byte[255];
 }
Ejemplo n.º 2
0
        private static void finish_this_frame()
        {
            LIN.m_we_are_finishing_a_frame = true;
            LIN.m_working_frame.BuildState.we_are_building_a_frame = false;
            LIN.m_FrameStartTimer.Change(-1, -1);
            bool flag = false;

            if (LIN.this_is_a_valid_frame())
            {
                if (LIN.m_next_frame_is_first_frame)
                {
                    LIN.m_working_frame.FrameInfo.time = 0.0;
                    LIN.m_next_frame_is_first_frame    = false;
                    flag = !USBRead.reset_timer_params();
                }
                if (LIN.m_working_frame.FrameInfo.baud != 0)
                {
                    LIN.m_working_frame.FrameInfo.baud = LIN.calculate_baud_rate(LIN.m_working_frame.FrameInfo.baud);
                }
                else
                {
                    LIN.m_working_frame.FrameInfo.baud = LIN.m_last_master_baud_rate;
                }
                LIN.m_OnReceive_error = 0;
                uint num = 0u;
                if (Status.There_Is_A_Status_Error(ref num))
                {
                    LIN.m_OnReceive_error = 4;
                    Device.Clear_Status_Errors();
                }
                if (LIN.m_OnReceive_error == 0 && LIN.m_working_frame.BuildState.we_had_a_status_error)
                {
                    LIN.m_OnReceive_error = 5;
                }
                else if (LIN.m_working_frame.BuildState.we_timed_out)
                {
                    LIN.m_OnReceive_error = 1;
                }
                else if (flag)
                {
                    LIN.m_OnReceive_error = 3;
                }
                else if (LIN.m_working_frame.BuildState.next_frame_header_received)
                {
                    LIN.m_OnReceive_error = 6;
                }
                if ((LIN.this_frame_is_different_than_last() && LIN.m_opmode == LIN.OPMODE.LISTEN) || LIN.m_opmode == LIN.OPMODE.DISPLAY_ALL)
                {
                    if (LIN.m_working_frame.BuildState.we_have_transmitted && LIN.m_working_frame.BuildState.transmit_data_byte_count_zero)
                    {
                        OnAnswer(LIN.m_working_frame.FrameInfo.FrameID, LIN.m_working_frame.FrameInfo.FrameData, LIN.m_working_frame.FrameInfo.bytecount, LIN.m_OnReceive_error, LIN.m_working_frame.FrameInfo.baud, LIN.m_working_frame.FrameInfo.time);
                    }
                    else if ((!LIN.m_working_frame.BuildState.we_have_transmitted || !LIN.m_working_frame.BuildState.transmit_data_byte_count_zero) && LIN.OnReceive != null)
                    {
                        if (LIN.m_OnReceive_error == 6)
                        {
                            LIN.m_OnReceive_error = 0;
                        }
                        OnReceive(LIN.m_working_frame.FrameInfo.FrameID, LIN.m_working_frame.FrameInfo.FrameData, LIN.m_working_frame.FrameInfo.bytecount, LIN.m_OnReceive_error, LIN.m_working_frame.FrameInfo.baud, LIN.m_working_frame.FrameInfo.time);
                    }
                }
                LIN.copy_this_frame_into_array();
            }
            LIN.reset_working_frame();
            LIN.m_working_frame_is_done.Set();
            LIN.m_we_are_finishing_a_frame = false;
        }