You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							428 lines
						
					
					
						
							19 KiB
						
					
					
				
			
		
		
	
	
							428 lines
						
					
					
						
							19 KiB
						
					
					
				| //
 | |
| // Copyright (c) 2015-2016 DashLogic, Inc.
 | |
| // All Rights Reserved.
 | |
| //
 | |
| // http://www.dashlogic.com
 | |
| // sales@dashlogic.com
 | |
| //
 | |
| // Redistribution and use in source and binary forms, with or without
 | |
| // modification, including use for commercial purposes, are permitted
 | |
| // provided that the following conditions are met:
 | |
| //
 | |
| // 1. Redistributions of source code must retain the above copyright
 | |
| //    notice, this list of conditions and the following disclaimer.
 | |
| //
 | |
| // 2. Redistributions in binary form must reproduce the above copyright
 | |
| //    notice, this list of conditions and the following disclaimer in
 | |
| //    the documentation and/or other materials provided with the
 | |
| //    distribution.
 | |
| //
 | |
| // 3. Neither the name of the copyright holder nor the names of its
 | |
| //    contributors may be used to endorse or promote products derived
 | |
| //    from this software without specific prior written permission.
 | |
| //
 | |
| // 4. Redistributions of any form whatsoever must retain the following
 | |
| //    acknowledgment: 'This product includes software developed by
 | |
| //    "DashLogic, Inc." (http://www.dashlogic.com/).'
 | |
| //
 | |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | |
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 | |
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | |
| // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | |
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 | |
| // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 | |
| // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 | |
| // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 | |
| // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | |
| // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| //
 | |
| 
 | |
| 
 | |
| //
 | |
| // Formatting:
 | |
| //  Indents:	Use tabs only (1 tab per indent)
 | |
| //	Tab Size:	4 spaces
 | |
| //
 | |
| // File Revision:
 | |
| // $Rev: 5216 $
 | |
| // $Date: 2016-03-15 09:32:34 -0600 (Tue, 15 Mar 2016) $
 | |
| //
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #ifdef PANDAJ2534DLL_EXPORTS
 | |
| #define PANDAJ2534DLL_API extern "C" __declspec(dllexport)
 | |
| #else
 | |
| #define PANDAJ2534DLL_API
 | |
| //__declspec(dllimport)
 | |
| #endif
 | |
| 
 | |
| //
 | |
| // Platform-specific Defines:
 | |
| //
 | |
| // PTAPI: Define this yourself if you want a specific calling
 | |
| //        convention or other modifiers on the Pass-Thru API
 | |
| //        functions. Typically, on Windows, PTAPI will be defined
 | |
| //        as WINAPI, which enables the __stdcall convention.
 | |
| //
 | |
| #define PTAPI			__stdcall	//WINAPI
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 ProtocolID Values
 | |
| //
 | |
| #define J1850VPW						0x01
 | |
| #define J1850PWM						0x02
 | |
| #define ISO9141							0x03
 | |
| #define ISO14230						0x04
 | |
| #define CAN								0x05
 | |
| #define ISO15765						0x06
 | |
| #define SCI_A_ENGINE					0x07
 | |
| #define SCI_A_TRANS						0x08
 | |
| #define SCI_B_ENGINE					0x09
 | |
| #define SCI_B_TRANS						0x0A
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-2 ProtocolID Values
 | |
| //
 | |
| #define J1850VPW_PS						0x00008000
 | |
| #define J1850PWM_PS						0x00008001
 | |
| #define ISO9141_PS						0x00008002
 | |
| #define ISO14230_PS						0x00008003
 | |
| #define CAN_PS							0x00008004
 | |
| #define ISO15765_PS						0x00008005
 | |
| #define J2610_PS						0x00008006
 | |
| #define SW_ISO15765_PS					0x00008007
 | |
| #define SW_CAN_PS						0x00008008
 | |
| #define GM_UART_PS						0x00008009
 | |
| #define CAN_CH1							0x00009000
 | |
| #define CAN_CH2							(CAN_CH1 + 1)
 | |
