|
| | TCAN4550Can (const char *name, void(*interrupt_enable)(), void(*interrupt_disable)(), const Gpio *test_pin=nullptr) |
| | Constructor.
|
| |
| | ~TCAN4550Can () |
| | Destructor.
|
| |
| void | init (const char *spi_name, uint32_t freq, uint32_t baud, uint16_t rx_timeout_bits) |
| | Initialize CAN device settings.
|
| |
| void | interrupt_handler () |
| | Handle an interrupt. Called by user provided interrupt handler.
|
| |
| OSMutex * | get_spi_bus_lock () |
| | Return a mutex that can be used by another SPI driver instance sharing the same bus as its bus lock.
|
| |
| | TCAN4550Can (const char *name, void(*interrupt_enable)(), void(*interrupt_disable)(), const Gpio *test_pin=nullptr) |
| | Constructor.
|
| |
| | ~TCAN4550Can () |
| | Destructor.
|
| |
| void | init (const char *spi_name, uint32_t freq, uint32_t baud, uint16_t rx_timeout_bits) |
| | Initialize CAN device settings.
|
| |
| void | interrupt_handler () |
| | Handle an interrupt. Called by user provided interrupt handler.
|
| |
| OSMutex * | get_spi_bus_lock () |
| | Return a mutex that can be used by another SPI driver instance sharing the same bus as its bus lock.
|
| |
| int | available () |
| |
| int | availableForWrite () |
| |
| int | read (struct can_frame *frame) |
| | Read a frame if there is one available.
|
| |
| int | write (const struct can_frame *frame) |
| | Send a frame if there is space available.
|
| |
| | Device (const char *name) |
| | Constructor.
|
| |
| virtual | ~Device () |
| | Destructor.
|
| |
| | OSThread (const char *name, int priority, size_t stack_size, void *(*start_routine)(void *), void *arg) |
| | Create a thread.
|
| |
| | OSThread () |
| | Creates a thread via inheritance.
|
| |
| void | start (const char *name, int priority, size_t stack_size) |
| | Starts the thread.
|
| |
| virtual | ~OSThread () |
| | Default destructor.
|
| |
| bool | is_created () |
| |
| void | inherit () |
| | Inherits the current thread.
|
| |
| os_thread_t | get_handle () |
| |
| void | lock_to_thread () |
| | Sets the thread handle to the current calling thread's.
|
| |
| void | unlock_from_thread () |
| | Resets the thread handle to none.
|
| |
|
| enum | Registers : uint16_t {
DEVICE_IDL = 0x0
, DEVICE_IDH
, REVISION
, STATUS
,
MODE = 0x200
, TIMESTAMP_PRESCALER
, TEST
, ECC
,
INTERRUPT_STATUS = 0x208
, MCAN_INTERRUPT_STATUS
, INTERRUPT_ENABLE = 0x20C
, CREL = 0x400
,
ENDN
, CUST
, DBTP
, TEST2
,
RWD
, CCCR
, NBTP
, TSCC
,
TSCV
, TOCC
, TOCV
, RSVD1
,
RSVD2
, RSVD3
, RSVD4
, ECR
,
PSR
, TDCR
, RSVD5
, IR
,
IE
, ILS
, ILE
, RSVD6
,
RSVD7
, RSVD8
, RSVD9
, RSVD10
,
RSVD11
, RSVD12
, RSVD13
, GFC
,
SIDFC
, XIDFC
, RSVD14
, XIDAM
,
HPMS
, NDAT1
, NDAT2
, RXF0C
,
RXF0S
, RXF0A
, RXBC
, RXF1C
,
RXF1S
, RXF1A
, RXESC
, TXBC
,
TXFQS
, TXESC
, TXBRP
, TXBAR
,
TXBCR
, TXBTO
, TXBCF
, TXBTIE
,
TXBCIE
, RSVD15
, RSVD16
, TXEFC
,
TXEFS
, TXEFA
, RSVD17
, MRAM = 0x2000
,
DEVICE_IDL = 0x0
, DEVICE_IDH
, REVISION
, STATUS
,
MODE = 0x200
, TIMESTAMP_PRESCALER
, TEST
, ECC
,
INTERRUPT_STATUS = 0x208
, MCAN_INTERRUPT_STATUS
, INTERRUPT_ENABLE = 0x20C
, CREL = 0x400
,
ENDN
, CUST
, DBTP
, TEST2
,
RWD
, CCCR
, NBTP
, TSCC
,
TSCV
, TOCC
, TOCV
, RSVD1
,
RSVD2
, RSVD3
, RSVD4
, ECR
,
PSR
, TDCR
, RSVD5
, IR
,
IE
, ILS
, ILE
, RSVD6
,
RSVD7
, RSVD8
, RSVD9
, RSVD10
,
RSVD11
, RSVD12
, RSVD13
, GFC
,
SIDFC
, XIDFC
, RSVD14
, XIDAM
,
HPMS
, NDAT1
, NDAT2
, RXF0C
,
RXF0S
, RXF0A
, RXBC
, RXF1C
,
RXF1S
, RXF1A
, RXESC
, TXBC
,
TXFQS
, TXESC
, TXBRP
, TXBAR
,
TXBCR
, TXBTO
, TXBCF
, TXBTIE
,
TXBCIE
, RSVD15
, RSVD16
, TXEFC
,
TXEFS
, TXEFA
, RSVD17
, MRAM = 0x2000
} |
| | SPI Registers, word addressing, not byte addressing. More...
|
| |
| enum | Command : uint8_t { WRITE = 0x61
, READ = 0x41
, WRITE = 0x61
, READ = 0x41
} |
| |
| enum | Registers : uint16_t {
DEVICE_IDL = 0x0
, DEVICE_IDH
, REVISION
, STATUS
,
MODE = 0x200
, TIMESTAMP_PRESCALER
, TEST
, ECC
,
INTERRUPT_STATUS = 0x208
, MCAN_INTERRUPT_STATUS
, INTERRUPT_ENABLE = 0x20C
, CREL = 0x400
,
ENDN
, CUST
, DBTP
, TEST2
,
RWD
, CCCR
, NBTP
, TSCC
,
TSCV
, TOCC
, TOCV
, RSVD1
,
RSVD2
, RSVD3
, RSVD4
, ECR
,
PSR
, TDCR
, RSVD5
, IR
,
IE
, ILS
, ILE
, RSVD6
,
RSVD7
, RSVD8
, RSVD9
, RSVD10
,
RSVD11
, RSVD12
, RSVD13
, GFC
,
SIDFC
, XIDFC
, RSVD14
, XIDAM
,
HPMS
, NDAT1
, NDAT2
, RXF0C
,
RXF0S
, RXF0A
, RXBC
, RXF1C
,
RXF1S
, RXF1A
, RXESC
, TXBC
,
TXFQS
, TXESC
, TXBRP
, TXBAR
,
TXBCR
, TXBTO
, TXBCF
, TXBTIE
,
TXBCIE
, RSVD15
, RSVD16
, TXEFC
,
TXEFS
, TXEFA
, RSVD17
, MRAM = 0x2000
,
DEVICE_IDL = 0x0
, DEVICE_IDH
, REVISION
, STATUS
,
MODE = 0x200
, TIMESTAMP_PRESCALER
, TEST
, ECC
,
INTERRUPT_STATUS = 0x208
, MCAN_INTERRUPT_STATUS
, INTERRUPT_ENABLE = 0x20C
, CREL = 0x400
,
ENDN
, CUST
, DBTP
, TEST2
,
RWD
, CCCR
, NBTP
, TSCC
,
TSCV
, TOCC
, TOCV
, RSVD1
,
RSVD2
, RSVD3
, RSVD4
, ECR
,
PSR
, TDCR
, RSVD5
, IR
,
IE
, ILS
, ILE
, RSVD6
,
RSVD7
, RSVD8
, RSVD9
, RSVD10
,
RSVD11
, RSVD12
, RSVD13
, GFC
,
SIDFC
, XIDFC
, RSVD14
, XIDAM
,
HPMS
, NDAT1
, NDAT2
, RXF0C
,
RXF0S
, RXF0A
, RXBC
, RXF1C
,
RXF1S
, RXF1A
, RXESC
, TXBC
,
TXFQS
, TXESC
, TXBRP
, TXBAR
,
TXBCR
, TXBTO
, TXBCF
, TXBTIE
,
TXBCIE
, RSVD15
, RSVD16
, TXEFC
,
TXEFS
, TXEFA
, RSVD17
, MRAM = 0x2000
} |
| | SPI Registers, word addressing, not byte addressing. More...
|
| |
| enum | Command : uint8_t { WRITE = 0x61
, READ = 0x41
, WRITE = 0x61
, READ = 0x41
} |
| |
|
| void | flush_buffers () override |
| | Called after disable.
|
| |
| ssize_t | read (File *file, void *buf, size_t count) override |
| | Read from a file or device.
|
| |
| ssize_t | write (File *file, const void *buf, size_t count) override |
| | Write to a file or device.
|
| |
| int | ioctl (File *file, unsigned long int key, unsigned long data) override |
| | Request an ioctl transaction.
|
| |
| bool | select (File *file, int mode) override |
| | Device select method.
|
| |
| void * | entry () override |
| | User entry point for the created thread.
|
| |
| void | enable () override |
| | function to enable device
|
| |
| void | disable () override |
| | function to disable device
|
| |
| void | tx_msg () override |
| | Function to try and transmit a message.
|
| |
| uint32_t | register_read (Registers address) |
| | Read from a SPI register.
|
| |
| void | register_write (Registers address, uint32_t data) |
| | Write to a SPI register.
|
| |
| void | rxbuf_read (uint16_t offset, MRAMRXBuffer *buf, size_t count) |
| | Read one or more RX buffers.
|
| |
| void | txbuf_write (uint16_t offset, MRAMTXBufferMultiWrite *buf, size_t count) |
| | Write one or more TX buffers.
|
| |
|
| TCAN4550Can () |
| | Default Constructor.
|
| |
|
| DISALLOW_COPY_AND_ASSIGN (TCAN4550Can) |
| |
| void | flush_buffers () override |
| | Called after disable.
|
| |
| ssize_t | read (File *file, void *buf, size_t count) override |
| | Read from a file or device.
|
| |
| ssize_t | write (File *file, const void *buf, size_t count) override |
| | Write to a file or device.
|
| |
| int | ioctl (File *file, unsigned long int key, unsigned long data) override |
| | Request an ioctl transaction.
|
| |
| bool | select (File *file, int mode) override |
| | Device select method.
|
| |
| void * | entry () override |
| | User entry point for the created thread.
|
| |
| void | enable () override |
| | function to enable device
|
| |
| void | disable () override |
| | function to disable device
|
| |
| void | tx_msg () override |
| | Function to try and transmit a message.
|
| |
| uint32_t | register_read (Registers address) |
| | Read from a SPI register.
|
| |
| void | register_write (Registers address, uint32_t data) |
| | Write to a SPI register.
|
| |
| void | rxbuf_read (uint16_t offset, MRAMRXBuffer *buf, size_t count) |
| | Read one or more RX buffers.
|
| |
| void | txbuf_write (uint16_t offset, MRAMTXBufferMultiWrite *buf, size_t count) |
| | Write one or more TX buffers.
|
| |
|
| TCAN4550Can () |
| | Default Constructor.
|
| |
|
| DISALLOW_COPY_AND_ASSIGN (TCAN4550Can) |
| |
| void | lock () |
| |
| void | unlock () |
| |
|
| static int | open (struct _reent *reent, const char *path, int flags, int mode) |
| | Open a file or device.
|
| |
| static int | close (struct _reent *reent, int fd) |
| | Close a file or device.
|
| |
| static int | stat (struct _reent *reent, const char *path, struct stat *stat) |
| | Get the status information of a file or device.
|
| |
| static int | select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, long long timeout) |
| | POSIX select().
|
| |
| static void | select_clear () |
| | Clears the current thread's select bits.
|
| |
| static ssize_t | read (struct _reent *reent, int fd, void *buf, size_t count) |
| | Read from a file or device.
|
| |
| static ssize_t | write (struct _reent *reent, int fd, const void *buf, size_t count) |
| | Write to a file or device.
|
| |
| static _off_t | lseek (struct _reent *reent, int fd, _off_t offset, int whence) |
| | Change the offset index of a file or device.
|
| |
| static int | fstat (struct _reent *reent, int fd, struct stat *stat) |
| | Get the status information of a file or device.
|
| |
| static int | ioctl (int fd, unsigned long int key, unsigned long data) |
| | Request and ioctl transaction.
|
| |
| static int | fcntl (int fd, int cmd, unsigned long data) |
| | Manipulate a file descriptor.
|
| |
| static bool | is_device (int fd) |
| | Test if the file descriptor belongs to a device.
|
| |
| static int | getpriority (OSThread *thread) |
| | Return the current thread priority.
|
| |
| static int | get_priority (OSThread *thread) |
| | Return the current thread priority.
|
| |
| static int | get_priority_min () |
| | Get the minimum thread priority.
|
| |
| static int | get_priority_max () |
| | Get the maximum thread priority.
|
| |
| static unsigned | numReceivedPackets_ {0} |
| |
| static unsigned | numTransmittedPackets_ {0} |
| |
| | Can (const char *ignored) |
| | Constructor.
|
| |
| | ~Can () |
| | Destructor.
|
| |
| | Can (const char *name, size_t tx_buffer_size=config_can_tx_buffer_size(), size_t rx_buffer_size=config_can_rx_buffer_size()) |
| | Constructor.
|
| |
| | ~Can () |
| | Destructor.
|
| |
| bool | has_tx_buffer_space () OVERRIDE |
| |
| bool | has_rx_buffer_data () OVERRIDE |
| |
| void | lock () |
| |
| void | unlock () |
| |
| | NonBlockNode (const char *name) |
| | Constructor.
|
| |
| | Node (const char *name) |
| | Constructor.
|
| |
| virtual | ~Node () |
| | Destructor.
|
| |
| int | open (File *, const char *, int, int) OVERRIDE |
| | Open method.
|
| |
| int | close (File *) OVERRIDE |
| | Close method.
|
| |
| virtual int | fstat (File *file, struct stat *stat) override |
| | Get the status information of a file or device.
|
| |
| | Device (const char *name) |
| | Constructor.
|
| |
| virtual | ~Device () |
| | Destructor.
|
| |
| | FileIO (const char *name) |
| | Constructor.
|
| |
| virtual | ~FileIO () |
| | Destructor.
|
| |
| virtual off_t | lseek (File *f, off_t offset, int whence) |
| | Seek method.
|
| |
| virtual int | fcntl (File *file, int cmd, unsigned long data) |
| | Manipulate a file descriptor.
|
| |
| static void | select_insert (SelectInfo *info) |
| | Add client to list of clients needing woken.
|
| |
| static void | select_wakeup (SelectInfo *info) |
| | Wakeup the list of clients needing woken.
|
| |
| static void | select_wakeup_from_isr (SelectInfo *info, int *woken) |
| | Wakeup the list of clients needing woken.
|
| |
| static int | open (struct _reent *reent, const char *path, int flags, int mode) |
| | Open a file or device.
|
| |
| static int | close (struct _reent *reent, int fd) |
| | Close a file or device.
|
| |
| static int | stat (struct _reent *reent, const char *path, struct stat *stat) |
| | Get the status information of a file or device.
|
| |
| static int | select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, long long timeout) |
| | POSIX select().
|
| |
| static void | select_clear () |
| | Clears the current thread's select bits.
|
| |
| static int | fd_alloc (void) |
| | Allocate a free file descriptor.
|
| |
| static void | fd_free (int fd) |
| | Free up a file descriptor.
|
| |
| static File * | file_lookup (int fd) |
| | Looks up a reference to a File corresponding to a given file descriptor.
|
| |
| static int | fd_lookup (File *file) |
| | Looks up a file descriptor corresponding to a given File reference.
|
| |
| static ssize_t | read (struct _reent *reent, int fd, void *buf, size_t count) |
| | Read from a file or device.
|
| |
| static ssize_t | write (struct _reent *reent, int fd, const void *buf, size_t count) |
| | Write to a file or device.
|
| |
| static _off_t | lseek (struct _reent *reent, int fd, _off_t offset, int whence) |
| | Change the offset index of a file or device.
|
| |
| static int | fstat (struct _reent *reent, int fd, struct stat *stat) |
| | Get the status information of a file or device.
|
| |
| static int | ioctl (int fd, unsigned long int key, unsigned long data) |
| | Request and ioctl transaction.
|
| |
| static int | fcntl (int fd, int cmd, unsigned long data) |
| | Manipulate a file descriptor.
|
| |
| static bool | is_device (int fd) |
| | Test if the file descriptor belongs to a device.
|
| |
| DeviceBuffer< struct can_frame > * | txBuf |
| | transmit buffer
|
| |
| DeviceBuffer< struct can_frame > * | rxBuf |
| | receive buffer
|
| |
| unsigned int | overrunCount |
| | overrun count
|
| |
| unsigned int | busOffCount |
| | bus-off count
|
| |
| unsigned int | softErrorCount |
| | soft error count
|
| |
| Notifiable * | readableNotify_ |
| | This will be notified if the device has data avilable for read.
|
| |
| Notifiable * | writableNotify_ |
| | This will be notified if the device has buffer avilable for write.
|
| |
| OSMutex | lock_ |
| | protects internal structures.
|
| |
| mode_t | mode_ |
| | File open mode, such as O_NONBLOCK.
|
| |
| unsigned int | references_ |
| | number of open references
|
| |
| const char * | name |
| | device name
|
| |
| static const unsigned int | numOpenFiles = 20 |
| |
| static File | files [] |
| | File descriptor pool.
|
| |
| static OSMutex | mutex |
| | mutual exclusion for fileio
|
| |
Specification of CAN driver for the TCAN4550.
- Todo:
- The TCAN4550 uses the Bosch MCAN IP. If we end up supporting other devices that also use this IP, then some of the generic MCAN related content can be factored out into a common location.
- Todo:
- The TCAN4550 uses the Bosch MCAN IP. If we end up supporting other devices that also use this IP, then some of the generic MCAN related content can be factored out into a common location.
Definition at line 53 of file MCAN.hxx.