109 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
 | 
						|
/*
 | 
						|
 * j1939.h
 | 
						|
 *
 | 
						|
 * Copyright (c) 2010-2011 EIA Electronics
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute it and/or modify
 | 
						|
 * it under the terms of the GNU General Public License version 2 as
 | 
						|
 * published by the Free Software Foundation.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _UAPI_CAN_J1939_H_
 | 
						|
#define _UAPI_CAN_J1939_H_
 | 
						|
 | 
						|
#include <linux/types.h>
 | 
						|
#include <linux/socket.h>
 | 
						|
#include <linux/can.h>
 | 
						|
 | 
						|
#define J1939_MAX_UNICAST_ADDR 0xfd
 | 
						|
#define J1939_IDLE_ADDR 0xfe
 | 
						|
#define J1939_NO_ADDR 0xff		/* == broadcast or no addr */
 | 
						|
#define J1939_NO_NAME 0
 | 
						|
#define J1939_PGN_REQUEST 0x0ea00		/* Request PG */
 | 
						|
#define J1939_PGN_ADDRESS_CLAIMED 0x0ee00	/* Address Claimed */
 | 
						|
#define J1939_PGN_ADDRESS_COMMANDED 0x0fed8	/* Commanded Address */
 | 
						|
#define J1939_PGN_PDU1_MAX 0x3ff00
 | 
						|
#define J1939_PGN_MAX 0x3ffff
 | 
						|
#define J1939_NO_PGN 0x40000
 | 
						|
 | 
						|
/* J1939 Parameter Group Number
 | 
						|
 *
 | 
						|
 * bit 0-7	: PDU Specific (PS)
 | 
						|
 * bit 8-15	: PDU Format (PF)
 | 
						|
 * bit 16	: Data Page (DP)
 | 
						|
 * bit 17	: Reserved (R)
 | 
						|
 * bit 19-31	: set to zero
 | 
						|
 */
 | 
						|
typedef __u32 pgn_t;
 | 
						|
 | 
						|
/* J1939 Priority
 | 
						|
 *
 | 
						|
 * bit 0-2	: Priority (P)
 | 
						|
 * bit 3-7	: set to zero
 | 
						|
 */
 | 
						|
typedef __u8 priority_t;
 | 
						|
 | 
						|
/* J1939 NAME
 | 
						|
 *
 | 
						|
 * bit 0-20	: Identity Number
 | 
						|
 * bit 21-31	: Manufacturer Code
 | 
						|
 * bit 32-34	: ECU Instance
 | 
						|
 * bit 35-39	: Function Instance
 | 
						|
 * bit 40-47	: Function
 | 
						|
 * bit 48	: Reserved
 | 
						|
 * bit 49-55	: Vehicle System
 | 
						|
 * bit 56-59	: Vehicle System Instance
 | 
						|
 * bit 60-62	: Industry Group
 | 
						|
 * bit 63	: Arbitrary Address Capable
 | 
						|
 */
 | 
						|
typedef __u64 name_t;
 | 
						|
 | 
						|
/* J1939 socket options */
 | 
						|
#define SOL_CAN_J1939 (SOL_CAN_BASE + CAN_J1939)
 | 
						|
enum {
 | 
						|
	SO_J1939_FILTER = 1,	/* set filters */
 | 
						|
	SO_J1939_PROMISC = 2,	/* set/clr promiscuous mode */
 | 
						|
	SO_J1939_SEND_PRIO = 3,
 | 
						|
	SO_J1939_ERRQUEUE = 4,
 | 
						|
};
 | 
						|
 | 
						|
enum {
 | 
						|
	SCM_J1939_DEST_ADDR = 1,
 | 
						|
	SCM_J1939_DEST_NAME = 2,
 | 
						|
	SCM_J1939_PRIO = 3,
 | 
						|
	SCM_J1939_ERRQUEUE = 4,
 | 
						|
};
 | 
						|
 | 
						|
enum {
 | 
						|
	J1939_NLA_PAD,
 | 
						|
	J1939_NLA_BYTES_ACKED,
 | 
						|
	J1939_NLA_TOTAL_SIZE,
 | 
						|
	J1939_NLA_PGN,
 | 
						|
	J1939_NLA_SRC_NAME,
 | 
						|
	J1939_NLA_DEST_NAME,
 | 
						|
	J1939_NLA_SRC_ADDR,
 | 
						|
	J1939_NLA_DEST_ADDR,
 | 
						|
};
 | 
						|
 | 
						|
enum {
 | 
						|
	J1939_EE_INFO_NONE,
 | 
						|
	J1939_EE_INFO_TX_ABORT,
 | 
						|
	J1939_EE_INFO_RX_RTS,
 | 
						|
	J1939_EE_INFO_RX_DPO,
 | 
						|
	J1939_EE_INFO_RX_ABORT,
 | 
						|
};
 | 
						|
 | 
						|
struct j1939_filter {
 | 
						|
	name_t name;
 | 
						|
	name_t name_mask;
 | 
						|
	pgn_t pgn;
 | 
						|
	pgn_t pgn_mask;
 | 
						|
	__u8 addr;
 | 
						|
	__u8 addr_mask;
 | 
						|
};
 | 
						|
 | 
						|
#define J1939_FILTER_MAX 512 /* maximum number of j1939_filter set via setsockopt() */
 | 
						|
 | 
						|
#endif /* !_UAPI_CAN_J1939_H_ */
 |