| #define CAN_CH128						(CAN_CH1 + 127)
 | |
| #define J1850VPW_CH1					0x00009080
 | |
| #define J1850VPW_CH2					(J1850VPW_CH1 + 1)
 | |
| #define J1850VPW_CH128					(J1850VPW_CH1 + 127)
 | |
| #define J1850PWM_CH1					0x00009160
 | |
| #define J1850PWM_CH2					(J1850PWM_CH1 + 1)
 | |
| #define J1850PWM_CH128					(J1850PWM_CH1 + 127)
 | |
| #define ISO9141_CH1						0x00009240
 | |
| #define ISO9141_CH2						(ISO9141_CH1 + 1)
 | |
| #define ISO9141_CH128					(ISO9141_CH1 + 127)
 | |
| #define ISO14230_CH1					0x00009320
 | |
| #define ISO14230_CH2					(ISO14230_CH1 + 1)
 | |
| #define ISO14230_CH128					(ISO14230_CH1 + 127)
 | |
| #define ISO15765_CH1					0x00009400
 | |
| #define ISO15765_CH2					(ISO15765_CH1 + 1)
 | |
| #define ISO15765_CH128					(ISO15765_CH1 + 127)
 | |
| #define SW_CAN_CAN_CH1					0x00009480
 | |
| #define SW_CAN_CAN_CH2					(SW_CAN_CAN_CH1 + 1)
 | |
| #define SW_CAN_CAN_CH128				(SW_CAN_CAN_CH1 + 127)
 | |
| #define SW_CAN_ISO15765_CH1				0x00009560
 | |
| #define SW_CAN_ISO15765_CH2				(SW_CAN_ISO15765_CH1 + 1)
 | |
| #define SW_CAN_ISO15765_CH128			(SW_CAN_ISO15765_CH1 + 127)
 | |
| #define J2610_CH1						0x00009640
 | |
| #define J2610_CH2						(J2610_CH1 + 1)
 | |
| #define J2610_CH128						(J2610_CH1 + 127)
 | |
| #define ANALOG_IN_CH1					0x0000C000
 | |
| #define ANALOG_IN_CH2					0x0000C001
 | |
| #define ANALOG_IN_CH32					0x0000C01F
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Error Values
 | |
| //
 | |
| #define STATUS_NOERROR					0x00	// Function call successful.
 | |
| #define ERR_NOT_SUPPORTED				0x01	// Device cannot support requested functionality mandated in J2534. Device is not fully SAE J2534 compliant.
 | |
| #define ERR_INVALID_CHANNEL_ID			0x02	// Invalid ChannelID value.
 | |
| #define ERR_INVALID_PROTOCOL_ID			0x03	// Invalid or unsupported ProtocolID, or there is a resource conflict (i.e. trying to connect to multiple mutually exclusive protocols such as J1850PWM and J1850VPW, or CAN and SCI, etc.).
 | |
| #define ERR_NULL_PARAMETER				0x04	// NULL pointer supplied where a valid pointer is required.
 | |
| #define ERR_INVALID_IOCTL_VALUE			0x05	// Invalid value for Ioctl parameter.
 | |
| #define ERR_INVALID_FLAGS				0x06	// Invalid flag values.
 | |
| #define ERR_FAILED						0x07	// Undefined error, use PassThruGetLastError() for text description.
 | |
| #define ERR_DEVICE_NOT_CONNECTED		0x08	// Unable to communicate with device.
 | |
| #define ERR_TIMEOUT						0x09	// Read or write timeout:
 | |
| 												// PassThruReadMsgs() - No message available to read or could not read the specified number of messages. The actual number of messages read is placed in <NumMsgs>.
 | |
| 												// PassThruWriteMsgs() - Device could not write the specified number of messages. The actual number of messages sent on the vehicle network is placed in <NumMsgs>.
 | |
| #define ERR_INVALID_MSG					0x0A	// Invalid message structure pointed to by pMsg.
 | |
| #define ERR_INVALID_TIME_INTERVAL		0x0B	// Invalid TimeInterval value.
 | |
