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

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
183 struct CAN_info_t
184 {
190 char szName[128];
194 char szSN[10];
198 int wPorts;
202 int wIRQ;
203 };
204
209 union CAN_status_t
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
331 union CAN_error_t
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
415 union CAN_arbitration_lost_capture_t
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__ */
CAN_arbitration_lost_capture_t::rsvd
unsigned char rsvd
Зарезервировано
Definition: can_codes.h:490
CAN_error_t::errc
unsigned char errc
Код ошибки
Definition: can_codes.h:406
CAN_data::id
unsigned long id
Идентификатор
Definition: can_codes.h:306
CAN_data::type
unsigned char type
Формат кадра
Definition: can_codes.h:298
CAN_status_t::tbs
unsigned char tbs
Доступность буфера передачи
Definition: can_codes.h:236
CAN_status_t::dos
unsigned char dos
Переполнение приемного буфера
Definition: can_codes.h:228
CAN_error_t::seg
unsigned char seg
Сегмент
Definition: can_codes.h:386
CAN_info_t
Структура для получения информации о плате.
Definition: can_codes.h:183
CAN_status_t::ts
unsigned char ts
Состояние передачи
Definition: can_codes.h:260
CAN_status_t::rs
unsigned char rs
Состояние приёма
Definition: can_codes.h:252
CAN_status_t::tcs
unsigned char tcs
Завершенность передачи
Definition: can_codes.h:244
CAN_info_t::wPorts
int wPorts
Базовый адрес
Definition: can_codes.h:198
CAN_info_t::szSN
char szSN[10]
Серийный номер платы
Definition: can_codes.h:194
CAN_info_t::szName
char szName[128]
Имя платы
Definition: can_codes.h:190
CAN_status_t::rbs
unsigned char rbs
Состояние буфера приема
Definition: can_codes.h:220
CAN_data::rtr
unsigned char rtr
Значение бита RTR (0 или 1)
Definition: can_codes.h:310
CAN_info_t::wIRQ
int wIRQ
Номер вектора прерывания
Definition: can_codes.h:202
CAN_arbitration_lost_capture_t
Структура определения точки потери арбитража.
Definition: can_codes.h:415
CAN_status_t::es
unsigned char es
Наличие ошибок
Definition: can_codes.h:268
CAN_arbitration_lost_capture_t::alc
unsigned char alc
Точка потери арбитража
Definition: can_codes.h:486
CAN_status_t::bs
unsigned char bs
Состояние шины
Definition: can_codes.h:276
CAN_status_t
Структура описывающая статус платы
Definition: can_codes.h:209
CAN_error_t
Структура для кода ошибки.
Definition: can_codes.h:331
CAN_data::dlc
unsigned char dlc
Количество принятых/выдаваемых байт данных (0-8)
Definition: can_codes.h:314
CAN_error_t::dir
unsigned char dir
Направление
Definition: can_codes.h:394
CAN_data
Принятый/выдаваемый CAN кадр
Definition: can_codes.h:287

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