1 | /****************************************************************************/
|
---|
2 | /* */
|
---|
3 | /* Softing Automation GmbH Richard-Reitzner-Allee 6 85540 Haar */
|
---|
4 | /* */
|
---|
5 | /****************************************************************************/
|
---|
6 | /* */
|
---|
7 | /* Copyright (c) Softing Industrial Automation GmbH, All rights reserved. */
|
---|
8 | /* */
|
---|
9 | /****************************************************************************/
|
---|
10 | /* */
|
---|
11 | /* C A N L 2 . H */
|
---|
12 | /* */
|
---|
13 | /****************************************************************************/
|
---|
14 | /* */
|
---|
15 | /* MODULE_DESCRIPTION CANL2.H */
|
---|
16 | /* VERSION 5 */
|
---|
17 | /* DATE 01.04.2012 */
|
---|
18 | /* include file for CAN Layer 2 Library */
|
---|
19 | /* function prototypes and return codes */
|
---|
20 | /* */
|
---|
21 | /****************************************************************************/
|
---|
22 | #ifndef _CANL2_H
|
---|
23 | #define _CANL2_H
|
---|
24 |
|
---|
25 |
|
---|
26 | #if defined (WIN16) || defined (DOS)
|
---|
27 | #ifndef noUnicode
|
---|
28 | #define TCHAR char
|
---|
29 | #define _tcscpy strcpy
|
---|
30 | #define _tcsncpy strncpy
|
---|
31 | #define _stprintf sprintf
|
---|
32 | #define _tcslen strlen
|
---|
33 | #define _tcscat strcat
|
---|
34 | #define _tcscmp strcmp
|
---|
35 | #define _T(wert) wert
|
---|
36 | #define _tprintf printf
|
---|
37 | #define noUnicode
|
---|
38 | #endif
|
---|
39 | #endif
|
---|
40 |
|
---|
41 | //#define CAN_HANDLE unsigned long
|
---|
42 | typedef unsigned long CAN_HANDLE;
|
---|
43 |
|
---|
44 |
|
---|
45 | /* ---- CAN chip-types -----------------------------------------------------*/
|
---|
46 | #define NEC005_CHIP 5
|
---|
47 | #define TWINCAN_CHIP 161
|
---|
48 | #define MULTICAN_CHIP 164
|
---|
49 | #define SJA1000_CHIP 1000
|
---|
50 |
|
---|
51 |
|
---|
52 | /* ---- Softing CAN Devices ----------------------------------------*/
|
---|
53 |
|
---|
54 | #define D_CANCARD2 0x00000005L
|
---|
55 | #define D_EDICCARDC 0x00000102L
|
---|
56 | #define D_EDICCARD2 0x00000105L
|
---|
57 | #define D_CANACPCI 0x00000007L
|
---|
58 | #define D_CANACPCIDN 0x00000008L
|
---|
59 | #define D_CANAC104 0x00000009L
|
---|
60 | #define D_CANUSB 0x0000000AL
|
---|
61 | #define D_CANECO104 0x0000000CL
|
---|
62 | #define D_CANPROXPCIE 0x0000000DL
|
---|
63 | #define D_CANPROX104 0x0000000EL
|
---|
64 | #define D_CANPROUSB 0x0000000FL
|
---|
65 | #define D_CANFANUPC8 0x00008000L
|
---|
66 | #define D_FG100CAN 0x10000000L
|
---|
67 |
|
---|
68 |
|
---|
69 | // get the value from Softing CAN Interface Manager
|
---|
70 | #define GET_FROM_SCIM -1
|
---|
71 |
|
---|
72 |
|
---|
73 |
|
---|
74 | #pragma pack(push, 1) /* pack alignment must be one */
|
---|
75 |
|
---|
76 | #ifndef CANL2_EXPORTS
|
---|
77 | // description of on CAN channel
|
---|
78 | // used for the API Function call CANL2_get_all_CAN_channels
|
---|
79 | #define MAXLENCHNAME 80
|
---|
80 | typedef struct
|
---|
81 | {
|
---|
82 | ULONG u32Serial; // Serialnumber
|
---|
83 | ULONG u32DeviceType; // device type
|
---|
84 | ULONG u32PhysCh; // physical channel number (1 or 2)
|
---|
85 | ULONG u32FwId; // id of the loaded firmware
|
---|
86 | BOOLEAN bIsOpen; // TRUE if opened by a process
|
---|
87 | char ChannelName[MAXLENCHNAME];
|
---|
88 |
|
---|
89 |
|
---|
90 | } CHDSNAPSHOT, *PCHDSNAPSHOT;
|
---|
91 |
|
---|
92 | #endif
|
---|
93 |
|
---|
94 |
|
---|
95 | // this structure is used for CANL2_read_ac()
|
---|
96 |
|
---|
97 | typedef struct {
|
---|
98 | unsigned long Ident; /* CAN Identifier*/
|
---|
99 | int DataLength; /*number of data bytes in the CAN message*/
|
---|
100 | int RecOverrun_flag; /*if this is true in object buffer it signals an receive overrun, used only in object buffer*/
|
---|
101 | int RCV_fifo_lost_msg; /*number of messages lost, used only in FIFO Mode*/
|
---|
102 | unsigned char RCV_data[8]; /*CAN data bytes*/
|
---|
103 | int AckOverrun_flag; /*if this is true in object buffer it signals an ACK overrun, used only in object buffer*/
|
---|
104 | int XMT_ack_fifo_lost_acks; /*number of lost ACK - object buffer only*/
|
---|
105 | int XMT_rmt_fifo_lost_remotes; /*number of lost remote frames - object buffer only*/
|
---|
106 | int Bus_state; /*CAN bus state (ERROR ACTIVE, ERROR PASSIVE or BUS OFF*/
|
---|
107 | int Error_state; /* meaning depends on the platform, see CANL2_read_ac() */
|
---|
108 | int Can; /*CAN channel handle*/
|
---|
109 | unsigned long Time; /*Timestamp*/
|
---|
110 | } PARAM_STRUCT;
|
---|
111 |
|
---|
112 | // used together with CANL2_initialize_fifo_mode()
|
---|
113 | typedef struct
|
---|
114 | {
|
---|
115 | double fBaudrate; /*baudrate*/
|
---|
116 | long s32Prescaler; /* prescaler*/
|
---|
117 | long s32Tseg1; /* time segment 1*/
|
---|
118 | long s32Tseg2; /*time segment 2*/
|
---|
119 | long s32Sjw; /* SJW*/
|
---|
120 | long s32Sam; /* samples */
|
---|
121 | long s32AccCodeStd; /* acceptance code for 11 bit identifier */
|
---|
122 | long s32AccMaskStd; /* acceptance mask for 11 bit identifier */
|
---|
123 | long s32AccCodeXtd; /* acceptance code for 29 bit identifier */
|
---|
124 | long s32AccMaskXtd; /* acceptance mask for 29 bit identifier */
|
---|
125 | long s32OutputCtrl; /* output control register */
|
---|
126 | BOOL bEnableAck; /* enable receiving of ACK */
|
---|
127 | BOOL bEnableErrorframe; /* enable receiving of error frames*/
|
---|
128 | HANDLE hEvent; /* Windows event: set in case of an CAN event */
|
---|
129 | } L2CONFIG;
|
---|
130 |
|
---|
131 | /*
|
---|
132 | typedef struct canl2_ch_s {
|
---|
133 | CAN_HANDLE ulChannelHandle;
|
---|
134 | unsigned char sChannelName[80];
|
---|
135 | } CANL2_CH_STRUCT;
|
---|
136 | */
|
---|
137 |
|
---|
138 | // used for custom led control
|
---|
139 | typedef struct
|
---|
140 | {
|
---|
141 | unsigned char live_time; // number of 200ms ticks
|
---|
142 | BOOL is_led_on; // should the led be on or off for the live time?
|
---|
143 |
|
---|
144 | } LED_SUBSTATE;
|
---|
145 |
|
---|
146 | typedef struct
|
---|
147 | {
|
---|
148 | unsigned short number_of_substates; // the led states will be set cyclicaly: after the last state the system starts with the first state.
|
---|
149 |
|
---|
150 | LED_SUBSTATE substate[15];
|
---|
151 |
|
---|
152 | } LED_FEATURE;
|
---|
153 |
|
---|
154 |
|
---|
155 | #pragma pack(pop) /* reset pack alignment to prev. value */
|
---|
156 |
|
---|
157 | #ifndef _ERROR_BASES_
|
---|
158 | #define _ERROR_BASES_
|
---|
159 |
|
---|
160 | #define INFORMATIONAL_BASE (0x60000000)
|
---|
161 | #define WARNING_BASE (0xA0000000)
|
---|
162 | #define ERROR_BASE (0xE0000000)
|
---|
163 |
|
---|
164 | #endif
|
---|
165 |
|
---|
166 | #define L2_ERROR_BASE (0x000B0000)
|
---|
167 | #define VCARD_ERROR_BASE (0x000A0000)
|
---|
168 |
|
---|
169 |
|
---|
170 | #define MK_VCARD_ERROR_CODE(VCARD_ERROR) ((VCARD_ERROR) ? (VCARD_ERROR_BASE | ERROR_BASE | VCARD_ERROR) : 0)
|
---|
171 |
|
---|
172 |
|
---|
173 | /////////////////////////////////////////////////////////////////////////////
|
---|
174 | // VCARD ERROR CODES (Error codes from kernelmode driver)
|
---|
175 | //
|
---|
176 | #ifndef CANL2_EXPORTS
|
---|
177 |
|
---|
178 | #define VCARD_OK 0 // success
|
---|
179 | #define VCARD_INTERNALERROR 0xE00A0001 // internal Error
|
---|
180 | #define VCARD_GENERALERROR 0xE00A0002 // general Error
|
---|
181 | #define VCARD_TIMEOUT 0xE00A0003 // Timeout
|
---|
182 | #define VCARD_IOPENDING 0xE00A0004 // pending driver call
|
---|
183 | #define VCARD_IOCANCELLED 0xE00A0005 // driver call was canceled
|
---|
184 | #define VCARD_ILLEGALCALL 0xE00A0006 // illegal driver call
|
---|
185 | #define VCARD_NOTSUPPORTED 0xE00A0007 // not implemented
|
---|
186 | #define VCARD_VERSIONERROR 0xE00A0008 // driver interface dll has the wrong version
|
---|
187 | #define VCARD_DRIVERVERSIONERROR 0xE00A0009 // wrong driver version
|
---|
188 | #define VCARD_DRIVERNOTFOUND 0xE00A000A // driver not loaded / not installed, or device is not plugged
|
---|
189 | #define VCARD_NOTENOUGHMEMORY 0xE00A000B // out of memory
|
---|
190 | #define VCARD_TOOMANYDEVICES 0xE00A000C // driver can not handle as much devices
|
---|
191 | #define VCARD_UNKNOWNDEVICE 0xE00A000D // unknown device
|
---|
192 | #define VCARD_DEVICEALREADYEXISTS 0xE00A000E // device already exists
|
---|
193 | #define VCARD_DEVICEACCESSERROR 0xE00A000F // access is not possible: device is already open
|
---|
194 | #define VCARD_RESOURCEALREADYREGISTERED 0xE00A0010 // ressorce is in use by an other device
|
---|
195 | #define VCARD_RESOURCECONFLICT 0xE00A0011 // ressorce conflict
|
---|
196 | #define VCARD_RESOURCEACCESSERROR 0xE00A0012 // ressorce can not be accessed
|
---|
197 | #define VCARD_PHYSMEMORYOVERRUN 0xE00A0013 // ungueltiger Zugriff auf physikalischen Speicher
|
---|
198 | #define VCARD_TOOMANYPORTS 0xE00A0014 // zu viele I/O Ports 20
|
---|
199 | #define VCARD_INTERRUPTERROR 0xE00A0015 // error while activating the interrupt
|
---|
200 | #define VCARD_UNKNOWNRESOURCE 0xE00A0016 // unknown ressorce
|
---|
201 | #define VCARD_CREATEDEVFAILED 0xE00A0017 // IoCreateDevice failed
|
---|
202 | #define VCARD_ATTACHTODEVSTACKFAILED 0xE00A0018 // IoAttachDeviceToDeviceStack failed
|
---|
203 | #define VCARD_SYMBOLICLINKFAILED 0xE00A0019 // failed to create a symbolic link
|
---|
204 | //////////////////////////////////////////////////////////////////////
|
---|
205 | /// Errors which can occur while downloading the firmware
|
---|
206 | //////////////////////////////////////////////////////////////////////
|
---|
207 | #define VCARD_NOCARDSERVICES 0xE00A001A // can not access card services under Win '98
|
---|
208 | #define VCARD_CARDSERVICESVERSION 0xE00A001B // wrong version of the card services under Win '98
|
---|
209 | #define VCARD_CARDSERVICESGETINFO 0xE00A001C // error while accessing the card services under Win '98
|
---|
210 | #define VCARD_DEVICENOTFOUND 0xE00A001D // device not found.
|
---|
211 | #define VCARD_NODPRAM 0xE00A001E // can not get a free address region for DPRAM from system
|
---|
212 | #define VCARD_CONTROLHWERROR 0xE00A001F // Error while accessing hardware
|
---|
213 | #define VCARD_SBNCHECKSUM 0xE00A0020 // Checksum error in SBN format (dll binary may be corrupt)
|
---|
214 | #define VCARD_DPRAMACCESS 0xE00A0021 // can not access the DPRAM memory
|
---|
215 | #define VCARD_CARDREACTION 0xE00A0022 // Loader program for firmware download does no more react.
|
---|
216 | #define VCARD_NOSTARTADDRESS 0xE00A0023 // No startaddress defined in SBN (dll binary may be corrupt)
|
---|
217 | #define VCARD_NOINTERRUPT 0xE00A0024 // Interrupt does not work
|
---|
218 | //////////////////////////////////////////////////////////////////////
|
---|
219 | /// Errors which can occur in the channel driver
|
---|
220 | //////////////////////////////////////////////////////////////////////
|
---|
221 |
|
---|
222 | #define VCARD_DRIVERNOTPRESENT 0xE00A0025 // Kernelmode driver is not loaded
|
---|
223 | #define VCARD_DEVICEISOPEN 0xE00A0026 // Device is already open
|
---|
224 | #define VCARD_DEVICELOCKINGERROR 0xE00A0027 // Device can not be locked
|
---|
225 | #define VCARD_OTHERFWISLOADED 0xE00A0028 // A other firmware is running on that device (CANalyzer/CANopen/DeviceNet firmware)
|
---|
226 | #define VCARD_CHANNELNOTOPEN 0xE00A0029 // channel can not be accessed, because it is not open.
|
---|
227 |
|
---|
228 | //////////////////////////////////////////////////////////////////////
|
---|
229 | /// status codes for CANusb Device Driver canusbw.sys
|
---|
230 | //////////////////////////////////////////////////////////////////////
|
---|
231 |
|
---|
232 | #define VCARD_PNPCALLERROR 0xE00A002A // lower driver call in PnP process fails
|
---|
233 | #define VCARD_URBRETERROR 0xE00A002B // URB returns USBD_ERROR code
|
---|
234 | #define VCARD_ERRORDEVICEDESC 0xE00A002C // faulty device desc or read failed
|
---|
235 | #define VCARD_ERRORCONFIGDESC 0xE00A002D // faulty config desc or read failed
|
---|
236 | #define VCARD_ERRORSELECTCONFIG 0xE00A002E // unable to select configuration
|
---|
237 | #define VCARD_ERRORDECONFIG 0xE00A002F // unable to deconfigure the device
|
---|
238 | #define VCARD_PIPEACCESSERROR 0xE00A0030 // unable to open usb pipe
|
---|
239 | #define VCARD_COMMUNICATIONBROKEN 0xE00A0031 // communication via usb pipe broken off
|
---|
240 |
|
---|
241 | //////////////////////////////////////////////////////////////////////
|
---|
242 | /// Errors which can occur in the canchd.dll
|
---|
243 | //////////////////////////////////////////////////////////////////////
|
---|
244 | #define VCARD_FILENOTFOUND 0xE00A0032 // file not found
|
---|
245 | #define VCARD_ACCESSRIGHT 0xE00A0033
|
---|
246 |
|
---|
247 | #define VCARD_OSERROR 0xE00A0034 // error in OS call
|
---|
248 | #define VCARD_DEVICEIDMISMATCH 0xE00A0035 // wrong device id stored in registry
|
---|
249 | #define VCARD_MAXNUMOFCHANNELSOPEN 0xE00A0036 // the maximum number of channels are open
|
---|
250 | #define VCARD_INVALIDHANDLE 0xE00A0037 // a invalid handle is specified
|
---|
251 |
|
---|
252 | #endif
|
---|
253 |
|
---|
254 | /* ---- FUNCTION PROTOTYPES AND FUNCTION RETURN VALUES --------------------*/
|
---|
255 | /* default return values -- valid for all functions (if no other value is
|
---|
256 | described) */
|
---|
257 | /* default return values -- valid for all functions */
|
---|
258 |
|
---|
259 | #define CANL2_OK 0 /* function successful */
|
---|
260 | #define CANL2_ERR -1 /* function not successful */
|
---|
261 | #define CANL2_BOARD_NOT_INITIALIZED -99 /* board not initialized:
|
---|
262 | INIL2_initialize_channel(.)
|
---|
263 | was not yet called, or a
|
---|
264 | INIL2_close_board was done */
|
---|
265 | #define CANL2_INVALID_CHANNEL_HANDLE -1000 /* the channel handle is invalid */
|
---|
266 | #define CANL2_TOO_MANY_CHANNELS -1002 /* no free channel available */
|
---|
267 | #define CANL2_VERSION_CONFLICT -1003 /* wrong dll or driver version */
|
---|
268 | #define CANL2_FIRMWARE_DOWNLOAD -1004 /* error while loading the firmware
|
---|
269 | may be a DPRAM access error. */
|
---|
270 |
|
---|
271 | #define CANL2_CAN_NOT_LOAD_CANUSBDLL -1005 /* the canusbm.dll can not be found/loaded */
|
---|
272 |
|
---|
273 |
|
---|
274 | #define INIL2_FW_FILE_NOT_FOUND -2000 /* firmware file not found */
|
---|
275 | #define INIL2_ERROR_WHILE_FLASHING -2001 /* flashing error */
|
---|
276 |
|
---|
277 |
|
---|
278 |
|
---|
279 |
|
---|
280 |
|
---|
281 | /* ---- CANusb return values */
|
---|
282 |
|
---|
283 | #define FRW_ERROR_PIPEACCESS_ERROR -602 /* unable to open usb pipe */
|
---|
284 | #define FRW_ERROR_COMMUNICATIONBROKEN -603 /* communication via usb pipe
|
---|
285 | broken */
|
---|
286 | #define FRW_ERR_NOVALID_LUPT_ENTRY -604 /* no valid lookup table entry
|
---|
287 | chosen */
|
---|
288 |
|
---|
289 | /* ---- INIL2_initialize_board -------------------------------------------*/
|
---|
290 |
|
---|
291 | /* -- CANusb return values */
|
---|
292 | #define FRW_IF_ERR_FRWINIT_FAILED -611 /* CANusb Framework
|
---|
293 | initialization failed */
|
---|
294 |
|
---|
295 | #define CANL2_LIC_ERR -101
|
---|
296 | #define CANL2_WRONG_PARAM -102 // error in a parameter value
|
---|
297 | #define CANL2_FW_TIMEOUT -104 // timout while communicating with the firmware
|
---|
298 | #define CANL2_HW_ERR -108 // firmware runs on the wrong hardware
|
---|
299 | #define CANL2_DC_NO_DYN_OBJBUF -109 // no object dyn. buffer
|
---|
300 | #define CANL2_REQ_PENDING -110 // last request pending
|
---|
301 |
|
---|
302 | #define CANL2_DATA_OVR -111 // receive data overrun
|
---|
303 | #define CANL2_REMOTE_OVR -112 // rec. rem. frame overrun
|
---|
304 | #define CANL2_NOT_ACTIVE -113 // object not active
|
---|
305 | #define CANL2_RXD_XMT_OVR -114 // transmit ack. overrun
|
---|
306 | #define CANL2_OB_NOT_DEFINED -115 // object not defined
|
---|
307 | #define CANL2_XMT_REQ_OVR -116 // xmt request fifo overrun
|
---|
308 | #define CANL2_NOT_IMPLEMENTED -117 // not supported for this device
|
---|
309 |
|
---|
310 | #define FRW_ERR_GDI_OLDSFW -614 /* flash content out of date */
|
---|
311 |
|
---|
312 | #define ERROR_LINKING_FCT -701 /* DLL is not compatible (canusbm.dll) */
|
---|
313 | #define ERROR_LINKING_DLL -702 /* DLL not found (canusbm.dll)*/
|
---|
314 |
|
---|
315 |
|
---|
316 |
|
---|
317 | PRAEDEF int MIDDEF INIL2_initialize_channel(CAN_HANDLE *pu32ChannelHandle, char *pChannelName);
|
---|
318 | #define INIL2_IB_ERR_VC_NOTENOUGHMEMORY 0xFE0B /* not enough memory */
|
---|
319 |
|
---|
320 | #ifdef WIN32
|
---|
321 | // +--- CANL2_set_interrupt_event ------------------------------------------
|
---|
322 | PRAEDEF int MIDDEF CANL2_set_interrupt_event(CAN_HANDLE Can, HANDLE hEvent);
|
---|
323 |
|
---|
324 | // +--- CANL2_set_interrupt_event_name -------------------------------------
|
---|
325 | PRAEDEF int MIDDEF CANL2_set_interrupt_event_name(CAN_HANDLE Can, TCHAR *eventName);
|
---|
326 | #endif
|
---|
327 | // +--- CANL2_reset_chip -------------------------------------------
|
---|
328 | PRAEDEF int MIDDEF CANL2_reset_chip(CAN_HANDLE Can);
|
---|
329 |
|
---|
330 |
|
---|
331 | // +--- CANL2_initialize_chip(CAN_HANDLE Can, 2) -------------------------------------------
|
---|
332 | // Error codes
|
---|
333 | //CANL2_II_REA_CONFLICT Parameter conflict:
|
---|
334 |
|
---|
335 | PRAEDEF int MIDDEF CANL2_initialize_chip (CAN_HANDLE Can, int presc,
|
---|
336 | int sjw,
|
---|
337 | int tseg1,
|
---|
338 | int tseg2,
|
---|
339 | int sam);
|
---|
340 |
|
---|
341 |
|
---|
342 |
|
---|
343 |
|
---|
344 | /* +--- CANL2_set_acceptance(CAN_HANDLE Can, 2) ------------------------------------------- */
|
---|
345 | PRAEDEF int MIDDEF CANL2_set_acceptance (CAN_HANDLE Can, unsigned int AccCodeStd,
|
---|
346 | unsigned int AccMaskStd,
|
---|
347 | unsigned long AccCodeXtd,
|
---|
348 | unsigned long AccMaskXtd);
|
---|
349 |
|
---|
350 | /* +--- CANL2_set_output_control(CAN_HANDLE Can, 2) --------------------------------------- */
|
---|
351 | PRAEDEF int MIDDEF CANL2_set_output_control (CAN_HANDLE Can, int OutputControl);
|
---|
352 |
|
---|
353 |
|
---|
354 | // +--- CANL2_initialize_interface ---------------------------------------
|
---|
355 | // Error codes
|
---|
356 | //CANL2_II_REA_CONFLICT Parameter conflict:
|
---|
357 | // ReceiveEnableAll with dyn.
|
---|
358 | // obj. buffer or fifo mode
|
---|
359 |
|
---|
360 | PRAEDEF int MIDDEF CANL2_initialize_interface(CAN_HANDLE Can, int ReceiveFifoEnable,
|
---|
361 | int ReceivePollAll,
|
---|
362 | int ReceiveEnableAll,
|
---|
363 | int ReceiveIntEnableAll,
|
---|
364 | int AutoRemoteEnable,
|
---|
365 | int TransmitReqFifoEnable,
|
---|
366 | int TransmitPollAll,
|
---|
367 | int TransmitAckEnableAll,
|
---|
368 | int TransmitAckFifoEnable,
|
---|
369 | int TransmitRmtFifoEnable);
|
---|
370 |
|
---|
371 | // +--- CANL2_define_object(CAN_HANDLE Can, 2) ------------------------------------
|
---|
372 | #define CANL2_DO_PARAM_ERR -1 // Parameter error
|
---|
373 | #define CANL2_DO_NO_DYNOBJ -2 // dyn. obj. buf. not enabled
|
---|
374 | #define CANL2_DO_TOO_MANY_OBJECTS -6 // too many objects defined
|
---|
375 |
|
---|
376 | PRAEDEF int MIDDEF CANL2_define_object (CAN_HANDLE Can, unsigned long Handle,
|
---|
377 | int FAR * ObjectNumber,
|
---|
378 | int Type,
|
---|
379 | int ReceiveIntEnable,
|
---|
380 | int AutoRemoteEnable,
|
---|
381 | int TransmitAckEnable);
|
---|
382 |
|
---|
383 |
|
---|
384 | // +--- CANL2_define_cyclic(CAN_HANDLE Can, 2) --------------------------------------
|
---|
385 | #define CANL2_DC_INVLD_OBJ_NR -1 // invalid object number
|
---|
386 |
|
---|
387 | PRAEDEF int MIDDEF CANL2_define_cyclic (CAN_HANDLE Can, int ObjectNumber,
|
---|
388 | unsigned int Rate,
|
---|
389 | unsigned int Cycles);
|
---|
390 |
|
---|
391 |
|
---|
392 | // +--- CANL2_set_rcv_fifo_size ---------------------------------------
|
---|
393 | //#define CANL2_SRFS_PARAM_ERR -1 // Parameter error
|
---|
394 |
|
---|
395 | #define CANL2_SRFS_NO_FIFO_MODE -2 // no fifo mode enabled
|
---|
396 |
|
---|
397 | PRAEDEF int MIDDEF CANL2_set_rcv_fifo_size(CAN_HANDLE Can, int FifoSize);
|
---|
398 |
|
---|
399 |
|
---|
400 | // +--- CANL2_enable_fifo ---------------------------------------
|
---|
401 |
|
---|
402 | #define CANL2_WRONG_MODE -1001
|
---|
403 | PRAEDEF int MIDDEF CANL2_enable_fifo(CAN_HANDLE Can);
|
---|
404 |
|
---|
405 | // +--- CANL2_optimize_rcv_speed ---------------------------------------
|
---|
406 | // this function has no effect on the CANcard
|
---|
407 | #define CANL2_ORS_PARAM_ERR -1 // Parameter error
|
---|
408 |
|
---|
409 |
|
---|
410 | // +--- CANL2_enable_dyn_obj_buf ---------------------------------------
|
---|
411 |
|
---|
412 | PRAEDEF int MIDDEF CANL2_enable_dyn_obj_buf(CAN_HANDLE Can);
|
---|
413 |
|
---|
414 | // +--- CANL2_enable_fifo_transmit_ack ------------------------------------
|
---|
415 |
|
---|
416 | PRAEDEF int MIDDEF CANL2_enable_fifo_transmit_ack (CAN_HANDLE Can);
|
---|
417 |
|
---|
418 |
|
---|
419 | PRAEDEF int MIDDEF CANL2_initialize_fifo_mode(CAN_HANDLE Can, L2CONFIG *pUserCfg);
|
---|
420 |
|
---|
421 |
|
---|
422 | PRAEDEF int MIDDEF CANL2_get_all_CAN_channels(unsigned long u32ProvidedBufferSize,
|
---|
423 | unsigned long *pu32NeededBufferSize,
|
---|
424 | unsigned long *pu32NumOfChannels,
|
---|
425 | CHDSNAPSHOT *pBuffer);
|
---|
426 |
|
---|
427 |
|
---|
428 | // +--- CANL2_get_version ---------------------------------------
|
---|
429 | // the parameter hw_version is not used with the CAN-AC2
|
---|
430 |
|
---|
431 | PRAEDEF int MIDDEF CANL2_get_version(CAN_HANDLE Can, int FAR * sw_version,
|
---|
432 | int FAR * fw_version,
|
---|
433 | int FAR * hw_version,
|
---|
434 | int FAR * license,
|
---|
435 | int FAR * can_chip_type);
|
---|
436 |
|
---|
437 | // +--- CANL2_get_serial_number ---------------------------------------
|
---|
438 | // this function has no effect on the CAN-AC2
|
---|
439 |
|
---|
440 | PRAEDEF int MIDDEF CANL2_get_serial_number(CAN_HANDLE Can, unsigned long FAR * ser_number);
|
---|
441 |
|
---|
442 | // +--- CANL2_start_chip ---------------------------------------
|
---|
443 | // -- CANusb return values
|
---|
444 | #define FRW_IOE_ERR_NOTENOUGHMEMORY -612 // not enough memory
|
---|
445 | #define FRW_IOE_ERR_INITFAILED -613 // failed to initialize FRWOrder/Event
|
---|
446 |
|
---|
447 | PRAEDEF int MIDDEF CANL2_start_chip(CAN_HANDLE Can);
|
---|
448 |
|
---|
449 | // +--- CANL2_send_remote_object(CAN_HANDLE Can, 2) ---------------------------------------
|
---|
450 | #define CANL2_SRO_PEND -1 // last request still pending
|
---|
451 | #define CANL2_SRO_TX_FIFO_FULL -3 // transmit fifo full
|
---|
452 |
|
---|
453 | PRAEDEF int MIDDEF CANL2_send_remote_object (CAN_HANDLE Can, int ObjectNumber,
|
---|
454 | int DataLength);
|
---|
455 |
|
---|
456 |
|
---|
457 | // +--- CANL2_supply_object_data(CAN_HANDLE Can, 2) ---------------------------------------
|
---|
458 | #define CANL2_SOD_REQ_OVR -1 // request overrun
|
---|
459 |
|
---|
460 | PRAEDEF int MIDDEF CANL2_supply_object_data (CAN_HANDLE Can, int ObjectNumber,
|
---|
461 | int DataLength,
|
---|
462 | unsigned char FAR * pData);
|
---|
463 |
|
---|
464 |
|
---|
465 | // +--- CANL2_supply_rcv_object_data(CAN_HANDLE Can, 2)-------------------------------------
|
---|
466 |
|
---|
467 | PRAEDEF int MIDDEF CANL2_supply_rcv_object_data (CAN_HANDLE Can, int ObjectNumber,
|
---|
468 | int DataLength,
|
---|
469 | unsigned char FAR * pData);
|
---|
470 |
|
---|
471 |
|
---|
472 | // +--- CANL2_send_object(CAN_HANDLE Can, 2) ---------------------------------------
|
---|
473 |
|
---|
474 | PRAEDEF int MIDDEF CANL2_send_object (CAN_HANDLE Can, int ObjectNumber,
|
---|
475 | int DataLength);
|
---|
476 |
|
---|
477 | // +--- CANL2_write_object(CAN_HANDLE Can, 2) ---------------------------------------
|
---|
478 |
|
---|
479 | PRAEDEF int MIDDEF CANL2_write_object (CAN_HANDLE Can, int ObjectNumber,
|
---|
480 | int DataLength,
|
---|
481 | unsigned char FAR * pData);
|
---|
482 |
|
---|
483 |
|
---|
484 |
|
---|
485 |
|
---|
486 | // +--- CANL2_read_rcv_data(CAN_HANDLE Can, 2) ---------------------------------------
|
---|
487 | #define CANL2_RRD_DATAFRAME 1 // data frame received
|
---|
488 | #define CANL2_RRD_REMOTEFRAME 2 // remote frame received
|
---|
489 |
|
---|
490 |
|
---|
491 | PRAEDEF int MIDDEF CANL2_read_rcv_data (CAN_HANDLE Can, int ObjectNumber,
|
---|
492 | unsigned char FAR * pRCV_Data,
|
---|
493 | unsigned long FAR * Time);
|
---|
494 |
|
---|
495 |
|
---|
496 |
|
---|
497 | // +--- CANL2_read_xmt_data(CAN_HANDLE Can, 2) ---------------------------------------
|
---|
498 | #define CANL2_RXD_NO_DATA 0 // no message was transmitted
|
---|
499 | #define CANL2_RXD_DATAFRAME 1 // message was transmitted
|
---|
500 | #define CANL2_RXD_NO_DYN_OBJBUF -3 // no dyn. obj-buffer enabled
|
---|
501 | // (only CAN-AC2/527)
|
---|
502 |
|
---|
503 | PRAEDEF int MIDDEF CANL2_read_xmt_data (CAN_HANDLE Can, int ObjectNumber,
|
---|
504 | int FAR * pDataLength,
|
---|
505 | unsigned char FAR * pXMT_Data);
|
---|
506 |
|
---|
507 |
|
---|
508 |
|
---|
509 | // +--- CANL2_read_ac ---------------------------------------*/
|
---|
510 | #define CANL2_RA_NO_DATA 0 // no new data received */
|
---|
511 | #define CANL2_RA_DATAFRAME 1 // std. data frame received */
|
---|
512 | #define CANL2_RA_REMOTEFRAME 2 // std. remote frame received */
|
---|
513 | #define CANL2_RA_TX_DATAFRAME 3 // transmission of std. data-
|
---|
514 | // frame is confirmed */
|
---|
515 | #define CANL2_RA_TX_FIFO_OVR 4 // remote tx fifo overrun */
|
---|
516 | #define CANL2_RA_CHG_BUS_STATE 5 // change of bus status */
|
---|
517 | #define CANL2_RA_ERR_ADD 7 // additional error causes */
|
---|
518 | #define CANL2_RA_TX_REMOTEFRAME 8 // transmission of std. data-
|
---|
519 | // frame is confirmed */
|
---|
520 | #define CANL2_RA_XTD_DATAFRAME 9 // xtd. data frame received */
|
---|
521 | #define CANL2_RA_XTD_TX_DATAFRAME 10 // transmission of xtd. data-
|
---|
522 | // frame is confirmed */
|
---|
523 | #define CANL2_RA_XTD_TX_REMOTEFRAME 11 // transmission of xtd. remote-
|
---|
524 | // frame is confirmed */
|
---|
525 | #define CANL2_RA_XTD_REMOTEFRAME 12 // xtd. remote frame received
|
---|
526 | // (only CANcard) */
|
---|
527 | #define CANL2_RA_ERRORFRAME 15 // error frame detected
|
---|
528 | // (only CANcard) */
|
---|
529 |
|
---|
530 | PRAEDEF int MIDDEF CANL2_read_ac(CAN_HANDLE Can, PARAM_STRUCT* param);
|
---|
531 |
|
---|
532 | // +--- CANL2_send_data ---------------------------------------*/
|
---|
533 | #define CANL2_SD_FIFO_FULL -1 // transmit fifo full */
|
---|
534 | #define CANL2_SD_PARAM -11 // wrong parameter
|
---|
535 |
|
---|
536 | PRAEDEF int MIDDEF CANL2_send_data (CAN_HANDLE Can, unsigned long Ident,
|
---|
537 | int Xtd,
|
---|
538 | int DataLength,
|
---|
539 | unsigned char* pData);
|
---|
540 |
|
---|
541 |
|
---|
542 |
|
---|
543 | /* +--- CANL2_send_remote ---------------------------------------*/
|
---|
544 | #define CANL2_SR_FIFO_FULL -1 /* transmit fifo full */
|
---|
545 |
|
---|
546 |
|
---|
547 | PRAEDEF int MIDDEF CANL2_send_remote (CAN_HANDLE Can, unsigned long Ident,
|
---|
548 | int Xtd,
|
---|
549 | int DataLength);
|
---|
550 |
|
---|
551 |
|
---|
552 |
|
---|
553 | /* +--- CANL2_get_trigger(CAN_HANDLE Can, 2) ---------------------------------------*/
|
---|
554 | /* these functions have no effect on the CANcard */
|
---|
555 | PRAEDEF int MIDDEF CANL2_get_trigger (CAN_HANDLE Can, int FAR * level);
|
---|
556 |
|
---|
557 | PRAEDEF int MIDDEF CANL2_get_trigger2(CAN_HANDLE Can, int FAR * level);
|
---|
558 |
|
---|
559 | /* +--- CANL2_set_trigger ---------------------------------------*/
|
---|
560 | #define CANL2_ST_FIFO_FULL -1 /* transmit fifo full */
|
---|
561 |
|
---|
562 | PRAEDEF int MIDDEF CANL2_set_trigger (CAN_HANDLE Can, int level);
|
---|
563 |
|
---|
564 |
|
---|
565 | /* +--- CANL2_reinitialize ---------------------------------------*/
|
---|
566 | PRAEDEF int MIDDEF CANL2_reinitialize(CAN_HANDLE Can);
|
---|
567 |
|
---|
568 | /* +--- CANL2_get_time ---------------------------------------*/
|
---|
569 | PRAEDEF int MIDDEF CANL2_get_time(CAN_HANDLE Can, unsigned long FAR * time);
|
---|
570 |
|
---|
571 | /* +--- CANL2_get_bus_state ---------------------------------------*/
|
---|
572 | #define CANL2_GBS_ERROR_ACTIVE 0 /* error active */
|
---|
573 | #define CANL2_GBS_ERROR_PASSIVE 1 /* error passive */
|
---|
574 | #define CANL2_GBS_ERROR_BUS_OFF 2 /* bus off */
|
---|
575 |
|
---|
576 | PRAEDEF int MIDDEF CANL2_get_bus_state(CAN_HANDLE Can);
|
---|
577 |
|
---|
578 |
|
---|
579 | /* +--- CANL2_reset_rcv_fifo ---------------------------------------*/
|
---|
580 | PRAEDEF int MIDDEF CANL2_reset_rcv_fifo(CAN_HANDLE Can);
|
---|
581 |
|
---|
582 | /* +--- CANL2_reset_xmt_fifo ---------------------------------------*/
|
---|
583 | PRAEDEF int MIDDEF CANL2_reset_xmt_fifo(CAN_HANDLE Can);
|
---|
584 |
|
---|
585 | /* +--- CANL2_reset_lost_msg_counter --------------------------------------*/
|
---|
586 | PRAEDEF int MIDDEF CANL2_reset_lost_msg_counter(CAN_HANDLE Can);
|
---|
587 |
|
---|
588 | /* +--- CANL2_read_rcv_fifo_level ---------------------------------------*/
|
---|
589 | /* returns number of items in receive fifo */
|
---|
590 | PRAEDEF int MIDDEF CANL2_read_rcv_fifo_level(CAN_HANDLE Can);
|
---|
591 |
|
---|
592 | /* +--- CANL2_read_xmt_fifo_level ---------------------------------------*/
|
---|
593 | /* returns number of items in transmit fifo */
|
---|
594 | PRAEDEF int MIDDEF CANL2_read_xmt_fifo_level(CAN_HANDLE Can);
|
---|
595 |
|
---|
596 | /* +--- CANL2_set_path ---------------------------------------*/
|
---|
597 | #define CANL2_SP_STRING_TOO_LONG -1 /* path string too long */
|
---|
598 | PRAEDEF int MIDDEF CANL2_set_path(CAN_HANDLE Can, TCHAR FAR * path);
|
---|
599 |
|
---|
600 | /* +--- INIL2_close_board ---------------------------------------*/
|
---|
601 | PRAEDEF int MIDDEF INIL2_close_channel(CAN_HANDLE Can);
|
---|
602 | #define INIL2_CB_ERR -1 /* error unlocking rerssources*/
|
---|
603 |
|
---|
604 | /* +--- CANL2_enable_error_frame_detection --------------------------------*/
|
---|
605 | /* this function has no effect on the CAN-AC2 */
|
---|
606 | PRAEDEF int MIDDEF CANL2_enable_error_frame_detection(CAN_HANDLE Can);
|
---|
607 |
|
---|
608 | /* +--- CANL2_get_device_id -----------------------------------------------*/
|
---|
609 | /* this function has no effect on the CAN-AC2 */
|
---|
610 | PRAEDEF int MIDDEF CANL2_get_device_id(CAN_HANDLE Can, unsigned long *pulDeviceId);
|
---|
611 |
|
---|
612 | /* +--- CANL2_init_signals/CANL2_read_signals/CANL2_write_signals */
|
---|
613 | /* these functions are only available on the CAN-ACx-PCI. They are designed */
|
---|
614 | /* for use with the CAN-ACx-PCI and piggy-back boards. These functions are */
|
---|
615 | /* not in the standard users manual. For description read the piggy-back */
|
---|
616 | /* manuals */
|
---|
617 | PRAEDEF int MIDDEF CANL2_init_signals (CAN_HANDLE Can, unsigned long ulChannelDirectionMask,
|
---|
618 | unsigned long ulChannelOutputDefaults);
|
---|
619 |
|
---|
620 | PRAEDEF int MIDDEF CANL2_read_signals (CAN_HANDLE Can, unsigned long *pulChannelRead);
|
---|
621 |
|
---|
622 | PRAEDEF int MIDDEF CANL2_write_signals (CAN_HANDLE Can, unsigned long pulChannelWrite,
|
---|
623 | unsigned long ulCareMask);
|
---|
624 |
|
---|
625 | PRAEDEF int MIDDEF CANL2_enable_delayed_poll_mode (CAN_HANDLE Can, unsigned short delay);
|
---|
626 |
|
---|
627 |
|
---|
628 | #endif /*_CANL2_H */
|
---|
629 |
|
---|
630 |
|
---|