📄 lun.c
字号:
{
TRACE1(76, lun, 0, "paging vtable in: lun %d", lun) ;
memcpy((uint8 *) &v_lun_process_idle, g_lun_tbl[lun], sizeof(t_thd_entry)*k_lun_vtbl_sz) ;
}
g_active_lun=lun;
}
TRACE1(77, lun, 0, "lun %d active", g_active_lun) ;
mcu_end_critical_section() ;
}
#pragma AREGS
#ifndef k_mcu_97242
//+-----------------------------------------------------------------------------
// Name:
// lun_dump_sense
//
// Declaration:
// void lun_dump_sense(uint8 idx) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void lun_dump_sense(uint8 idx) reentrant
{
t_sense code *psense = _lun_data_rd(idx, sensep);
mcu_begin_critical_section() ;
TRACE3(78, lun, 99, "sense info: key:%02x asc:%02x ascq:%02x", psense->sense_key, psense->additional_sense_code, psense->asc_qualifier );
if (&sense_none == psense)
{
TRACE0(79, lun, 99, "sense_none");
}
/*
if (&sense_bad_lun == psense)
{
TRACE0(80, lun, 99, "sense_bad_lun");
}
*/
if (&sense_media_change == psense)
{
TRACE0(81, lun, 99, "sense_media_change");
}
if (&sense_no_media == psense)
{
TRACE0(82, lun, 99, "sense_no_media");
}
/*
if (&sense_becoming_ready == psense)
{
TRACE0(83, lun, 99, "sense_becoming_ready");
}
*/
if (&sense_read_error == psense)
{
TRACE0(84, lun, 99, "sense_read_error");
}
/*
if (&sense_fmt_failed == psense)
{
TRACE0(85, lun, 99, "sense_fmt_failed");
}
if (&sense_no_seek == psense)
{
TRACE0(86, lun, 99, "sense_no_seek");
}
*/
if (&sense_por == psense)
{
TRACE0(87, lun, 99, "sense_por");
}
if (&sense_illegal_request == psense)
{
TRACE0(88, lun, 99, "sense_illegal_request");
}
if (&sense_write_error == psense)
{
TRACE0(89, lun, 99, "sense_write_error");
}
/*
if (&sense_no_fmt == psense)
{
TRACE0(90, lun, 99, "sense_no_fmt");
}
*/
if (&sense_write_protect == psense)
{
TRACE0(91, lun, 99, "sense_write_protect");
}
/*
if (&sense_write_protect_hw == psense)
{
TRACE0(92, lun, 99, "sense_write_protect_hw");
}
if (&sense_write_protect_sw_lun == psense)
{
TRACE0(93, lun, 99, "sense_write_protect_sw_lun");
}
if (&sense_write_protect_assoc == psense)
{
TRACE0(94, lun, 99, "sense_write_protect_assoc");
}
if (&sense_write_protect_persist == psense)
{
TRACE0(95, lun, 99, "sense_write_protect_persist");
}
if (&sense_write_protect_perm == psense)
{
TRACE0(96, lun, 99, "sense_write_protect_perm");
}
*/
if (&sense_illegal_cmdpkt == psense)
{
TRACE0(97, lun, 99, "sense_illegal_cmdpkt");
}
/*
if (&sense_saving_not_support == psense)
{
TRACE0(98, lun, 99, "sense_saving_not_support");
}
*/
if (&sense_illegal_length == psense)
{
TRACE0(99, lun, 99, "sense_illegal_length");
}
if (&sense_illegal_address == psense)
{
TRACE0(100, lun, 99, "sense_illegal_address");
}
if (&sense_illegal_opcode == psense)
{
TRACE0(101, lun, 99, "sense_illegal_opcode");
}
mcu_end_critical_section() ;
}
#endif
//+-----------------------------------------------------------------------------
// Name:
// lun_process_idle
//
// Declaration:
// void lun_process_idle(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// This is a FUNCTION, NOT a DFA.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void lun_process_idle(void) reentrant
{
TRACE0(102, lun, 0, "lun_process_idle() - error: pure virtual function must be overridden");
}
//+-----------------------------------------------------------------------------
// Name:
// lun_enable_mux
//
// Declaration:
// void lun_enable_mux(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// This is a FUNCTION, NOT a DFA.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void lun_enable_mux(void) reentrant
{
TRACE0(103, lun, 0, "lun_enable_mux() - error: pure virtual function must be overridden");
}
//+-----------------------------------------------------------------------------
// Name:
// lun_reset_controller
//
// Declaration:
// void lun_reset_controller(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// This is a FUNCTION, NOT a DFA.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void lun_reset_controller(void) reentrant
{
TRACE0(104, lun, 0, "lun_reset_controller() - warning: pure virtual function should be overridden");
}
//+-----------------------------------------------------------------------------
// Name:
// lun_initialize_controller
//
// Declaration:
// void lun_initialize_controller(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// This is a FUNCTION, NOT a DFA.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void lun_initialize_controller(void) reentrant
{
TRACE0(105, lun, 0, "lun_initialize_controller() - warning: pure virtual function should be overridden");
}
//+-----------------------------------------------------------------------------
// Name:
// dfa_lun_reset_media
//
// Declaration:
// void dfa_lun_reset_media(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// - This is a dfa.
// - Should be overridden. Derived method should set callbacks, then call this.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_reset_media(void) reentrant
{
TRACE0(106, lun, 0, "dfa_lun_reset_media() - error: pure virtual method must be overridden");
_thread_return_dfa(k_error);
}
//+-----------------------------------------------------------------------------
// Name:
// dfa_lun_initialize_media
//
// Declaration:
// void dfa_lun_initialize_media(void) reentrant
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// - This is a dfa.
// - Should be overridden. Derived method should set callbacks, then call this.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_initialize_media(void) reentrant
{
TRACE0(107, lun, 0, "dfa_lun_initialize_media() - error: pure virtual method must be overridden");
_thread_return_dfa(k_error);
}
//+-----------------------------------------------------------------------------
// Name:
// dfa_lun_identify_media
//
// Declaration:
// void dfa_lun_identify_media(void);
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// - This is a dfa.
// - Should be overridden. Derived method should set callbacks, then call this.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_identify_media(void) reentrant
{
TRACE0(108, lun, 0, "dfa_lun_identify_media() - error: pure virtual method must be overridden");
_thread_return_dfa(k_error);
}
//+-----------------------------------------------------------------------------
// Name:
// dfa_lun_test_unit_ready
//
// Declaration:
// void dfa_lun_test_unit_ready(void);
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// Should be overridden. Derived method should set callbacks, then call this.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_test_unit_ready(void)reentrant
{
trace0(0, msc, 0, "dfa_lun_test_unit_ready()");
_thread_return_dfa((_lun_data(sensep) == &sense_none) ? k_command_passed : k_command_failed);
}
//+-----------------------------------------------------------------------------
// Name:
// dfa_lun_req_sense
//
// Declaration:
// void dfa_lun_req_sense(void) reentrant ;
//
// Purpose:
//
// Arguments:
//
// Return:
//
// Notes:
// - This is a dfa.
// - Should not need to be overridden. This function will automatically use
// lun instance data to respond to the host.
//
// Since:
// fmc-1.0
//------------------------------------------------------------------------------
void dfa_lun_req_sense(void)reentrant
{
uint8 length;
length = _min(sizeof(t_sense), g_bot_cbw.cdb[4]);
mscbot_tx_data_buffer((uint8*) _lun_data(sensep), length);
TRACE0(109, lun, 0, "reporting:");
lun_dump_sense(g_active_lun);
_lun_data(sensep) = &sense_none;
_thread_return_dfa(k_command_passed);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -