@@ -87,17 +87,17 @@ static void usb_device_check_active(mp_obj_usb_device_t *usbd) {
87
87
}
88
88
}
89
89
90
- static mp_obj_t usb_device_submit_xfer (mp_obj_t self , mp_obj_t ep , mp_obj_t buffer ) {
91
- mp_obj_usb_device_t * usbd = (mp_obj_usb_device_t * )MP_OBJ_TO_PTR (self );
90
+ static mp_obj_t usb_device_submit_xfer (size_t n_args , const mp_obj_t * args ) {
91
+ mp_obj_usb_device_t * usbd = (mp_obj_usb_device_t * )MP_OBJ_TO_PTR (args [ 0 ] );
92
92
int ep_addr ;
93
93
mp_buffer_info_t buf_info = { 0 };
94
94
bool result ;
95
95
96
96
usb_device_check_active (usbd );
97
97
98
98
// Unmarshal arguments, raises TypeError if invalid
99
- ep_addr = mp_obj_get_int (ep );
100
- mp_get_buffer_raise (buffer , & buf_info , ep_addr & TUSB_DIR_IN_MASK ? MP_BUFFER_READ : MP_BUFFER_RW );
99
+ ep_addr = mp_obj_get_int (args [ 1 ] );
100
+ mp_get_buffer_raise (args [ 2 ] , & buf_info , ep_addr & TUSB_DIR_IN_MASK ? MP_BUFFER_READ : MP_BUFFER_RW );
101
101
102
102
uint8_t ep_num = tu_edpt_number (ep_addr );
103
103
uint8_t ep_dir = tu_edpt_dir (ep_addr );
@@ -115,16 +115,17 @@ static mp_obj_t usb_device_submit_xfer(mp_obj_t self, mp_obj_t ep, mp_obj_t buff
115
115
mp_raise_OSError (MP_EBUSY );
116
116
}
117
117
118
- result = usbd_edpt_xfer (USBD_RHPORT , ep_addr , buf_info .buf , buf_info .len );
118
+ uint len = (n_args == 3 ) ? buf_info .len : mp_obj_get_int (args [3 ]);
119
+ result = usbd_edpt_xfer (USBD_RHPORT , ep_addr , buf_info .buf , len );
119
120
120
121
if (result ) {
121
122
// Store the buffer object until the transfer completes
122
- usbd -> xfer_data [ep_num ][ep_dir ] = buffer ;
123
+ usbd -> xfer_data [ep_num ][ep_dir ] = args [ 2 ] ;
123
124
}
124
125
125
126
return mp_obj_new_bool (result );
126
127
}
127
- static MP_DEFINE_CONST_FUN_OBJ_3 (usb_device_submit_xfer_obj , usb_device_submit_xfer ) ;
128
+ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (usb_device_submit_xfer_obj , 3 , 4 , usb_device_submit_xfer ) ;
128
129
129
130
static mp_obj_t usb_device_active (size_t n_args , const mp_obj_t * args ) {
130
131
mp_obj_usb_device_t * usbd = (mp_obj_usb_device_t * )MP_OBJ_TO_PTR (args [0 ]);
0 commit comments