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 
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 
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 
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 };
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__ */
unsigned char rsvd
Зарезервировано
Definition: can_codes.h:418
unsigned char errc
Код ошибки
Definition: can_codes.h:334
unsigned long id
Идентификатор
Definition: can_codes.h:448
unsigned char type
Формат кадра
Definition: can_codes.h:440
unsigned char tbs
Доступность буфера передачи
Definition: can_codes.h:210
unsigned char dos
Переполнение приемного буфера
Definition: can_codes.h:202
unsigned char seg
Сегмент
Definition: can_codes.h:314
Структура для получения информации о плате.
Definition: can_codes.h:501
unsigned char ts
Состояние передачи
Definition: can_codes.h:234
unsigned char rs
Состояние приёма
Definition: can_codes.h:226
unsigned char tcs
Завершенность передачи
Definition: can_codes.h:218
int wPorts
Базовый адрес
Definition: can_codes.h:514
unsigned char rbs
Состояние буфера приема
Definition: can_codes.h:194
unsigned char rtr
Значение бита RTR (0 или 1)
Definition: can_codes.h:452
int wIRQ
Номер вектора прерывания
Definition: can_codes.h:518
Структура определения точки потери арбитража.
Definition: can_codes.h:343
unsigned char es
Наличие ошибок
Definition: can_codes.h:242
unsigned char alc
Точка потери арбитража
Definition: can_codes.h:414
unsigned char bs
Состояние шины
Definition: can_codes.h:250
Структура описывающая статус платы
Definition: can_codes.h:183
Структура для кода ошибки.
Definition: can_codes.h:259
unsigned char dlc
Количество принятых/выдаваемых байт данных (0-8)
Definition: can_codes.h:456
unsigned char dir
Направление
Definition: can_codes.h:322
Принятый/выдаваемый CAN кадр
Definition: can_codes.h:429

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