| #define ERR_EXCEEDED_LIMIT				0x0C	// Exceeded maximum number of message IDs or allocated space.
 | |
| #define ERR_INVALID_MSG_ID				0x0D	// Invalid MsgID value.
 | |
| #define ERR_DEVICE_IN_USE				0x0E	// Device is currently open.
 | |
| #define ERR_INVALID_IOCTL_ID			0x0F	// Invalid IoctlID value.
 | |
| #define ERR_BUFFER_EMPTY				0x10	// Protocol message buffer empty, no messages available to read.
 | |
| #define ERR_BUFFER_FULL					0x11	// Protocol message buffer full. All the messages specified may not have been transmitted.
 | |
| #define ERR_BUFFER_OVERFLOW				0x12	// Indicates a buffer overflow occurred and messages were lost.
 | |
| #define ERR_PIN_INVALID					0x13	// Invalid pin number, pin number already in use, or voltage already applied to a different pin.
 | |
| #define ERR_CHANNEL_IN_USE				0x14	// Channel number is currently connected.
 | |
| #define ERR_MSG_PROTOCOL_ID				0x15	// Protocol type in the message does not match the protocol associated with the Channel ID
 | |
| #define ERR_INVALID_FILTER_ID			0x16	// Invalid Filter ID value.
 | |
| #define ERR_NO_FLOW_CONTROL				0x17	// No flow control filter set or matched (for ProtocolID ISO15765 only).
 | |
| #define ERR_NOT_UNIQUE					0x18	// A CAN ID in pPatternMsg or pFlowControlMsg matches either ID in an existing FLOW_CONTROL_FILTER
 | |
| #define ERR_INVALID_BAUDRATE			0x19	// The desired baud rate cannot be achieved within the tolerance specified in SAE J2534-1 Section 6.5
 | |
| #define ERR_INVALID_DEVICE_ID			0x1A	// Device ID invalid.
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Connect Flags
 | |
| //
 | |
| #define CAN_29BIT_ID						0x0100
 | |
| #define ISO9141_NO_CHECKSUM					0x0200
 | |
| #define CAN_ID_BOTH							0x0800
 | |
| #define ISO9141_K_LINE_ONLY					0x1000
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Filter Type Values
 | |
| //
 | |
| #define PASS_FILTER							0x00000001
 | |
| #define BLOCK_FILTER						0x00000002
 | |
| #define FLOW_CONTROL_FILTER					0x00000003
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Programming Voltage Pin Numbers
 | |
| //
 | |
| #define AUXILIARY_OUTPUT_PIN				0
 | |
| #define SAE_J1962_CONNECTOR_PIN_6			6
 | |
| #define SAE_J1962_CONNECTOR_PIN_9			9
 | |
| #define SAE_J1962_CONNECTOR_PIN_11			11
 | |
| #define SAE_J1962_CONNECTOR_PIN_12			12
 | |
| #define SAE_J1962_CONNECTOR_PIN_13			13
 | |
| #define SAE_J1962_CONNECTOR_PIN_14			14
 | |
| #define SAE_J1962_CONNECTOR_PIN_15			15        // Short to ground only
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Programming Voltage Values
 | |
| //
 | |
| #define SHORT_TO_GROUND						0xFFFFFFFE
 | |
| #define VOLTAGE_OFF							0xFFFFFFFF
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 API Version Values
 | |
| //
 | |
| #define J2534_APIVER_FEBRUARY_2002		"02.02"
 | |
| #define J2534_APIVER_NOVEMBER_2004		"04.04"
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 IOCTL ID Values
 | |
| //
 | |
| #define GET_CONFIG								0x01	// pInput = SCONFIG_LIST, pOutput = NULL
 | |
| #define SET_CONFIG								0x02	// pInput = SCONFIG_LIST, pOutput = NULL
 | |
| #define READ_VBATT								0x03	// pInput = NULL, pOutput = unsigned long
 | |
| #define FIVE_BAUD_INIT							0x04	// pInput = SBYTE_ARRAY, pOutput = SBYTE_ARRAY
 | |
