@@ -57,9 +57,9 @@ SPIClass::SPIClass(uint32_t mosi, uint32_t miso, uint32_t sclk, uint32_t ssel)
57
57
void SPIClass::begin (void )
58
58
{
59
59
_spi.handle .State = HAL_SPI_STATE_RESET;
60
- spi_init (&_spi, _spiSettings.clk ,
61
- _spiSettings.dMode ,
62
- _spiSettings.bOrder );
60
+ spi_init (&_spi, _spiSettings.getClockFreq () ,
61
+ _spiSettings.getDataMode () ,
62
+ _spiSettings.getBitOrder () );
63
63
}
64
64
65
65
/* *
@@ -69,14 +69,12 @@ void SPIClass::begin(void)
69
69
*/
70
70
void SPIClass::beginTransaction (SPISettings settings)
71
71
{
72
- _spiSettings.clk = settings.clk ;
73
- _spiSettings.dMode = settings.dMode ;
74
- _spiSettings.bOrder = settings.bOrder ;
75
- _spiSettings.noReceive = settings.noReceive ;
76
-
77
- spi_init (&_spi, _spiSettings.clk ,
78
- _spiSettings.dMode ,
79
- _spiSettings.bOrder );
72
+ if (_spiSettings != settings) {
73
+ _spiSettings = settings;
74
+ spi_init (&_spi, _spiSettings.getClockFreq (),
75
+ _spiSettings.getDataMode (),
76
+ _spiSettings.getBitOrder ());
77
+ }
80
78
}
81
79
82
80
/* *
@@ -102,39 +100,37 @@ void SPIClass::end()
102
100
*/
103
101
void SPIClass::setBitOrder (BitOrder bitOrder)
104
102
{
105
- _spiSettings.bOrder = bitOrder;
103
+ _spiSettings.setBitOrder ( bitOrder) ;
106
104
107
- spi_init (&_spi, _spiSettings.clk ,
108
- _spiSettings.dMode ,
109
- _spiSettings.bOrder );
105
+ spi_init (&_spi, _spiSettings.getClockFreq () ,
106
+ _spiSettings.getDataMode () ,
107
+ _spiSettings.getBitOrder () );
110
108
}
111
109
112
110
/* *
113
111
* @brief Deprecated function.
114
112
* Configure the data mode (clock polarity and clock phase)
115
- * @param _mode : SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3
113
+ * @param mode : SPI_MODE0, SPI_MODE1, SPI_MODE2 or SPI_MODE3
116
114
* @note
117
115
* Mode Clock Polarity (CPOL) Clock Phase (CPHA)
118
116
* SPI_MODE0 0 0
119
117
* SPI_MODE1 0 1
120
118
* SPI_MODE2 1 0
121
119
* SPI_MODE3 1 1
122
120
*/
123
- void SPIClass::setDataMode (uint8_t _mode)
121
+
122
+ void SPIClass::setDataMode (uint8_t mode)
124
123
{
125
- if (SPI_MODE0 == _mode) {
126
- _spiSettings.dMode = SPI_MODE_0;
127
- } else if (SPI_MODE1 == _mode) {
128
- _spiSettings.dMode = SPI_MODE_1;
129
- } else if (SPI_MODE2 == _mode) {
130
- _spiSettings.dMode = SPI_MODE_2;
131
- } else if (SPI_MODE3 == _mode) {
132
- _spiSettings.dMode = SPI_MODE_3;
133
- }
124
+ setDataMode ((SPIMode)mode);
125
+ }
134
126
135
- spi_init (&_spi, _spiSettings.clk ,
136
- _spiSettings.dMode ,
137
- _spiSettings.bOrder );
127
+ void SPIClass::setDataMode (SPIMode mode)
128
+ {
129
+ _spiSettings.setDataMode (mode);
130
+
131
+ spi_init (&_spi, _spiSettings.getClockFreq (),
132
+ _spiSettings.getDataMode (),
133
+ _spiSettings.getBitOrder ());
138
134
}
139
135
140
136
/* *
@@ -146,15 +142,15 @@ void SPIClass::setDataMode(uint8_t _mode)
146
142
void SPIClass::setClockDivider (uint8_t _divider)
147
143
{
148
144
if (_divider == 0 ) {
149
- _spiSettings.clk = SPI_SPEED_CLOCK_DEFAULT;
145
+ _spiSettings.setClockFreq ( SPI_SPEED_CLOCK_DEFAULT) ;
150
146
} else {
151
- /* Get clk freq of the SPI instance and compute it */
152
- _spiSettings.clk = spi_getClkFreq (&_spi) / _divider;
147
+ /* Get clock freq of the SPI instance and compute it */
148
+ _spiSettings.setClockFreq ( spi_getClkFreq (&_spi) / _divider) ;
153
149
}
154
150
155
- spi_init (&_spi, _spiSettings.clk ,
156
- _spiSettings.dMode ,
157
- _spiSettings.bOrder );
151
+ spi_init (&_spi, _spiSettings.getClockFreq () ,
152
+ _spiSettings.getDataMode () ,
153
+ _spiSettings.getBitOrder () );
158
154
}
159
155
160
156
/* *
@@ -163,9 +159,9 @@ void SPIClass::setClockDivider(uint8_t _divider)
163
159
* @param data: byte to send.
164
160
* @return byte received from the slave.
165
161
*/
166
- byte SPIClass::transfer (uint8_t data)
162
+ uint8_t SPIClass::transfer (uint8_t data)
167
163
{
168
- spi_transfer (&_spi, &data, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
164
+ spi_transfer (&_spi, &data, sizeof (uint8_t ), SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
169
165
return data;
170
166
}
171
167
@@ -179,14 +175,14 @@ uint16_t SPIClass::transfer16(uint16_t data)
179
175
{
180
176
uint16_t tmp;
181
177
182
- if (_spiSettings.bOrder ) {
178
+ if (_spiSettings.getBitOrder () ) {
183
179
tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
184
180
data = tmp;
185
181
}
186
182
spi_transfer (&_spi, (uint8_t *)&data, sizeof (uint16_t ),
187
- SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
183
+ SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
188
184
189
- if (_spiSettings.bOrder ) {
185
+ if (_spiSettings.getBitOrder () ) {
190
186
tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
191
187
data = tmp;
192
188
}
@@ -197,22 +193,30 @@ uint16_t SPIClass::transfer16(uint16_t data)
197
193
/* *
198
194
* @brief Transfer several bytes. Only one buffer used to send and receive data.
199
195
* begin() or beginTransaction() must be called at least once before.
200
- * @param _buf : pointer to the bytes to send. The bytes received are copy in
196
+ * @param buf : pointer to the bytes to send. The bytes received are copy in
201
197
* this buffer.
202
- * @param _count : number of bytes to send/receive.
198
+ * @param count : number of bytes to send/receive.
203
199
*/
204
- void SPIClass::transfer (void *_buf , size_t _count )
200
+ void SPIClass::transfer (void *buf , size_t count )
205
201
{
206
202
if ((count != 0 ) && (buf != NULL )) {
207
203
spi_transfer (&_spi, ((uint8_t *)buf), count,
208
- SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
204
+ SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
209
205
}
210
206
}
211
207
212
208
/* *
213
209
* @brief Not implemented.
214
210
*/
215
- void SPIClass::usingInterrupt (uint8_t interruptNumber)
211
+ void SPIClass::usingInterrupt (int interruptNumber)
212
+ {
213
+ UNUSED (interruptNumber);
214
+ }
215
+
216
+ /* *
217
+ * @brief Not implemented.
218
+ */
219
+ void SPIClass::notUsingInterrupt (int interruptNumber)
216
220
{
217
221
UNUSED (interruptNumber);
218
222
}
0 commit comments