⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scantool.h

📁 Freediag contains various drivers (ISO9141, ISO14230, SAEJ1850-VPW, SAEJ1850-PWM) for different adap
💻 H
字号:
/* *	freediag - Vehicle Diagnostic Utility * * CVSID $Id: scantool.h,v 1.10 2002/09/11 19:59:02 rpalmeida Exp $ * * Copyright (C) 2001 Richard Almeida & Ibex Ltd (rpa@ibex.co.uk) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * ************************************************************************* * * * J1978 Scan tool */#include <stdlib.h>#include <stdio.h>#include <fcntl.h>#include <string.h>#include <errno.h>#include "diag.h"#include "diag_l1.h"#include "diag_l2.h"#include "diag_l3.h"#include "diag_iso14230.h"#include "diag_err.h"#include "diag_general.h"extern int diag_l0_debug;extern int diag_l1_debug;extern int diag_l2_debug;extern int diag_l3_debug;extern int diag_cmd_debug;extern char *progname;/* Structure to hold responses */typedef struct response{	u_int8_t	type;	u_int8_t	len;	u_int8_t	data[7];} response_t;#define TYPE_UNTESTED	0	/* unchecked, prob because ECU doesn't support */#define TYPE_FAILED	1	/* Got failure response */#define TYPE_GOOD	2	/* Valid info *//* * This structure holds all the data/config info for a given ecu * - one request can result in more than one ECU responding, and so * the data is stored in this */typedef struct ecu_data{	u_int8_t 	valid;		/* Valid flag */	u_int8_t	ecu_addr;	/* Address */	u_int8_t	supress;	/* Supress output of data from ECU */	u_int8_t	pids[0x100];	/* Pids supported by ECU */	u_int8_t	mode2_info[0x100];	/* Freeze frame version */	u_int8_t	mode5_info[0x100];	/* Mode 5 info */	u_int8_t	mode6_info[0x100];	/* Mode 6 info */	u_int8_t	mode8_info[0x100];	/* Mode 8 info */	u_int8_t	mode9_info[0x100];	/* Mode 9 info */	u_int8_t	data_good;		/* Flags for above data */	u_int8_t	O2_sensors;	/* O2 sensors bit mask */	response_t	mode1_data[256]; /* Response data for all responses */	response_t	mode2_data[256]; /* Same, but for freeze frame */	diag_msg_t	*rxmsg;		/* Received message */} ecu_data_t;#define ECU_DATA_PIDS	0x01#define ECU_DATA_MODE2	0x02#define ECU_DATA_MODE5	0x04#define ECU_DATA_MODE6	0x08#define ECU_DATA_MODE8	0x10#define ECU_DATA_MODE9	0x20#define MAX_ECU 8			/* Max 8 Ecus responding */extern ecu_data_t	ecu_info[MAX_ECU];extern int ecu_count;extern diag_l2_conn_t  *global_l2_conn;extern diag_l3_conn_t  *global_l3_conn;extern u_int8_t	global_O2_sensors;	/* O2 sensors bit mask *//* XXX end of stuff to move */extern int		global_conmode;extern int		global_protocol;extern int		global_l2_fd;	/* L2 file descriptor */#define	PROTOCOL_NOTFOUND	0#define	PROTOCOL_ISO9141_2	1#define	PROTOCOL_ISO14230	2#define	PROTOCOL_SAEJ1850	3/* * Do a J1979 request */int l3_do_j1979_rqst(diag_l3_conn_t *d_conn, int mode, int p1, int p2,	int p3, int p4, int p5, int p6, int p7, void *handle);/* * Send some data on the connection */int l3_do_send( diag_l3_conn_t *d_conn, char *data, int len, void *handle);int l2_do_send( diag_l2_conn_t *d_conn, char *data, int len, void *handle);int l2_check_pid_bits(u_int8_t *data, int pid);int do_l2_9141_start(int destaddr); // 9141 initint do_l2_14230_start(int init_type); //14230 initint do_l2_generic_start(void);// Generic init, using parameters set by userint do_j1979_getdtcs();int do_j1979_getO2sensors();int diag_cleardtc(void);int ecu_connect(void);diag_msg_t *find_ecu_msg(int byte, u_int8_t val);/* * Handle values for above */#define RQST_HANDLE_NORMAL	0	/* Normal mode */#define RQST_HANDLE_WATCH	1	/* Watching, add timestamp */#define RQST_HANDLE_DECODE	2	/* Just decode what arrived */#define RQST_HANDLE_NCMS	3	/* Non cont. mon. tests */#define RQST_HANDLE_NCMS2	4	/* Ditto, print fails only */#define RQST_HANDLE_O2S		5	/* O2 sensor tests */#define RQST_HANDLE_READINESS	6	/* Readiness Tests */int do_j1979_getdata(int interruptible_flag);void do_j1979_basics() ;void do_j1979_cms();void do_j1979_ncms();void do_j1979_getpids();void do_j1979_O2tests();void do_j1979_getO2tests(int O2sensor);/* * Receive callback routines for various L3/L2 types */void	j1979_data_rcv(void *handle, diag_msg_t *msg);void	j1979_watch_rcv(void *handle, diag_msg_t *msg);void	l2raw_data_rcv(void *handle, diag_msg_t *msg);extern int		global_state;#define STATE_IDLE	0	/* Idle */#define STATE_WATCH	1	/* Watch mode */#define	STATE_CONNECTED	2	/* Connected to ECU */#define	STATE_L3ADDED	3	/* Layer 3 protocol added on Layer 2 */#define	STATE_SCANDONE	4	/* J1978/9 Scan Done, so got J1979 PID list */int htoi(char *buf);/* Parameters set by user interface (and their defaults) */extern int 	set_speed ;	/* Comms speed */extern unsigned char	set_testerid ;	/* Our tester ID */extern int	set_addrtype ;	/* Address type, 1 = functional */extern unsigned char	set_destaddr ;	/* Dest ECU address */extern int	set_L1protocol ;	/* L1 (H/W) Protocol type */extern int	set_L2protocol ;	/* L2 (S/W) Protocol type */extern int	set_initmode ;extern int 	set_display ;	/* English (1) or Metric (0) display */extern char*	set_vehicle;	/* Vehicle name */extern char*	set_ecu;	/* ECU name */extern char*	set_interface;	/* Physical interface name to use */extern unsigned int	set_subinterface;	/* Sub interface ID */typedef struct cmd_tbl_entry{	char *command;		/* Command name */	char *usage;		/* Usage info */	char *help;		/* Help Text */	int	(*routine)(int argc, char **argv);	/* Command Routine */	int flags;		/* Flag */	struct cmd_tbl_entry *sub_cmd_tbl;		/* Next layer */} cmd_tbl_entry_t ;/* Return values from the commands */#define CMD_OK		0	/* OK */#define CMD_USAGE	1	/* Bad usage, print usage info */#define CMD_FAILED	2	/* Cmd failed */#define CMD_EXIT	3	/* Exit called */#define CMD_UP		4	/* Go up one level in command tree */#define FLAG_HIDDEN	1	/* Hidden command */int help_common(int argc, char **argv, struct cmd_tbl_entry *cmd_table);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -