@@ -57,9 +57,9 @@ SPIClass::SPIClass(uint32_t mosi, uint32_t miso, uint32_t sclk, uint32_t ssel)
5757void SPIClass::begin (void )
5858{
5959 _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 () );
6363}
6464
6565/* *
@@ -69,14 +69,12 @@ void SPIClass::begin(void)
6969 */
7070void SPIClass::beginTransaction (SPISettings settings)
7171{
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+ }
8078}
8179
8280/* *
@@ -102,39 +100,37 @@ void SPIClass::end()
102100 */
103101void SPIClass::setBitOrder (BitOrder bitOrder)
104102{
105- _spiSettings.bOrder = bitOrder;
103+ _spiSettings.setBitOrder ( bitOrder) ;
106104
107- spi_init (&_spi, _spiSettings.clk ,
108- _spiSettings.dMode ,
109- _spiSettings.bOrder );
105+ spi_init (&_spi, _spiSettings.getClockFreq () ,
106+ _spiSettings.getDataMode () ,
107+ _spiSettings.getBitOrder () );
110108}
111109
112110/* *
113111 * @brief Deprecated function.
114112 * 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
116114 * @note
117115 * Mode Clock Polarity (CPOL) Clock Phase (CPHA)
118116 * SPI_MODE0 0 0
119117 * SPI_MODE1 0 1
120118 * SPI_MODE2 1 0
121119 * SPI_MODE3 1 1
122120 */
123- void SPIClass::setDataMode (uint8_t _mode)
121+
122+ void SPIClass::setDataMode (uint8_t mode)
124123{
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+ }
134126
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 ());
138134}
139135
140136/* *
@@ -146,15 +142,15 @@ void SPIClass::setDataMode(uint8_t _mode)
146142void SPIClass::setClockDivider (uint8_t _divider)
147143{
148144 if (_divider == 0 ) {
149- _spiSettings.clk = SPI_SPEED_CLOCK_DEFAULT;
145+ _spiSettings.setClockFreq ( SPI_SPEED_CLOCK_DEFAULT) ;
150146 } 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) ;
153149 }
154150
155- spi_init (&_spi, _spiSettings.clk ,
156- _spiSettings.dMode ,
157- _spiSettings.bOrder );
151+ spi_init (&_spi, _spiSettings.getClockFreq () ,
152+ _spiSettings.getDataMode () ,
153+ _spiSettings.getBitOrder () );
158154}
159155
160156/* *
@@ -163,9 +159,9 @@ void SPIClass::setClockDivider(uint8_t _divider)
163159 * @param data: byte to send.
164160 * @return byte received from the slave.
165161 */
166- byte SPIClass::transfer (uint8_t data)
162+ uint8_t SPIClass::transfer (uint8_t data)
167163{
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 () );
169165 return data;
170166}
171167
@@ -179,14 +175,14 @@ uint16_t SPIClass::transfer16(uint16_t data)
179175{
180176 uint16_t tmp;
181177
182- if (_spiSettings.bOrder ) {
178+ if (_spiSettings.getBitOrder () ) {
183179 tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
184180 data = tmp;
185181 }
186182 spi_transfer (&_spi, (uint8_t *)&data, sizeof (uint16_t ),
187- SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
183+ SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
188184
189- if (_spiSettings.bOrder ) {
185+ if (_spiSettings.getBitOrder () ) {
190186 tmp = ((data & 0xff00 ) >> 8 ) | ((data & 0xff ) << 8 );
191187 data = tmp;
192188 }
@@ -197,22 +193,30 @@ uint16_t SPIClass::transfer16(uint16_t data)
197193/* *
198194 * @brief Transfer several bytes. Only one buffer used to send and receive data.
199195 * 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
201197 * this buffer.
202- * @param _count : number of bytes to send/receive.
198+ * @param count : number of bytes to send/receive.
203199 */
204- void SPIClass::transfer (void *_buf , size_t _count )
200+ void SPIClass::transfer (void *buf , size_t count )
205201{
206202 if ((count != 0 ) && (buf != NULL )) {
207203 spi_transfer (&_spi, ((uint8_t *)buf), count,
208- SPI_TRANSFER_TIMEOUT, _spiSettings.noReceive );
204+ SPI_TRANSFER_TIMEOUT, _spiSettings.getSkipRecv () );
209205 }
210206}
211207
212208/* *
213209 * @brief Not implemented.
214210 */
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)
216220{
217221 UNUSED (interruptNumber);
218222}
0 commit comments