98 lines
2.9 KiB
C
98 lines
2.9 KiB
C
|
|
/*
|
|||
|
|
* 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_ */
|