CAN-200: Файл can200_api.c

CAN-200 1.4.0

Функции
Файл can200_api.c

Файл содержит реализацию функций для работы с платами CAN200. Подробнее...

`#include "can200_api.h"`
`#include <sys/ioctl.h>`
`#include <sys/types.h>`
`#include <unistd.h>`
`#include <devctl.h>`
`#include <errno.h>`
`#include <string.h>`
`#include <assert.h>`
`#include "can_codes.h"`

## Функции

int | CAN200_HardReset (int fd)
| Аппаратный сброс платы Подробнее...
int | CAN200_SetDriverMode (int fd)
| Настройка выходных преобразователей платы Подробнее...
int | CAN200_GetConfig (int fd, struct CAN_info_t *info)
| Получение описания платы Подробнее...
int | CAN200_GetNumChannel (int fd, int *num_channel)
| Получение количества каналов в плате Подробнее...
int | CAN200_GetStatus (int fd, unsigned char *status)
| Получение статуса работы платы CAN200. Подробнее...
int | CAN200_GetOverCounter (int fd, int *counter)
| Получение количества отброшенных кадров Подробнее...
int | CAN200_GetWorkMode (int fd, unsigned char *mode)
| Получение текущего режима работы платы Подробнее...
int | CAN200_SetWorkMode (int fd, unsigned char mode)
| Установка режима работы платы Подробнее...
int | CAN200_GetCANSpeed (int fd, unsigned int *speed)
| Получение текущей настройки скорости обмена по шине CAN. Подробнее...
int | CAN200_SetCANSpeed (int fd, unsigned int speed)
| Получение текущей настройки скорости обмена по шине CAN. Подробнее...
int | CAN200_B_GetFilter (int fd, unsigned char *mask, unsigned char *filter)
| Получение фильтра входных пакетов (режим BasicCAN) Подробнее...
int | CAN200_B_SetFilter (int fd, unsigned char mask, unsigned char filter)
| Установка фильтра входных пакетов (режим BasicCAN) Подробнее...
int | CAN200_P_GetFilter (int fd, unsigned char *mode, unsigned char *amr0, unsigned char *amr1, unsigned char *amr2, unsigned char *amr3, unsigned char *acr0, unsigned char *acr1, unsigned char *acr2, unsigned char *acr3)
| Получение фильтра входных пакетов (режим PeliCAN) Подробнее...
int | CAN200_P_SetFilter (int fd, unsigned char mode, unsigned char amr0, unsigned char amr1, unsigned char amr2, unsigned char amr3, unsigned char acr0, unsigned char acr1, unsigned char acr2, unsigned char acr3)
| Установка фильтра входных пакетов (режим PeliCAN) Подробнее...
int | CAN200_P_GetRxErrorCounter (int fd, unsigned char *counter)
| Получение счетчика ошибок приема (режим PeliCAN) Подробнее...
int | CAN200_P_SetRxErrorCounter (int fd, unsigned char counter)
| Установка счетчика ошибок приема (режим PeliCAN) Подробнее...
int | CAN200_P_GetTxErrorCounter (int fd, unsigned char *counter)
| Получение счетчика ошибок выдачи (режим PeliCAN) Подробнее...
int | CAN200_P_SetTxErrorCounter (int fd, unsigned char counter)
| Установка счетчика ошибок выдачи (режим PeliCAN) Подробнее...
int | CAN200_P_GetErrorWarningLimit (int fd, unsigned char *counter)
| Получение верхнего предела счетчиков ошибок (режим PeliCAN) Подробнее...
int | CAN200_P_SetErrorWarningLimit (int fd, unsigned char counter)
| Установка верхнего предела счетчиков ошибок (режим PeliCAN) Подробнее...
int | CAN200_SetBusOn (int fd)
| Перевод платы в режим bus on. Подробнее...
int | CAN200_GetTransmitStatus (int fd, int *status, int *len)
| Получение статуса выдачи пакетов Подробнее...
int | CAN200_P_GetErrorCode (int fd, unsigned char *code)
| Получение кода ошибки (режим PeliCAN) Подробнее...
int | CAN200_P_GetArbitrationLostCapture (int fd, unsigned char *data)
| Получение точку потери арбитража при выдаче кадра (режим PeliCAN) Подробнее...
int | CAN200_DropTransmit (int fd, int command)
| Отмена выдачи пакетов Подробнее...
int | CAN200_GetDriverVersion (int fd, int *version)
| Отмена выдачи пакетов Подробнее...

## Подробное описание

Файл содержит реализацию функций для работы с платами CAN200.

## Функции

## ◆ CAN200_DropTransmit()

int CAN200_DropTransmit | ( | int | fd,
|  | int | command
| ) |  |

Отмена выдачи пакетов

Функция позволяет отменить операцию выдачи. Вызов с флагом CAN_DROP_CURRENT останавливает выдачу пакетов, удаляет из очереди все пакеты, поставленные в нее (функцийе write) текущим потоком и, в случае необходимости, вновь запускает выдачу Вызов с флагом CAN_DROP_ALL останавливает выдачу пакетов и полностью очищает очередь выдачи

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  command | (IN) Флаг определяющий отбрасываемые пакеты (CAN_DROP_CURRENT или CAN_DROP_ALL)

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_GetCANSpeed()

int CAN200_GetCANSpeed | ( | int | fd,
|  | unsigned int * | speed
| ) |  |

