#include "config.h"#include "ctrl_access.h"#include "modules/file_system/fat.h"
Go to the source code of this file.
Defines | |
| #define | LUN_0_EN 1 |
| Computed the maximum of static lun (don't add the lun of Mass Storage in mode USB Host). | |
| #define | LUN_1_EN 1 |
| #define | LUN_2_EN 1 |
| #define | LUN_3_EN 1 |
| #define | LUN_4_EN 1 |
| #define | LUN_5_EN 1 |
| #define | LUN_6_EN 1 |
| #define | LUN_7_EN 1 |
| #define | LUN_USB_EN 1 |
| #define | LUN_ID_0 (0) |
| #define | LUN_ID_1 (LUN_0_EN) |
| #define | LUN_ID_2 (LUN_0_EN+LUN_1_EN) |
| #define | LUN_ID_3 (LUN_0_EN+LUN_1_EN+LUN_2_EN) |
| #define | LUN_ID_4 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN) |
| #define | LUN_ID_5 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN) |
| #define | LUN_ID_6 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN+LUN_5_EN) |
| #define | LUN_ID_7 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN+LUN_5_EN+LUN_6_EN) |
| #define | MAX_LUN (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN+LUN_5_EN+LUN_6_EN+LUN_7_EN) |
| #define | LUN_ID_USB (MAX_LUN) |
Functions | |
| U8 | get_nb_lun () |
| This function return the number of logical unit. | |
| U8 | get_cur_lun () |
| This function return the current logical unit. | |
| Ctrl_status | mem_test_unit_ready (U8 lun) |
| This function test the state of memory, and start the initialisation of the memory. | |
| Ctrl_status | mem_read_capacity (U8 lun, U32 _MEM_TYPE_SLOW_ *u32_last_sector) |
| This function return the capacity of the memory. | |
| U8 | mem_sector_size (U8 lun) |
| This function return the sector size of the memory. | |
| Bool | mem_wr_protect (U8 lun) |
| This function return is the write protected mode. | |
| Bool | mem_removal (U8 lun) |
| This function inform about the memory type. | |
| U8 code * | mem_name (U8 lun) |
| This function returns a pointer to the LUN name. | |
| Ctrl_status | memory_2_usb (U8 lun, U32 addr, U16 nb_sector) |
| This function tranfer a data from memory to usb. | |
| Ctrl_status | usb_2_memory (U8 lun, U32 addr, U16 nb_sector) |
| This function transfer a data from usb to memory. | |
| Ctrl_status | memory_2_ram (U8 lun, const U32 _MEM_TYPE_SLOW_ addr, U8 _MEM_TYPE_SLOW_ *ram) |
| Interface for RAM. | |
| Ctrl_status | ram_2_memory (U8 lun, const U32 _MEM_TYPE_SLOW_ addr, U8 _MEM_TYPE_SLOW_ *ram) |
| This function transfer a data from ram to memory. | |
| U8 | stream_mem_to_mem (U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector) |
| This function copy a data from memory to other memory. | |
| Ctrl_status | stream_state (U8 Id) |
| Returns the state on a data transfer. | |
| U16 | stream_stop (U8 Id) |
| Stop the data transfer. | |
Variables | |
| U8 code | lun0_name [] = "VIRTUAL_MEM_ON_CHIP" |
| U8 code | lun1_name [] = "\"NAND Flash\"" |
| U8 code | lun2_name [] = "\"On board data flash\"" |
| U8 code | lun3_name [] = "\"MMC\"" |
| U8 code | lun4_name [] = LUN_4_NAME |
| U8 code | lun5_name [] = LUN_5_NAME |
| U8 code | lun6_name [] = LUN_6_NAME |
| U8 code | lun7_name [] = LUN_7_NAME |
| U8 code | lunusb_name [] = "\"USB Remote memory\"" |
Definition in file ctrl_access.c.
| #define LUN_0_EN 1 |
Computed the maximum of static lun (don't add the lun of Mass Storage in mode USB Host).
Definition at line 92 of file ctrl_access.c.
| #define LUN_1_EN 1 |
Definition at line 98 of file ctrl_access.c.
| #define LUN_2_EN 1 |
Definition at line 104 of file ctrl_access.c.
| #define LUN_3_EN 1 |
Definition at line 110 of file ctrl_access.c.
| #define LUN_4_EN 1 |
Definition at line 116 of file ctrl_access.c.
| #define LUN_5_EN 1 |
Definition at line 122 of file ctrl_access.c.
| #define LUN_6_EN 1 |
Definition at line 128 of file ctrl_access.c.
| #define LUN_7_EN 1 |
Definition at line 134 of file ctrl_access.c.
| #define LUN_USB_EN 1 |
Definition at line 140 of file ctrl_access.c.
| #define LUN_ID_0 (0) |
Definition at line 147 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define LUN_ID_1 (LUN_0_EN) |
Definition at line 148 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define LUN_ID_2 (LUN_0_EN+LUN_1_EN) |
Definition at line 149 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define LUN_ID_3 (LUN_0_EN+LUN_1_EN+LUN_2_EN) |
Definition at line 150 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define LUN_ID_4 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN) |
Definition at line 151 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define LUN_ID_5 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN) |
Definition at line 152 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define LUN_ID_6 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN+LUN_5_EN) |
Definition at line 153 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define LUN_ID_7 (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN+LUN_5_EN+LUN_6_EN) |
Definition at line 154 of file ctrl_access.c.
Referenced by mem_name(), mem_read_capacity(), mem_removal(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), memory_2_usb(), ram_2_memory(), and usb_2_memory().
| #define MAX_LUN (LUN_0_EN+LUN_1_EN+LUN_2_EN+LUN_3_EN+LUN_4_EN+LUN_5_EN+LUN_6_EN+LUN_7_EN) |
| #define LUN_ID_USB (MAX_LUN) |
Definition at line 156 of file ctrl_access.c.
Referenced by mem_read_capacity(), mem_sector_size(), mem_test_unit_ready(), mem_wr_protect(), memory_2_ram(), and ram_2_memory().
| U8 get_nb_lun | ( | ) |
This function return the number of logical unit.
Definition at line 172 of file ctrl_access.c.
Referenced by nav_drive_nb(), nav_drive_set(), and usb_user_read_request().
00173 { 00174 #if (LUN_USB == ENABLED) 00175 return (MAX_LUN + Lun_usb_get_lun()); 00176 #else 00177 return MAX_LUN; 00178 #endif 00179 }
| U8 get_cur_lun | ( | ) |
This function return the current logical unit.
Definition at line 186 of file ctrl_access.c.
Referenced by usb_mass_storage_cbw().
| Ctrl_status mem_test_unit_ready | ( | U8 | lun | ) |
This function test the state of memory, and start the initialisation of the memory.
MORE (see SPC-3 §5.2.4) : The TEST UNIT READY command allows an application client to poll a logical unit until it is ready without the need to allocate space for returned data. The TEST UNIT READY command may be used to check the media status of logical units with removable media.
| lun | Logical unit number |
Definition at line 205 of file ctrl_access.c.
Referenced by fat_check_device(), and sbc_test_unit_ready().
00206 { 00207 switch( lun ) 00208 { 00209 # if (LUN_0 == ENABLE) 00210 case LUN_ID_0: 00211 return Lun_0_test_unit_ready(); 00212 break; 00213 # endif 00214 # if (LUN_1 == ENABLE) 00215 case LUN_ID_1: 00216 return Lun_1_test_unit_ready(); 00217 break; 00218 # endif 00219 # if (LUN_2 == ENABLE) 00220 case LUN_ID_2: 00221 return Lun_2_test_unit_ready(); 00222 break; 00223 # endif 00224 # if (LUN_3 == ENABLE) 00225 case LUN_ID_3: 00226 return Lun_3_test_unit_ready(); 00227 break; 00228 # endif 00229 # if (LUN_4 == ENABLE) 00230 case LUN_ID_4: 00231 return Lun_4_test_unit_ready(); 00232 break; 00233 # endif 00234 # if (LUN_5 == ENABLE) 00235 case LUN_ID_5: 00236 return Lun_5_test_unit_ready(); 00237 break; 00238 # endif 00239 # if (LUN_6 == ENABLE) 00240 case LUN_ID_6: 00241 return Lun_6_test_unit_ready(); 00242 break; 00243 # endif 00244 # if (LUN_7 == ENABLE) 00245 case LUN_ID_7: 00246 return Lun_7_test_unit_ready(); 00247 break; 00248 # endif 00249 # if (LUN_USB == ENABLE) 00250 default: 00251 return Lun_usb_test_unit_ready(lun - LUN_ID_USB); 00252 break; 00253 # endif 00254 } 00255 return CTRL_FAIL; 00256 }
| Ctrl_status mem_read_capacity | ( | U8 | lun, | |
| U32 _MEM_TYPE_SLOW_ * | u32_last_sector | |||
| ) |
This function return the capacity of the memory.
| lun | Logical unit number |
Ctrl_status It is ready -> CTRL_GOOD Memory unplug -> CTRL_NO_PRESENT
Definition at line 268 of file ctrl_access.c.
Referenced by sbc_read_capacity().
00269 { 00270 switch( lun ) 00271 { 00272 # if (LUN_0 == ENABLE) 00273 case LUN_ID_0: 00274 return Lun_0_read_capacity( u32_last_sector ); 00275 break; 00276 # endif 00277 # if (LUN_1 == ENABLE) 00278 case LUN_ID_1: 00279 return Lun_1_read_capacity( u32_last_sector ); 00280 break; 00281 # endif 00282 # if (LUN_2 == ENABLE) 00283 case LUN_ID_2: 00284 return Lun_2_read_capacity( u32_last_sector ); 00285 break; 00286 # endif 00287 # if (LUN_3 == ENABLE) 00288 case LUN_ID_3: 00289 return Lun_3_read_capacity( u32_last_sector ); 00290 break; 00291 # endif 00292 # if (LUN_4 == ENABLE) 00293 case LUN_ID_4: 00294 return Lun_4_read_capacity( u32_last_sector ); 00295 break; 00296 # endif 00297 # if (LUN_5 == ENABLE) 00298 case LUN_ID_5: 00299 return Lun_5_read_capacity( u32_last_sector ); 00300 break; 00301 # endif 00302 # if (LUN_6 == ENABLE) 00303 case LUN_ID_6: 00304 return Lun_6_read_capacity( u32_last_sector ); 00305 break; 00306 # endif 00307 # if (LUN_7 == ENABLE) 00308 case LUN_ID_7: 00309 return Lun_7_read_capacity( u32_last_sector ); 00310 break; 00311 # endif 00312 # if (LUN_USB == ENABLE) 00313 default: 00314 return Lun_usb_read_capacity( lun - LUN_ID_USB, u32_last_sector ); 00315 break; 00316 # endif 00317 } 00318 return CTRL_FAIL; 00319 }
This function return the sector size of the memory.
| lun | Logical unit number |
Definition at line 328 of file ctrl_access.c.
Referenced by fat_mount().
00329 { 00330 # if (LUN_USB == ENABLE) 00331 return (lun < LUN_ID_USB) ? 1 : Lun_usb_read_sector_size(lun- LUN_ID_USB); 00332 #else 00333 return 1; 00334 #endif 00335 }
This function return is the write protected mode.
| lun | Logical unit number |
Definition at line 347 of file ctrl_access.c.
Referenced by fat_cache_flush(), file_open(), nav_file_isreadonly(), sbc_header_mode_sense(), and sbc_write_10().
00348 { 00349 switch( lun ) 00350 { 00351 # if (LUN_0 == ENABLE) 00352 case LUN_ID_0: 00353 return Lun_0_wr_protect(); 00354 break; 00355 # endif 00356 # if (LUN_1 == ENABLE) 00357 case LUN_ID_1: 00358 return Lun_1_wr_protect(); 00359 break; 00360 # endif 00361 # if (LUN_2 == ENABLE) 00362 case LUN_ID_2: 00363 return Lun_2_wr_protect(); 00364 break; 00365 # endif 00366 # if (LUN_3 == ENABLE) 00367 case LUN_ID_3: 00368 return Lun_3_wr_protect(); 00369 break; 00370 # endif 00371 # if (LUN_4 == ENABLE) 00372 case LUN_ID_4: 00373 return Lun_4_wr_protect(); 00374 break; 00375 # endif 00376 # if (LUN_5 == ENABLE) 00377 case LUN_ID_5: 00378 return Lun_5_wr_protect(); 00379 break; 00380 # endif 00381 # if (LUN_6 == ENABLE) 00382 case LUN_ID_6: 00383 return Lun_6_wr_protect(); 00384 break; 00385 # endif 00386 # if (LUN_7 == ENABLE) 00387 case LUN_ID_7: 00388 return Lun_7_wr_protect(); 00389 break; 00390 # endif 00391 # if (LUN_USB == ENABLE) 00392 default: 00393 return Lun_usb_wr_protect(lun - LUN_ID_USB); 00394 break; 00395 # endif 00396 } 00397 return CTRL_FAIL; 00398 }
This function inform about the memory type.
| lun | Logical unit number |
Definition at line 407 of file ctrl_access.c.
00408 { 00409 switch( lun ) 00410 { 00411 # if (LUN_0 == ENABLE) 00412 case LUN_ID_0: 00413 return Lun_0_removal(); 00414 break; 00415 # endif 00416 # if (LUN_1 == ENABLE) 00417 case LUN_ID_1: 00418 return Lun_1_removal(); 00419 break; 00420 # endif 00421 # if (LUN_2 == ENABLE) 00422 case LUN_ID_2: 00423 return Lun_2_removal(); 00424 break; 00425 # endif 00426 # if (LUN_3 == ENABLE) 00427 case LUN_ID_3: 00428 return Lun_3_removal(); 00429 break; 00430 # endif 00431 # if (LUN_4 == ENABLE) 00432 case LUN_ID_4: 00433 return Lun_4_removal(); 00434 break; 00435 # endif 00436 # if (LUN_5 == ENABLE) 00437 case LUN_ID_5: 00438 return Lun_5_removal(); 00439 break; 00440 # endif 00441 # if (LUN_6 == ENABLE) 00442 case LUN_ID_6: 00443 return Lun_6_removal(); 00444 break; 00445 # endif 00446 # if (LUN_7 == ENABLE) 00447 case LUN_ID_7: 00448 return Lun_7_removal(); 00449 break; 00450 # endif 00451 # if (LUN_USB == ENABLE) 00452 default: 00453 return Lun_usb_removal(); 00454 break; 00455 # endif 00456 } 00457 return CTRL_FAIL; 00458 }
This function returns a pointer to the LUN name.
| lun | Logical unit number |
Definition at line 470 of file ctrl_access.c.
Referenced by ushell_cmd_free_space(), ushell_cmd_ls(), ushell_cmd_nb_drive(), and ushell_cmd_space().
00472 { 00473 switch( lun ) 00474 { 00475 # if (LUN_0 == ENABLE) 00476 case LUN_ID_0: 00477 return (U8 code*)lun0_name; 00478 break; 00479 # endif 00480 # if (LUN_1 == ENABLE) 00481 case LUN_ID_1: 00482 return (U8 code*)lun1_name; 00483 break; 00484 # endif 00485 # if (LUN_2 == ENABLE) 00486 case LUN_ID_2: 00487 return (U8 code*)lun2_name; 00488 break; 00489 # endif 00490 # if (LUN_3 == ENABLE) 00491 case LUN_ID_3: 00492 return (U8 code*)lun3_name; 00493 break; 00494 # endif 00495 # if (LUN_4 == ENABLE) 00496 case LUN_ID_4: 00497 return (U8 code*)lun4_name; 00498 break; 00499 # endif 00500 # if (LUN_5 == ENABLE) 00501 case LUN_ID_5: 00502 return (U8 code*)lun5_name; 00503 break; 00504 # endif 00505 # if (LUN_6 == ENABLE) 00506 case LUN_ID_6: 00507 return (U8 code*)lun6_name; 00508 break; 00509 # endif 00510 # if (LUN_7 == ENABLE) 00511 case LUN_ID_7: 00512 return (U8 code*)lun7_name; 00513 break; 00514 # endif 00515 # if (LUN_USB == ENABLE) 00516 default: 00517 return (U8 code*)lunusb_name; 00518 break; 00519 # endif 00520 } 00521 return 0; // Remove compiler warning 00522 }
| Ctrl_status memory_2_usb | ( | U8 | lun, | |
| U32 | addr, | |||
| U16 | nb_sector | |||
| ) |
This function tranfer a data from memory to usb.
| lun | Logical unit number | |
| addr | Sector address to start read (sector = 512B) | |
| nb_sector | Number of sectors to transfer |
Definition at line 542 of file ctrl_access.c.
Referenced by sbc_read_10().
00543 { 00544 Ctrl_status status=CTRL_FAIL; 00545 00546 switch( lun ) 00547 { 00548 # if (LUN_0 == ENABLE) 00549 case LUN_ID_0: 00550 status = Lun_0_read_10(addr , nb_sector); 00551 break; 00552 # endif 00553 # if (LUN_1 == ENABLE) 00554 case LUN_ID_1: 00555 status = Lun_1_read_10(addr , nb_sector); 00556 break; 00557 # endif 00558 # if (LUN_2 == ENABLE) 00559 case LUN_ID_2: 00560 status = Lun_2_read_10(addr , nb_sector); 00561 break; 00562 # endif 00563 # if (LUN_3 == ENABLE) 00564 case LUN_ID_3: 00565 status = Lun_3_read_10(addr , nb_sector); 00566 break; 00567 # endif 00568 # if (LUN_4 == ENABLE) 00569 case LUN_ID_4: 00570 status = Lun_4_read_10(addr , nb_sector); 00571 break; 00572 # endif 00573 # if (LUN_5 == ENABLE) 00574 case LUN_ID_5: 00575 status = Lun_5_read_10(addr , nb_sector); 00576 break; 00577 # endif 00578 # if (LUN_6 == ENABLE) 00579 case LUN_ID_6: 00580 status = Lun_6_read_10(addr , nb_sector); 00581 break; 00582 # endif 00583 # if (LUN_7 == ENABLE) 00584 case LUN_ID_7: 00585 status = Lun_7_read_10(addr , nb_sector); 00586 break; 00587 # endif 00588 } 00589 return status; 00590 }
| Ctrl_status usb_2_memory | ( | U8 | lun, | |
| U32 | addr, | |||
| U16 | nb_sector | |||
| ) |
This function transfer a data from usb to memory.
| lun | Logical unit number | |
| addr | Sector address to start write (sector = 512B) | |
| nb_sector | Number of sectors to transfer |
Definition at line 603 of file ctrl_access.c.
Referenced by sbc_write_10().
00604 { 00605 Ctrl_status status=CTRL_FAIL; 00606 00607 switch( lun ) 00608 { 00609 # if (LUN_0 == ENABLE) 00610 case LUN_ID_0: 00611 status = Lun_0_write_10(addr , nb_sector); 00612 break; 00613 # endif 00614 # if (LUN_1 == ENABLE) 00615 case LUN_ID_1: 00616 status = Lun_1_write_10(addr , nb_sector); 00617 break; 00618 # endif 00619 # if (LUN_2 == ENABLE) 00620 case LUN_ID_2: 00621 status = Lun_2_write_10(addr , nb_sector); 00622 break; 00623 # endif 00624 # if (LUN_3 == ENABLE) 00625 case LUN_ID_3: 00626 status = Lun_3_write_10(addr , nb_sector); 00627 break; 00628 # endif 00629 # if (LUN_4 == ENABLE) 00630 case LUN_ID_4: 00631 status = Lun_4_write_10(addr , nb_sector); 00632 break; 00633 # endif 00634 # if (LUN_5 == ENABLE) 00635 case LUN_ID_5: 00636 status = Lun_5_write_10(addr , nb_sector); 00637 break; 00638 # endif 00639 # if (LUN_6 == ENABLE) 00640 case LUN_ID_6: 00641 status = Lun_6_write_10(addr , nb_sector); 00642 break; 00643 # endif 00644 # if (LUN_7 == ENABLE) 00645 case LUN_ID_7: 00646 status = Lun_7_write_10(addr , nb_sector); 00647 break; 00648 # endif 00649 } 00650 return status; 00651 }
| Ctrl_status memory_2_ram | ( | U8 | lun, | |
| const U32 _MEM_TYPE_SLOW_ | addr, | |||
| U8 _MEM_TYPE_SLOW_ * | ram | |||
| ) |
Interface for RAM.
This function tranfer one sector data from memory to ram
| lun | Logical unit number | |
| addr | Sector address to start read (sector = 512B) | |
| nb_sector | Number of sectors to transfer | |
| ram | Adresse of ram buffer (only xdata) |
Definition at line 668 of file ctrl_access.c.
Referenced by fat_cache_read_sector(), file_read_buf(), stream_mem_to_mem(), and ushell_cmd_perform_access().
00669 { 00670 00671 Ctrl_status status=CTRL_FAIL; 00672 00673 switch( lun ) 00674 { 00675 # if (LUN_0 == ENABLE) 00676 case LUN_ID_0: 00677 status = Lun_0_mem_2_ram(addr , ram); 00678 break; 00679 # endif 00680 # if (LUN_1 == ENABLE) 00681 case LUN_ID_1: 00682 status = Lun_1_mem_2_ram(addr , ram); 00683 break; 00684 # endif 00685 # if (LUN_2 == ENABLE) 00686 case LUN_ID_2: 00687 status = Lun_2_mem_2_ram(addr , ram); 00688 break; 00689 # endif 00690 # if (LUN_3 == ENABLE) 00691 case LUN_ID_3: 00692 status = Lun_3_mem_2_ram(addr , ram); 00693 break; 00694 # endif 00695 # if (LUN_4 == ENABLE) 00696 case LUN_ID_4: 00697 status = Lun_4_mem_2_ram(addr , ram); 00698 break; 00699 # endif 00700 # if (LUN_5 == ENABLE) 00701 case LUN_ID_5: 00702 status = Lun_5_mem_2_ram(addr , ram); 00703 break; 00704 # endif 00705 # if (LUN_6 == ENABLE) 00706 case LUN_ID_6: 00707 status = Lun_6_mem_2_ram(addr , ram); 00708 break; 00709 # endif 00710 # if (LUN_7 == ENABLE) 00711 case LUN_ID_7: 00712 status = Lun_7_mem_2_ram(addr , ram); 00713 break; 00714 # endif 00715 # if (LUN_USB == ENABLE) 00716 default: 00717 return Lun_usb_mem_2_ram(lun - LUN_ID_USB,addr , ram); 00718 # endif 00719 } 00720 return status; 00721 }
| Ctrl_status ram_2_memory | ( | U8 | lun, | |
| const U32 _MEM_TYPE_SLOW_ | addr, | |||
| U8 _MEM_TYPE_SLOW_ * | ram | |||
| ) |
This function transfer a data from ram to memory.
| lun | Logical unit number | |
| addr | Sector address to start write (sector = 512B) | |
| nb_sector | Number of sectors to transfer | |
| ram | Adresse of ram buffer (only xdata) |
Definition at line 740 of file ctrl_access.c.
Referenced by fat_cache_flush(), stream_mem_to_mem(), and ushell_cmd_perform_access().
00741 { 00742 Ctrl_status status=CTRL_FAIL; 00743 00744 switch( lun ) 00745 { 00746 # if (LUN_0 == ENABLE) 00747 case LUN_ID_0: 00748 status = Lun_0_ram_2_mem(addr , ram); 00749 break; 00750 # endif 00751 # if (LUN_1 == ENABLE) 00752 case LUN_ID_1: 00753 status = Lun_1_ram_2_mem(addr , ram); 00754 break; 00755 # endif 00756 # if (LUN_2 == ENABLE) 00757 case LUN_ID_2: 00758 status = Lun_2_ram_2_mem(addr , ram); 00759 break; 00760 # endif 00761 # if (LUN_3 == ENABLE) 00762 case LUN_ID_3: 00763 status = Lun_3_ram_2_mem(addr , ram); 00764 break; 00765 # endif 00766 # if (LUN_4 == ENABLE) 00767 case LUN_ID_4: 00768 status = Lun_4_ram_2_mem(addr , ram); 00769 break; 00770 # endif 00771 # if (LUN_5 == ENABLE) 00772 case LUN_ID_5: 00773 status = Lun_5_ram_2_mem(addr , ram); 00774 break; 00775 # endif 00776 # if (LUN_6 == ENABLE) 00777 case LUN_ID_6: 00778 status = Lun_6_ram_2_mem(addr , ram); 00779 break; 00780 # endif 00781 # if (LUN_7 == ENABLE) 00782 case LUN_ID_7: 00783 status = Lun_7_ram_2_mem(addr , ram); 00784 break; 00785 # endif 00786 # if (LUN_USB == ENABLE) 00787 default: 00788 return Lun_usb_ram_2_mem(lun - LUN_ID_USB,addr , ram); 00789 break; 00790 # endif 00791 } 00792 return status; 00793 }
This function copy a data from memory to other memory.
| addr | Sector address to start write | |
| nb_sector | Number of sectors to transfer |
Definition at line 801 of file ctrl_access.c.
Referenced by ushell_cmd_perform_transfer().
00802 { 00803 Ctrl_status status=CTRL_FAIL; 00804 fat_cache_flush(); 00805 while(nb_sector) 00806 { 00807 status = memory_2_ram( src_lun , src_addr , fs_g_sector ); 00808 if( status != CTRL_GOOD ) 00809 break; 00810 status = ram_2_memory( dest_lun , dest_addr , fs_g_sector ); 00811 if( status != CTRL_GOOD ) 00812 break; 00813 src_addr++; 00814 dest_addr++; 00815 nb_sector--; 00816 } 00817 fat_cache_reset(); 00818 return (status != CTRL_GOOD)? ID_STREAM_ERR:0; 00819 }
| Ctrl_status stream_state | ( | U8 | Id | ) |
Returns the state on a data transfer.
| id | transfer id |
Definition at line 831 of file ctrl_access.c.
Referenced by ushell_cmd_perform_transfer().
00832 { 00833 return CTRL_GOOD; 00834 }
Stop the data transfer.
| id | Transfer id |
Definition at line 842 of file ctrl_access.c.
| U8 code lunusb_name[] = "\"USB Remote memory\"" |
1.5.3