Subversion Repositories Kolibri OS

Rev

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