mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-17 21:58:33 +03:00
Renamed main folder to firmware
This commit is contained in:
145
firmware/atmel_softpack_libraries/usb/include/MSDIOFifo.h
Normal file
145
firmware/atmel_softpack_libraries/usb/include/MSDIOFifo.h
Normal file
@@ -0,0 +1,145 @@
|
||||
/* ----------------------------------------------------------------------------
|
||||
* ATMEL Microcontroller Software Support
|
||||
* ----------------------------------------------------------------------------
|
||||
* Copyright (c) 2008, Atmel Corporation
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the disclaimer below.
|
||||
*
|
||||
* Atmel's name may not be used to endorse or promote products derived from
|
||||
* this software without specific prior written permission.
|
||||
*
|
||||
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef _MSDIOFIFO_H
|
||||
#define _MSDIOFIFO_H
|
||||
|
||||
/** \file
|
||||
* \addtogroup usbd_msd
|
||||
*@{
|
||||
*/
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Headers
|
||||
*------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Definitions
|
||||
*------------------------------------------------------------------------------*/
|
||||
|
||||
/** Idle state, do nothing */
|
||||
#define MSDIO_IDLE 0
|
||||
/** Start, to start IO operation */
|
||||
#define MSDIO_START 1
|
||||
/** Wait, waiting for IO operation done */
|
||||
#define MSDIO_WAIT 2
|
||||
/** Next, to check if the next block can be performed */
|
||||
#define MSDIO_NEXT 3
|
||||
/** Pause, to pause the process for buffer full or null */
|
||||
#define MSDIO_PAUSE 4
|
||||
/** Abort, to abort the process */
|
||||
#define MSDIO_ABORT 5
|
||||
/** Done, finish without error */
|
||||
#define MSDIO_DONE 6
|
||||
/** Error, any error happens */
|
||||
#define MSDIO_ERROR 7
|
||||
|
||||
/** FIFO offset before USB transmit start */
|
||||
/*#define MSDIO_FIFO_OFFSET (4*512) */
|
||||
|
||||
|
||||
/** FIFO trunk size (in each transfer, large amount of data) */
|
||||
#if !defined(MSD_OP_BUFFER)
|
||||
#define MSDIO_READ10_CHUNK_SIZE (4*512)
|
||||
#define MSDIO_WRITE10_CHUNK_SIZE (4*512)
|
||||
#endif
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Types
|
||||
*------------------------------------------------------------------------------*/
|
||||
|
||||
/** \brief FIFO buffer for READ/WRITE (disk) operation of a mass storage device */
|
||||
typedef struct _MSDIOFifo {
|
||||
|
||||
/** Pointer to the ring buffer allocated for read/write */
|
||||
unsigned char * pBuffer;
|
||||
/** The size of the buffer allocated */
|
||||
unsigned int bufferSize;
|
||||
#ifdef MSDIO_FIFO_OFFSET
|
||||
/** The offset to start USB transfer (READ10) */
|
||||
unsigned int bufferOffset;
|
||||
#endif
|
||||
/** The index of input data (loaded to fifo buffer) */
|
||||
unsigned int inputNdx;
|
||||
/** The total size of the loaded data */
|
||||
unsigned int inputTotal;
|
||||
/** The index of output data (sent from the fifo buffer) */
|
||||
unsigned int outputNdx;
|
||||
/** The total size of the output data */
|
||||
unsigned int outputTotal;
|
||||
|
||||
/** The total size of the data */
|
||||
unsigned int dataTotal;
|
||||
/** The size of the block in bytes */
|
||||
unsigned short blockSize;
|
||||
#if defined(MSDIO_READ10_CHUNK_SIZE) || defined(MSDIO_WRITE10_CHUNK_SIZE)
|
||||
/** The size of one chunk */
|
||||
/** (1 block, or several blocks for large amount data R/W) */
|
||||
unsigned int chunkSize;
|
||||
#endif
|
||||
/** State of input & output */
|
||||
unsigned char inputState;
|
||||
unsigned char outputState;
|
||||
|
||||
/*- Statistics */
|
||||
|
||||
/** Times when fifo has no data to send */
|
||||
unsigned short nullCnt;
|
||||
/** Times when fifo can not load more input data */
|
||||
unsigned short fullCnt;
|
||||
} MSDIOFifo, *PMSDIOFifo;
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* MACROS
|
||||
*------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Increase the index, by defined block size, in the ring buffer
|
||||
* \param ndx The index to be increased
|
||||
* \param sectSize The defined block size
|
||||
* \param bufSize The ring buffer size
|
||||
*------------------------------------------------------------------------------*/
|
||||
#define MSDIOFifo_IncNdx(ndx, sectSize, bufSize) \
|
||||
if ((ndx) >= (bufSize) - (sectSize)) (ndx) = 0; \
|
||||
else (ndx) += (sectSize)
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------
|
||||
* Exported Functions
|
||||
*------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
extern void MSDIOFifo_Init(MSDIOFifo *pFifo,
|
||||
void * pBuffer, unsigned short bufferSize);
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif /* _MSDIOFIFO_H */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user