⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lun.h

📁 <B>SMSC USB2.0 Flash硬盘驱动源码</B>
💻 H
📖 第 1 页 / 共 2 页
字号:
extern t_bool _lun_is_media_known(uint8 lun) reentrant;
extern t_bool _lun_is_media_changed(uint8 lun) reentrant; 
extern t_bool _lun_is_media_lockable(uint8 lun) reentrant;
extern t_bool _lun_requests_idle_processing(uint8 lun) reentrant;


//------------------------------------------------------------------------------
// 
extern void lun_set_active(uint8 lun) reentrant;


//------------------------------------------------------------------------------
// macros used to build virtual method table at compile time
#define _v_lun_process_idle               &lun_process_idle
#define _v_lun_enable_mux                 &lun_enable_mux
#define _v_lun_reset_controller           &lun_reset_controller
#define _v_lun_initialize_controller      &lun_initialize_controller
#define _v_dfa_lun_reset_media            &dfa_lun_reset_media
#define _v_dfa_lun_initialize_media       &dfa_lun_initialize_media
#define _v_dfa_lun_identify_media         &dfa_lun_identify_media
#define _v_dfa_lun_inquiry                &dfa_lun_inquiry
#define _v_dfa_lun_test_unit_ready        &dfa_lun_test_unit_ready
#define _v_dfa_lun_req_sense              &dfa_lun_req_sense
#define _v_dfa_lun_read_capacity          &dfa_lun_read_capacity
#define _v_dfa_lun_read                   &dfa_lun_read
#define _v_dfa_lun_write                  &dfa_lun_write
#define _v_dfa_lun_verify                 &dfa_lun_verify
#define _v_dfa_lun_mode_sense             &dfa_lun_mode_sense
#define _v_dfa_lun_mode_select            &dfa_lun_mode_select
#define _v_dfa_lun_read_format_capacity   &dfa_lun_read_format_capacity
#define _v_dfa_lun_format_unit            &dfa_lun_format_unit
#define _v_dfa_lun_start_stop_unit        &dfa_lun_start_stop_unit
#define _v_dfa_lun_prevent_allow_access   &dfa_lun_prevent_allow_access
#define _v_dfa_lun_sync_cache             &dfa_lun_sync_cache
#define _v_dfa_lun_device_diagnostics     &dfa_lun_device_diagnostics
#define _v_dfa_lun_erase_media            &dfa_lun_erase_media
#define _v_dfa_lun_report_media_geometry  &dfa_lun_report_media_geometry
#define _v_dfa_lun_secure_memory_write    &dfa_lun_secure_memory_write
#define _v_dfa_lun_secure_memory_read     &dfa_lun_secure_memory_read
#define _v_dfa_lun_process_cb             &dfa_lun_process_cb


//------------------------------------------------------------------------------
// virtual method table
#define _v_lun \
  _v_lun_process_idle,\
  _v_lun_enable_mux,\
  _v_lun_reset_controller,\
  _v_lun_initialize_controller,\
  _v_dfa_lun_reset_media,\
  _v_dfa_lun_initialize_media,\
  _v_dfa_lun_identify_media,\
  _v_dfa_lun_inquiry,\
  _v_dfa_lun_test_unit_ready,\
  _v_dfa_lun_req_sense,\
  _v_dfa_lun_read_capacity,\
  _v_dfa_lun_read,\
  _v_dfa_lun_write,\
  _v_dfa_lun_verify,\
  _v_dfa_lun_mode_sense,\
  _v_dfa_lun_mode_select,\
  _v_dfa_lun_read_format_capacity,\
  _v_dfa_lun_format_unit,\
  _v_dfa_lun_start_stop_unit,\
  _v_dfa_lun_prevent_allow_access,\
  _v_dfa_lun_sync_cache,\
  _v_dfa_lun_device_diagnostics,\
  _v_dfa_lun_erase_media,\
  _v_dfa_lun_report_media_geometry,\
  _v_dfa_lun_secure_memory_write,\
  _v_dfa_lun_secure_memory_read,\
  _v_dfa_lun_process_cb

//------------------------------------------------------------------------------
// virtual methods and non-virtual methods
extern code _vtbl_decl(lun) ;