| #define FAST_INIT								0x05	// pInput = PASSTHRU_MSG, pOutput = PASSTHRU_MSG
 | |
| #define CLEAR_TX_BUFFER							0x07	// pInput = NULL, pOutput = NULL
 | |
| #define CLEAR_RX_BUFFER							0x08	// pInput = NULL, pOutput = NULL
 | |
| #define CLEAR_PERIODIC_MSGS						0x09	// pInput = NULL, pOutput = NULL
 | |
| #define CLEAR_MSG_FILTERS						0x0A	// pInput = NULL, pOutput = NULL
 | |
| #define CLEAR_FUNCT_MSG_LOOKUP_TABLE			0x0B	// pInput = NULL, pOutput = NULL
 | |
| #define ADD_TO_FUNCT_MSG_LOOKUP_TABLE			0x0C	// pInput = SBYTE_ARRAY, pOutput = NULL
 | |
| #define DELETE_FROM_FUNCT_MSG_LOOKUP_TABLE		0x0D	// pInput = SBYTE_ARRAY, pOutput = NULL
 | |
| #define READ_PROG_VOLTAGE						0x0E	// pInput = NULL, pOutput = unsigned long
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-2 IOCTL ID Values
 | |
| //
 | |
| #define SW_CAN_HS								0x00008000	// pInput = NULL, pOutput = NULL
 | |
| #define SW_CAN_NS								0x00008001	// pInput = NULL, pOutput = NULL
 | |
| #define SET_POLL_RESPONSE						0x00008002	// pInput = SBYTE_ARRAY, pOutput = NULL
 | |
| #define BECOME_MASTER							0x00008003	// pInput = unsigned char, pOutput = NULL
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Configuration Parameter Values
 | |
| // Default value is enclosed in square brackets "[" and "]"
 | |
| //
 | |
| #define DATA_RATE				0x01	// 5-500000
 | |
| #define LOOPBACK				0x03	// 0 (OFF), 1 (ON) [0]
 | |
| #define NODE_ADDRESS			0x04	// J1850PWM: 0x00-0xFF
 | |
| #define NETWORK_LINE			0x05	// J1850PWM: 0 (BUS_NORMAL), 1 (BUS_PLUS), 2 (BUS_MINUS) [0]
 | |
| #define P1_MIN					0x06	// ISO9141 or ISO14230: Not used by interface
 | |
| #define P1_MAX					0x07	// ISO9141 or ISO14230: 0x1-0xFFFF (.5 ms per bit) [40 (20ms)]
 | |
| #define P2_MIN					0x08	// ISO9141 or ISO14230: Not used by interface
 | |
| #define P2_MAX					0x09	// ISO9141 or ISO14230: Not used by interface
 | |
| #define P3_MIN					0x0A	// ISO9141 or ISO14230: 0x0-0xFFFF (.5 ms per bit) [110 (55ms)]
 | |
| #define P3_MAX					0x0B	// ISO9141 or ISO14230: Not used by interface
 | |
| #define P4_MIN					0x0C	// ISO9141 or ISO14230: 0x0-0xFFFF (.5 ms per bit) [10 (5ms)]
 | |
| #define P4_MAX					0x0D	// ISO9141 or ISO14230: Not used by interface
 | |
| #define W0						0x19	// ISO9141: 0x0-0xFFFF (1 ms per bit) [300]
 | |
| #define W1						0x0E	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [300]
 | |
| #define W2						0x0F	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [20]
 | |
| #define W3						0x10	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [20]
 | |
| #define W4						0x11	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [50]
 | |
| #define W5						0x12	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [300]
 | |
| #define TIDLE					0x13	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [300]
 | |
| #define TINIL					0x14	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [25]
 | |
| #define TWUP					0x15	// ISO9141 or ISO14230: 0x0-0xFFFF (1 ms per bit) [50]
 | |
| #define PARITY					0x16	// ISO9141 or ISO14230: 0 (NO_PARITY), 1 (ODD_PARITY), 2 (EVEN_PARITY) [0]
 | |
| #define BIT_SAMPLE_POINT		0x17	// CAN: 0-100 (1% per bit) [80]
 | |
