/**
******************************************************************************
* @file usbh_mtp.h
* @author MCD Application Team
* @version V3.0.0
* @date 18-February-2014
* @brief This file contains all the prototypes for the usbh_mtp.c
******************************************************************************
* @attention
*
*
© COPYRIGHT 2014 STMicroelectronics
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
*/
/* Define to prevent recursive ----------------------------------------------*/
#ifndef __USBH_MTP_CORE_H
#define __USBH_MTP_CORE_H
/* Includes ------------------------------------------------------------------*/
#include "usbh_mtp_ptp.h"
#include "usbh_core.h"
/** @addtogroup USBH_LIB
* @{
*/
/** @addtogroup USBH_CLASS
* @{
*/
/** @addtogroup USBH_MTP_CLASS
* @{
*/
/** @defgroup USBH_MTP_CORE
* @brief This file is the Header file for USBH_MTP_CORE.c
* @{
*/
/*Communication Class codes*/
#define USB_MTP_CLASS 0x06 /* Still Image Class)*/
#define MTP_MAX_STORAGE_UNITS_NBR PTP_MAX_STORAGE_UNITS_NBR
/**
* @}
*/
/** @defgroup USBH_MTP_CORE_Exported_Types
* @{
*/
typedef enum
{
MTP_IDLE = 0,
MTP_GETDEVICEINFO ,
MTP_OPENSESSION ,
MTP_CLOSESESSION ,
MTP_GETSTORAGEIDS ,
MTP_GETSTORAGEINFO ,
}
MTP_StateTypeDef;
typedef enum
{
MTP_EVENTS_INIT = 0,
MTP_EVENTS_GETDATA ,
}
MTP_EventsStateTypeDef;
typedef struct
{
MTP_EventsStateTypeDef state;
uint32_t timer;
uint16_t poll;
PTP_EventContainerTypedef container;
}
MTP_EventHandleTypedef;
typedef struct
{
uint32_t CurrentStorageId;
uint32_t ObjectFormatCode;
uint32_t CurrentObjectHandler;
uint8_t ObjectHandlerNbr;
uint32_t Objdepth;
}
MTP_ParamsTypedef;
typedef struct
{
PTP_DeviceInfoTypedef devinfo;
PTP_StorageIDsTypedef storids;
PTP_StorageInfoTypedef storinfo[MTP_MAX_STORAGE_UNITS_NBR];
PTP_ObjectHandlesTypedef Handles;
}
MTP_InfoTypedef;
/* Structure for MTP process */
typedef struct _MTP_Process
{
MTP_InfoTypedef info;
MTP_ParamsTypedef params;
uint8_t DataInPipe;
uint8_t DataOutPipe;
uint8_t NotificationPipe;
uint8_t DataOutEp;
uint8_t DataInEp;
uint8_t NotificationEp;
uint16_t DataOutEpSize;
uint16_t DataInEpSize;
uint16_t NotificationEpSize;
MTP_StateTypeDef state;
MTP_EventHandleTypedef events;
PTP_HandleTypeDef ptp;
uint32_t current_storage_unit;
uint32_t is_ready;
}
MTP_HandleTypeDef;
#define MTP_StorageInfoTypedef PTP_StorageInfoTypedef
#define MTP_ObjectHandlesTypedef PTP_ObjectHandlesTypedef
#define MTP_ObjectInfoTypedef PTP_ObjectInfoTypedef
/**
* @}
*/
/** @defgroup USBH_MTP_CORE_Exported_Defines
* @{
*/
/**
* @}
*/
/** @defgroup USBH_MTP_CORE_Exported_Macros
* @{
*/
/**
* @}
*/
/** @defgroup USBH_MTP_CORE_Exported_Variables
* @{
*/
extern USBH_ClassTypeDef MTP_Class;
#define USBH_MTP_CLASS &MTP_Class
/**
* @}
*/
/** @defgroup USBH_MTP_CORE_Exported_FunctionsPrototype
* @{
*/
uint8_t USBH_MTP_IsReady (USBH_HandleTypeDef *phost);
USBH_StatusTypeDef USBH_MTP_SelectStorage (USBH_HandleTypeDef *phost, uint8_t storage_idx);
USBH_StatusTypeDef USBH_MTP_GetNumStorage (USBH_HandleTypeDef *phost, uint8_t *storage_num);
USBH_StatusTypeDef USBH_MTP_GetNumObjects (USBH_HandleTypeDef *phost,
uint32_t storage_id,
uint32_t objectformatcode,
uint32_t associationOH,
uint32_t* numobs);
USBH_StatusTypeDef USBH_MTP_GetStorageInfo (USBH_HandleTypeDef *phost,
uint8_t storage_idx,
MTP_StorageInfoTypedef *info);
USBH_StatusTypeDef USBH_MTP_GetObjectHandles (USBH_HandleTypeDef *phost,
uint32_t storage_id,
uint32_t objectformatcode,
uint32_t associationOH,
PTP_ObjectHandlesTypedef* objecthandles);
USBH_StatusTypeDef USBH_MTP_GetObjectInfo (USBH_HandleTypeDef *phost,
uint32_t handle,
PTP_ObjectInfoTypedef* objectinfo);
USBH_StatusTypeDef USBH_MTP_DeleteObject (USBH_HandleTypeDef *phost,
uint32_t handle,
uint32_t objectformatcode);
USBH_StatusTypeDef USBH_MTP_GetObject (USBH_HandleTypeDef *phost,
uint32_t handle,
uint8_t *object);
USBH_StatusTypeDef USBH_MTP_GetPartialObject(USBH_HandleTypeDef *phost,
uint32_t handle,
uint32_t offset,
uint32_t maxbytes,
uint8_t *object,
uint32_t *len);
USBH_StatusTypeDef USBH_MTP_GetObjectPropsSupported (USBH_HandleTypeDef *phost,
uint16_t ofc,
uint32_t *propnum,
uint16_t *props);
USBH_StatusTypeDef USBH_MTP_GetObjectPropDesc (USBH_HandleTypeDef *phost,
uint16_t opc,
uint16_t ofc,
PTP_ObjectPropDescTypeDef *opd);
USBH_StatusTypeDef USBH_MTP_GetObjectPropList (USBH_HandleTypeDef *phost,
uint32_t handle,
MTP_PropertiesTypedef *pprops,
uint32_t *nrofprops);
USBH_StatusTypeDef USBH_MTP_SendObject (USBH_HandleTypeDef *phost,
uint32_t handle,
uint8_t *object,
uint32_t size);
USBH_StatusTypeDef USBH_MTP_GetDevicePropDesc (USBH_HandleTypeDef *phost,
uint16_t propcode,
PTP_DevicePropDescTypdef* devicepropertydesc);
void USBH_MTP_EventsCallback(USBH_HandleTypeDef *phost, uint32_t event, uint32_t param);
/**
* @}
*/
#endif /* __USBH_MTP_CORE_H */
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/