CAN-200  1.4.0
can_codes.h
См. документацию.
1 #ifndef __CAN_CODES_H__
2 #define __CAN_CODES_H__
3 
173 #include <sys/time.h>
174 
175 #pragma pack(1)
176 
184 {
190  char szName[128];
194  char szSN[10];
198  int wPorts;
202  int wIRQ;
203 };
204 
210 {
211  struct
212  {
220  unsigned char rbs : 1;
228  unsigned char dos : 1;
236  unsigned char tbs : 1;
244  unsigned char tcs : 1;
252  unsigned char rs : 1;
260  unsigned char ts : 1;
268  unsigned char es : 1;
276  unsigned char bs : 1;
277  } bit;
278  unsigned char byte;
279 };
280 
287 typedef struct
288 {
298  unsigned char type;
306  unsigned long id;
310  unsigned char rtr;
314  unsigned char dlc;
320  unsigned char data[8];
324  struct timeval timestamp;
325 } CAN_data, *pCAN_data;
326 
332 {
333  struct
334  {
386  unsigned char seg : 5;
394  unsigned char dir : 1;
406  unsigned char errc : 2;
407  } bit;
408  unsigned char byte;
409 };
410 
416 {
417  struct
418  {
486  unsigned char alc : 5;
490  unsigned char rsvd : 3;
491  } bit;
492  unsigned char byte;
493 };
494 
496 /* Структура для задания фильтра режима BasicCAN */
497 struct b_filter_t
498 {
499  unsigned char mask;
500  unsigned char filter;
501 };
502 
503 /* Структура для задания фильтра режима PeliCAN */
504 struct p_filter_t
505 {
506  unsigned char mode;
507  unsigned char mask[4];
508  unsigned char filter[4];
509 };
510 
511 /* Структура для получения статуса выдачи */
512 struct transmit_status_t
513 {
514  int status;
515  int len;
516 };
517 
518 union devctl_req_t
519 {
520  unsigned char mode; /* Режим работы канала платы */
521  struct CAN_info_t info; /* Информация о плате */
522  unsigned int speed; /* Скорость канала платы */
523  unsigned char status; /* Статус канала платы */
524  struct b_filter_t b_filter; /* Фильтр режима BasicCAN */
525  struct p_filter_t p_filter; /* Фильтр режима PeliCAN */
526  unsigned char counter; /* Счетчик */
527  int over_counter; /* Счетчик переполнений */
528  struct transmit_status_t sts; /* Статус выдачи */
529  unsigned char code; /* Код ошибки */
530  unsigned char command; /* Код команды для отмены выдачи */
531  int num_channel; /* Количество каналов в плате */
532  int version; /* Версия драйвера */
533 };
536 #pragma pack()
537 
542 #define CAN_TRANSMIT_WAIT 0
543 #define CAN_TRANSMIT 1
544 #define CAN_TRANSMIT_COMPLETE 2
545 #define CAN_TRANSMIT_ERROR 3
546 #define CAN_TRANSMIT_DROP 4
547 
553 #define CAN_DROP_CURRENT 0
554 #define CAN_DROP_ALL 1
555 
561 #define BasicCAN 0
562 #define PeliCAN 1
563 #define ErrorCAN 2
564 
570 #define CAN_SPEED_USER_DEFINED(btr0, btr1) (0xffff | (((btr0) & 0xff) << 24) | (((btr1) & 0xff) << 16))
571 #define IS_CAN_SPEED_USER_DEFINED(speed) ((0xffff == ((speed) & 0xffff)) ? 1 : 0)
572 #define CAN_SPEED_GET_BTR0(speed) (((speed) >> 24) & 0xff)
573 #define CAN_SPEED_GET_BTR1(speed) (((speed) >> 16) & 0xff)
574 #define CAN_SPEED_1000 1000
575 #define CAN_SPEED_800 800
576 #define CAN_SPEED_500 500
577 #define CAN_SPEED_250 250
578 #define CAN_SPEED_125 125
579 #define CAN_SPEED_50 50
580 #define CAN_SPEED_20 20
581 #define CAN_SPEED_10 10
582 
584 // Команды управления платами
585 
586 #define CAN_HARDRESET 0 // Аппаратный сброс контроллера канала платы
587 #define CAN_SETWORKMODE 1 // Установка режима работы канала платы
588 #define CAN_GETWORKMODE 2 // Получение режима работы канала платы
589 #define CAN_SETDRIVERMODE 3 // Настройка выходного формирователя CAN-контроллера
590 #define CAN_GETCANSPEED 4 // Получение скорости работы канала платы
591 #define CAN_SETCANSPEED 5 // Установка скорости работы канала платы
592 #define CAN_GETSTATUS 6 // Получение статуса канала платы
593 #define CAN_GETCONFIG 7 // Получение конфигурации платы
594 #define CAN_B_SETFILTER 8 // Установка фильтра режима BasicCAN канала платы
595 #define CAN_P_SETFILTER 9 // Установка фильтра режима PeliCAN канала платы
596 #define CAN_P_GETRXERRORCOUNTER 10 // Получение счетчика ошибок приема режима PeliCAN канала платы
597 #define CAN_P_SETRXERRORCOUNTER 11 // Установка счетчика ошибок приема режима PeliCAN канала платы
598 #define CAN_P_GETTXERRORCOUNTER 12 // Получение счетчика ошибок выдача режима PeliCAN канала платы
599 #define CAN_P_SETTXERRORCOUNTER 13 // Установка счетчика ошибок выдачи режима PeliCAN канала платы
600 #define CAN_P_GETERRORWARNINGLIMIT 14 // Получение верхнего предела счетчиков ошибок режима PeliCAN канала платы
601 #define CAN_P_SETERRORWARNINGLIMIT 15 // Установка верхнего предела счетчиков ошибок режима PeliCAN канала платы
602 #define CAN_B_GETFILTER 16 // Получение фильтра режима BasicCAN канала платы
603 #define CAN_P_GETFILTER 17 // Получение фильтра режима PeliCAN канала платы
604 #define CAN_GETOVERCOUNTER 18 // Получение счетчика переполнений приема канала платы
605 #define CAN_SETBUSON 19 // Переключение канала в рабочий режим, после Bus Off
606 #define CAN_GETTRANSMITSTATUS 20 // Получение статуса выдачи пакета
607 #define CAN_P_GETERRORCODE 21 // Получение кода ошибки
608 #define CAN_P_GETEARBITRATIONLOSTCAPTURE 22 // Получение точки потери данных
609 #define CAN_DROPTRANSMIT 23 // Отмена выдачи
610 #define CAN_GETNUMCHANNEL 24 // Запрос количества каналов в плате
611 #define CAN_GETDRIVERVERSION 25 // Получение версии драйвера
612 
614 #endif /* __CAN_CODES_H__ */
unsigned char rsvd
Зарезервировано
Definition: can_codes.h:490
unsigned char errc
Код ошибки
Definition: can_codes.h:406
unsigned long id
Идентификатор
Definition: can_codes.h:306
unsigned char type
Формат кадра
Definition: can_codes.h:298
unsigned char tbs
Доступность буфера передачи
Definition: can_codes.h:236
unsigned char dos
Переполнение приемного буфера
Definition: can_codes.h:228
unsigned char seg
Сегмент
Definition: can_codes.h:386
Структура для получения информации о плате.
Definition: can_codes.h:183
unsigned char ts
Состояние передачи
Definition: can_codes.h:260
unsigned char rs
Состояние приёма
Definition: can_codes.h:252
unsigned char tcs
Завершенность передачи
Definition: can_codes.h:244
int wPorts
Базовый адрес
Definition: can_codes.h:198
char szSN[10]
Серийный номер платы
Definition: can_codes.h:194
char szName[128]
Имя платы
Definition: can_codes.h:190
unsigned char rbs
Состояние буфера приема
Definition: can_codes.h:220
unsigned char rtr
Значение бита RTR (0 или 1)
Definition: can_codes.h:310
int wIRQ
Номер вектора прерывания
Definition: can_codes.h:202
Структура определения точки потери арбитража.
Definition: can_codes.h:415
unsigned char es
Наличие ошибок
Definition: can_codes.h:268
unsigned char alc
Точка потери арбитража
Definition: can_codes.h:486
unsigned char bs
Состояние шины
Definition: can_codes.h:276
Структура описывающая статус платы
Definition: can_codes.h:209
Структура для кода ошибки.
Definition: can_codes.h:331
unsigned char dlc
Количество принятых/выдаваемых байт данных (0-8)
Definition: can_codes.h:314
unsigned char dir
Направление
Definition: can_codes.h:394
Принятый/выдаваемый CAN кадр
Definition: can_codes.h:287

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