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); }
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; }