//------------------------------------------------------------------------------
// indicies into the virtual methos table
typedef uint8 t_dfa_lun_vtbl_ix ;
typedef enum e_dfa_lun_vtbl_entry
{
  k_ix_lun_process_idle=0,
  k_ix_lun_enable_mux,
  k_ix_lun_reset_controller,
  k_ix_lun_initialize_controller,
  k_ix_dfa_lun_reset_media,
  k_ix_dfa_lun_initialize_media,
  k_ix_dfa_lun_identify_media,
  k_ix_dfa_lun_inquiry,
  k_ix_dfa_lun_test_unit_ready,
  k_ix_dfa_lun_req_sense,
  k_ix_dfa_lun_read_capacity,
  k_ix_dfa_lun_read,
  k_ix_dfa_lun_write,
  k_ix_dfa_lun_verify,
  k_ix_dfa_lun_mode_sense,
  k_ix_dfa_lun_mode_select,
  k_ix_dfa_lun_read_format_capacity,
  k_ix_dfa_lun_format_unit,
  k_ix_dfa_lun_start_stop_unit,
  k_ix_dfa_lun_prevent_allow_access,
  k_ix_dfa_lun_sync_cache,
  k_ix_dfa_lun_device_diagnostics,
  k_ix_dfa_lun_erase_media,
  k_ix_dfa_lun_report_media_geometry,
  k_ix_dfa_lun_secure_memory_read,
  k_ix_dfa_lun_secure_memory_write,
  k_ix_dfa_lun_process_cb,
  k_lun_vtbl_sz
} ;

//------------------------------------------------------------------------------
// new lun vtbl access
// note differences between dfas & functions!
#define _lun_process_idle()              (*v_lun_process_idle)()
#define _lun_enable_mux()                (*v_lun_enable_mux)()
#define _lun_reset_controller()          (*v_lun_reset_controller)()
#define _lun_initialize_controller()     (*v_lun_initialize_controller)()
#define _dfa_lun_reset_media()           (v_dfa_lun_reset_media)
#define _dfa_lun_initialize_media()      (v_dfa_lun_initialize_media)
#define _dfa_lun_identify_media()        (v_dfa_lun_identify_media)
#define _dfa_lun_inquiry()               (v_dfa_lun_inquiry)
#define _dfa_lun_test_unit_ready()       (v_dfa_lun_test_unit_ready)
#define _dfa_lun_req_sense()             (v_dfa_lun_req_sense)
#define _dfa_lun_read_capacity()         (v_dfa_lun_read_capacity)
#define _dfa_lun_read()                  (v_dfa_lun_read)
#define _dfa_lun_write()                 (v_dfa_lun_write)
#define _dfa_lun_verify()                (v_dfa_lun_verify)
#define _dfa_lun_mode_sense()            (v_dfa_lun_mode_sense)
#define _dfa_lun_mode_select()           (v_dfa_lun_mode_select)
#define _dfa_lun_read_format_capacity()  (v_dfa_lun_read_format_capacity)
#define _dfa_lun_format_unit()           (v_dfa_lun_format_unit)
#define _dfa_lun_start_stop_unit()       (v_dfa_lun_start_stop_unit)
#define _dfa_lun_prevent_allow_access()  (v_dfa_lun_prevent_allow_access)
#define _dfa_lun_sync_cache()            (v_dfa_lun_sync_cache)
#define _dfa_lun_device_diagnostics()    (v_dfa_lun_device_diagnostics)
#define _dfa_lun_erase_media()           (v_dfa_lun_erase_media)
#define _dfa_lun_report_media_geometry() (v_dfa_lun_report_media_geometry)
#define _dfa_lun_process_cb()            (v_dfa_lun_process_cb)
#define _dfa_lun_secure_memory_write()   (v_dfa_lun_secure_memory_write)
#define _dfa_lun_secure_memory_read()    (v_dfa_lun_secure_memory_read)

