@@ -42,14 +42,28 @@ void common_hal_adafruit_bus_device_spidevice_construct(adafruit_bus_device_spid
42
42
}
43
43
44
44
mp_obj_t common_hal_adafruit_bus_device_spidevice_enter (adafruit_bus_device_spidevice_obj_t * self ) {
45
- bool success = false;
46
- while (!success ) {
47
- success = common_hal_busio_spi_try_lock (self -> spi );
48
- RUN_BACKGROUND_TASKS ;
49
- mp_handle_pending ();
45
+ {
46
+ mp_obj_t dest [2 ];
47
+ mp_load_method (self -> spi , MP_QSTR_try_lock , dest );
48
+
49
+ while (!mp_obj_is_true (mp_call_method_n_kw (0 , 0 , dest ))) {
50
+ mp_handle_pending ();
51
+ }
50
52
}
51
53
52
- common_hal_busio_spi_configure (self -> spi , self -> baudrate , self -> polarity , self -> phase , 8 );
54
+ {
55
+ mp_obj_t dest [10 ];
56
+ mp_load_method (self -> spi , MP_QSTR_configure , dest );
57
+ dest [2 ] = MP_OBJ_NEW_QSTR (MP_QSTR_baudrate );
58
+ dest [3 ] = MP_OBJ_NEW_SMALL_INT (self -> baudrate );
59
+ dest [4 ] = MP_OBJ_NEW_QSTR (MP_QSTR_polarity );
60
+ dest [5 ] = MP_OBJ_NEW_SMALL_INT (self -> polarity );
61
+ dest [6 ] = MP_OBJ_NEW_QSTR (MP_QSTR_phase );
62
+ dest [7 ] = MP_OBJ_NEW_SMALL_INT (self -> phase );
63
+ dest [8 ] = MP_OBJ_NEW_QSTR (MP_QSTR_bits );
64
+ dest [9 ] = MP_OBJ_NEW_SMALL_INT (8 );
65
+ mp_call_method_n_kw (0 , 4 , dest );
66
+ }
53
67
54
68
if (self -> chip_select != MP_OBJ_NULL ) {
55
69
common_hal_digitalio_digitalinout_set_value (MP_OBJ_TO_PTR (self -> chip_select ), false);
@@ -67,21 +81,21 @@ void common_hal_adafruit_bus_device_spidevice_exit(adafruit_bus_device_spidevice
67
81
mp_buffer_info_t bufinfo ;
68
82
mp_obj_t buffer = mp_obj_new_bytearray_of_zeros (1 );
69
83
70
- mp_get_buffer_raise (buffer , & bufinfo , MP_BUFFER_READ );
84
+ mp_get_buffer_raise (buffer , & bufinfo , MP_BUFFER_WRITE );
71
85
((uint8_t * )bufinfo .buf )[0 ] = 0xFF ;
72
86
73
- uint8_t clocks = self -> extra_clocks / 8 ;
74
- if ((self -> extra_clocks % 8 ) != 0 ) {
75
- clocks += 1 ;
76
- }
87
+ uint8_t clocks = (self -> extra_clocks + 7 ) / 8 ;
77
88
89
+ mp_obj_t dest [3 ];
90
+ mp_load_method (self -> spi , MP_QSTR_write , dest );
91
+ dest [2 ] = buffer ;
78
92
while (clocks > 0 ) {
79
- if (!common_hal_busio_spi_write (self -> spi , ((uint8_t * )bufinfo .buf ), 1 )) {
80
- mp_raise_OSError (MP_EIO );
81
- }
93
+ mp_call_method_n_kw (1 , 0 , dest );
82
94
clocks -- ;
83
95
}
84
96
}
85
97
86
- common_hal_busio_spi_unlock (self -> spi );
98
+ mp_obj_t dest [2 ];
99
+ mp_load_method (self -> spi , MP_QSTR_unlock , dest );
100
+ mp_call_method_n_kw (0 , 0 , dest );
87
101
}
0 commit comments