📄 lun.h
字号:
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 + -