1*cda5da8dSAndroid Build Coastguard Worker /* 2*cda5da8dSAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*cda5da8dSAndroid Build Coastguard Worker * 4*cda5da8dSAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*cda5da8dSAndroid Build Coastguard Worker * for more information. 6*cda5da8dSAndroid Build Coastguard Worker */ 7*cda5da8dSAndroid Build Coastguard Worker #ifndef _UAPI_CAN_H 8*cda5da8dSAndroid Build Coastguard Worker #define _UAPI_CAN_H 9*cda5da8dSAndroid Build Coastguard Worker #include <linux/types.h> 10*cda5da8dSAndroid Build Coastguard Worker #include <linux/socket.h> 11*cda5da8dSAndroid Build Coastguard Worker #include <linux/stddef.h> 12*cda5da8dSAndroid Build Coastguard Worker #define CAN_EFF_FLAG 0x80000000U 13*cda5da8dSAndroid Build Coastguard Worker #define CAN_RTR_FLAG 0x40000000U 14*cda5da8dSAndroid Build Coastguard Worker #define CAN_ERR_FLAG 0x20000000U 15*cda5da8dSAndroid Build Coastguard Worker #define CAN_SFF_MASK 0x000007FFU 16*cda5da8dSAndroid Build Coastguard Worker #define CAN_EFF_MASK 0x1FFFFFFFU 17*cda5da8dSAndroid Build Coastguard Worker #define CAN_ERR_MASK 0x1FFFFFFFU 18*cda5da8dSAndroid Build Coastguard Worker #define CANXL_PRIO_MASK CAN_SFF_MASK 19*cda5da8dSAndroid Build Coastguard Worker typedef __u32 canid_t; 20*cda5da8dSAndroid Build Coastguard Worker #define CAN_SFF_ID_BITS 11 21*cda5da8dSAndroid Build Coastguard Worker #define CAN_EFF_ID_BITS 29 22*cda5da8dSAndroid Build Coastguard Worker #define CANXL_PRIO_BITS CAN_SFF_ID_BITS 23*cda5da8dSAndroid Build Coastguard Worker typedef __u32 can_err_mask_t; 24*cda5da8dSAndroid Build Coastguard Worker #define CAN_MAX_DLC 8 25*cda5da8dSAndroid Build Coastguard Worker #define CAN_MAX_RAW_DLC 15 26*cda5da8dSAndroid Build Coastguard Worker #define CAN_MAX_DLEN 8 27*cda5da8dSAndroid Build Coastguard Worker #define CANFD_MAX_DLC 15 28*cda5da8dSAndroid Build Coastguard Worker #define CANFD_MAX_DLEN 64 29*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MIN_DLC 0 30*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MAX_DLC 2047 31*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MAX_DLC_MASK 0x07FF 32*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MIN_DLEN 1 33*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MAX_DLEN 2048 34*cda5da8dSAndroid Build Coastguard Worker struct can_frame { 35*cda5da8dSAndroid Build Coastguard Worker canid_t can_id; 36*cda5da8dSAndroid Build Coastguard Worker union { 37*cda5da8dSAndroid Build Coastguard Worker __u8 len; 38*cda5da8dSAndroid Build Coastguard Worker __u8 can_dlc; 39*cda5da8dSAndroid Build Coastguard Worker } __attribute__((packed)); 40*cda5da8dSAndroid Build Coastguard Worker __u8 __pad; 41*cda5da8dSAndroid Build Coastguard Worker __u8 __res0; 42*cda5da8dSAndroid Build Coastguard Worker __u8 len8_dlc; 43*cda5da8dSAndroid Build Coastguard Worker __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8))); 44*cda5da8dSAndroid Build Coastguard Worker }; 45*cda5da8dSAndroid Build Coastguard Worker #define CANFD_BRS 0x01 46*cda5da8dSAndroid Build Coastguard Worker #define CANFD_ESI 0x02 47*cda5da8dSAndroid Build Coastguard Worker #define CANFD_FDF 0x04 48*cda5da8dSAndroid Build Coastguard Worker struct canfd_frame { 49*cda5da8dSAndroid Build Coastguard Worker canid_t can_id; 50*cda5da8dSAndroid Build Coastguard Worker __u8 len; 51*cda5da8dSAndroid Build Coastguard Worker __u8 flags; 52*cda5da8dSAndroid Build Coastguard Worker __u8 __res0; 53*cda5da8dSAndroid Build Coastguard Worker __u8 __res1; 54*cda5da8dSAndroid Build Coastguard Worker __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8))); 55*cda5da8dSAndroid Build Coastguard Worker }; 56*cda5da8dSAndroid Build Coastguard Worker #define CANXL_XLF 0x80 57*cda5da8dSAndroid Build Coastguard Worker #define CANXL_SEC 0x01 58*cda5da8dSAndroid Build Coastguard Worker #define CANXL_VCID_OFFSET 16 59*cda5da8dSAndroid Build Coastguard Worker #define CANXL_VCID_VAL_MASK 0xFFUL 60*cda5da8dSAndroid Build Coastguard Worker #define CANXL_VCID_MASK (CANXL_VCID_VAL_MASK << CANXL_VCID_OFFSET) 61*cda5da8dSAndroid Build Coastguard Worker struct canxl_frame { 62*cda5da8dSAndroid Build Coastguard Worker canid_t prio; 63*cda5da8dSAndroid Build Coastguard Worker __u8 flags; 64*cda5da8dSAndroid Build Coastguard Worker __u8 sdt; 65*cda5da8dSAndroid Build Coastguard Worker __u16 len; 66*cda5da8dSAndroid Build Coastguard Worker __u32 af; 67*cda5da8dSAndroid Build Coastguard Worker __u8 data[CANXL_MAX_DLEN]; 68*cda5da8dSAndroid Build Coastguard Worker }; 69*cda5da8dSAndroid Build Coastguard Worker #define CAN_MTU (sizeof(struct can_frame)) 70*cda5da8dSAndroid Build Coastguard Worker #define CANFD_MTU (sizeof(struct canfd_frame)) 71*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MTU (sizeof(struct canxl_frame)) 72*cda5da8dSAndroid Build Coastguard Worker #define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data)) 73*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64) 74*cda5da8dSAndroid Build Coastguard Worker #define CANXL_MAX_MTU CANXL_MTU 75*cda5da8dSAndroid Build Coastguard Worker #define CAN_RAW 1 76*cda5da8dSAndroid Build Coastguard Worker #define CAN_BCM 2 77*cda5da8dSAndroid Build Coastguard Worker #define CAN_TP16 3 78*cda5da8dSAndroid Build Coastguard Worker #define CAN_TP20 4 79*cda5da8dSAndroid Build Coastguard Worker #define CAN_MCNET 5 80*cda5da8dSAndroid Build Coastguard Worker #define CAN_ISOTP 6 81*cda5da8dSAndroid Build Coastguard Worker #define CAN_J1939 7 82*cda5da8dSAndroid Build Coastguard Worker #define CAN_NPROTO 8 83*cda5da8dSAndroid Build Coastguard Worker #define SOL_CAN_BASE 100 84*cda5da8dSAndroid Build Coastguard Worker struct sockaddr_can { 85*cda5da8dSAndroid Build Coastguard Worker __kernel_sa_family_t can_family; 86*cda5da8dSAndroid Build Coastguard Worker int can_ifindex; 87*cda5da8dSAndroid Build Coastguard Worker union { 88*cda5da8dSAndroid Build Coastguard Worker struct { 89*cda5da8dSAndroid Build Coastguard Worker canid_t rx_id, tx_id; 90*cda5da8dSAndroid Build Coastguard Worker } tp; 91*cda5da8dSAndroid Build Coastguard Worker struct { 92*cda5da8dSAndroid Build Coastguard Worker __u64 name; 93*cda5da8dSAndroid Build Coastguard Worker __u32 pgn; 94*cda5da8dSAndroid Build Coastguard Worker __u8 addr; 95*cda5da8dSAndroid Build Coastguard Worker } j1939; 96*cda5da8dSAndroid Build Coastguard Worker } can_addr; 97*cda5da8dSAndroid Build Coastguard Worker }; 98*cda5da8dSAndroid Build Coastguard Worker struct can_filter { 99*cda5da8dSAndroid Build Coastguard Worker canid_t can_id; 100*cda5da8dSAndroid Build Coastguard Worker canid_t can_mask; 101*cda5da8dSAndroid Build Coastguard Worker }; 102*cda5da8dSAndroid Build Coastguard Worker #define CAN_INV_FILTER 0x20000000U 103*cda5da8dSAndroid Build Coastguard Worker #endif 104