MotorControlModuleSDFM_TMS3.../Projects/EFC_UsbDriver/include/efc_usb.h

98 lines
2.9 KiB
C
Raw Normal View History

2024-06-07 11:04:32 +03:00
/*
* efc_usb.h
*
* Created on: 21 Aug 2023
* Author: malyarenko
*/
#ifndef INCLUDE_EFC_USB_H_
#define INCLUDE_EFC_USB_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#include <stdbool.h>
#include <efc_usb/status.h>
#include <efc_usb/service.h>
#include <efc_usb/loader.h>
/**
* @defgroup Api API
*
* @{
*/
/**
* @defgroup CommonApi Общий API
*
* @{
*/
/** @brief Тип конфигурации USB драйвера */
enum efc_usb_config_type {
/** Конфигурация драйвера для работы в сервисном режиме */
EFC_USB_CONFIG_SV = 0x01,
/** Конфигурация драйвера для работы в режиме загрузчика */
EFC_USB_CONFIG_LD = 0x02,
};
/**
* @brief Описание взаимодействия с пользователем драйвера
*
* Структура содержит параметры и пользовательские обратные вызовы
* для обеспечения взаимодействия с пользовательской программой
*
* Структура должна быть проинициализирована до вызова функции @ref efc_usb_init
*
* Если какая либо конфигуарция не испоьзуется, соответствующее
* поле должно быть задано @c NULL
*/
struct efc_usb_config {
/** Конфигурация драйвера для работы в сервисном режиме */
const struct efc_usb_sv_config* sv;
const struct efc_usb_ld_config* ld;
};
/**
* @brief Инициализация USB драйвера
*
* Вызов функции инициализации должен предшествовать всем оставльным функциям драйвера
*
* @param enable_config Флаги используемых конфигураций, объединённых через побитовое ИЛИ
* @param current_config Флаг текущей конфигураций
*
* @return @c true при успешной инициализации; иначе @c false
*/
bool efc_usb_init(uint8_t enable_config, uint8_t current_config, const struct efc_usb_config* config);
/**
* @brief Денициализация USB драйвера
*
* После вызова драйвера обращения к его функциям запрещено
*
* @return @c void
*/
void efc_usb_fini();
/**
* @brief Обработчик прерываний USB драйвера
*
* Обработчик должен быть зарегистрирован на прерывание от используемого модуля USB
*
* @return void
*/
void efc_usb_int_handler();
/** @} */ /* CommonApi */
/** @} */ /* Api */
#ifdef __cplusplus
}
#endif
#endif /* INCLUDE_EFC_USB_H_ */