CAN-200: Исходный файл can_codes.h

CAN-200 1.3.1

can_codes.h
См. документацию.
1 #ifndef __CAN_CODES_H__
2 #define __CAN_CODES_H__
3
4 #include <linux/ioctl.h>
5 #ifndef __KERNEL__
6 #include <sys/time.h>
7 #endif /* __KERNEL__ */
8
177 #pragma pack(1)
178
183 union CAN_status_t
184 {
185 struct
186 {
194 unsigned char rbs : 1;
202 unsigned char dos : 1;
210 unsigned char tbs : 1;
218 unsigned char tcs : 1;
226 unsigned char rs : 1;
234 unsigned char ts : 1;
242 unsigned char es : 1;
250 unsigned char bs : 1;
251 } bit;
252 unsigned char byte;
253 };
254
259 union CAN_error_t
260 {
261 struct
262 {
314 unsigned char seg : 5;
322 unsigned char dir : 1;
334 unsigned char errc : 2;
335 } bit;
336 unsigned char byte;
337 };
338
343 union CAN_arbitration_lost_capture_t
344 {
345 struct
346 {
414 unsigned char alc : 5;
418 unsigned char rsvd : 3;
419 } bit;
420 unsigned char byte;
421 };
422
429 typedef struct
430 {
440 unsigned char type;
448 unsigned long id;
452 unsigned char rtr;
456 unsigned char dlc;
462 unsigned char data[8];
466 #ifndef __KERNEL__
467 struct timeval timestamp;
468 #else
469 #include <linux/version.h>
470 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,17,0)
471 struct __kernel_old_timeval timestamp;
472 #else
473 struct timeval timestamp;
474 #endif
475 #endif /* __KERNEL__ */
476 } CAN_data, *pCAN_data;
477
479 /* Структура для задания фильтра режима BasicCAN */
480 struct b_filter_t
481 {
482 unsigned char mask;
483 unsigned char filter;
484 };
485
486 /* Структура для задания фильтра режима PeliCAN */
487 struct p_filter_t
488 {
489 unsigned char mode;
490 unsigned char mask[4];
491 unsigned char filter[4];
492 };
501 struct CAN_info_t
502 {
506 char szName[128];
510 char szSN[10];
514 int wPorts;
518 int wIRQ;
519 };
520
522 /* Структура для получения статуса выдачи */
523 struct transmit_status_t
524 {
525 int status;
526 int len;
527 };
530 #pragma pack()
531
533 #define CAN_MAX_DEVICE 10 /* Максимальное поддерживаемое драйвером число плат */
534
540 #define CAN_DROP_CURRENT 0
541 #define CAN_DROP_ALL 1
542
548 #define CAN_TRANSMIT_WAIT 0
549 #define CAN_TRANSMIT 1
550 #define CAN_TRANSMIT_COMPLETE 2
551 #define CAN_TRANSMIT_ERROR 3
552 #define CAN_TRANSMIT_DROP 4
553
559 #define BasicCAN 0
560 #define PeliCAN 1
561 #define ErrorCAN 2
562
568 #define CAN_SPEED_USER_DEFINED(btr0, btr1) (0xffff | (((btr0) & 0xff) << 24) | (((btr1) & 0xff) << 16))
569 #define IS_CAN_SPEED_USER_DEFINED(speed) ((0xffff == ((speed) & 0xffff)) ? 1 : 0)
570 #define CAN_SPEED_GET_BTR0(speed) (((speed) >> 24) & 0xff)
571 #define CAN_SPEED_GET_BTR1(speed) (((speed) >> 16) & 0xff)
572 #define CAN_SPEED_1000 1000
573 #define CAN_SPEED_800 800
574 #define CAN_SPEED_500 500
575 #define CAN_SPEED_250 250
576 #define CAN_SPEED_125 125
577 #define CAN_SPEED_50 50
578 #define CAN_SPEED_20 20
579 #define CAN_SPEED_10 10
580
583 /*
584 Коды для управления платами (ioctl)
585 */
586
587 #define CAN200_IOC_MAGIC 'k'
588
589 /* Команды управления платами */
590 #define CAN200_HARDRESET _IO(CAN200_IOC_MAGIC, 0) /* Аппаратный сброс контроллера канала платы */
591 #define CAN200_SETWORKMODE _IOW(CAN200_IOC_MAGIC, 1, unsigned char) /* Установка режима работы канала платы */
592 #define CAN200_GETWORKMODE _IOR(CAN200_IOC_MAGIC, 2, unsigned char) /* Получение режима работы канала платы */
593 #define CAN200_SETDRIVERMODE _IO(CAN200_IOC_MAGIC, 3) /* Настройка выходного формирователя CAN-контроллера */
594 #define CAN200_GETCANSPEED _IOR(CAN200_IOC_MAGIC, 4, unsigned int) /* Получение скорости работы канала платы */
595 #define CAN200_SETCANSPEED _IOW(CAN200_IOC_MAGIC, 5, unsigned int) /* Установка скорости работы канала платы */
596 #define CAN200_GETSTATUS _IOR(CAN200_IOC_MAGIC, 6, unsigned char) /* Получение статуса канала платы */
597 #define CAN200_GETCONFIG _IOR(CAN200_IOC_MAGIC, 7, struct CAN_info_t) /* Получение конфигурации платы */
598 #define CAN200_B_SETFILTER _IOW(CAN200_IOC_MAGIC, 8, struct b_filter_t) /* Установка фильтра режима BasicCAN канала платы */
599 #define CAN200_P_SETFILTER _IOW(CAN200_IOC_MAGIC, 9, struct p_filter_t) /* Установка фильтра режима PeliCAN канала платы */
600 #define CAN200_P_GETRXERRORCOUNTER _IOR(CAN200_IOC_MAGIC, 10, unsigned char) /* Получение счетчика ошибок приема режима PeliCAN канала платы */
601 #define CAN200_P_SETRXERRORCOUNTER _IOW(CAN200_IOC_MAGIC, 11, unsigned char) /* Установка счетчика ошибок приема режима PeliCAN канала платы */
602 #define CAN200_P_GETTXERRORCOUNTER _IOR(CAN200_IOC_MAGIC, 12, unsigned char) /* Получение счетчика ошибок выдача режима PeliCAN канала платы */
603 #define CAN200_P_SETTXERRORCOUNTER _IOW(CAN200_IOC_MAGIC, 13, unsigned char) /* Установка счетчика ошибок выдачи режима PeliCAN канала платы */
604 #define CAN200_P_GETERRORWARNINGLIMIT _IOR(CAN200_IOC_MAGIC, 14, unsigned char) /* Получение верхнего предела счетчиков ошибок режима PeliCAN канала платы */
605 #define CAN200_P_SETERRORWARNINGLIMIT _IOW(CAN200_IOC_MAGIC, 15, unsigned char) /* Установка верхнего предела счетчиков ошибок режима PeliCAN канала платы */
606 #define CAN200_B_GETFILTER _IOR(CAN200_IOC_MAGIC, 16, struct b_filter_t) /* Получение фильтра режима BasicCAN канала платы */
607 #define CAN200_P_GETFILTER _IOR(CAN200_IOC_MAGIC, 17, struct p_filter_t) /* Получение фильтра режима PeliCAN канала платы */
608 #define CAN200_GETOVERCOUNTER _IOR(CAN200_IOC_MAGIC, 18, int) /* Получение счетчика переполнений приема канала платы */
609 #define CAN200_SETBUSON _IO(CAN200_IOC_MAGIC, 19) /* Переключение кнала в рабочий режим после BUS_OFF */
610 #define CAN200_GETTRANSMITSTATUS _IOR(CAN200_IOC_MAGIC, 20, struct transmit_status_t) /* Получение статуса выдачи пакета */
611 #define CAN200_P_GETEARBITRATIONLOSTCAPTURE _IOR(CAN200_IOC_MAGIC, 21, unsigned char) /* Получение точки потери данных */
612 #define CAN200_P_GETERRORCODE _IOR(CAN200_IOC_MAGIC, 22, unsigned char) /* Получение кода ошибки */
613 #define CAN200_DROPTRANSMIT _IOW(CAN200_IOC_MAGIC, 23, unsigned char) /* Отмена выдачи */
614 #define CAN200_GETNUMCHANNEL _IOR(CAN200_IOC_MAGIC, 24, int) /* Запрос количества каналов в плате */
615 #define CAN200_GETDRIVERVERSION _IOR(CAN200_IOC_MAGIC, 25, int) /* Получение версии драйвера */
616
618 #endif /* __CAN_CODES_H__ */
CAN_arbitration_lost_capture_t::rsvd
unsigned char rsvd
Зарезервировано
Definition: can_codes.h:418
CAN_error_t::errc
unsigned char errc
Код ошибки
Definition: can_codes.h:334
CAN_data::id
unsigned long id
Идентификатор
Definition: can_codes.h:448
CAN_data::type
unsigned char type
Формат кадра
Definition: can_codes.h:440
CAN_status_t::tbs
unsigned char tbs
Доступность буфера передачи
Definition: can_codes.h:210
CAN_status_t::dos
unsigned char dos
Переполнение приемного буфера
Definition: can_codes.h:202
CAN_error_t::seg
unsigned char seg
Сегмент
Definition: can_codes.h:314
CAN_info_t
Структура для получения информации о плате.
Definition: can_codes.h:501
CAN_status_t::ts
unsigned char ts
Состояние передачи
Definition: can_codes.h:234
CAN_status_t::rs
unsigned char rs
Состояние приёма
Definition: can_codes.h:226
CAN_status_t::tcs
unsigned char tcs
Завершенность передачи
Definition: can_codes.h:218
CAN_info_t::wPorts
int wPorts
Базовый адрес
Definition: can_codes.h:514
CAN_status_t::rbs
unsigned char rbs
Состояние буфера приема
Definition: can_codes.h:194
CAN_data::rtr
unsigned char rtr
Значение бита RTR (0 или 1)
Definition: can_codes.h:452
CAN_info_t::wIRQ
int wIRQ
Номер вектора прерывания
Definition: can_codes.h:518
CAN_arbitration_lost_capture_t
Структура определения точки потери арбитража.
Definition: can_codes.h:343
CAN_status_t::es
unsigned char es
Наличие ошибок
Definition: can_codes.h:242
CAN_arbitration_lost_capture_t::alc
unsigned char alc
Точка потери арбитража
Definition: can_codes.h:414
CAN_status_t::bs
unsigned char bs
Состояние шины
Definition: can_codes.h:250
CAN_status_t
Структура описывающая статус платы
Definition: can_codes.h:183
CAN_error_t
Структура для кода ошибки.
Definition: can_codes.h:259
CAN_data::dlc
unsigned char dlc
Количество принятых/выдаваемых байт данных (0-8)
Definition: can_codes.h:456
CAN_error_t::dir
unsigned char dir
Направление
Definition: can_codes.h:322
CAN_data
Принятый/выдаваемый CAN кадр
Definition: can_codes.h:429

CAN-200 documentation. Copyright (c) 2012 - 2017 Elcus Corporation. All rights reserved.