Rev 5038 | Rev 5087 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5038 | Rev 5042 | ||
---|---|---|---|
Line 46... | Line 46... | ||
46 | ; USB HID constants |
46 | ; USB HID constants |
47 | HID_DESCR_TYPE = 21h |
47 | HID_DESCR_TYPE = 21h |
48 | REPORT_DESCR_TYPE = 22h |
48 | REPORT_DESCR_TYPE = 22h |
49 | PHYSICAL_DESCR_TYPE = 23h |
49 | PHYSICAL_DESCR_TYPE = 23h |
Line 50... | Line -... | ||
50 | - | ||
51 | 50 | ||
52 | ; LibUSB constatnts |
51 | ; LibUSB constatnts |
53 | LIBUSB_REQUEST_TYPE_STANDARD = (0x00 shl 5) |
52 | LIBUSB_REQUEST_TYPE_STANDARD = (0x00 shl 5) |
54 | LIBUSB_REQUEST_TYPE_CLASS = (0x01 shl 5) |
53 | LIBUSB_REQUEST_TYPE_CLASS = (0x01 shl 5) |
55 | LIBUSB_REQUEST_TYPE_VENDOR = (0x02 shl 5) |
54 | LIBUSB_REQUEST_TYPE_VENDOR = (0x02 shl 5) |
Line 290... | Line 289... | ||
290 | out_size equ IOCTL.out_size |
289 | out_size equ IOCTL.out_size |
Line 291... | Line 290... | ||
291 | 290 | ||
292 | align 4 |
291 | align 4 |
293 | proc service_proc stdcall uses ebx esi edi, ioctl:DWORD |
292 | proc service_proc stdcall uses ebx esi edi, ioctl:DWORD |
294 | locals |
293 | locals |
295 | ConfPacket rb 8 |
294 | ConfPacket rb 10 |
296 | EventData rd 3 |
295 | EventData rd 3 |
297 | endl |
296 | endl |
298 | mov edi, [ioctl] |
297 | mov edi, [ioctl] |
299 | mov eax, [edi+io_code] |
298 | mov eax, [edi+io_code] |
Line 394... | Line 393... | ||
394 | jmp .error |
393 | jmp .error |
Line 395... | Line 394... | ||
395 | 394 | ||
396 | .version: |
395 | .version: |
397 | jmp .endswitch |
396 | jmp .endswitch |
- | 397 | .error: |
|
398 | .error: |
398 | DEBUGF 1, 'K : FTDI error occured! %d\n', eax |
399 | mov esi, [edi+output] |
399 | ;mov esi, [edi+output] |
400 | mov [esi], dword 'ERR0' |
400 | ;mov [esi], dword 'ERR0' |
401 | or [esi], eax |
401 | ;or [esi], eax |
402 | ret |
402 | ret |
403 | .endswitch: |
403 | .endswitch: |
404 | xor eax, eax |
404 | xor eax, eax |
Line 435... | Line 435... | ||
435 | test eax, eax |
435 | test eax, eax |
436 | jz .error |
436 | jz .error |
437 | mov eax, [EventData] |
437 | mov eax, [EventData] |
438 | mov ebx, [EventData+4] |
438 | mov ebx, [EventData+4] |
439 | call WaitEvent |
439 | call WaitEvent |
- | 440 | mov eax, [EventData+8] |
|
- | 441 | test eax, eax |
|
440 | jmp .endswitch |
442 | jz .endswitch |
- | 443 | jmp .error |
|
Line 441... | Line 444... | ||
441 | 444 | ||
442 | .ftdi_setrtshigh: |
445 | .ftdi_setrtshigh: |
443 | ;DEBUGF 1,'K : FTDI Setting RTS pin HIGH\n' |
446 | ;DEBUGF 1,'K : FTDI Setting RTS pin HIGH\n' |
444 | mov dword[ConfPacket], (FTDI_DEVICE_OUT_REQTYPE) + (SIO_SET_MODEM_CTRL_REQUEST shl 8) + (SIO_SET_RTS_HIGH shl 16) |
447 | mov dword[ConfPacket], (FTDI_DEVICE_OUT_REQTYPE) + (SIO_SET_MODEM_CTRL_REQUEST shl 8) + (SIO_SET_RTS_HIGH shl 16) |
Line 501... | Line 504... | ||
501 | xor cx, cx |
504 | xor cx, cx |
502 | mov word[ConfPacket+6], cx |
505 | mov word[ConfPacket+6], cx |
503 | jmp .own_index |
506 | jmp .own_index |
Line 504... | Line 507... | ||
504 | 507 | ||
505 | .ftdi_read_pins: |
508 | .ftdi_read_pins: |
506 | mov ebx, [edi] |
509 | mov ebx, [edi+4] |
507 | mov dword[ConfPacket], FTDI_DEVICE_IN_REQTYPE + (SIO_READ_PINS_REQUEST shl 8) + (0 shl 16) |
510 | mov dword[ConfPacket], FTDI_DEVICE_IN_REQTYPE + (SIO_READ_PINS_REQUEST shl 8) + (0 shl 16) |
508 | mov ecx, [ebx + ftdi_context.index] |
511 | mov ecx, [ebx + ftdi_context.index] |
509 | mov word[ConfPacket+4], cx |
512 | mov word[ConfPacket+4], cx |
510 | mov word[ConfPacket+6], 1 |
513 | mov word[ConfPacket+6], 1 |
511 | lea esi, [ConfPacket] |
514 | lea esi, [ConfPacket] |
512 | lea edi, [EventData] |
515 | lea edi, [EventData] |
513 | mov ecx, [ioctl] |
516 | mov ecx, esi |
- | 517 | add ecx, 8 |
|
514 | mov ecx, [ecx+output] |
518 | mov word[ConfPacket+8], 0 |
515 | stdcall USBControlTransferAsync, [ebx + ftdi_context.nullP], esi, ecx, 1, control_callback, edi, 0 |
519 | stdcall USBControlTransferAsync, [ebx + ftdi_context.nullP], esi, ecx, 1, control_callback, edi, 0 |
516 | mov eax, [EventData] |
520 | mov eax, [EventData] |
517 | mov ebx, [EventData+4] |
521 | mov ebx, [EventData+4] |
- | 522 | call WaitEvent |
|
- | 523 | xor ebx, ebx |
|
- | 524 | mov bx, word[ConfPacket+8] |
|
- | 525 | mov ecx, [ioctl] |
|
- | 526 | mov ecx, [ecx+output] |
|
- | 527 | mov [ecx], ebx |
|
- | 528 | mov eax, [EventData+8] |
|
518 | call WaitEvent |
529 | test eax, eax |
- | 530 | jz .endswitch |
|
Line 519... | Line 531... | ||
519 | jmp .endswitch |
531 | jmp .error |
520 | 532 | ||
521 | .ftdi_set_wchunksize: |
533 | .ftdi_set_wchunksize: |
522 | mov ebx, [edi+4] |
534 | mov ebx, [edi+4] |
Line 563... | Line 575... | ||
563 | call SysMsgBoardStr |
575 | call SysMsgBoardStr |
564 | jmp .eventdestroy |
576 | jmp .eventdestroy |
565 | @@: |
577 | @@: |
566 | mov dword[ConfPacket], eax |
578 | mov dword[ConfPacket], eax |
567 | mov ecx, [edi+8] |
579 | mov ecx, [edi+8] |
568 | push edi esi |
580 | push edi |
569 | mov edi, eax |
581 | mov edi, eax |
570 | rep movsb |
582 | rep movsb |
571 | pop esi edi |
583 | pop edi |
- | 584 | mov esi, dword[ConfPacket] |
|
572 | ;---Dirty hack end |
585 | ;---Dirty hack end |
573 | xor ecx, ecx ; ecx - offset |
586 | xor ecx, ecx ; ecx - offset |
574 | .write_loop: |
587 | .write_loop: |
575 | mov edx, [edi+8] ; edx - write_size |
588 | mov edx, [edi+8] ; edx - write_size |
576 | sub edx, ecx |
589 | sub edx, ecx |
Line 583... | Line 596... | ||
583 | push ecx ebx esi edi |
596 | push ecx ebx esi edi |
584 | stdcall USBNormalTransferAsync, [ebx + ftdi_context.inEP], esi, edx, bulk_callback, eax, 1 |
597 | stdcall USBNormalTransferAsync, [ebx + ftdi_context.inEP], esi, edx, bulk_callback, eax, 1 |
585 | mov eax, [EventData] |
598 | mov eax, [EventData] |
586 | mov ebx, [EventData+4] |
599 | mov ebx, [EventData+4] |
587 | call WaitEvent |
600 | call WaitEvent |
588 | mov eax, [EventData] |
- | |
589 | mov ebx, [EventData+4] |
- | |
590 | call ClearEvent |
- | |
591 | pop edi esi ebx ecx |
601 | pop edi esi ebx ecx |
592 | cmp [EventData+8], -1 |
602 | cmp [EventData+8], -1 |
593 | jz .error |
603 | jz .error |
594 | add ecx, [EventData+8] |
604 | add ecx, [EventData+8] |
595 | cmp ecx, [edi+8] |
605 | cmp ecx, [edi+8] |
Line 633... | Line 643... | ||
633 | push esi edi ecx ebx |
643 | push esi edi ecx ebx |
634 | stdcall USBNormalTransferAsync, [ebx + ftdi_context.outEP], edi, edx, bulk_callback, eax, 1 |
644 | stdcall USBNormalTransferAsync, [ebx + ftdi_context.outEP], edi, edx, bulk_callback, eax, 1 |
635 | mov eax, [EventData] |
645 | mov eax, [EventData] |
636 | mov ebx, [EventData+4] |
646 | mov ebx, [EventData+4] |
637 | call WaitEvent |
647 | call WaitEvent |
638 | mov eax, [EventData] |
- | |
639 | mov ebx, [EventData+4] |
- | |
640 | call ClearEvent |
- | |
641 | pop ebx ecx edi esi |
648 | pop ebx ecx edi esi |
642 | cmp [EventData+8], -1 |
649 | cmp [EventData+8], -1 |
643 | jz .error |
650 | jz .error |
644 | add ecx, [EventData+8] |
651 | add ecx, [EventData+8] |
645 | jmp .read_loop |
652 | jmp .read_loop |