|
|
|
@ -48,7 +48,7 @@ _USB_MODULE_LEDS .EQU 0xff8a |
|
|
|
;-------------------------------------------------------- |
|
|
|
; code |
|
|
|
;-------------------------------------------------------- |
|
|
|
;source-doc/base-drv/transfers.c:24: usb_error usb_ctrl_trnsfer_ext(const setup_packet *const cmd_packet, |
|
|
|
;source-doc/base-drv/transfers.c:23: |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_ctrl_trnsfer_ext |
|
|
|
; --------------------------------- |
|
|
|
@ -56,26 +56,26 @@ _usb_ctrl_trnsfer_ext: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
;source-doc/base-drv/transfers.c:28: if ((uint16_t)cmd_packet < LOWER_SAFE_RAM_ADDRESS) |
|
|
|
;source-doc/base-drv/transfers.c:27: const uint8_t max_packet_size) { |
|
|
|
ld a,(ix+5) |
|
|
|
sub 0x80 |
|
|
|
jr NC,l_usb_ctrl_trnsfer_ext_00102 |
|
|
|
;source-doc/base-drv/transfers.c:29: return USB_BAD_ADDRESS; |
|
|
|
;source-doc/base-drv/transfers.c:28: if ((uint16_t)cmd_packet < LOWER_SAFE_RAM_ADDRESS) |
|
|
|
ld l,0x82 |
|
|
|
jr l_usb_ctrl_trnsfer_ext_00106 |
|
|
|
l_usb_ctrl_trnsfer_ext_00102: |
|
|
|
;source-doc/base-drv/transfers.c:31: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_ADDRESS) |
|
|
|
;source-doc/base-drv/transfers.c:30: |
|
|
|
ld a,(ix+7) |
|
|
|
or (ix+6) |
|
|
|
jr Z,l_usb_ctrl_trnsfer_ext_00104 |
|
|
|
ld a,(ix+7) |
|
|
|
sub 0x80 |
|
|
|
jr NC,l_usb_ctrl_trnsfer_ext_00104 |
|
|
|
;source-doc/base-drv/transfers.c:32: return USB_BAD_ADDRESS; |
|
|
|
;source-doc/base-drv/transfers.c:31: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_ADDRESS) |
|
|
|
ld l,0x82 |
|
|
|
jr l_usb_ctrl_trnsfer_ext_00106 |
|
|
|
l_usb_ctrl_trnsfer_ext_00104: |
|
|
|
;source-doc/base-drv/transfers.c:34: return usb_control_transfer(cmd_packet, buffer, device_address, max_packet_size); |
|
|
|
;source-doc/base-drv/transfers.c:33: |
|
|
|
ld h,(ix+9) |
|
|
|
ld l,(ix+8) |
|
|
|
push hl |
|
|
|
@ -90,10 +90,10 @@ l_usb_ctrl_trnsfer_ext_00104: |
|
|
|
pop af |
|
|
|
pop af |
|
|
|
l_usb_ctrl_trnsfer_ext_00106: |
|
|
|
;source-doc/base-drv/transfers.c:35: } |
|
|
|
;source-doc/base-drv/transfers.c:34: return usb_control_transfer(cmd_packet, buffer, device_address, max_packet_size); |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
;source-doc/base-drv/transfers.c:47: usb_error usb_control_transfer(const setup_packet *const cmd_packet, |
|
|
|
;source-doc/base-drv/transfers.c:38: * @brief Perform a USB control transfer (in or out) |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_control_transfer |
|
|
|
; --------------------------------- |
|
|
|
@ -103,7 +103,7 @@ _usb_control_transfer: |
|
|
|
add ix,sp |
|
|
|
push af |
|
|
|
push af |
|
|
|
;source-doc/base-drv/transfers.c:52: endpoint_param endpoint = {1, 0, max_packet_size}; |
|
|
|
;source-doc/base-drv/transfers.c:43: * @param device_address usb device address |
|
|
|
ld hl,0 |
|
|
|
add hl, sp |
|
|
|
set 0, (hl) |
|
|
|
@ -125,29 +125,29 @@ _usb_control_transfer: |
|
|
|
and 0xfc |
|
|
|
or e |
|
|
|
ld (hl), a |
|
|
|
;source-doc/base-drv/transfers.c:54: const uint8_t transferIn = (cmd_packet->bmRequestType & 0x80); |
|
|
|
;source-doc/base-drv/transfers.c:45: * @return usb_error USB_ERR_OK if all good, otherwise specific error code |
|
|
|
ld c,(ix+4) |
|
|
|
ld b,(ix+5) |
|
|
|
ld a, (bc) |
|
|
|
and 0x80 |
|
|
|
;source-doc/base-drv/transfers.c:56: if (transferIn && buffer == 0) |
|
|
|
;source-doc/base-drv/transfers.c:47: usb_error usb_control_transfer(const setup_packet *const cmd_packet, |
|
|
|
ld (ix-1),a |
|
|
|
or a |
|
|
|
jr Z,l_usb_control_transfer_00102 |
|
|
|
ld a,(ix+7) |
|
|
|
or (ix+6) |
|
|
|
jr NZ,l_usb_control_transfer_00102 |
|
|
|
;source-doc/base-drv/transfers.c:57: return USB_ERR_OTHER; |
|
|
|
;source-doc/base-drv/transfers.c:48: void *const buffer, |
|
|
|
ld l,0x0f |
|
|
|
jp l_usb_control_transfer_00114 |
|
|
|
l_usb_control_transfer_00102: |
|
|
|
;source-doc/base-drv/transfers.c:59: critical_begin(); |
|
|
|
;source-doc/base-drv/transfers.c:50: const uint8_t max_packet_size) { |
|
|
|
push bc |
|
|
|
call _critical_begin |
|
|
|
ld l,(ix+8) |
|
|
|
call _ch_set_usb_address |
|
|
|
pop bc |
|
|
|
;source-doc/base-drv/transfers.c:63: ch_write_data((const uint8_t *)cmd_packet, sizeof(setup_packet)); |
|
|
|
;source-doc/base-drv/transfers.c:54: const uint8_t transferIn = (cmd_packet->bmRequestType & 0x80); |
|
|
|
ld e,(ix+4) |
|
|
|
ld d,(ix+5) |
|
|
|
push bc |
|
|
|
@ -161,16 +161,16 @@ l_usb_control_transfer_00102: |
|
|
|
call _ch_issue_token_setup |
|
|
|
call _ch_short_wait_int_and_get_stat |
|
|
|
pop bc |
|
|
|
;source-doc/base-drv/transfers.c:66: CHECK(result); |
|
|
|
;source-doc/base-drv/transfers.c:57: return USB_ERR_OTHER; |
|
|
|
ld a, l |
|
|
|
or a |
|
|
|
jr NZ,l_usb_control_transfer_00113 |
|
|
|
;source-doc/base-drv/transfers.c:68: const uint16_t length = cmd_packet->wLength; |
|
|
|
;source-doc/base-drv/transfers.c:59: critical_begin(); |
|
|
|
ld hl,6 |
|
|
|
add hl, bc |
|
|
|
ld c, (hl) |
|
|
|
inc hl |
|
|
|
;source-doc/base-drv/transfers.c:71: ? (transferIn ? ch_data_in_transfer(buffer, length, &endpoint) : ch_data_out_transfer(buffer, length, &endpoint)) |
|
|
|
;source-doc/base-drv/transfers.c:62: |
|
|
|
ld a,(hl) |
|
|
|
ld b,a |
|
|
|
or c |
|
|
|
@ -203,58 +203,58 @@ l_usb_control_transfer_00118: |
|
|
|
l_usb_control_transfer_00119: |
|
|
|
jr l_usb_control_transfer_00117 |
|
|
|
l_usb_control_transfer_00116: |
|
|
|
;source-doc/base-drv/transfers.c:72: : USB_ERR_OK; |
|
|
|
;source-doc/base-drv/transfers.c:63: ch_write_data((const uint8_t *)cmd_packet, sizeof(setup_packet)); |
|
|
|
ld l,0x00 |
|
|
|
l_usb_control_transfer_00117: |
|
|
|
;source-doc/base-drv/transfers.c:74: CHECK(result) |
|
|
|
;source-doc/base-drv/transfers.c:65: result = ch_short_wait_int_and_get_statu(); |
|
|
|
ld a, l |
|
|
|
or a |
|
|
|
jr NZ,l_usb_control_transfer_00113 |
|
|
|
;source-doc/base-drv/transfers.c:76: if (transferIn) { |
|
|
|
;source-doc/base-drv/transfers.c:67: |
|
|
|
ld a,(ix-1) |
|
|
|
or a |
|
|
|
jr Z,l_usb_control_transfer_00112 |
|
|
|
;source-doc/base-drv/transfers.c:77: ch_command(CH_CMD_WR_HOST_DATA); |
|
|
|
;source-doc/base-drv/transfers.c:68: const uint16_t length = cmd_packet->wLength; |
|
|
|
ld l,0x2c |
|
|
|
call _ch_command |
|
|
|
;source-doc/base-drv/transfers.c:78: CH376_DATA_PORT = 0; |
|
|
|
;source-doc/base-drv/transfers.c:69: |
|
|
|
ld a,0x00 |
|
|
|
ld bc,_CH376_DATA_PORT |
|
|
|
out (c),a |
|
|
|
;source-doc/base-drv/transfers.c:79: ch_issue_token_out_ep0(); |
|
|
|
;source-doc/base-drv/transfers.c:70: result = length != 0 |
|
|
|
call _ch_issue_token_out_ep0 |
|
|
|
;source-doc/base-drv/transfers.c:80: result = ch_long_wait_int_and_get_status(); /* sometimes we get STALL here - seems to be ok to ignore */ |
|
|
|
;source-doc/base-drv/transfers.c:71: ? (transferIn ? ch_data_in_transfer(buffer, length, &endpoint) : ch_data_out_transfer(buffer, length, &endpoint)) |
|
|
|
call _ch_long_wait_int_and_get_statu |
|
|
|
;source-doc/base-drv/transfers.c:82: if (result == USB_ERR_OK || result == USB_ERR_STALL) { |
|
|
|
;source-doc/base-drv/transfers.c:73: |
|
|
|
ld a,l |
|
|
|
or a |
|
|
|
jr Z,l_usb_control_transfer_00108 |
|
|
|
sub 0x02 |
|
|
|
jr NZ,l_usb_control_transfer_00113 |
|
|
|
l_usb_control_transfer_00108: |
|
|
|
;source-doc/base-drv/transfers.c:83: result = USB_ERR_OK; |
|
|
|
;source-doc/base-drv/transfers.c:74: CHECK(result) |
|
|
|
ld l,0x00 |
|
|
|
;source-doc/base-drv/transfers.c:84: goto done; |
|
|
|
;source-doc/base-drv/transfers.c:75: |
|
|
|
jr l_usb_control_transfer_00113 |
|
|
|
;source-doc/base-drv/transfers.c:87: RETURN_CHECK(result); |
|
|
|
;source-doc/base-drv/transfers.c:78: CH376_DATA_PORT = 0; |
|
|
|
l_usb_control_transfer_00112: |
|
|
|
;source-doc/base-drv/transfers.c:90: ch_issue_token_in_ep0(); |
|
|
|
;source-doc/base-drv/transfers.c:81: |
|
|
|
call _ch_issue_token_in_ep0 |
|
|
|
;source-doc/base-drv/transfers.c:91: result = ch_long_wait_int_and_get_status(); |
|
|
|
;source-doc/base-drv/transfers.c:82: if (result == USB_ERR_OK || result == USB_ERR_STALL) { |
|
|
|
call _ch_long_wait_int_and_get_statu |
|
|
|
;source-doc/base-drv/transfers.c:95: done: |
|
|
|
;source-doc/base-drv/transfers.c:86: |
|
|
|
l_usb_control_transfer_00113: |
|
|
|
;source-doc/base-drv/transfers.c:96: critical_end(); |
|
|
|
;source-doc/base-drv/transfers.c:87: RETURN_CHECK(result); |
|
|
|
push hl |
|
|
|
call _critical_end |
|
|
|
pop hl |
|
|
|
;source-doc/base-drv/transfers.c:97: return result; |
|
|
|
;source-doc/base-drv/transfers.c:88: } |
|
|
|
l_usb_control_transfer_00114: |
|
|
|
;source-doc/base-drv/transfers.c:98: } |
|
|
|
;source-doc/base-drv/transfers.c:89: |
|
|
|
ld sp, ix |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
;source-doc/base-drv/transfers.c:101: usb_dat_in_trnsfer_ext(uint8_t *buffer, const uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { |
|
|
|
;source-doc/base-drv/transfers.c:92: |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_dat_in_trnsfer_ext |
|
|
|
; --------------------------------- |
|
|
|
@ -262,26 +262,26 @@ _usb_dat_in_trnsfer_ext: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
;source-doc/base-drv/transfers.c:102: if (buffer != 0 && (uint16_t)buffer < LOWER_SAFE_RAM_ADDRESS) |
|
|
|
;source-doc/base-drv/transfers.c:93: RETURN_CHECK(result); |
|
|
|
ld a,(ix+5) |
|
|
|
or (ix+4) |
|
|
|
jr Z,l_usb_dat_in_trnsfer_ext_00102 |
|
|
|
ld a,(ix+5) |
|
|
|
sub 0x80 |
|
|
|
jr NC,l_usb_dat_in_trnsfer_ext_00102 |
|
|
|
;source-doc/base-drv/transfers.c:103: return USB_BAD_ADDRESS; |
|
|
|
;source-doc/base-drv/transfers.c:94: |
|
|
|
ld l,0x82 |
|
|
|
jr l_usb_dat_in_trnsfer_ext_00106 |
|
|
|
l_usb_dat_in_trnsfer_ext_00102: |
|
|
|
;source-doc/base-drv/transfers.c:105: if ((uint16_t)endpoint < LOWER_SAFE_RAM_ADDRESS) |
|
|
|
;source-doc/base-drv/transfers.c:96: critical_end(); |
|
|
|
ld a,(ix+10) |
|
|
|
sub 0x80 |
|
|
|
jr NC,l_usb_dat_in_trnsfer_ext_00105 |
|
|
|
;source-doc/base-drv/transfers.c:106: return USB_BAD_ADDRESS; |
|
|
|
;source-doc/base-drv/transfers.c:97: return result; |
|
|
|
ld l,0x82 |
|
|
|
jr l_usb_dat_in_trnsfer_ext_00106 |
|
|
|
l_usb_dat_in_trnsfer_ext_00105: |
|
|
|
;source-doc/base-drv/transfers.c:108: return usb_data_in_transfer(buffer, buffer_size, device_address, endpoint); |
|
|
|
;source-doc/base-drv/transfers.c:99: |
|
|
|
ld l,(ix+9) |
|
|
|
ld h,(ix+10) |
|
|
|
push hl |
|
|
|
@ -300,10 +300,10 @@ l_usb_dat_in_trnsfer_ext_00105: |
|
|
|
pop af |
|
|
|
inc sp |
|
|
|
l_usb_dat_in_trnsfer_ext_00106: |
|
|
|
;source-doc/base-drv/transfers.c:109: } |
|
|
|
;source-doc/base-drv/transfers.c:100: usb_error |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
;source-doc/base-drv/transfers.c:112: usb_dat_in_trns_n_ext(uint8_t *buffer, uint16_t *buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { |
|
|
|
;source-doc/base-drv/transfers.c:103: return USB_BAD_ADDRESS; |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_dat_in_trns_n_ext |
|
|
|
; --------------------------------- |
|
|
|
@ -311,34 +311,34 @@ _usb_dat_in_trns_n_ext: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
;source-doc/base-drv/transfers.c:113: if (buffer != 0 && ((uint16_t)buffer & 0xC000) == 0) |
|
|
|
;source-doc/base-drv/transfers.c:104: |
|
|
|
ld a,(ix+5) |
|
|
|
or (ix+4) |
|
|
|
jr Z,l_usb_dat_in_trns_n_ext_00102 |
|
|
|
ld a,(ix+5) |
|
|
|
and 0xc0 |
|
|
|
jr NZ,l_usb_dat_in_trns_n_ext_00102 |
|
|
|
;source-doc/base-drv/transfers.c:114: return USB_BAD_ADDRESS; |
|
|
|
;source-doc/base-drv/transfers.c:105: if ((uint16_t)endpoint < LOWER_SAFE_RAM_ADDRESS) |
|
|
|
ld l,0x82 |
|
|
|
jr l_usb_dat_in_trns_n_ext_00108 |
|
|
|
l_usb_dat_in_trns_n_ext_00102: |
|
|
|
;source-doc/base-drv/transfers.c:116: if (((uint16_t)endpoint & 0xC000) == 0) |
|
|
|
;source-doc/base-drv/transfers.c:107: |
|
|
|
ld a,(ix+10) |
|
|
|
and 0xc0 |
|
|
|
jr NZ,l_usb_dat_in_trns_n_ext_00105 |
|
|
|
;source-doc/base-drv/transfers.c:117: return USB_BAD_ADDRESS; |
|
|
|
;source-doc/base-drv/transfers.c:108: return usb_data_in_transfer(buffer, buffer_size, device_address, endpoint); |
|
|
|
ld l,0x82 |
|
|
|
jr l_usb_dat_in_trns_n_ext_00108 |
|
|
|
l_usb_dat_in_trns_n_ext_00105: |
|
|
|
;source-doc/base-drv/transfers.c:119: if (((uint16_t)buffer_size & 0xC000) == 0) |
|
|
|
;source-doc/base-drv/transfers.c:110: |
|
|
|
ld a,(ix+7) |
|
|
|
and 0xc0 |
|
|
|
jr NZ,l_usb_dat_in_trns_n_ext_00107 |
|
|
|
;source-doc/base-drv/transfers.c:120: return USB_BAD_ADDRESS; |
|
|
|
;source-doc/base-drv/transfers.c:111: usb_error |
|
|
|
ld l,0x82 |
|
|
|
jr l_usb_dat_in_trns_n_ext_00108 |
|
|
|
l_usb_dat_in_trns_n_ext_00107: |
|
|
|
;source-doc/base-drv/transfers.c:122: return usb_data_in_transfer_n(buffer, buffer_size, device_address, endpoint); |
|
|
|
;source-doc/base-drv/transfers.c:113: if (buffer != 0 && ((uint16_t)buffer & 0xC000) == 0) |
|
|
|
ld c,(ix+6) |
|
|
|
ld b,(ix+7) |
|
|
|
ld l,(ix+9) |
|
|
|
@ -357,10 +357,10 @@ l_usb_dat_in_trns_n_ext_00107: |
|
|
|
pop af |
|
|
|
inc sp |
|
|
|
l_usb_dat_in_trns_n_ext_00108: |
|
|
|
;source-doc/base-drv/transfers.c:123: } |
|
|
|
;source-doc/base-drv/transfers.c:114: return USB_BAD_ADDRESS; |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
;source-doc/base-drv/transfers.c:135: usb_data_in_transfer(uint8_t *buffer, const uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { |
|
|
|
;source-doc/base-drv/transfers.c:119: if (((uint16_t)buffer_size & 0xC000) == 0) |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_data_in_transfer |
|
|
|
; --------------------------------- |
|
|
|
@ -368,12 +368,12 @@ _usb_data_in_transfer: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
;source-doc/base-drv/transfers.c:136: critical_begin(); |
|
|
|
;source-doc/base-drv/transfers.c:120: return USB_BAD_ADDRESS; |
|
|
|
call _critical_begin |
|
|
|
;source-doc/base-drv/transfers.c:138: ch_set_usb_address(device_address); |
|
|
|
;source-doc/base-drv/transfers.c:122: return usb_data_in_transfer_n(buffer, buffer_size, device_address, endpoint); |
|
|
|
ld l,(ix+8) |
|
|
|
call _ch_set_usb_address |
|
|
|
;source-doc/base-drv/transfers.c:140: result = ch_data_in_transfer(buffer, buffer_size, endpoint); |
|
|
|
;source-doc/base-drv/transfers.c:124: |
|
|
|
ld l,(ix+9) |
|
|
|
ld h,(ix+10) |
|
|
|
push hl |
|
|
|
@ -389,14 +389,14 @@ _usb_data_in_transfer: |
|
|
|
pop af |
|
|
|
ld a, l |
|
|
|
ld (_result), a |
|
|
|
;source-doc/base-drv/transfers.c:142: critical_end(); |
|
|
|
;source-doc/base-drv/transfers.c:126: * @brief Perform a USB data in on the specififed endpoint |
|
|
|
call _critical_end |
|
|
|
;source-doc/base-drv/transfers.c:144: return result; |
|
|
|
;source-doc/base-drv/transfers.c:128: * @param buffer the buffer to receive the data |
|
|
|
ld hl,(_result) |
|
|
|
;source-doc/base-drv/transfers.c:145: } |
|
|
|
;source-doc/base-drv/transfers.c:129: * @param buffer_size the maximum size of data to be received |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
;source-doc/base-drv/transfers.c:157: usb_data_in_transfer_n(uint8_t *buffer, uint8_t *const buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { |
|
|
|
;source-doc/base-drv/transfers.c:134: usb_error |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_data_in_transfer_n |
|
|
|
; --------------------------------- |
|
|
|
@ -404,12 +404,12 @@ _usb_data_in_transfer_n: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
;source-doc/base-drv/transfers.c:158: critical_begin(); |
|
|
|
;source-doc/base-drv/transfers.c:135: usb_data_in_transfer(uint8_t *buffer, const uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { |
|
|
|
call _critical_begin |
|
|
|
;source-doc/base-drv/transfers.c:160: ch_set_usb_address(device_address); |
|
|
|
;source-doc/base-drv/transfers.c:137: |
|
|
|
ld l,(ix+8) |
|
|
|
call _ch_set_usb_address |
|
|
|
;source-doc/base-drv/transfers.c:162: result = ch_data_in_transfer_n(buffer, buffer_size, endpoint); |
|
|
|
;source-doc/base-drv/transfers.c:139: |
|
|
|
ld l,(ix+9) |
|
|
|
ld h,(ix+10) |
|
|
|
push hl |
|
|
|
@ -425,14 +425,14 @@ _usb_data_in_transfer_n: |
|
|
|
pop af |
|
|
|
ld a, l |
|
|
|
ld (_result), a |
|
|
|
;source-doc/base-drv/transfers.c:164: critical_end(); |
|
|
|
;source-doc/base-drv/transfers.c:141: |
|
|
|
call _critical_end |
|
|
|
;source-doc/base-drv/transfers.c:166: return result; |
|
|
|
;source-doc/base-drv/transfers.c:143: |
|
|
|
ld hl,(_result) |
|
|
|
;source-doc/base-drv/transfers.c:167: } |
|
|
|
;source-doc/base-drv/transfers.c:144: return result; |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
;source-doc/base-drv/transfers.c:179: usb_data_out_transfer(const uint8_t *buffer, uint16_t buffer_size, const uint8_t device_address, endpoint_param *const endpoint) { |
|
|
|
;source-doc/base-drv/transfers.c:149: * |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_data_out_transfer |
|
|
|
; --------------------------------- |
|
|
|
@ -440,12 +440,12 @@ _usb_data_out_transfer: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
;source-doc/base-drv/transfers.c:180: critical_begin(); |
|
|
|
;source-doc/base-drv/transfers.c:150: * @param buffer the buffer to receive the data - must be 62 bytes |
|
|
|
call _critical_begin |
|
|
|
;source-doc/base-drv/transfers.c:182: ch_set_usb_address(device_address); |
|
|
|
;source-doc/base-drv/transfers.c:152: * @param device_address the usb address of the device |
|
|
|
ld l,(ix+8) |
|
|
|
call _ch_set_usb_address |
|
|
|
;source-doc/base-drv/transfers.c:184: result = ch_data_out_transfer(buffer, buffer_size, endpoint); |
|
|
|
;source-doc/base-drv/transfers.c:154: * @return usb_error USB_ERR_OK if all good, otherwise specific error code |
|
|
|
ld l,(ix+9) |
|
|
|
ld h,(ix+10) |
|
|
|
push hl |
|
|
|
@ -461,10 +461,10 @@ _usb_data_out_transfer: |
|
|
|
pop af |
|
|
|
ld a, l |
|
|
|
ld (_result), a |
|
|
|
;source-doc/base-drv/transfers.c:186: critical_end(); |
|
|
|
;source-doc/base-drv/transfers.c:156: usb_error |
|
|
|
call _critical_end |
|
|
|
;source-doc/base-drv/transfers.c:188: return result; |
|
|
|
;source-doc/base-drv/transfers.c:158: critical_begin(); |
|
|
|
ld hl,(_result) |
|
|
|
;source-doc/base-drv/transfers.c:189: } |
|
|
|
;source-doc/base-drv/transfers.c:159: |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
|