ATMEL: fs_com.h Source File

- Main Page
- Modules
- Data Structures
- Files
- Related Pages

# fs_com.h

Go to the documentation of this file.

    00001 /*This file is prepared for Doxygen automatic documentation generation.*/
    00013 /* Copyright (C) 2006-2008, Atmel Corporation All rights reserved.
    00014  *
    00015  * Redistribution and use in source and binary forms, with or without
    00016  * modification, are permitted provided that the following conditions are met:
    00017  *
    00018  * 1. Redistributions of source code must retain the above copyright notice,
    00019  * this list of conditions and the following disclaimer.
    00020  *
    00021  * 2. Redistributions in binary form must reproduce the above copyright notice,
    00022  * this list of conditions and the following disclaimer in the documentation
    00023  * and/or other materials provided with the distribution.
    00024  *
    00025  * 3. The name of Atmel may not be used to endorse or promote products derived
    00026  * from this software without specific prior written permission.
    00027  *
    00028  * 4. This software may only be redistributed and used in connection with an Atmel
    00029  * AVR product.
    00030  *
    00031  * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
    00032  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    00033  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY AND
    00034  * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
    00035  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    00036  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    00037  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    00038  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    00039  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    00040  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    00041  */
    00042
    00043 #ifndef _FAT_COM_H_
    00044 #define _FAT_COM_H_
    00045
    00046 #include "conf_explorer.h"
    00047
    00049 #undef _GLOBEXT_
    00050 #if (defined _fat_c_)
    00051 #  define _GLOBEXT_
    00052 #else
    00053 #  define _GLOBEXT_ extern
    00054 #endif
    00055
    00056
    00057 //------- Check configuration defined in conf_explorer.h
    00058
    00059 #ifndef  FS_FAT_12
    00060 #  error FS_FAT_12 must be defined with ENABLED or DISABLED in conf_explorer.h
    00061 #endif
    00062 #ifndef  FS_FAT_16
    00063 #  error FS_FAT_16 must be defined with ENABLED or DISABLED in conf_explorer.h
    00064 #endif
    00065 #ifndef  FS_FAT_32
    00066 #  error FS_FAT_32 must be defined with ENABLED or DISABLED in conf_explorer.h
    00067 #endif
    00068
    00069 #ifndef  FS_MULTI_PARTITION
    00070 #  error FS_MULTI_PARTITION must be defined with ENABLED or DISABLED in conf_explorer.h
    00071 #endif
    00072 #ifndef  FS_NB_NAVIGATOR
    00073 #  error FS_NB_NAVIGATOR must be defined in conf_explorer.h
    00074 #endif
    00075
    00076
    00077 //_____ D E F I N I T I O N S ______________________________________________
    00078
    00079
    00080 //**** Defines used in function parameters
    00081
    00084 #define  FS_NAME_GET          TRUE
    00085 #define  FS_NAME_CHECK        FALSE
    00087
    00090 #define  FS_SN_READ           TRUE
    00091 #define  FS_SN_WRITE          FALSE
    00093
    00096 #define  FS_LABEL_READ        TRUE
    00097 #define  FS_LABEL_WRITE       FALSE
    00099
    00102 #define  COPY_BUSY            0x00
    00103 #define  COPY_FAIL            0x01
    00104 #define  COPY_FINISH          0x02
    00106
    00109 #define  FS_DATE_CREATION     TRUE
    00110 #define  FS_DATE_LAST_WRITE   FALSE
    00112
    00115 #define  FS_FILE              TRUE
    00116 #define  FS_DIR               FALSE
    00118
    00121 #define  FS_ID_DIR_EMPTY      0xFFFFFFFF     // ID no directory = bad cluster
    00122 #define  FS_ID_DIR_ROOT       0              // ID of the root directory is always the cluster 0
    00124
    00127 #define  FS_ATTR_FILE         ((Byte)0x00)   // Normal File attribute
    00128 #define  FS_ATTR_READ_ONLY    ((Byte)0x01)   // Read Only File attribute
    00129 #define  FS_ATTR_HIDDEN       ((Byte)0x02)   // Hidden File attribute
    00130 #define  FS_ATTR_SYSTEM       ((Byte)0x04)   // System File attribute
    00131 #define  FS_ATTR_VOLUME_ID    ((Byte)0x08)   // Volume id attribute
    00132 #define  FS_ATTR_DIRECTORY    ((Byte)0x10)   // Directory attribute
    00133 #define  FS_ATTR_ARCHIVE      ((Byte)0x20)   // Archive attribute
    00134 #define  FS_ATTR_LFN_ENTRY    ((Byte)0x0F)   // LFN entry attribute
    00135 #define  Fat_is_not_a_file    ((FS_ATTR_DIRECTORY & fs_g_nav_entry.u8_attr) || (FS_ATTR_VOLUME_ID & fs_g_nav_entry.u8_attr))
    00137
    00140 #define  FOPEN_READ_ACCESS    0x01                                                                    // autorize the read access
    00141 #define  FOPEN_WRITE_ACCESS   0x02                                                                    // autorize the write access
    00142 #define  FOPEN_CLEAR_SIZE     0x04                                                                    // reset size
    00143 #define  FOPEN_CLEAR_PTR      0x08                                                                    // reset flux pointer
    00144 #define  FOPEN_MODE_R         (FOPEN_READ_ACCESS|FOPEN_CLEAR_PTR)
    00145 #define  FOPEN_MODE_R_PLUS    (FOPEN_READ_ACCESS|FOPEN_WRITE_ACCESS|FOPEN_CLEAR_PTR)
    00146 #define  FOPEN_MODE_W         (FOPEN_WRITE_ACCESS|FOPEN_CLEAR_PTR|FOPEN_CLEAR_SIZE)
    00147 #define  FOPEN_MODE_W_PLUS    (FOPEN_READ_ACCESS|FOPEN_WRITE_ACCESS|FOPEN_CLEAR_PTR|FOPEN_CLEAR_SIZE)
    00148 #define  FOPEN_MODE_APPEND    (FOPEN_WRITE_ACCESS)
    00149
    00150
    00152 #define  FS_EOF               0xFFFF
    00153
    00156 #define  FS_FORMAT_DEFAULT       0x01
    00157 #define  FS_FORMAT_FAT           0x02
    00158 #define  FS_FORMAT_FAT32         0x03
    00159 #define  FS_FORMAT_NOMBR_FLAG    0x80
    00160 #define  FS_FORMAT_DEFAULT_NOMBR (FS_FORMAT_NOMBR_FLAG | FS_FORMAT_DEFAULT)
    00161 #define  FS_FORMAT_FAT_NOMBR     (FS_FORMAT_NOMBR_FLAG | FS_FORMAT_FAT)
    00162 #define  FS_FORMAT_FAT32_NOMBR   (FS_FORMAT_NOMBR_FLAG | FS_FORMAT_FAT32)
    00164
    00165
    00166 //**** communication STRUCTURES
    00167
    00170 typedef U16 UNICODE;
    00171 typedef char      _MEM_TYPE_SLOW_ * FS_STRING;
    00172 typedef UNICODE   _MEM_TYPE_SLOW_ * FS_STR_UNICODE;
    00174
    00176 typedef struct {
    00177    U8    u8_lun;
    00178 #if (FS_MULTI_PARTITION == ENABLED)
    00179    U8    u8_partition;
    00180 #endif
    00181    U32   u32_cluster_sel_dir;
    00182    U16   u16_entry_pos_sel_file;
    00183 } Fs_index;
    00184
    00185
    00186 //**** ERROR CODE
    00187
    00190 #define  FS_ERR_HW               (FAIL+0)
    00191 #define  FS_ERR_NO_FORMAT        (FAIL+1)
    00192 #define  FS_ERR_NO_PART          (FAIL+2)
    00193 #define  FS_ERR_NO_SUPPORT_PART  (FAIL+3)
    00194 #define  FS_ERR_TOO_FILE_OPEN    (FAIL+4)
    00195 #define  FS_ERR_END_OF_DRIVE     (FAIL+5)
    00196 #define  FS_ERR_BAD_POS          (FAIL+6)
    00197 #define  FS_ERR_FS               (FAIL+7)
    00198 #define  FS_ERR_NO_FIND          (FAIL+8)
    00199 #define  FS_ERR_ENTRY_EMPTY      (FAIL+9)
    00200 #define  FS_ERR_ENTRY_BAD        (FAIL+10)
    00201 #define  FS_ERR_ENTRY_BADTYPE    (FAIL+11)
    00202 #define  FS_ERR_NO_DIR           (FAIL+12)
    00203 #define  FS_ERR_NO_MOUNT         (FAIL+13)
    00204 #define  FS_ERR_NO_FILE_SEL      (FAIL+14)
    00205 #define  FS_NO_LAST_LFN_ENTRY    (FAIL+15)
    00206
    00207 #define  FS_ERR_ID_FILE          (FAIL+17)
    00208 #define  FS_ERR_NO_FILE          (FAIL+18)
    00209 #define  FS_LUN_WP               (FAIL+19)
    00210 #define  FS_ERR_READ_ONLY        (FAIL+20)
    00211 #define  FS_ERR_NAME_INCORRECT   (FAIL+21)
    00212 #define  FS_ERR_FILE_NO_OPEN     (FAIL+22)
    00213 #define  FS_ERR_HW_NO_PRESENT    (FAIL+23)
    00214 #define  FS_ERR_IS_ROOT          (FAIL+24)
    00215 #define  FS_ERR_OUT_LIST         (FAIL+25)
    00216 #define  FS_ERR_NO_FREE_SPACE    (FAIL+26)
    00217 #define  FS_ERR_INCORRECT_NAME   (FAIL+27)
    00218 #define  FS_ERR_DIR_NOT_EMPTY    (FAIL+28)
    00219 #define  FS_ERR_WRITE_ONLY       (FAIL+29)
    00220 #define  FS_ERR_MODE_NOAVIALABLE (FAIL+30)
    00221 #define  FS_ERR_EOF              (FAIL+31)
    00222 #define  FS_ERR_BAD_SIZE_FAT     (FAIL+32)
    00223 #define  FS_ERR_COMMAND          (FAIL+33)
    00224 #define  FS_ERR_BUFFER_FULL      (FAIL+34)
    00225 #define  FS_ERR_COPY_DIR         (FAIL+35)
    00226 #define  FS_ERR_COPY_RUNNING     (FAIL+36)
    00227 #define  FS_ERR_COPY_IMPOSSIBLE  (FAIL+37)
    00228 #define  FS_ERR_BAD_NAV          (FAIL+38)
    00229 #define  FS_ERR_FILE_OPEN        (FAIL+39)
    00230 #define  FS_ERR_FILE_OPEN_WR     (FAIL+40)
    00231 #define  FS_ERR_FILE_EXIST       (FAIL+41)
    00232 #define  FS_ERR_NAME_TOO_LARGE   (FAIL+42)
    00233 #define  FS_ERR_DEVICE_TOO_SMALL (FAIL+43)
    00234
    00235 #define  FS_ERR_PL_NOT_OPEN      (FAIL+50)
    00236 #define  FS_ERR_PL_ALREADY_OPEN  (FAIL+51)
    00237 #define  FS_ERR_PL_LST_END       (FAIL+52)
    00238 #define  FS_ERR_PL_LST_BEG       (FAIL+53)
    00239 #define  FS_ERR_PL_OUT_LST       (FAIL+54)
    00240 #define  FS_ERR_PL_READ_ONLY     (FAIL+55)
    00241
    00242
    00243
    00246 #define  FSFEATURE_READ                0x00
    00247 #define  FSFEATURE_WRITE               0x02
    00248 #define  FSFEATURE_WRITE_COMPLET       0x06
    00249 #define  FSFEATURE_ALL                 0xFF
    00250
    00251
    00252
    00254 typedef  U8                   Fs_status;
    00256 _GLOBEXT_ _MEM_TYPE_SLOW_ Fs_status fs_g_status;
    00257
    00258 #endif  // _FAT_COM_H_