extern xdata t_thd_entry v_lun_process_idle;              
extern xdata t_thd_entry v_lun_enable_mux;                
extern xdata t_thd_entry v_lun_reset_controller;          
extern xdata t_thd_entry v_lun_initialize_controller;     
extern xdata t_thd_entry v_dfa_lun_reset_media;           
extern xdata t_thd_entry v_dfa_lun_initialize_media;      
extern xdata t_thd_entry v_dfa_lun_identify_media;        
extern xdata t_thd_entry v_dfa_lun_inquiry;               
extern xdata t_thd_entry v_dfa_lun_test_unit_ready;       
extern xdata t_thd_entry v_dfa_lun_req_sense;             
extern xdata t_thd_entry v_dfa_lun_read_capacity;         
extern xdata t_thd_entry v_dfa_lun_read;                  
extern xdata t_thd_entry v_dfa_lun_write;                 
extern xdata t_thd_entry v_dfa_lun_verify;                
extern xdata t_thd_entry v_dfa_lun_mode_sense;            
extern xdata t_thd_entry v_dfa_lun_mode_select;           
extern xdata t_thd_entry v_dfa_lun_read_format_capacity;  
extern xdata t_thd_entry v_dfa_lun_format_unit;           
extern xdata t_thd_entry v_dfa_lun_start_stop_unit;       
extern xdata t_thd_entry v_dfa_lun_prevent_allow_access;  
extern xdata t_thd_entry v_dfa_lun_sync_cache;            
extern xdata t_thd_entry v_dfa_lun_device_diagnostics;    
extern xdata t_thd_entry v_dfa_lun_erase_media;           
extern xdata t_thd_entry v_dfa_lun_report_media_geometry; 
extern xdata t_thd_entry v_dfa_lun_secure_memory_read;    
extern xdata t_thd_entry v_dfa_lun_secure_memory_write;   
extern xdata t_thd_entry v_dfa_lun_process_cb;            


//------------------------------------------------------------------------------
// prototypes
#ifndef k_mcu_97242
void lun_dump_sense(uint8 idx) reentrant ;
#else // cut out some unneeded debug code
#define lun_dump_sense(__lun);
#endif
void lun_reset_controller(void) reentrant;
void lun_initialize_controller(void) reentrant;
void lun_process_idle(void) reentrant;
void lun_enable_mux(void) reentrant;
void dfa_lun_reset_media(void) reentrant;
void dfa_lun_initialize_media(void) reentrant;
void dfa_lun_identify_media(void) reentrant;
void dfa_lun_inquiry(void) reentrant;
void dfa_lun_test_unit_ready(void) reentrant;
void dfa_lun_req_sense(void) reentrant;
void dfa_lun_read_capacity(void) reentrant;
void dfa_lun_read(void) reentrant;
void dfa_lun_write(void) reentrant;
void dfa_lun_verify(void) reentrant;
void dfa_lun_mode_sense(void) reentrant;
void dfa_lun_mode_select(void) reentrant;
void dfa_lun_read_format_capacity(void) reentrant;
void dfa_lun_format_unit(void) reentrant;
void dfa_lun_start_stop_unit(void) reentrant;
void dfa_lun_prevent_allow_access(void) reentrant;
void dfa_lun_sync_cache(void) reentrant;
void dfa_lun_device_diagnostics(void) reentrant;
void dfa_lun_erase_media(void)reentrant;
void dfa_lun_report_media_geometry(void)reentrant;
void dfa_lun_secure_memory_write(void) reentrant;
void dfa_lun_secure_memory_read(void) reentrant;
void dfa_lun_unsupported(void) reentrant;
void dfa_lun_process_cb(void)reentrant;

//------------------------------------------------------------------------------
// other constants
// size of 1 lba / sector
#define k_sector_sz   512


//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
t_bool lun_is_media_ready() reentrant;

//------------------------------------------------------------------------------
// exported globals
extern xdata uint8 g_active_lun;
extern xdata t_lun_data  g_lun_data[k_max_phy_lun] ;
extern code  t_thd_entry* g_lun_tbl[k_max_phy_lun] ;
extern xdata uint8 g_lun_log2phy_map[k_max_log_lun];
extern xdata uint8 g_sector_buffer[k_sector_sz] ;

extern bit g_password_validated;

#else
#error "warning: header included too many times!"
#endif  // __lun_dot_h__

//---eof------------------------------------------------------------------------

⌨️ 快捷键说明

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