Get error information
#include <sys/can_dcmd.h> #define CAN_DEVCTL_ERROR __DIOF(_DCMD_MISC, CAN_CMD_CODE + 100, struct can_devctl_error)
Argument | Value |
---|---|
filedes | A file descriptor that you obtained by opening the device |
dcmd | CAN_DEVCTL_ERROR |
dev_data_ptr | A pointer to a CAN_DEVCTL_ERROR structure |
n_bytes | sizeof(CAN_DEVCTL_ERROR) |
dev_info_ptr | NULL |
This command gets driver-specific error information. The driver might reset some of the information when you use this command; see src/hardware/can/board_name/board_namecan.readme in your BSP.
None.
The error information. The CAN_DEVCTL_ERROR structure is defined as follows:
typedef struct can_devctl_error { uint32_t drvr1; uint32_t drvr2; uint32_t drvr3; uint32_t drvr4; } CAN_DEVCTL_ERROR;
For details, see src/hardware/can/board_name/board_namecan.readme in your Board Support Package.
int ret; struct can_devctl_error derror; if( (fd = open( "/dev/can1/rx0", O_RDWR)) == -1 ) { printf("open of %s failed \n", devname); exit(EXIT_FAILURE); } if(EOK != (ret = devctl(fd, CAN_DEVCTL_ERROR, &derror, sizeof(derror), NULL))) { fprintf(stderr, "devctl CAN_DEVCTL_ERROR: %s\n", strerror(ret)); } else { printf("ERROR drvr1 = 0x%X\n", derror.drvr1); printf("ERROR drvr2 = 0x%X\n", derror.drvr2); printf("ERROR drvr3 = 0x%X\n", derror.drvr3); printf("ERROR drvr4 = 0x%X\n", derror.drvr4); }