Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram) { Ctrl_status status; #if MAX_LUN==0 UNUSED(lun); #endif if (!Ctrl_access_lock()) return CTRL_FAIL; memory_start_read_action(1); status = #if MAX_LUN (lun < MAX_LUN) ? lun_desc[lun].mem_2_ram(addr, ram) : #endif #if LUN_USB == ENABLE Lun_usb_mem_2_ram(addr, ram); #else CTRL_FAIL; #endif memory_stop_read_action(); Ctrl_access_unlock(); return status; }
Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector) { Ctrl_status status; if (!Ctrl_access_lock()) return CTRL_FAIL; memory_start_read_action(nb_sector); status = #if MAX_LUN (lun < MAX_LUN) ? lun_desc[lun].usb_read_10(addr, nb_sector) : #endif CTRL_FAIL; memory_stop_read_action(); Ctrl_access_unlock(); return status; }
Ctrl_status memory_2_usb (U8 lun, U32 addr, U16 nb_sector) { Ctrl_status status; if (!Ctrl_access_lock ()) return CTRL_FAIL; memory_start_read_action (nb_sector); status = #if MAX_LUN (lun < MAX_LUN) ? lun_desc[lun].usb_read_10 (addr, nb_sector) : #endif CTRL_FAIL; memory_stop_read_action (); Ctrl_access_unlock (); USB_Log_st.MSD_ReadCalls_u32++; USB_Log_st.MSD_BytesRead_u32 += nb_sector; time ((time_t *) & USB_Log_st.MSD_LastReadAccess_u32); return status; }