Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
BenchmarkCan Class Reference

Generic CAN driver for throughput testing purposes. More...

#include <BenchmarkCan.hxx>

Inheritance diagram for BenchmarkCan:
Can Atomic Atomic NonBlockNode Node Device FileIO

Public Member Functions

 BenchmarkCan (const char *name)
 Constructor.
 
 ~BenchmarkCan ()
 Destructor.
 
void start_benchmark (const struct can_frame *frame, unsigned count)
 Start a benchmarking run.
 
long long get_timestamp (unsigned *count)
 Get the latest performance time stamp.
 
- Public Member Functions inherited from Can
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.
 
- Public Member Functions inherited from Device
 Device (const char *name)
 Constructor.
 
virtual ~Device ()
 Destructor.
 

Private Member Functions

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.
 
bool refill_locked ()
 Refills the rxBuf from the packet_ and readCount.
 
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
 
 DISALLOW_COPY_AND_ASSIGN (BenchmarkCan)
 
- Private Member Functions inherited from Atomic
void lock ()
 
void unlock ()
 

Private Attributes

struct can_frame packet_
 packet to inject.
 
long long readTimeLast_
 timestamp of last read in OS time
 
size_t readCount_
 count of packets still to inject
 

Additional Inherited Members

- Static Public Member Functions inherited from Device
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 Public Member Functions inherited from FileIO
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 Public Attributes inherited from Can
static unsigned numReceivedPackets_ {0}
 
static unsigned numTransmittedPackets_ {0}
 
- Protected Member Functions inherited from Can
 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 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.
 
bool select (File *file, int mode) OVERRIDE
 Device select method.
 
- Protected Member Functions inherited from Atomic
void lock ()
 
void unlock ()
 
- Protected Member Functions inherited from NonBlockNode
 NonBlockNode (const char *name)
 Constructor.
 
int ioctl (File *file, unsigned long int key, unsigned long data) OVERRIDE
 Request an ioctl transaction.
 
- Protected Member Functions inherited from Node
 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.
 
- Protected Member Functions inherited from FileIO
 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 Protected Member Functions inherited from Device
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 Protected Member Functions inherited from FileIO
static int fd_alloc (void)
 Allocate a free file descriptor.
 
static void fd_free (int fd)
 Free up a file descriptor.
 
static Filefile_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.
 
- Protected Attributes inherited from Can
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
 
- Protected Attributes inherited from NonBlockNode
NotifiablereadableNotify_
 This will be notified if the device has data avilable for read.
 
NotifiablewritableNotify_
 This will be notified if the device has buffer avilable for write.
 
- Protected Attributes inherited from Node
OSMutex lock_
 protects internal structures.
 
mode_t mode_
 File open mode, such as O_NONBLOCK.
 
unsigned int references_
 number of open references
 
- Protected Attributes inherited from FileIO
const char * name
 device name
 
- Static Protected Attributes inherited from FileIO
static const unsigned int numOpenFiles = 20
 
static File files []
 File descriptor pool.
 
static OSMutex mutex
 mutual exclusion for fileio
 

Detailed Description

Generic CAN driver for throughput testing purposes.

Definition at line 42 of file BenchmarkCan.hxx.

Constructor & Destructor Documentation

◆ BenchmarkCan()

BenchmarkCan::BenchmarkCan ( const char *  name)
inline

Constructor.

Parameters
namename of this device instance in the file system
basebase address of this device
interruptinterrupt number of this device

Definition at line 50 of file BenchmarkCan.hxx.

◆ ~BenchmarkCan()

BenchmarkCan::~BenchmarkCan ( )
inline

Destructor.

Definition at line 59 of file BenchmarkCan.hxx.

Member Function Documentation

◆ disable()

void BenchmarkCan::disable ( )
inlineoverrideprivatevirtual

function to disable device

Implements Can.

Definition at line 162 of file BenchmarkCan.hxx.

◆ enable()

void BenchmarkCan::enable ( )
inlineoverrideprivatevirtual

function to enable device

Implements Can.

Definition at line 159 of file BenchmarkCan.hxx.

◆ get_timestamp()

long long BenchmarkCan::get_timestamp ( unsigned *  count)
inline

Get the latest performance time stamp.

Parameters
countthe number of messages still left from the performance run, zero if the performance run is completed.
Returns
the time when the last message was read by the stack.

Definition at line 88 of file BenchmarkCan.hxx.

◆ read()

ssize_t BenchmarkCan::read ( File file,
void *  buf,
size_t  count 
)
inlineoverrideprivatevirtual

Read from a file or device.

Parameters
filefile reference for this device
buflocation to place read data
countnumber of bytes to read
Returns
number of bytes read upon success, -1 upon failure with errno containing the cause

Implements FileIO.

Definition at line 102 of file BenchmarkCan.hxx.

◆ refill_locked()

bool BenchmarkCan::refill_locked ( )
inlineprivate

Refills the rxBuf from the packet_ and readCount.

Must be called within a critical section lock.

Returns
true if the condition needs to be signaled.

Definition at line 145 of file BenchmarkCan.hxx.

◆ start_benchmark()

void BenchmarkCan::start_benchmark ( const struct can_frame *  frame,
unsigned  count 
)
inline

Start a benchmarking run.

Causes the same frame from being injected count times as if it was received from the CAN-bus.

Parameters
frameis the frame to inject to the stack.
counthow many copies of this frame to inject.

Definition at line 68 of file BenchmarkCan.hxx.

◆ tx_msg()

void BenchmarkCan::tx_msg ( )
inlineoverrideprivatevirtual

function to try and transmit a message

Implements Can.

Definition at line 165 of file BenchmarkCan.hxx.

◆ write()

ssize_t BenchmarkCan::write ( File file,
const void *  buf,
size_t  count 
)
inlineoverrideprivatevirtual

Write to a file or device.

Parameters
filefile reference for this device
buflocation to find write data
countnumber of bytes to write
Returns
number of bytes written upon success, -1 upon failure with errno containing the cause

Implements FileIO.

Definition at line 136 of file BenchmarkCan.hxx.

Member Data Documentation

◆ packet_

struct can_frame BenchmarkCan::packet_
private

packet to inject.

Definition at line 169 of file BenchmarkCan.hxx.

◆ readCount_

size_t BenchmarkCan::readCount_
private

count of packets still to inject

Definition at line 171 of file BenchmarkCan.hxx.

◆ readTimeLast_

long long BenchmarkCan::readTimeLast_
private

timestamp of last read in OS time

Definition at line 170 of file BenchmarkCan.hxx.


The documentation for this class was generated from the following file: