| 1 | /**************************************************************************** | 
| 2 | ** | 
| 3 | ** Copyright (C) 2017 Denis Shienkov <denis.shienkov@gmail.com> | 
| 4 | ** Copyright (C) 2017 The Qt Company Ltd. | 
| 5 | ** Contact: http://www.qt.io/licensing/ | 
| 6 | ** | 
| 7 | ** This file is part of the QtSerialBus module of the Qt Toolkit. | 
| 8 | ** | 
| 9 | ** $QT_BEGIN_LICENSE:LGPL3$ | 
| 10 | ** Commercial License Usage | 
| 11 | ** Licensees holding valid commercial Qt licenses may use this file in | 
| 12 | ** accordance with the commercial license agreement provided with the | 
| 13 | ** Software or, alternatively, in accordance with the terms contained in | 
| 14 | ** a written agreement between you and The Qt Company. For licensing terms | 
| 15 | ** and conditions see http://www.qt.io/terms-conditions. For further | 
| 16 | ** information use the contact form at http://www.qt.io/contact-us. | 
| 17 | ** | 
| 18 | ** GNU Lesser General Public License Usage | 
| 19 | ** Alternatively, this file may be used under the terms of the GNU Lesser | 
| 20 | ** General Public License version 3 as published by the Free Software | 
| 21 | ** Foundation and appearing in the file LICENSE.LGPLv3 included in the | 
| 22 | ** packaging of this file. Please review the following information to | 
| 23 | ** ensure the GNU Lesser General Public License version 3 requirements | 
| 24 | ** will be met: https://www.gnu.org/licenses/lgpl.html. | 
| 25 | ** | 
| 26 | ** GNU General Public License Usage | 
| 27 | ** Alternatively, this file may be used under the terms of the GNU | 
| 28 | ** General Public License version 2.0 or later as published by the Free | 
| 29 | ** Software Foundation and appearing in the file LICENSE.GPL included in | 
| 30 | ** the packaging of this file. Please review the following information to | 
| 31 | ** ensure the GNU General Public License version 2.0 requirements will be | 
| 32 | ** met: http://www.gnu.org/licenses/gpl-2.0.html. | 
| 33 | ** | 
| 34 | ** $QT_END_LICENSE$ | 
| 35 | ** | 
| 36 | ****************************************************************************/ | 
| 37 |  | 
| 38 | #ifndef PEAKCAN_SYMBOLS_P_H | 
| 39 | #define PEAKCAN_SYMBOLS_P_H | 
| 40 |  | 
| 41 | // | 
| 42 | //  W A R N I N G | 
| 43 | //  ------------- | 
| 44 | // | 
| 45 | // This file is not part of the Qt API.  It exists purely as an | 
| 46 | // implementation detail.  This header file may change from version to | 
| 47 | // version without notice, or even be removed. | 
| 48 | // | 
| 49 | // We mean it. | 
| 50 | // | 
| 51 |  | 
| 52 | #include <QtCore/qlibrary.h> | 
| 53 | #include <QtCore/qstring.h> | 
| 54 | #include <QtCore/qdebug.h> | 
| 55 |  | 
| 56 | #ifdef Q_OS_WIN32 | 
| 57 | #   include <windows.h> | 
| 58 | #   define DRV_CALLBACK_TYPE WINAPI | 
| 59 | #else | 
| 60 | #   define DRV_CALLBACK_TYPE | 
| 61 | #endif | 
| 62 |  | 
| 63 | // Currently defined and supported PCAN channels | 
| 64 | #define PCAN_NONEBUS             0x00U  // Undefined/default value for a PCAN bus | 
| 65 |  | 
| 66 | #define PCAN_ISABUS1             0x21U  // PCAN-ISA interface, channel 1 | 
| 67 | #define PCAN_ISABUS2             0x22U  // PCAN-ISA interface, channel 2 | 
| 68 | #define PCAN_ISABUS3             0x23U  // PCAN-ISA interface, channel 3 | 
| 69 | #define PCAN_ISABUS4             0x24U  // PCAN-ISA interface, channel 4 | 
| 70 | #define PCAN_ISABUS5             0x25U  // PCAN-ISA interface, channel 5 | 
| 71 | #define PCAN_ISABUS6             0x26U  // PCAN-ISA interface, channel 6 | 
| 72 | #define PCAN_ISABUS7             0x27U  // PCAN-ISA interface, channel 7 | 
| 73 | #define PCAN_ISABUS8             0x28U  // PCAN-ISA interface, channel 8 | 
| 74 |  | 
| 75 | #define PCAN_DNGBUS1             0x31U  // PCAN-Dongle/LPT interface, channel 1 | 
| 76 |  | 
| 77 | #define PCAN_PCIBUS1             0x41U   // PCAN-PCI interface, channel 1 | 
| 78 | #define PCAN_PCIBUS2             0x42U   // PCAN-PCI interface, channel 2 | 
| 79 | #define PCAN_PCIBUS3             0x43U   // PCAN-PCI interface, channel 3 | 
| 80 | #define PCAN_PCIBUS4             0x44U   // PCAN-PCI interface, channel 4 | 
| 81 | #define PCAN_PCIBUS5             0x45U   // PCAN-PCI interface, channel 5 | 
| 82 | #define PCAN_PCIBUS6             0x46U   // PCAN-PCI interface, channel 6 | 
| 83 | #define PCAN_PCIBUS7             0x47U   // PCAN-PCI interface, channel 7 | 
| 84 | #define PCAN_PCIBUS8             0x48U   // PCAN-PCI interface, channel 8 | 
| 85 | #define PCAN_PCIBUS9             0x409U  // PCAN-PCI interface, channel 9 | 
| 86 | #define PCAN_PCIBUS10            0x40AU  // PCAN-PCI interface, channel 10 | 
| 87 | #define PCAN_PCIBUS11            0x40BU  // PCAN-PCI interface, channel 11 | 
| 88 | #define PCAN_PCIBUS12            0x40CU  // PCAN-PCI interface, channel 12 | 
| 89 | #define PCAN_PCIBUS13            0x40DU  // PCAN-PCI interface, channel 13 | 
| 90 | #define PCAN_PCIBUS14            0x40EU  // PCAN-PCI interface, channel 14 | 
| 91 | #define PCAN_PCIBUS15            0x40FU  // PCAN-PCI interface, channel 15 | 
| 92 | #define PCAN_PCIBUS16            0x410U  // PCAN-PCI interface, channel 16 | 
| 93 |  | 
| 94 | #define PCAN_USBBUS1             0x51U   // PCAN-USB interface, channel 1 | 
| 95 | #define PCAN_USBBUS2             0x52U   // PCAN-USB interface, channel 2 | 
| 96 | #define PCAN_USBBUS3             0x53U   // PCAN-USB interface, channel 3 | 
| 97 | #define PCAN_USBBUS4             0x54U   // PCAN-USB interface, channel 4 | 
| 98 | #define PCAN_USBBUS5             0x55U   // PCAN-USB interface, channel 5 | 
| 99 | #define PCAN_USBBUS6             0x56U   // PCAN-USB interface, channel 6 | 
| 100 | #define PCAN_USBBUS7             0x57U   // PCAN-USB interface, channel 7 | 
| 101 | #define PCAN_USBBUS8             0x58U   // PCAN-USB interface, channel 8 | 
| 102 | #define PCAN_USBBUS9             0x509U  // PCAN-USB interface, channel 9 | 
| 103 | #define PCAN_USBBUS10            0x50AU  // PCAN-USB interface, channel 10 | 
| 104 | #define PCAN_USBBUS11            0x50BU  // PCAN-USB interface, channel 11 | 
| 105 | #define PCAN_USBBUS12            0x50CU  // PCAN-USB interface, channel 12 | 
| 106 | #define PCAN_USBBUS13            0x50DU  // PCAN-USB interface, channel 13 | 
| 107 | #define PCAN_USBBUS14            0x50EU  // PCAN-USB interface, channel 14 | 
| 108 | #define PCAN_USBBUS15            0x50FU  // PCAN-USB interface, channel 15 | 
| 109 | #define PCAN_USBBUS16            0x510U  // PCAN-USB interface, channel 16 | 
| 110 |  | 
| 111 | #define PCAN_PCCBUS1             0x61U  // PCAN-PC Card interface, channel 1 | 
| 112 | #define PCAN_PCCBUS2             0x62U  // PCAN-PC Card interface, channel 2 | 
| 113 |  | 
| 114 | #define PCAN_LANBUS1             0x801U  // PCAN-LAN interface, channel 1 | 
| 115 | #define PCAN_LANBUS2             0x802U  // PCAN-LAN interface, channel 2 | 
| 116 | #define PCAN_LANBUS3             0x803U  // PCAN-LAN interface, channel 3 | 
| 117 | #define PCAN_LANBUS4             0x804U  // PCAN-LAN interface, channel 4 | 
| 118 | #define PCAN_LANBUS5             0x805U  // PCAN-LAN interface, channel 5 | 
| 119 | #define PCAN_LANBUS6             0x806U  // PCAN-LAN interface, channel 6 | 
| 120 | #define PCAN_LANBUS7             0x807U  // PCAN-LAN interface, channel 7 | 
| 121 | #define PCAN_LANBUS8             0x808U  // PCAN-LAN interface, channel 8 | 
| 122 | #define PCAN_LANBUS9             0x809U  // PCAN-LAN interface, channel 9 | 
| 123 | #define PCAN_LANBUS10            0x80AU  // PCAN-LAN interface, channel 10 | 
| 124 | #define PCAN_LANBUS11            0x80BU  // PCAN-LAN interface, channel 11 | 
| 125 | #define PCAN_LANBUS12            0x80CU  // PCAN-LAN interface, channel 12 | 
| 126 | #define PCAN_LANBUS13            0x80DU  // PCAN-LAN interface, channel 13 | 
| 127 | #define PCAN_LANBUS14            0x80EU  // PCAN-LAN interface, channel 14 | 
| 128 | #define PCAN_LANBUS15            0x80FU  // PCAN-LAN interface, channel 15 | 
| 129 | #define PCAN_LANBUS16            0x810U  // PCAN-LAN interface, channel 16 | 
| 130 |  | 
| 131 | // Represent the PCAN error and status codes | 
| 132 | #define PCAN_ERROR_OK            0x00000U  // No error | 
| 133 | #define PCAN_ERROR_XMTFULL       0x00001U  // Transmit buffer in CAN controller is full | 
| 134 | #define PCAN_ERROR_OVERRUN       0x00002U  // CAN controller was read too late | 
| 135 | #define PCAN_ERROR_BUSLIGHT      0x00004U  // Bus error: an error counter reached the 'light' limit | 
| 136 | #define PCAN_ERROR_BUSHEAVY      0x00008U  // Bus error: an error counter reached the 'heavy' limit | 
| 137 | #define PCAN_ERROR_BUSWARNING    PCAN_ERROR_BUSHEAVY // Bus error: an error counter reached the 'warning' limit | 
| 138 | #define PCAN_ERROR_BUSPASSIVE    0x40000U  // Bus error: the CAN controller is error passive | 
| 139 | #define PCAN_ERROR_BUSOFF        0x00010U  // Bus error: the CAN controller is in bus-off state | 
| 140 | #define PCAN_ERROR_ANYBUSERR     (PCAN_ERROR_BUSWARNING | PCAN_ERROR_BUSLIGHT | PCAN_ERROR_BUSHEAVY | PCAN_ERROR_BUSOFF | PCAN_ERROR_BUSPASSIVE) // Mask for all bus errors | 
| 141 | #define PCAN_ERROR_QRCVEMPTY     0x00020U  // Receive queue is empty | 
| 142 | #define PCAN_ERROR_QOVERRUN      0x00040U  // Receive queue was read too late | 
| 143 | #define PCAN_ERROR_QXMTFULL      0x00080U  // Transmit queue is full | 
| 144 | #define PCAN_ERROR_REGTEST       0x00100U  // Test of the CAN controller hardware registers failed (no hardware found) | 
| 145 | #define PCAN_ERROR_NODRIVER      0x00200U  // Driver not loaded | 
| 146 | #define PCAN_ERROR_HWINUSE       0x00400U  // Hardware already in use by a Net | 
| 147 | #define PCAN_ERROR_NETINUSE      0x00800U  // A Client is already connected to the Net | 
| 148 | #define PCAN_ERROR_ILLHW         0x01400U  // Hardware handle is invalid | 
| 149 | #define PCAN_ERROR_ILLNET        0x01800U  // Net handle is invalid | 
| 150 | #define PCAN_ERROR_ILLCLIENT     0x01C00U  // Client handle is invalid | 
| 151 | #define PCAN_ERROR_ILLHANDLE     (PCAN_ERROR_ILLHW | PCAN_ERROR_ILLNET | PCAN_ERROR_ILLCLIENT)  // Mask for all handle errors | 
| 152 | #define PCAN_ERROR_RESOURCE      0x02000U  // Resource (FIFO, Client, timeout) cannot be created | 
| 153 | #define PCAN_ERROR_ILLPARAMTYPE  0x04000U  // Invalid parameter | 
| 154 | #define PCAN_ERROR_ILLPARAMVAL   0x08000U  // Invalid parameter value | 
| 155 | #define PCAN_ERROR_UNKNOWN       0x10000U  // Unknown error | 
| 156 | #define PCAN_ERROR_ILLDATA       0x20000U  // Invalid data, function, or action | 
| 157 | #define PCAN_ERROR_CAUTION       0x2000000U  // An operation was successfully carried out, however, irregularities were registered | 
| 158 | #define PCAN_ERROR_INITIALIZE    0x4000000U  // Channel is not initialized [Value was changed from 0x40000 to 0x4000000] | 
| 159 | #define PCAN_ERROR_ILLOPERATION  0x8000000U  // Invalid operation [Value was changed from 0x80000 to 0x8000000] | 
| 160 |  | 
| 161 | // PCAN devices | 
| 162 | #define PCAN_NONE                0x00U  // Undefined, unknown or not selected PCAN device value | 
| 163 | #define PCAN_PEAKCAN             0x01U  // PCAN Non-Plug&Play devices. NOT USED WITHIN PCAN-Basic API | 
| 164 | #define PCAN_ISA                 0x02U  // PCAN-ISA, PCAN-PC/104, and PCAN-PC/104-Plus | 
| 165 | #define PCAN_DNG                 0x03U  // PCAN-Dongle | 
| 166 | #define PCAN_PCI                 0x04U  // PCAN-PCI, PCAN-cPCI, PCAN-miniPCI, and PCAN-PCI Express | 
| 167 | #define PCAN_USB                 0x05U  // PCAN-USB and PCAN-USB Pro | 
| 168 | #define PCAN_PCC                 0x06U  // PCAN-PC Card | 
| 169 |  | 
| 170 | // PCAN parameters | 
| 171 | #define PCAN_DEVICE_NUMBER       0x01U  // PCAN-USB device number parameter | 
| 172 | #define PCAN_5VOLTS_POWER        0x02U  // PCAN-PC Card 5-Volt power parameter | 
| 173 | #define PCAN_RECEIVE_EVENT       0x03U  // PCAN receive event handler parameter | 
| 174 | #define PCAN_MESSAGE_FILTER      0x04U  // PCAN message filter parameter | 
| 175 | #define PCAN_API_VERSION         0x05U  // PCAN-Basic API version parameter | 
| 176 | #define PCAN_CHANNEL_VERSION     0x06U  // PCAN device channel version parameter | 
| 177 | #define PCAN_BUSOFF_AUTORESET    0x07U  // PCAN Reset-On-Busoff parameter | 
| 178 | #define PCAN_LISTEN_ONLY         0x08U  // PCAN Listen-Only parameter | 
| 179 | #define PCAN_LOG_LOCATION        0x09U  // Directory path for log files | 
| 180 | #define PCAN_LOG_STATUS          0x0AU  // Debug-Log activation status | 
| 181 | #define PCAN_LOG_CONFIGURE       0x0BU  // Configuration of the debugged information (LOG_FUNCTION_***) | 
| 182 | #define PCAN_LOG_TEXT            0x0CU  // Custom insertion of text into the log file | 
| 183 | #define PCAN_CHANNEL_CONDITION   0x0DU  // Availability status of a PCAN-Channel | 
| 184 | #define PCAN_HARDWARE_NAME       0x0EU  // PCAN hardware name parameter | 
| 185 | #define PCAN_RECEIVE_STATUS      0x0FU  // Message reception status of a PCAN-Channel | 
| 186 | #define PCAN_CONTROLLER_NUMBER   0x10U  // CAN-Controller number of a PCAN-Channel | 
| 187 | #define PCAN_TRACE_LOCATION      0x11U  // Directory path for PCAN trace files | 
| 188 | #define PCAN_TRACE_STATUS        0x12U  // CAN tracing activation status | 
| 189 | #define PCAN_TRACE_SIZE          0x13U  // Configuration of the maximum file size of a CAN trace | 
| 190 | #define PCAN_TRACE_CONFIGURE     0x14U  // Configuration of the trace file storing mode (TRACE_FILE_***) | 
| 191 | #define PCAN_CHANNEL_IDENTIFYING 0x15U  // Physical identification of a USB based PCAN-Channel by blinking its associated LED | 
| 192 | #define PCAN_CHANNEL_FEATURES    0x16U  // Capabilities of a PCAN device (FEATURE_***) | 
| 193 | #define PCAN_BITRATE_ADAPTING    0x17U  // Using of an existing bit rate (PCAN-View connected to a channel) | 
| 194 | #define PCAN_BITRATE_INFO        0x18U  // Configured bit rate as Btr0Btr1 value | 
| 195 | #define PCAN_BITRATE_INFO_FD     0x19U  // Configured bit rate as TPCANBitrateFD string | 
| 196 | #define PCAN_BUSSPEED_NOMINAL    0x1AU  // Configured nominal CAN Bus speed as Bits per seconds | 
| 197 | #define PCAN_BUSSPEED_DATA       0x1BU  // Configured CAN data speed as Bits per seconds | 
| 198 | #define PCAN_IP_ADDRESS          0x1CU  // Remote address of a LAN channel as string in IPv4 format | 
| 199 | #define PCAN_LAN_SERVICE_STATUS  0x1DU  // Status of the Virtual PCAN-Gateway Service | 
| 200 |  | 
| 201 | #define FEATURE_FD_CAPABLE       0x01U  // Device supports flexible data-rate (CAN-FD) | 
| 202 |  | 
| 203 | // PCAN parameter values | 
| 204 | #define PCAN_PARAMETER_OFF       0x00U  // The PCAN parameter is not set (inactive) | 
| 205 | #define PCAN_PARAMETER_ON        0x01U  // The PCAN parameter is set (active) | 
| 206 | #define PCAN_FILTER_CLOSE        0x00U  // The PCAN filter is closed. No messages will be received | 
| 207 | #define PCAN_FILTER_OPEN         0x01U  // The PCAN filter is fully opened. All messages will be received | 
| 208 | #define PCAN_FILTER_CUSTOM       0x02U  // The PCAN filter is custom configured. Only registered messages will be received | 
| 209 | #define PCAN_CHANNEL_UNAVAILABLE 0x00U  // The PCAN-Channel handle is illegal, or its associated hardware is not available | 
| 210 | #define PCAN_CHANNEL_AVAILABLE   0x01U  // The PCAN-Channel handle is available to be connected (Plug&Play Hardware: it means furthermore that the hardware is plugged-in) | 
| 211 | #define PCAN_CHANNEL_OCCUPIED    0x02U  // The PCAN-Channel handle is valid, and is already being used | 
| 212 | #define PCAN_CHANNEL_PCANVIEW    (PCAN_CHANNEL_AVAILABLE | PCAN_CHANNEL_OCCUPIED) // The PCAN-Channel handle is already being used by a PCAN-View application, but is available to connect | 
| 213 |  | 
| 214 | #define LOG_FUNCTION_DEFAULT     0x00U    // Logs system exceptions / errors | 
| 215 | #define LOG_FUNCTION_ENTRY       0x01U    // Logs the entries to the PCAN-Basic API functions | 
| 216 | #define LOG_FUNCTION_PARAMETERS  0x02U    // Logs the parameters passed to the PCAN-Basic API functions | 
| 217 | #define LOG_FUNCTION_LEAVE       0x04U    // Logs the exits from the PCAN-Basic API functions | 
| 218 | #define LOG_FUNCTION_WRITE       0x08U    // Logs the CAN messages passed to the CAN_Write function | 
| 219 | #define LOG_FUNCTION_READ        0x10U    // Logs the CAN messages received within the CAN_Read function | 
| 220 | #define LOG_FUNCTION_ALL         0xFFFFU  // Logs all possible information within the PCAN-Basic API functions | 
| 221 |  | 
| 222 | #define TRACE_FILE_SINGLE        0x00U  // A single file is written until it size reaches PAN_TRACE_SIZE | 
| 223 | #define TRACE_FILE_SEGMENTED     0x01U  // Traced data is distributed in several files with size PAN_TRACE_SIZE | 
| 224 | #define TRACE_FILE_DATE          0x02U  // Includes the date into the name of the trace file | 
| 225 | #define TRACE_FILE_TIME          0x04U  // Includes the start time into the name of the trace file | 
| 226 | #define TRACE_FILE_OVERWRITE     0x80U  // Causes the overwriting of available traces (same name) | 
| 227 |  | 
| 228 | // PCAN message types | 
| 229 | #define PCAN_MESSAGE_STANDARD    0x00U  // The PCAN message is a CAN Standard Frame (11-bit identifier) | 
| 230 | #define PCAN_MESSAGE_RTR         0x01U  // The PCAN message is a CAN Remote-Transfer-Request Frame | 
| 231 | #define PCAN_MESSAGE_EXTENDED    0x02U  // The PCAN message is a CAN Extended Frame (29-bit identifier) | 
| 232 | #define PCAN_MESSAGE_FD          0x04U  // The PCAN message represents a FD frame in terms of CiA Specs | 
| 233 | #define PCAN_MESSAGE_BRS         0x08U  // The PCAN message represents a FD bit rate switch (CAN data at a higher bit rate) | 
| 234 | #define PCAN_MESSAGE_ESI         0x10U  // The PCAN message represents a FD error state indicator(CAN FD transmitter was error active) | 
| 235 | #define PCAN_MESSAGE_STATUS      0x80U  // The PCAN message represents a PCAN status message | 
| 236 |  | 
| 237 | // Frame Type / Initialization Mode | 
| 238 | #define PCAN_MODE_STANDARD       PCAN_MESSAGE_STANDARD | 
| 239 | #define PCAN_MODE_EXTENDED       PCAN_MESSAGE_EXTENDED | 
| 240 |  | 
| 241 | // Baud rate codes = BTR0/BTR1 register values for the CAN controller. | 
| 242 | // You can define your own Baud rate with the BTROBTR1 register. | 
| 243 | // Take a look at www.peak-system.com for our free software "BAUDTOOL" | 
| 244 | // to calculate the BTROBTR1 register for every baudrate and sample point. | 
| 245 | #define PCAN_BAUD_1M             0x0014U  //   1 MBit/s | 
| 246 | #define PCAN_BAUD_800K           0x0016U  // 800 kBit/s | 
| 247 | #define PCAN_BAUD_500K           0x001CU  // 500 kBit/s | 
| 248 | #define PCAN_BAUD_250K           0x011CU  // 250 kBit/s | 
| 249 | #define PCAN_BAUD_125K           0x031CU  // 125 kBit/s | 
| 250 | #define PCAN_BAUD_100K           0x432FU  // 100 kBit/s | 
| 251 | #define PCAN_BAUD_95K            0xC34EU  //  95,238 kBit/s | 
| 252 | #define PCAN_BAUD_83K            0x852BU  //  83,333 kBit/s | 
| 253 | #define PCAN_BAUD_50K            0x472FU  //  50 kBit/s | 
| 254 | #define PCAN_BAUD_47K            0x1414U  //  47,619 kBit/s | 
| 255 | #define PCAN_BAUD_33K            0x8B2FU  //  33,333 kBit/s | 
| 256 | #define PCAN_BAUD_20K            0x532FU  //  20 kBit/s | 
| 257 | #define PCAN_BAUD_10K            0x672FU  //  10 kBit/s | 
| 258 | #define PCAN_BAUD_5K             0x7F7FU  //   5 kBit/s | 
| 259 | #define PCAN_BAUD_INVALID        0xFFFFU  // unknown or invalid baudrate | 
| 260 |  | 
| 261 | #define PCAN_TYPE_ISA            0x01U  // PCAN-ISA 82C200 | 
| 262 | #define PCAN_TYPE_ISA_SJA        0x09U  // PCAN-ISA SJA1000 | 
| 263 | #define PCAN_TYPE_ISA_PHYTEC     0x04U  // PHYTEC ISA | 
| 264 | #define PCAN_TYPE_DNG            0x02U  // PCAN-Dongle 82C200 | 
| 265 | #define PCAN_TYPE_DNG_EPP        0x03U  // PCAN-Dongle EPP 82C200 | 
| 266 | #define PCAN_TYPE_DNG_SJA        0x05U  // PCAN-Dongle SJA1000 | 
| 267 | #define PCAN_TYPE_DNG_SJA_EPP    0x06U  // PCAN-Dongle EPP SJA1000 | 
| 268 |  | 
| 269 | // Type definitions | 
| 270 | #ifdef Q_OS_MACOS | 
| 271 | #define TPCANLong                quint64 | 
| 272 | #define TPCANLongToFrameID(a)    static_cast<quint32>(a) | 
| 273 | #else | 
| 274 | #define TPCANLong                quint32 | 
| 275 | #define TPCANLongToFrameID(a)    a | 
| 276 | #endif | 
| 277 | #define TPCANHandle              quint16   // Represents a PCAN hardware channel handle | 
| 278 | #define TPCANStatus              TPCANLong // Represents a PCAN status/error code | 
| 279 | #define TPCANParameter           quint8    // Represents a PCAN parameter to be read or set | 
| 280 | #define TPCANDevice              quint8    // Represents a PCAN device | 
| 281 | #define TPCANMessageType         quint8    // Represents the type of a PCAN message | 
| 282 | #define TPCANType                quint8    // Represents the type of PCAN hardware to be initialized | 
| 283 | #define TPCANMode                quint8    // Represents a PCAN filter mode | 
| 284 | #define TPCANBaudrate            quint16   // Represents a PCAN Baud rate register value | 
| 285 | #define TPCANBitrateFD           char *    // Represents a PCAN-FD bit rate string | 
| 286 | #define TPCANTimestampFD         quint64   // Represents a timestamp of a received PCAN FD message | 
| 287 |  | 
| 288 | // Represents a PCAN message | 
| 289 | typedef struct tagTPCANMsg | 
| 290 | { | 
| 291 |     TPCANLong           ID;      // 11/29-bit message identifier | 
| 292 |     TPCANMessageType    MSGTYPE; // Type of the message | 
| 293 |     quint8              LEN;     // Data Length Code of the message (0..8) | 
| 294 |     quint8              DATA[8]; // Data of the message (DATA[0]..DATA[7]) | 
| 295 | } TPCANMsg; | 
| 296 |  | 
| 297 | // Represents a timestamp of a received PCAN message | 
| 298 | // Total Microseconds = micros + 1000 * millis + 0xFFFFFFFF * 1000 * millis_overflow | 
| 299 | typedef struct tagTPCANTimestamp | 
| 300 | { | 
| 301 |     TPCANLong   millis;             // Base-value: milliseconds: 0.. 2^32-1 | 
| 302 |     quint16     millis_overflow;    // Roll-arounds of millis | 
| 303 |     quint16     micros;             // Microseconds: 0..999 | 
| 304 | } TPCANTimestamp; | 
| 305 |  | 
| 306 | // Represents a PCAN message from a FD capable hardware | 
| 307 | typedef struct tagTPCANMsgFD | 
| 308 | { | 
| 309 |     TPCANLong         ID;       // 11/29-bit message identifier | 
| 310 |     TPCANMessageType  MSGTYPE;  // Type of the message | 
| 311 |     quint8            DLC;      // Data Length Code of the message (0..15) | 
| 312 |     quint8            DATA[64]; // Data of the message (DATA[0]..DATA[63]) | 
| 313 | } TPCANMsgFD; | 
| 314 |  | 
| 315 | #define GENERATE_SYMBOL_VARIABLE(returnType, symbolName, ...) \ | 
| 316 |     typedef returnType (DRV_CALLBACK_TYPE *fp_##symbolName)(__VA_ARGS__); \ | 
| 317 |     static fp_##symbolName symbolName; | 
| 318 |  | 
| 319 | #define RESOLVE_SYMBOL(symbolName) \ | 
| 320 |     symbolName = reinterpret_cast<fp_##symbolName>(pcanLibrary->resolve(#symbolName)); \ | 
| 321 |     if (!symbolName) \ | 
| 322 |         return false; | 
| 323 |  | 
| 324 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_Initialize, TPCANHandle, TPCANBaudrate, TPCANType, TPCANLong, quint16) | 
| 325 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_InitializeFD, TPCANHandle, TPCANBitrateFD) | 
| 326 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_Uninitialize, TPCANHandle) | 
| 327 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_Reset, TPCANHandle) | 
| 328 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_GetStatus, TPCANHandle) | 
| 329 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_Read, TPCANHandle, TPCANMsg *, TPCANTimestamp *) | 
| 330 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_ReadFD, TPCANHandle, TPCANMsgFD *, TPCANTimestampFD *) | 
| 331 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_Write, TPCANHandle, TPCANMsg *) | 
| 332 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_WriteFD, TPCANHandle, TPCANMsgFD *) | 
| 333 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_FilterMessages, TPCANHandle, TPCANLong, TPCANLong, TPCANMode) | 
| 334 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_GetValue, TPCANHandle, TPCANParameter, void *, TPCANLong) | 
| 335 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_SetValue, TPCANHandle, TPCANParameter, void *, TPCANLong) | 
| 336 | GENERATE_SYMBOL_VARIABLE(TPCANStatus, CAN_GetErrorText, TPCANStatus, quint16, char *) | 
| 337 |  | 
| 338 | inline bool resolvePeakCanSymbols(QLibrary *pcanLibrary) | 
| 339 | { | 
| 340 |     if (!pcanLibrary->isLoaded()) { | 
| 341 |         #ifdef Q_OS_MACOS | 
| 342 |             pcanLibrary->setFileName(QStringLiteral("PCBUSB" )); | 
| 343 |         #else | 
| 344 |             pcanLibrary->setFileName(QStringLiteral("pcanbasic" )); | 
| 345 |         #endif | 
| 346 |         if (!pcanLibrary->load()) | 
| 347 |             return false; | 
| 348 |     } | 
| 349 |  | 
| 350 |     RESOLVE_SYMBOL(CAN_Initialize) | 
| 351 |     RESOLVE_SYMBOL(CAN_InitializeFD) | 
| 352 |     RESOLVE_SYMBOL(CAN_Uninitialize) | 
| 353 |     RESOLVE_SYMBOL(CAN_Reset) | 
| 354 |     RESOLVE_SYMBOL(CAN_GetStatus) | 
| 355 |     RESOLVE_SYMBOL(CAN_Read) | 
| 356 |     RESOLVE_SYMBOL(CAN_ReadFD) | 
| 357 |     RESOLVE_SYMBOL(CAN_Write) | 
| 358 |     RESOLVE_SYMBOL(CAN_WriteFD) | 
| 359 |     RESOLVE_SYMBOL(CAN_FilterMessages) | 
| 360 |     RESOLVE_SYMBOL(CAN_GetValue) | 
| 361 |     RESOLVE_SYMBOL(CAN_SetValue) | 
| 362 |     RESOLVE_SYMBOL(CAN_GetErrorText) | 
| 363 |  | 
| 364 |     return true; | 
| 365 | } | 
| 366 |  | 
| 367 | #endif // PEAKCAN_SYMBOLS_P_H | 
| 368 |  |