Ejemplo n.º 1
0
/**
 * @brief MainWindow::on_pushButtonRefresh_clicked
 */
void MainWindow::on_pushButtonRefresh_clicked()
{
    qDebug() debugprefix << "on_pushButtonRefresh_clicked() scanning channels" ;
    int c,i;
    treeWidgetItems.clear();
    ui->treeWidgetInterfaces->clear();
    canStatus stat = canGetNumberOfChannels(&c);
    if( canOK == stat ){
        for (i=0; i < c; i++) {
            char tmp[255];
            stat = canGetChannelData(i, canCHANNELDATA_DEVDESCR_ASCII, &tmp, sizeof(tmp));
            if (stat < 0){
                char buf[128];
                canGetErrorText(stat,buf,128);
                qDebug() debugprefix << "canGetChannelData() " << buf ;
            }else{
                QTreeWidgetItem *port = new QTreeWidgetItem(ui->treeWidgetInterfaces);
                QTreeWidgetItem *name = new QTreeWidgetItem(port);
                port->setText(0, QString().setNum(i,10));
                name->setText(0, QString(tmp));
                qDebug() debugprefix << "canGetChannelData("<< i << ") " << tmp;
                port->setExpanded(true);
            }
        }
    }else{
        char buf[128];
        canGetErrorText(stat,buf,128);
        qDebug() debugprefix << "canGetNumberOfChannels() " << buf ;
    }
}
Ejemplo n.º 2
0
/**
* \brief         This function will create a single network with available single hardware.
* \param         void
* \return        returns defERR_OK (always)
* \authors       [email protected]
* \date          05.29.2015 Created
*/
static int nCreateSingleHardwareNetwork()
{
    /* Set the number of channels as 1 */
    sg_ucNoOfHardware = (UCHAR)1;
    sg_nNoOfChannels = 1;

    sg_aodChannels[0].m_nChannel = 0;

    /* Update channel info */

    //char acVendor[MAX_CHAR_LONG];
    char chBuffer[512];
    DWORD dwFirmWare[2];

    canGetChannelData(0, canCHANNELDATA_CARD_SERIAL_NO,
                      chBuffer, sizeof(chBuffer));
    sscanf_s( chBuffer, "%ld", &sg_HardwareIntr[0].m_dwVendor );

    canGetChannelData(0, canCHANNELDATA_CHANNEL_NAME,
                      chBuffer, sizeof(chBuffer));

    sg_HardwareIntr[0].m_acDescription = chBuffer;

    if(sg_HardwareIntr[0].m_acDescription.find(" LIN ",0)!=std::string::npos)
    {

        /* Get Firmware info */
        canGetChannelData(0, canCHANNELDATA_CARD_FIRMWARE_REV, dwFirmWare, sizeof(dwFirmWare));

        sprintf(chBuffer,"0x%08lx 0x%08lx", dwFirmWare[0], dwFirmWare[1]);
        sg_HardwareIntr[0].m_acDeviceName = chBuffer;

        sprintf(sg_aodChannels[0].m_strName , _("%s, Serial Number: %ld, Firmware: %s"),
                sg_HardwareIntr[0].m_acDescription.c_str(),
                sg_HardwareIntr[0].m_dwVendor,
                sg_HardwareIntr[0].m_acDeviceName.c_str());
    }
    else
    {
        sg_ucNoOfHardware = (UCHAR)0;
        sg_nNoOfChannels = 0;
        return HW_INTERFACE_NO_SEL;
    }


    return defERR_OK;
}
Ejemplo n.º 3
0
void main(int argc, char* argv[])
{
    canStatus stat;
    int i, chanCount;

    printf("Starting...\n");

    canInitializeLibrary();

    stat = canGetNumberOfChannels(&chanCount);
    Check("canGetNumberOfChannels", stat);
    if (chanCount<0 || chanCount > 1000) {
        printf("ChannelCount = %d but I don't believe it.\n", chanCount);
        exit(1);
    } else {
        printf("%d channels.\n", chanCount);
    }

    for (i=0; i<chanCount; i++) {
        DWORD tmp;
        DWORD quad[2];
        char name[64];
        unsigned long ean[2];

        printf("== Channel %d ===============================\n", i);

        stat = canGetChannelData(i, canCHANNELDATA_CHANNEL_CAP, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("Channel Capabilities =  0x%08lx ", tmp);
        if (tmp & canCHANNEL_CAP_EXTENDED_CAN) printf("Ext ");
        if (tmp & canCHANNEL_CAP_BUS_STATISTICS) printf("Stat ");
        if (tmp & canCHANNEL_CAP_ERROR_COUNTERS) printf("ErrCnt ");
        if (tmp & canCHANNEL_CAP_CAN_DIAGNOSTICS) printf("Diag ");
        if (tmp & canCHANNEL_CAP_GENERATE_ERROR) printf("ErrGen ");
        if (tmp & canCHANNEL_CAP_GENERATE_OVERLOAD) printf("OvlGen ");
        if (tmp & canCHANNEL_CAP_TXREQUEST) printf("TxRq ");
        if (tmp & canCHANNEL_CAP_TXACKNOWLEDGE) printf("TxAck ");
        if (tmp & canCHANNEL_CAP_VIRTUAL) printf("Virt ");
        if (tmp & canCHANNEL_CAP_SIMULATED) printf("Simulated ");
        if (tmp & canCHANNEL_CAP_REMOTE) printf("Remote ");

        printf("\n");

        stat = canGetChannelData(i, canCHANNELDATA_TRANS_CAP, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("DRVcan Capabilities =   0x%08lx ", tmp);
        if (tmp & canDRIVER_CAP_HIGHSPEED) printf("HiSpd ");
        printf("\n");

        stat = canGetChannelData(i, canCHANNELDATA_CHANNEL_FLAGS, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("Channel Flags =         0x%08lx\n", tmp);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_TYPE, &tmp, sizeof(tmp));
        Check("canGetChannelData", stat);
        printf("Board type =            0x%08lx", tmp);
        switch (tmp) {
        case canHWTYPE_NONE:
            printf(" (Unknown)\n");
            break;
        case canHWTYPE_VIRTUAL:
            printf(" (Virtual)\n");
            break;
        case canHWTYPE_LAPCAN:
            printf(" (LAPcan family)\n");
            break;
        case canHWTYPE_PCCAN:
            printf(" (PCcan Family)\n");
            break;
        case canHWTYPE_PCICAN:
            printf(" (PCIcan Family)\n");
            break;
        case canHWTYPE_USBCAN:
            printf(" (USBcan Family)\n");
            break;
        case canHWTYPE_PCICAN_II:
            printf(" (PCIcan II Family)\n");
            break;
        case canHWTYPE_USBCAN_II:
            printf(" (USBcan II Family (including Kvaser Memorator))\n");
            break;
        case canHWTYPE_LEAF:
            printf(" (Kvaser Leaf Family)\n");
            break;
        case canHWTYPE_PC104_PLUS:
            printf(" (PC104+ Family)\n");
            break;
        case canHWTYPE_PCICANX_II:
            printf(" (PCIcanx II Family)\n");
            break;
        case canHWTYPE_MEMORATOR_PRO:
        case canHWTYPE_UVP:
            printf(" (Kvaser Memorator Professional Family)\n");
            break;
        case canHWTYPE_USBCAN_PRO:
            printf(" (Kvaser USBcan Professional Family)\n");
            break;
        case canHWTYPE_IRIS:
            printf(" (Kvaser BlackBird)\n");
            break;
        case canHWTYPE_EAGLE:
            printf(" (Kvaser Eagle)\n");
            break;
        case canHWTYPE_MINIPCIE:
            printf(" (Kvaser Mini PCI Express)\n");
            break;
        case canHWTYPE_USBCAN_LIGHT:
            printf(" (Kvaser USBcan Light)\n");
            break;
        default:
            printf(" (Unsupported)\n");
            break;
        }

        stat = canGetChannelData(i, canCHANNELDATA_CARD_NUMBER, &tmp, sizeof(tmp));
        Check("canCHANNELDATA_CARD_NUMBER", stat);
        printf("Board Number =          0x%08lx\n", tmp);

        stat = canGetChannelData(i, canCHANNELDATA_CHAN_NO_ON_CARD, &tmp, sizeof(tmp));
        Check("canCHANNELDATA_CHAN_NO_ON_CARD", stat);
        printf("Channel no on board =   0x%08lx\n", tmp);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_SERIAL_NO, quad, sizeof(quad));
        Check("canCHANNELDATA_CARD_SERIAL_NO", stat);
        printf("Board S/N =             0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_TRANS_SERIAL_NO, quad, sizeof(quad));
        Check("canCHANNELDATA_TRANS_SERIAL_NO", stat);
        printf("DRVcan S/N =            0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_FIRMWARE_REV, quad, sizeof(quad));
        Check("canCHANNELDATA_CARD_FIRMWARE_REV", stat);
        printf("Board F/W version =     0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_HARDWARE_REV, quad, sizeof(quad));
        Check("canCHANNELDATA_CARD_HARDWARE_REV", stat);
        printf("Board H/W version =     0x%08lx 0x%08lx\n", quad[0], quad[1]);

        stat = canGetChannelData(i, canCHANNELDATA_CARD_UPC_NO, ean, sizeof(ean));
        Check("canCHANNELDATA_CARD_UPC_NO", stat);
        printf("Board UPC/EAN =         0x%08x 0x%08x\n", ean[1], ean[0]);

        stat = canGetChannelData(i, canCHANNELDATA_TRANS_UPC_NO, ean, sizeof(ean));
        Check("canCHANNELDATA_TRANS_UPC_NO", stat);
        printf("DRVcan UPC/EAN =        0x%08x 0x%08x\n", ean[1], ean[0]);

        stat = canGetChannelData(i, canCHANNELDATA_CHANNEL_NAME, name, sizeof(name));
        Check("canCHANNELDATA_CHANNEL_NAME", stat);
        printf("Channel name =          '%s'\n", name);

        stat = canGetChannelData(i, canCHANNELDATA_REMOTE_OPERATIONAL_MODE, &tmp, sizeof(tmp));
        if (stat != canERR_NOT_IMPLEMENTED) {
            Check("canCHANNELDATA_REMOTE_OPERATIONAL_MODE", stat);
            printf("Operational mode =      %d (%s)\n", tmp, CANCHANNEL_OPMODE_TEXT[tmp]);

            stat = canGetChannelData(i, canCHANNELDATA_REMOTE_PROFILE_NAME, name, sizeof(name));
            Check("canCHANNELDATA_REMOTE_PROFILE_NAME", stat);
            printf("Profile name =          '%s'\n", name);

            stat = canGetChannelData(i, canCHANNELDATA_REMOTE_HOST_NAME, name, sizeof(name));
            Check("canCHANNELDATA_REMOTE_HOST_NAME", stat);
            printf("Remote host name =      '%s'\n", name);

            stat = canGetChannelData(i, canCHANNELDATA_REMOTE_MAC, name, sizeof(name));
            Check("canCHANNELDATA_REMOTE_MAC", stat);
            printf("MAC =                   '%s'\n", name);
        } else {
            printf("Device is not capable of acting in remote operational mode\n");
        }
        printf("\n");

    }
}
Ejemplo n.º 4
0
void main(int argc, char* argv[])
{
    int i;
    canStatus stat;
    char tmpS[256];

    // Default values.
    First = 0;
    Second = 1;
    Bitrate = 1000000;
    LoopCount = 1;

    Verbose = 2;
    QuitOnError = 1;

    ErrorsFound = 0;
    FirstHardwareType = 0;
    SecondHardwareType = 0;
    
    if (argc <= 1) Usage();
    
    // Parse the command line.
    for (i=1; i<argc; i++) {
        int tmp;
        char c;
        if (strcmp(argv[i], "-s") == 0) Verbose=0;
        else if (strcmp(argv[i], "-silent") == 0) Verbose=0;
        else if (strcmp(argv[i], "-i") == 0) QuitOnError = FALSE;
        else if (sscanf(argv[i], "-a%d%c", &tmp, &c) == 1) First = tmp;
        else if (sscanf(argv[i], "-b%d%c", &tmp, &c) == 1) Second = tmp;
        else if (sscanf(argv[i], "-B%d%c", &tmp, &c) == 1) Bitrate = tmp;
        else if (sscanf(argv[i], "-randomize=%d%c", &tmp, &c) == 1) srand(tmp);
        else if (sscanf(argv[i], "-r=%d%c", &tmp, &c) == 1) srand(tmp);
        else if (strcmp(argv[i], "-r") == 0) randomize();
        else if (strcmp(argv[i], "-randomize") == 0) randomize();
        else if (sscanf(argv[i], "-L%d%c", &tmp, &c) == 1) LoopCount = tmp;
        else if (sscanf(argv[i], "-L=%d%c", &tmp, &c) == 1) LoopCount = tmp;
        else Usage();
    }

    printf("Starting test of time stamps with Kvaser CANLIB API.\n");
    printf("Time stamp resolution:  10 us\n\n");
    
    stat = canLocateHardware();
    Check("canLocateHardware", stat);
    
    stat = canGetChannelData(First, canCHANNELDATA_CHANNEL_NAME, tmpS, sizeof(tmpS));
    Check("canGetChannelData", stat);
    if (Verbose) printf("First channel:  %s.\n", tmpS);
    
    stat = canGetChannelData(Second, canCHANNELDATA_CHANNEL_NAME, tmpS, sizeof(tmpS));
    Check("canGetChannelData", stat);
    if (Verbose) printf("Second channel: %s.\n", tmpS);
    
    stat = canGetChannelData(First, canCHANNELDATA_CARD_TYPE, &FirstHardwareType, sizeof(FirstHardwareType));
    Check("canLocateHardware", stat);
    
    stat = canGetChannelData(Second, canCHANNELDATA_CARD_TYPE, &SecondHardwareType, sizeof(SecondHardwareType));
    Check("canLocateHardware", stat);
    
    PerformTest(argc, argv);

    if (ErrorsFound) {
        printf("\nTest completed with %d ERRORS.\n", ErrorsFound);
    } else {
        printf("\nTest SUCCESSFULLY completed.\n");
    }
    exit(0);
}
Ejemplo n.º 5
0
/**
* \brief         This function will get the hardware selection from the user
*                and will create essential networks.
* \param         unDefaultChannelCnt
* \return        returns defERR_OK (always)
* \authors       [email protected]
* \date          05.29.2015 Created
*/
static int nCreateMultipleHardwareNetwork(UINT unDefaultChannelCnt = 0)
{
    int nHwCount = sg_ucNoOfHardware;
    DWORD dwFirmWare[2];
    char chBuffer[512] = "";
    std::string name;
    int i = 0;
    // Get Hardware Network Map
    for (int nCount = 0; nCount < nHwCount; nCount++)
    {
        canGetChannelData(nCount, canCHANNELDATA_CHANNEL_NAME,
                          chBuffer, sizeof(chBuffer));
        name = chBuffer;

        if(name.find(" LIN ",0)!=std::string::npos)
        {
            sg_HardwareIntr[nCount].m_acDescription = chBuffer;

            sg_HardwareIntr[nCount].m_dwIdInterface = i;

            canGetChannelData(nCount, canCHANNELDATA_CARD_SERIAL_NO,
                              chBuffer, sizeof(chBuffer));
            sscanf_s( chBuffer, "%ld", &sg_HardwareIntr[nCount].m_dwVendor );

            //Get Firmware info
            canGetChannelData(nCount, canCHANNELDATA_CARD_FIRMWARE_REV, dwFirmWare, sizeof(dwFirmWare));

            sprintf_s(chBuffer, sizeof(chBuffer), "0x%08lx 0x%08lx", dwFirmWare[0], dwFirmWare[1]);
            sg_HardwareIntr[nCount].m_acDeviceName = chBuffer;
            //sprintf(sg_HardwareIntr[nCount].m_acDeviceName,"0x%08lx 0x%08lx", dwFirmWare[0], dwFirmWare[1]);

            canGetChannelData(nCount, canCHANNELDATA_CHANNEL_FLAGS, chBuffer, sizeof(chBuffer));
            i++;
        }
    }
    nHwCount = i;

    /* If the default channel count parameter is set, prevent displaying the hardware selection dialog */
    if ( unDefaultChannelCnt && nHwCount >= unDefaultChannelCnt )
    {
        for (UINT i = 0; i < unDefaultChannelCnt; i++)
        {
            sg_anSelectedItems[i] = i;
        }
        nHwCount = unDefaultChannelCnt;
    }
    else if ( ListHardwareInterfaces(sg_hOwnerWnd, DRIVER_LIN_KVASER, sg_HardwareIntr, sg_anSelectedItems, nHwCount) != 0 )
    {
        return HW_INTERFACE_NO_SEL;
    }
    sg_ucNoOfHardware = (UCHAR)nHwCount;
    sg_nNoOfChannels = (UINT)nHwCount;

    //Reorder hardware interface as per the user selection
    for (int nCount = 0; nCount < sg_ucNoOfHardware; nCount++)
    {
        sg_aodChannels[nCount].m_nChannel = sg_HardwareIntr[sg_anSelectedItems[nCount]].m_dwIdInterface;
        sprintf(sg_aodChannels[nCount].m_strName , _("Kvaser - %s, Serial Number- %ld, Firmware- %s"),
                sg_HardwareIntr[sg_anSelectedItems[nCount]].m_acDescription.c_str(),
                sg_HardwareIntr[sg_anSelectedItems[nCount]].m_dwVendor,
                sg_HardwareIntr[sg_anSelectedItems[nCount]].m_acDeviceName.c_str());
    }

    return defERR_OK;
}