MotorControlModuleSDFM_TMS3.../Projects/EFC_UsbDriver/include/efc_usb.h
2024-06-07 11:04:32 +03:00

98 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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_ */