| #define SYNC_JUMP_WIDTH			0x18	// CAN: 0-100 (1% per bit) [15]
 | |
| #define T1_MAX					0x1A	// SCI: 0x0-0xFFFF (1 ms per bit) [20]
 | |
| #define T2_MAX					0x1B	// SCI: 0x0-0xFFFF (1 ms per bit) [100]
 | |
| #define T3_MAX					0x24	// SCI: 0x0-0xFFFF (1 ms per bit) [50]
 | |
| #define T4_MAX					0x1C	// SCI: 0x0-0xFFFF (1 ms per bit) [20]
 | |
| #define T5_MAX					0x1D	// SCI: 0x0-0xFFFF (1 ms per bit) [100]
 | |
| #define ISO15765_BS				0x1E	// ISO15765: 0x0-0xFF [0]
 | |
| #define ISO15765_STMIN			0x1F	// ISO15765: 0x0-0xFF [0]
 | |
| #define ISO15765_BS_TX			0x22	// ISO15765: 0x0-0xFF,0xFFFF [0xFFFF]
 | |
| #define ISO15765_STMIN_TX		0x23	// ISO15765: 0x0-0xFF,0xFFFF [0xFFFF]
 | |
| #define DATA_BITS				0x20	// ISO9141 or ISO14230: 0 (8 data bits), 1 (7 data bits) [0]
 | |
| #define FIVE_BAUD_MOD			0x21	// ISO9141 or ISO14230: 0 (ISO 9141-2/14230-4), 1 (Inv KB2), 2 (Inv Addr), 3 (ISO 9141) [0]
 | |
| #define ISO15765_WFT_MAX		0x25	// ISO15765: 0x0-0xFF [0]
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-2 Configuration Parameter Values
 | |
| // Default value is enclosed in square brackets "[" and "]"
 | |
| //
 | |
| #define CAN_MIXED_FORMAT				0x00008000	// See #defines below. [0]
 | |
| #define J1962_PINS						0x00008001	// 0xPPSS PP: 0x00-0x10 SS: 0x00-0x10 PP!=SS, except 0x0000. Exclude pins 4, 5, and 16. [0]
 | |
| #define SW_CAN_HS_DATA_RATE				0x00008010	// SWCAN: 5-500000 [83333]
 | |
| #define SW_CAN_SPEEDCHANGE_ENABLE		0x00008011	// SWCAN: 0 (DISABLE_SPDCHANGE), 1 (ENABLE_SPDCHANGE) [0]
 | |
| #define SW_CAN_RES_SWITCH				0x00008012	// SWCAN: 0 (DISCONNECT_RESISTOR), 1 (CONNECT_RESISTOR), 2 (AUTO_ RESISTOR) [0]
 | |
| #define ACTIVE_CHANNELS					0x00008020	// ANALOG: 0-0xFFFFFFFF
 | |
| #define SAMPLE_RATE						0x00008021	// ANALOG: 0-0xFFFFFFFF [0] (high bit changes meaning from samples/sec to seconds/sample)
 | |
| #define SAMPLES_PER_READING				0x00008022	// ANALOG: 1-0xFFFFFFFF [1]
 | |
| #define READINGS_PER_MSG				0x00008023	// ANALOG: 1-0x00000408 (1 - 1032) [1]
 | |
| #define AVERAGING_METHOD				0x00008024	// ANALOG: 0-0xFFFFFFFF [0]
 | |
| #define SAMPLE_RESOLUTION				0x00008025	// ANALOG READ-ONLY: 0x1-0x20 (1 - 32)
 | |
| #define INPUT_RANGE_LOW					0x00008026	// ANALOG READ-ONLY: 0x80000000-0x7FFFFFFF (-2147483648-2147483647)
 | |
| #define INPUT_RANGE_HIGH				0x00008027	// ANALOG READ-ONLY: 0x80000000-0x7FFFFFFF (-2147483648-2147483647)
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-2 Mixed-Mode/Format CAN Definitions
 | |
| //
 | |
