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

📄 lun.c

📁 <B>SMSC USB2.0 Flash硬盘驱动源码</B>
💻 C
📖 第 1 页 / 共 5 页
字号:
    {
      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 + -