Changeset 116 in pacpussensors for trunk/CanGateway/driver/KVaserCanDriver.cpp


Ignore:
Timestamp:
12/16/15 16:57:50 (9 years ago)
Author:
ydroniou
Message:

Fix KVaser for Linux \o/

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CanGateway/driver/KVaserCanDriver.cpp

    r94 r116  
    44
    55#include "KVaserCanDriver.h"
     6/*
    67#ifdef WIN32
    78#include "kvaser/windows/canlib.h"
     
    910#include "kvaser/linux/canlib.h"
    1011#endif
     12*/
     13
     14
     15#include <canlib.h>
     16
    1117#include <cassert>
    1218#include <cstdio>
     
    4450// Check a status code and issue an error message if the code isn't canOK.
    4551//
    46 void ErrorExit(char* id, canStatus stat)
     52void ErrorExit(string id, canStatus stat)
    4753{
    4854    char buf[50];
     
    123129
    124130
    125 void KVaserCanDriver::displayHardware() 
     131void KVaserCanDriver::displayHardware()
    126132{
    127133        LOG_INFO("----------------------------------------------------------");
     
    139145  canHandle_ = canOpenChannel(hwChannel, 0);
    140146    if (canHandle_ < 0) {
    141         ErrorExit("canOpenChannel", (canStatus)canHandle_);
     147        ErrorExit("canOpenChannel", (canStatus) canHandle_);
    142148    }
    143         else 
     149        else
    144150        {
    145151                int ret = 0;
     
    153159                                break;
    154160                        case 500000:
    155                                 ret = canSetBusParams(canHandle_, canBITRATE_500K, 0, 0, 0, 0, 0);
     161                                ret = canSetBusParams(canHandle_, canBITRATE_500K, 4, 3, 1, 1, 0);
    156162                                break;
    157163                        default:
     
    166172                if (ret < 0) {
    167173                        ErrorExit("canBusOn", (canStatus)ret);
    168        
     174
    169175                }
    170176        }
     
    184190    canInitializeLibrary();
    185191#endif
    186    
     192
    187193        // open the physical CAN interface
    188194        initialize(kvaserHardwareType_, canChannel_, canBitRate_);
     
    199205short KVaserCanDriver::cleanUpPort (void)
    200206{
    201        
     207
    202208        //traceXLCommand("xlCloseDriver", xlCloseDriver());
    203209
     
    215221{
    216222        canStatus stat = canWrite(canHandle_, frame.id,frame.data, frame.dlc, 0);
    217         if (stat == canOK ) 
     223        if (stat == canOK )
    218224        {
    219225                return 0;
    220226        } else {
    221227                LOG_WARN("Kvaser driver - sendFrame method - Failed to send the CAN frame");
    222                 return 1; 
     228                return 1;
    223229        }
    224230}
     
    236242        //DWORD timestamp;
    237243        unsigned long timestamp;
    238        
     244
    239245        canStatus stat = canReadWait(canHandle_, &id, msg, &dlc, &flags, &timestamp, WAIT_RECEIVING_FRAME_TIMEOUT);
    240         if (stat == canOK ) 
     246        if (stat == canOK )
    241247        {
    242                 if ((flags & canMSG_ERROR_FRAME) == 0) 
     248                if ((flags & canMSG_ERROR_FRAME) == 0)
    243249                {
    244250                        // Get the message data
     
    254260                        memcpy(frame.data, msg, frame.dlc);
    255261                        return 0;
    256                 } 
    257         } 
     262                }
     263        }
    258264        else if (stat == canERR_NOMSG ) {
    259265                        // timeout occurs
    260266                        LOG_WARN("Kvaser card - receiveFrame() method - TIMEOUT");
    261267                        return 1;
    262         } 
     268        }
    263269        else {
    264270                        // An error frame.
Note: See TracChangeset for help on using the changeset viewer.