| #define CAN_MIXED_FORMAT_OFF			0	// Messages will be treated as ISO 15765 ONLY.
 | |
| #define CAN_MIXED_FORMAT_ON				1	// Messages will be treated as either ISO 15765 or an unformatted CAN frame.
 | |
| #define CAN_MIXED_FORMAT_ALL_FRAMES		2	// Messages will be treated as ISO 15765, an unformatted CAN frame, or both.
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-2 Analog Channel Averaging Method Definitions
 | |
| //
 | |
| #define SIMPLE_AVERAGE			0x00000000        // Simple arithmetic mean
 | |
| #define MAX_LIMIT_AVERAGE		0x00000001        // Choose the biggest value
 | |
| #define MIN_LIMIT_AVERAGE		0x00000002        // Choose the lowest value
 | |
| #define MEDIAN_AVERAGE			0x00000003        // Choose arithmetic median
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 RxStatus Definitions
 | |
| //
 | |
| #define TX_MSG_TYPE					0x0001
 | |
| #define START_OF_MESSAGE			0x0002
 | |
| #define RX_BREAK					0x0004
 | |
| #define TX_INDICATION				0x0008
 | |
| #define ISO15765_PADDING_ERROR		0x0010
 | |
| #define ISO15765_ADDR_TYPE			0x0080
 | |
| //#define CAN_29BIT_ID				0x0100		// Defined above
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-2 RxStatus Definitions
 | |
| //
 | |
| #define SW_CAN_HV_RX				0x00010000	// SWCAN Channels Only
 | |
| #define SW_CAN_HS_RX				0x00020000	// SWCAN Channels Only
 | |
| #define SW_CAN_NS_RX				0x00040000	// SWCAN Channels Only
 | |
| #define OVERFLOW_					0x00010000	// Analog Input Channels Only
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 TxFlags Definitions
 | |
| //
 | |
| #define ISO15765_FRAME_PAD			0x0040
 | |
| //#define ISO15765_ADDR_TYPE		0x0080		// Defined above
 | |
| //#define CAN_29BIT_ID				0x0100		// Defined above
 | |
| #define WAIT_P3_MIN_ONLY			0x0200
 | |
| #define SCI_MODE					0x400000
 | |
| #define SCI_TX_VOLTAGE				0x800000
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-2 TxFlags Definitions
 | |
| //
 | |
| #define SW_CAN_HV_TX				0x00000400
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Structure Definitions
 | |
| //
 | |
| typedef struct
 | |
| {
 | |
| 	unsigned long	Parameter;	// Name of parameter
 | |
| 	unsigned long	Value;		// Value of the parameter
 | |
| } SCONFIG;
 | |
| 
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
| 	unsigned long	NumOfParams;	// Number of SCONFIG elements
 | |
| 	SCONFIG*		ConfigPtr;		// Array of SCONFIG
 | |
| } SCONFIG_LIST;
 | |
| 
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
| 	unsigned long	NumOfBytes;		// Number of bytes in the array
 | |
| 	unsigned char*	BytePtr;		// Array of bytes
 | |
| } SBYTE_ARRAY;
 | |
| 
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
| 	unsigned long	ProtocolID;
 | |
| 	unsigned long	RxStatus;
 | |
| 	unsigned long	TxFlags;
 | |
| 	unsigned long	Timestamp;
 | |
| 	unsigned long	DataSize;
 | |
| 	unsigned long	ExtraDataIndex;
 | |
| 	unsigned char	Data[4128];
 | |
| } PASSTHRU_MSG;
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Function Prototypes
 | |
