Rev 2622 | Rev 2637 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2622 | Rev 2635 | ||
---|---|---|---|
Line 446... | Line 446... | ||
446 | } |
446 | } |
447 | 447 | ||
448 | /** Connect client to the device. |
448 | /** Connect client to the device. |
449 | * Find device driver owning requested device and forward |
449 | * Find device driver owning requested device and forward |
450 | * the message to it. |
450 | * the message to it. |
451 | * |
- | |
452 | * |
- | |
453 | */ |
451 | */ |
454 | static void devmap_forward(ipc_callid_t callid, ipc_call_t *call) |
452 | static void devmap_forward(ipc_callid_t callid, ipc_call_t *call) |
455 | { |
453 | { |
456 | devmap_device_t *dev; |
454 | devmap_device_t *dev; |
457 | int handle; |
455 | int handle; |
458 | 456 | ||
459 | /* |
457 | /* |
460 | * Get handle from request |
458 | * Get handle from request |
461 | */ |
459 | */ |
462 | handle = IPC_GET_ARG1(*call); |
460 | handle = IPC_GET_ARG2(*call); |
463 | dev = devmap_device_find_handle(handle); |
461 | dev = devmap_device_find_handle(handle); |
464 | 462 | ||
465 | if (NULL == dev) { |
463 | if (NULL == dev) { |
466 | printf("DEVMAP: No registered device with handle %d.\n", |
464 | printf("DEVMAP: No registered device with handle %d.\n", |
467 | handle); |
465 | handle); |
468 | ipc_answer_0(callid, ENOENT); |
466 | ipc_answer_0(callid, ENOENT); |
469 | return; |
467 | return; |
470 | } |
468 | } |
471 | 469 | ||
472 | /* FIXME: is this correct method how to pass argument on forwarding ?*/ |
- | |
473 | ipc_forward_fast(callid, dev->driver->phone, (ipcarg_t)(dev->handle), |
470 | ipc_forward_fast(callid, dev->driver->phone, (ipcarg_t)(dev->handle), |
474 | 0, IPC_FF_NONE); |
471 | IPC_GET_ARG3(*call), 0, IPC_FF_NONE); |
475 | return; |
472 | return; |
476 | } |
473 | } |
477 | 474 | ||
478 | /** Find handle for device instance identified by name. |
475 | /** Find handle for device instance identified by name. |
479 | * In answer will be send EOK and device handle in arg1 or a error |
476 | * In answer will be send EOK and device handle in arg1 or a error |
Line 667... | Line 664... | ||
667 | case IPC_M_PHONE_HUNGUP: |
664 | case IPC_M_PHONE_HUNGUP: |
668 | printf("DEVMAP: connection hung up.\n"); |
665 | printf("DEVMAP: connection hung up.\n"); |
669 | cont = false; |
666 | cont = false; |
670 | continue; /* Exit thread */ |
667 | continue; /* Exit thread */ |
671 | 668 | ||
672 | case DEVMAP_DEVICE_CONNECT_ME_TO: |
- | |
673 | /* Connect client to selected device */ |
- | |
674 | printf("DEVMAP: connect to device %d.\n", |
- | |
675 | IPC_GET_ARG1(call)); |
- | |
676 | devmap_forward(callid, &call); |
- | |
677 | break; |
- | |
678 | - | ||
679 | case DEVMAP_DEVICE_GET_HANDLE: |
669 | case DEVMAP_DEVICE_GET_HANDLE: |
680 | devmap_get_handle(callid, &call); |
670 | devmap_get_handle(callid, &call); |
681 | 671 | ||
682 | break; |
672 | break; |
683 | case DEVMAP_DEVICE_GET_NAME: |
673 | case DEVMAP_DEVICE_GET_NAME: |
Line 707... | Line 697... | ||
707 | devmap_connection_driver(iid, icall); |
697 | devmap_connection_driver(iid, icall); |
708 | break; |
698 | break; |
709 | case DEVMAP_CLIENT: |
699 | case DEVMAP_CLIENT: |
710 | devmap_connection_client(iid, icall); |
700 | devmap_connection_client(iid, icall); |
711 | break; |
701 | break; |
- | 702 | case DEVMAP_CONNECT_TO_DEVICE: |
|
- | 703 | /* Connect client to selected device */ |
|
- | 704 | printf("DEVMAP: connect to device %d.\n", |
|
- | 705 | IPC_GET_ARG2(*icall)); |
|
- | 706 | devmap_forward(iid, icall); |
|
- | 707 | break; |
|
712 | default: |
708 | default: |
713 | ipc_answer_0(iid, ENOENT); /* No such interface */ |
709 | ipc_answer_0(iid, ENOENT); /* No such interface */ |
714 | printf("DEVMAP: Unknown interface %u.\n", |
710 | printf("DEVMAP: Unknown interface %u.\n", |
715 | (ipcarg_t)(IPC_GET_ARG1(*icall))); |
711 | (ipcarg_t)(IPC_GET_ARG1(*icall))); |
716 | } |
712 | } |