Exemplo n.º 1
0
 private static bool set_OnReceive_timeout_from_baud_rate()
 {
     byte[] array = new byte[65];
     if (Utilities.m_flags.HID_DeviceReady != false)            //(Utilities.m_flags.HID_read_handle != IntPtr.Zero)
     {
         Array.Clear(array, 0, array.Length);
         if (!Basic.Get_Status_Packet(ref array))
         {
             return(false);
         }
         int p_baud = (int)LIN.calculate_baud_rate((ushort)((int)array[50] + ((int)array[51] << 8)));
         LIN.calculate_new_baud_dependent_onreceive_timeout(p_baud);
     }
     return(true);
 }
Exemplo n.º 2
0
        private static void process_lin_data(ref bool p_error)
        {
            switch (m_raw_cbuf2_data_array[m_cb2_array_tag_index])
            {
            case 0x80:
                if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) < 2)
                {
                    m_we_need_next_packet_to_continue = true;
                    return;
                }
                m_cb2_array_tag_index += 2;
                return;

            case 0x81:
                if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) < 2)
                {
                    m_we_need_next_packet_to_continue = true;
                    return;
                }
                m_cb2_array_tag_index += 2;
                return;

            case 130:
                LIN.m_working_frame.BuildState.we_had_a_status_error = true;
                if (!LIN.m_working_frame.BuildState.we_timed_out)
                {
                    LIN.finalize_working_frame();
                    Device.Clear_Status_Errors();
                }
                if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) >= 2)
                {
                    m_cb2_array_tag_index += 2;
                    return;
                }
                m_we_need_next_packet_to_continue = true;
                return;

            case 0x83:
                if (!LIN.m_working_frame.BuildState.we_timed_out)
                {
                    if (LIN.m_working_frame.BuildState.we_are_building_a_frame)
                    {
                        LIN.m_working_frame.BuildState.next_frame_header_received = true;
                        LIN.finalize_working_frame();
                    }
                    LIN.m_working_frame.BuildState.we_are_building_a_frame = true;
                    m_grab_next_time_marker = true;
                    LIN.reset_LIN_timeout();
                }
                m_cb2_array_tag_index++;
                return;

            case 0x84:
                m_cb2_array_tag_index++;
                return;

            case 0x85:
                if (LIN.m_working_frame.BuildState.we_are_building_a_frame)
                {
                    LIN.m_working_frame.FrameInfo.baud = (ushort)(m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))] + (m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 2))] << 8));
                    if (LIN.m_use_baud_rate_timeout)
                    {
                        LIN.calculate_new_baud_dependent_onreceive_timeout(LIN.m_working_frame.FrameInfo.baud);
                    }
                }
                if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) >= 3)
                {
                    m_cb2_array_tag_index += 3;
                    return;
                }
                m_we_need_next_packet_to_continue = true;
                return;

            case 0x86:
                if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) < 2)
                {
                    m_we_need_next_packet_to_continue = true;
                    return;
                }
                m_cb2_array_tag_index += 2;
                return;

            case 0x87:
                if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) < 2)
                {
                    m_we_need_next_packet_to_continue = true;
                    return;
                }
                m_cb2_array_tag_index += 2;
                return;

            case 0x88:
                LIN.m_slave_profile_id.FrameID   = m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))];
                LIN.m_slave_profile_id.ByteCount = m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 2))];
                for (int i = 0; i < LIN.m_slave_profile_id.ByteCount; i++)
                {
                    LIN.m_slave_profile_id.Data[i] = m_raw_cbuf2_data_array[(int)((IntPtr)((m_cb2_array_tag_index + 3) + i))];
                }
                m_cb2_array_tag_index += (uint)(m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 2))] + 3);
                LIN.m_slave_profile_id_read.Set();
                return;
            }
            p_error = true;
        }