| //
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruOpen(void *pName, unsigned long *pDeviceID);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruClose(unsigned long DeviceID);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruConnect(unsigned long DeviceID, unsigned long ProtocolID, unsigned long Flags, unsigned long BaudRate, unsigned long *pChannelID);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruDisconnect(unsigned long ChannelID);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruReadMsgs(unsigned long ChannelID, PASSTHRU_MSG *pMsg, unsigned long *pNumMsgs, unsigned long Timeout);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruWriteMsgs(unsigned long ChannelID, PASSTHRU_MSG *pMsg, unsigned long *pNumMsgs, unsigned long Timeout);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruStartPeriodicMsg(unsigned long ChannelID, PASSTHRU_MSG *pMsg, unsigned long *pMsgID, unsigned long TimeInterval);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruStopPeriodicMsg(unsigned long ChannelID, unsigned long MsgID);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruStartMsgFilter(unsigned long ChannelID, unsigned long FilterType, PASSTHRU_MSG *pMaskMsg, PASSTHRU_MSG *pPatternMsg, PASSTHRU_MSG *pFlowControlMsg, unsigned long *pFilterID);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruStopMsgFilter(unsigned long ChannelID, unsigned long FilterID);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruSetProgrammingVoltage(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruReadVersion(unsigned long DeviceID, char *pFirmwareVersion, char *pDllVersion, char *pApiVersion);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruGetLastError(char *pErrorDescription);
 | |
| PANDAJ2534DLL_API long PTAPI	PassThruIoctl(unsigned long ChannelID, unsigned long IoctlID, void *pInput, void *pOutput);
 | |
| 
 | |
| 
 | |
| //
 | |
| // J2534-1 v04.04 Function Typedefs
 | |
| // These function typedefs allow simpler use of the J2534 API by
 | |
| // allowing you to do things like this:
 | |
| // PTCONNECT	pPassThruConnectFunc = GetProcAddress(hModule, "PassThruConnect");
 | |
| // if (pPassThruConnectFunc == NULL)
 | |
| //     return FALSE;
 | |
| // pPassThruConnectFunc(DeviceID, CAN, CAN_29BIT_ID, 500000, &ChannelID);
 | |
| //
 | |
| typedef long	(PTAPI *PTOPEN)(void *pName, unsigned long *pDeviceID);
 | |
| typedef long	(PTAPI *PTCLOSE)(unsigned long DeviceID);
 | |
| typedef long	(PTAPI *PTCONNECT)(unsigned long DeviceID, unsigned long ProtocolID, unsigned long Flags, unsigned long BaudRate, unsigned long *pChannelID);
 | |
| typedef long	(PTAPI *PTDISCONNECT)(unsigned long ChannelID);
 | |
| typedef long	(PTAPI *PTREADMSGS)(unsigned long ChannelID, PASSTHRU_MSG *pMsg, unsigned long *pNumMsgs, unsigned long Timeout);
 | |
| typedef long	(PTAPI *PTWRITEMSGS)(unsigned long ChannelID, PASSTHRU_MSG *pMsg, unsigned long *pNumMsgs, unsigned long Timeout);
 | |
| typedef long	(PTAPI *PTSTARTPERIODICMSG)(unsigned long ChannelID, PASSTHRU_MSG *pMsg, unsigned long *pMsgID, unsigned long TimeInterval);
 | |
| typedef long	(PTAPI *PTSTOPPERIODICMSG)(unsigned long ChannelID, unsigned long MsgID);
 | |
| typedef long	(PTAPI *PTSTARTMSGFILTER)(unsigned long ChannelID, unsigned long FilterType, PASSTHRU_MSG *pMaskMsg, PASSTHRU_MSG *pPatternMsg, PASSTHRU_MSG *pFlowControlMsg, unsigned long *pFilterID);
 | |
| typedef long	(PTAPI *PTSTOPMSGFILTER)(unsigned long ChannelID, unsigned long FilterID);
 | |
| typedef long	(PTAPI *PTSETPROGRAMMINGVOLTAGE)(unsigned long DeviceID, unsigned long PinNumber, unsigned long Voltage);
 | |
| typedef long	(PTAPI *PTREADVERSION)(unsigned long DeviceID, char *pFirmwareVersion, char *pDllVersion, char *pApiVersion);
 | |
| typedef long	(PTAPI *PTGETLASTERROR)(char *pErrorDescription);
 | |
| typedef long	(PTAPI *PTIOCTL)(unsigned long ChannelID, unsigned long IoctlID, void *pInput, void *pOutput);
 | |
| 
 |