dcf.h

来自「AMLOGIC DPF source code」· C头文件 代码 · 共 201 行

H
201
字号
/*******************************************************************
 * 
 *  Copyright C 2006 by Amlogic, Inc. All Rights Reserved.
 *
 *  Description: DCF filesystem implement V1.1 Head file
 *                   In this version add supporting Kodak Album
 *
 *  Author: V1.0 Andrew Liang
 *             V1.1 Wan Yong
 *  Created: 2006-11-21 @ Amlogic
 *
 *******************************************************************/
#ifndef __DCF_H__
#define __DCF_H__
/*
 * Definitions describing DCF file system structure, as well as
 * the functions necessary to access fields of DCF file system
 * structures.
 */
#include <drivers/usb/image/ptp.h>

typedef struct dcf_dev_info_s
{
    	dev_t  dev;
//	PTPDeviceInfo dev_info;
}dcf_dev_info_t;


/* Belows for Kodak Extension */

/* object's handle map */
typedef struct dcf_kodak_handle_map_s
{
        uint32_t    map;        /* one bit one label enable */
}dcf_kodak_handle_map_t;

typedef struct dcf_kodak_extension_s
{
        uint32_t    max_labels;     /* Max Labels from GetLabelCategoryBookInfo Command */
        uint32_t    max_label_len;/* Max label string len from GetLabelCategoryBookInfo Command */
        uint32_t    lcb_file_handle;/* LCB file object handle */
        
        uint32_t    no_lcb_file;    /* If search lcb file failed */

        uint32_t    label_length;  /* Max label lenth */
        uint32_t    nlabels;
        char ** labelarray; /* Label String Array */
        struct dcf_kodak_handle_map_s * lidmaps; /* Label map index of handle offset */ 

}dcf_kodak_extension_t;

#define KODAK_LABLE_LENGTH_LIMT     31  /* string length limited () */

#define KODAK_LCB_OFFSET_NLABELS    0x1F
#define KODAK_LCB_OFFSET_STR_START  0x30
#define KODAK_LCB_ITEM_LEN      272

#define KODAK_LID_OFFSET_LABLE_START    0x10
#define KODAK_LID_ITEM_LEN      256

typedef struct dcf_kodak_lcb_item_s
{
        uint16_t    seqno;
        uint8_t     reserve[14];
        uint8_t     label[256];
            
}dcf_kodak_lcb_item_t;

/* End Kodak Extension */

#define DCF_CACHE_INIT_SIZE  32
typedef struct dcf_cache_s
{
        unsigned char * buffer;
        u32_t   buf_size;       //Size in byte
        
        uint32_t handle;        //Object handle
        u32_t   start_pos;      //Byte offset
        u32_t   act_size;       //Acture size in byte
}dcf_cache_t;
typedef struct dcf_filenam_cache_s
{
    int cached_num;
    char **name_array; /* filename array*/
    unsigned char *name_map;
}dcf_filename_cache_t;
/*
 * This structure identifies the instance of the filesystem on the 
 * ("dcf-file") level.
 */
#define MAX_DCF_LABEL_LEN   30 
typedef struct dcf_fs_info_s
{

    dcf_dev_info_t     vol;

    Chain_Control *chain;                                  /* "list" of dcf-file descriptors */
    avfs_filesystem_file_handlers_r *directory_handlers; /*
                                                           * a set of routines
                                                           * that handles the
                                                           * nodes of directory
                                                           * type
                                                           */
    avfs_filesystem_file_handlers_r *file_handlers;      /*
                                                           * a set of routines
                                                           * that handles the
                                                           * nodes of file
                                                           * type
                                                           */
    avfs_id                          vol_sema;           /*
                                                           * semaphore
                                                           * associated with
                                                           * the volume
                                                           */
    dcf_cache_t cache;                /*
                                                *   This cache is designed for
                                                *   small read application
                                                */

         
    char label[MAX_DCF_LABEL_LEN];
    unsigned32 current_obj;  //object in operating  Andrew

    dcf_kodak_extension_t *kodak;   /* Data set for kodak extension */
    dcf_filename_cache_t dcf_name_cache;
    
}dcf_fs_info_t;


typedef avfs_filesystem_node_types_t dcf_file_type_t;

#define DCF_DIRECTORY     AVFS_FILESYSTEM_DIRECTORY
#define DCF_FILE          AVFS_FILESYSTEM_MEMORY_FILE

#define SPECIAL_OBJ_HANDLE_MASK  0xFF000000
#define SPECIAL_OBJ_HANDLE_ALL     0x11000000

#define IS_SPECIAL_OBJ(h) (SPECIAL_OBJ_HANDLE_MASK & h)

#define KODAK_LCB_FILENAME  "LABELCTB.LCB"

/*
 * descriptor of a dcf-file
 *
 */
typedef struct dcf_file_fd_s
{
	Chain_Node          link;
	unsigned16          links_num;
	unsigned16          path_table_index;   // current dir index for dir and parent dir index for file
	unsigned16          is_special;
    
	dcf_file_type_t     type;

	unsigned16          dir_file_index;     // index in parent dir
	unsigned16          dir_file_num;       // for dir only


	unsigned32		obj_handle;		
	unsigned32		num_objects;		

	PTPObjectInfo 	*obj_info;		//current object's info
	PTPObjectHandles 	*obj_handles;    //obj handles in current dir

       struct dcf_file_fd_s        *parent_fd;
} dcf_file_fd_t;

#ifndef RC_OK
#define RC_OK 0x00000000
#endif
#define DCF_NAME_NOT_FOUND_ERR  0xDD000001
#define DCF_VOLUME_SEMAPHORE_TIMEOUT    AVFS_NO_TIMEOUT

#ifndef set_errno_and_return_minus_one
#define set_errno_and_return_minus_one avfs_set_errno_and_return_minus_one
#endif /* set_errno_and_return_minus_one */

extern avfs_filesystem_operations_table dcf_ops;
extern avfs_filesystem_file_handlers_r dcf_dir_handlers;
extern avfs_filesystem_file_handlers_r dcf_file_handlers;

#define DCF_MAX_FILE_INCREASE	64
#define DCF_NAME_MAX     256
#define DCF_DOT_NAME     ".          " /* ".", padded to DCF_NAME chars */
#define DCF_DOTDOT_NAME  "..         " /* "..", padded to DCF_NAME chars */

typedef enum dcf_token_types_s
{
    DCF_NO_MORE_PATH,
    DCF_CURRENT_DIR,
    DCF_UP_DIR,
    DCF_NAME,
    DCF_INVALID_TOKEN
} dcf_token_types_t;

extern avfs_filesystem_operations_table  dcf_ops ;

#define dcf_is_separator(_ch)          avfs_filesystem_is_separator(_ch)
#endif //__DCF_H__

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?