linux-headers (unknown)

(root)/
include/
linux/
can/
bcm.h
       1  /* SPDX-License-Identifier: ((GPL-2.0-only WITH Linux-syscall-note) OR BSD-3-Clause) */
       2  /*
       3   * linux/can/bcm.h
       4   *
       5   * Definitions for CAN Broadcast Manager (BCM)
       6   *
       7   * Author: Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
       8   * Copyright (c) 2002-2007 Volkswagen Group Electronic Research
       9   * All rights reserved.
      10   *
      11   * Redistribution and use in source and binary forms, with or without
      12   * modification, are permitted provided that the following conditions
      13   * are met:
      14   * 1. Redistributions of source code must retain the above copyright
      15   *    notice, this list of conditions and the following disclaimer.
      16   * 2. Redistributions in binary form must reproduce the above copyright
      17   *    notice, this list of conditions and the following disclaimer in the
      18   *    documentation and/or other materials provided with the distribution.
      19   * 3. Neither the name of Volkswagen nor the names of its contributors
      20   *    may be used to endorse or promote products derived from this software
      21   *    without specific prior written permission.
      22   *
      23   * Alternatively, provided that this notice is retained in full, this
      24   * software may be distributed under the terms of the GNU General
      25   * Public License ("GPL") version 2, in which case the provisions of the
      26   * GPL apply INSTEAD OF those given above.
      27   *
      28   * The provided data structures and external interfaces from this code
      29   * are not restricted to be used by modules with a GPL compatible license.
      30   *
      31   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      32   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      33   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      34   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      35   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      36   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      37   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      38   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      39   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      40   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      41   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
      42   * DAMAGE.
      43   */
      44  
      45  #ifndef _CAN_BCM_H
      46  #define _CAN_BCM_H
      47  
      48  #include <linux/types.h>
      49  #include <linux/can.h>
      50  
      51  struct bcm_timeval {
      52  	long tv_sec;
      53  	long tv_usec;
      54  };
      55  
      56  /**
      57   * struct bcm_msg_head - head of messages to/from the broadcast manager
      58   * @opcode:    opcode, see enum below.
      59   * @flags:     special flags, see below.
      60   * @count:     number of frames to send before changing interval.
      61   * @ival1:     interval for the first @count frames.
      62   * @ival2:     interval for the following frames.
      63   * @can_id:    CAN ID of frames to be sent or received.
      64   * @nframes:   number of frames appended to the message head.
      65   * @frames:    array of CAN frames.
      66   */
      67  struct bcm_msg_head {
      68  	__u32 opcode;
      69  	__u32 flags;
      70  	__u32 count;
      71  	struct bcm_timeval ival1, ival2;
      72  	canid_t can_id;
      73  	__u32 nframes;
      74  	struct can_frame frames[];
      75  };
      76  
      77  enum {
      78  	TX_SETUP = 1,	/* create (cyclic) transmission task */
      79  	TX_DELETE,	/* remove (cyclic) transmission task */
      80  	TX_READ,	/* read properties of (cyclic) transmission task */
      81  	TX_SEND,	/* send one CAN frame */
      82  	RX_SETUP,	/* create RX content filter subscription */
      83  	RX_DELETE,	/* remove RX content filter subscription */
      84  	RX_READ,	/* read properties of RX content filter subscription */
      85  	TX_STATUS,	/* reply to TX_READ request */
      86  	TX_EXPIRED,	/* notification on performed transmissions (count=0) */
      87  	RX_STATUS,	/* reply to RX_READ request */
      88  	RX_TIMEOUT,	/* cyclic message is absent */
      89  	RX_CHANGED	/* updated CAN frame (detected content change) */
      90  };
      91  
      92  #define SETTIMER            0x0001
      93  #define STARTTIMER          0x0002
      94  #define TX_COUNTEVT         0x0004
      95  #define TX_ANNOUNCE         0x0008
      96  #define TX_CP_CAN_ID        0x0010
      97  #define RX_FILTER_ID        0x0020
      98  #define RX_CHECK_DLC        0x0040
      99  #define RX_NO_AUTOTIMER     0x0080
     100  #define RX_ANNOUNCE_RESUME  0x0100
     101  #define TX_RESET_MULTI_IDX  0x0200
     102  #define RX_RTR_FRAME        0x0400
     103  #define CAN_FD_FRAME        0x0800
     104  
     105  #endif /* !_UAPI_CAN_BCM_H */