CAN_DEVCTL_ERROR
QNX SDP8.0Devctl and Ioctl CommandsDeveloper
Get error information
Synopsis:
#include <sys/can_dcmd.h>
#define CAN_DEVCTL_ERROR   __DIOF(_DCMD_MISC, CAN_CMD_CODE + 100, struct can_devctl_error)
Arguments to devctl():
| 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 | 
Description:
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.
Input:
None.
Output:
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.
Example:
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);
}
See also:
devctl() in the QNX OS C Library Reference
canctl in the Utilities Reference
Page updated: 