Получение текущей настройки скорости обмена по шине CAN.

Функция возвращает текущую скорость обмена по шине CAN. Возможные варианты скорости: CAN_SPEED_1000, CAN_SPEED_800, CAN_SPEED_500, CAN_SPEED_250, CAN_SPEED_125, CAN_SPEED_20, CAN_SPEED_10, CAN_SPEED_USER_DEFINED

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  speed | (OUT) Указатель переменную, где будет сохранена текущая скорость

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_GetConfig()

int CAN200_GetConfig | ( | int | fd,
|  | struct CAN_info_t * | info
| ) |  |

Получение описания платы

Функция возвращает описание платы (тип, серийный номер и т.д.)

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  info | (OUT) Указатель на структуру CAN_info_t, где будет сохранена информация о плате

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

Примеры:
  test-read.c и test-write.c.

## ◆ CAN200_GetDriverVersion()

int CAN200_GetDriverVersion | ( | int | fd,
|  | int * | version
| ) |  |

Отмена выдачи пакетов

Функция возвращает версию драйвера.

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  version | (OUT) Версия драйвера (3 байта, младший - подподверсия, второй - подверсия, третий - версия)

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_GetNumChannel()

int CAN200_GetNumChannel | ( | int | fd,
|  | int * | num_channel
| ) |  |

Получение количества каналов в плате

Функция возвращает количество каналов в плате

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  num_channel | (OUT) Указатель на переменную, где будет сохранено количество каналов в плате

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_GetOverCounter()

int CAN200_GetOverCounter | ( | int | fd,
|  | int * | counter
| ) |  |

Получение количества отброшенных кадров

Фунцкия возвращает количество кадров отброшенных из-за нехватки места в буфере приема драйвера

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  counter | (OUT) Указатель переменную, где будет сохранено кол-во отброшенных кадров

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_GetStatus()

int CAN200_GetStatus | ( | int | fd,
|  | unsigned char * | status
| ) |  |

Получение статуса работы платы CAN200.

Функция возвращает статус платы. Расшифровка статуса приозводится в соответствии с объединением CAN_status_t

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  status | (OUT) Указатель переменную, где будет сохранен статус

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_GetTransmitStatus()

int CAN200_GetTransmitStatus | ( | int | fd,
|  | int * | status,
|  | int * | len
| ) |  |

Получение статуса выдачи пакетов

Функция возвращает текущее состояние выдачи (завершена/не завершена/ошибка) и кол-во оставщихся данных для выдачи. Возможные значение статуса выдачи: CAN_TRANSMIT_WAIT, CAN_TRANSMIT, CAN_TRANSMIT_COMPLETE, CAN_TRANSMIT_ERROR

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  status | (IN) Указатель переменную, где будет сохранен статус выдачи
  len | (IN) Указатель переменную, где будет сохранена длина оставшихся данных

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

Примеры:
  test-write.c.

## ◆ CAN200_GetWorkMode()

int CAN200_GetWorkMode | ( | int | fd,
|  | unsigned char * | mode
| ) |  |

Получение текущего режима работы платы

Функция возвращает текущий режи работы платы. Возможные варианты режима работы: BasicCAN и PeliCAN

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  mode | (OUT) Указатель переменную, где будет сохранен текущий режим работы

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_HardReset()

int CAN200_HardReset | ( | int | fd | ) |

Аппаратный сброс платы

Функция выполняет аппаратный сброс плат CAN-200PC, CAN-200MP, CAN-200PC104

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_SetBusOn()

int CAN200_SetBusOn | ( | int | fd | ) |

Перевод платы в режим bus on.

Функция позволяет переключить плату из режима bus off в режим bus on

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  один из кодов ошибки возвращаемых функцией devctl

## ◆ CAN200_SetCANSpeed()

int CAN200_SetCANSpeed | ( | int | fd,
|  | unsigned int | speed
| ) |  |

Получение текущей настройки скорости обмена по шине CAN.

Функция установки скорости обмена по шине CAN. Возможные варианты скорости: CAN_SPEED_1000, CAN_SPEED_800, CAN_SPEED_500, CAN_SPEED_250, CAN_SPEED_125, CAN_SPEED_20, CAN_SPEED_10, CAN_SPEED_USER_DEFINED

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  speed | (IN) Задаваемая скорость

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

Примеры:
  test-read.c и test-write.c.

## ◆ CAN200_SetDriverMode()

int CAN200_SetDriverMode | ( | int | fd | ) |

Настройка выходных преобразователей платы

Функция выполняет переключение платы в рабочий режим

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  один из кодов ошибки возвращаемых функцией devctl

Предупреждения
  Данную функцию необходимо вызвать до начала приема/выдачи данных

Примеры:
  test-read.c и test-write.c.

## ◆ CAN200_SetWorkMode()

int CAN200_SetWorkMode | ( | int | fd,
|  | unsigned char | mode
| ) |  |

Установка режима работы платы

Функция устанавливает режим работы платы. Возможные варианты режима работы: BasicCAN и PeliCAN

Аргументы

  fd | (IN) Дискриптор платы, возврашенный функцией open
  mode | (IN) Задаваемый режим работы платы

Возвращает
  EOK - успешное завершение
  EBADF - неверный хэндл платы
  EINVAL - ошибка входных параметров
  один из кодов ошибки возвращаемых функцией devctl

Примеры:
  test-read.c и test-write.c.

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