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; }
private static void process_common_data(ref bool p_error) { switch (m_raw_cbuf2_data_array[m_cb2_array_tag_index]) { case 0x10: case 0x12: case 0x1a: case 0x1c: if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) < 2) { m_we_need_next_packet_to_continue = true; return; } switch (m_raw_cbuf2_data_array[m_cb2_array_tag_index]) { case 0x10: add_data_to_cbuf2_data_array(ref m_raw_cbuf2_data_array, m_cb2_array_tag_index + 1, 1); if (((Utilities.g_comm_mode == Utilities.COMM_MODE.LIN) && !LIN.m_working_frame.BuildState.we_timed_out) && LIN.m_working_frame.BuildState.we_are_building_a_frame) { if (!LIN.m_working_frame.BuildState.we_have_an_id) { LIN.m_working_frame.FrameInfo.FrameID = m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))]; LIN.m_working_frame.BuildState.we_have_an_id = true; } else { if (LIN.m_working_frame.FrameInfo.bytecount < 9) { byte num4; LIN.m_working_frame.FrameInfo.bytecount = (byte)((num4 = LIN.m_working_frame.FrameInfo.bytecount) + 1); LIN.m_working_frame.FrameInfo.FrameData[num4] = m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))]; } if (LIN.m_working_frame.FrameInfo.bytecount == 9) { LIN.finalize_working_frame(); } } } goto Label_01C3; case 0x1c: if (m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))] == 0x77) { Utilities.m_flags.g_PKSA_has_completed_script.Set(); } goto Label_01C3; } break; case 0x11: if (((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) - 2) < m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))]) { m_we_need_next_packet_to_continue = true; return; } add_data_to_cbuf2_data_array(ref m_raw_cbuf2_data_array, m_cb2_array_tag_index + 2, m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))]); m_cb2_array_tag_index += (uint)(2 + m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))]); return; case 0x13: if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) < 3) { m_we_need_next_packet_to_continue = true; return; } if (((Utilities.g_comm_mode == Utilities.COMM_MODE.LIN) && LIN.m_working_frame.BuildState.we_are_building_a_frame) && m_grab_next_time_marker) { double num = ((m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 2))] << 8) + m_raw_cbuf2_data_array[(int)((IntPtr)(m_cb2_array_tag_index + 1))]) * m_EVENT_TIME_CONSTANT; m_RUNNING_TIME = m_EVENT_TIME_ROLLOVER + num; LIN.m_working_frame.FrameInfo.time = m_RUNNING_TIME; m_grab_next_time_marker = false; } m_cb2_array_tag_index += 3; return; case 20: m_EVENT_TIME_ROLLOVER += m_EVENT_TIME_ROLLOVER_CONSTANT; m_cb2_array_tag_index++; return; case 0x15: if ((m_raw_cbuf2_data_array_index - m_cb2_array_tag_index) < 3) { m_we_need_next_packet_to_continue = true; return; } m_cb2_array_tag_index += 3; return; case 0x16: m_cb2_array_tag_index++; return; case 0x17: m_cb2_array_tag_index++; return; case 0x18: m_cb2_array_tag_index++; return; case 0x19: m_cb2_array_tag_index++; return; case 0x1b: m_cb2_array_tag_index++; return; default: p_error = true; return; } Label_01C3: m_cb2_array_tag_index += 2; }