1
+ #include " SPI.h"
2
+
3
+ arduino::MbedSPI::MbedSPI (int miso, int mosi, int sck) : _miso(miso), _mosi(mosi), _sck(sck) {
4
+ }
5
+
6
+ uint8_t arduino::MbedSPI::transfer (uint8_t data) {
7
+ uint8_t ret;
8
+ dev->write ((const char *)&data, 1 , (char *)&ret, 1 );
9
+ return ret;
10
+ }
11
+
12
+ uint16_t arduino::MbedSPI::transfer16 (uint16_t data) {
13
+ uint8_t ret[2 ];
14
+ dev->write ((const char *)&data, 2 , (char *)ret, 2 );
15
+ return ret[0 ] << 8 | ret[1 ];
16
+ }
17
+
18
+ void arduino::MbedSPI::transfer (void *buf, size_t count) {
19
+ dev->write ((const char *)buf, count, (char *)buf, count);
20
+ }
21
+
22
+ void arduino::MbedSPI::usingInterrupt (int interruptNumber) {
23
+
24
+ }
25
+
26
+ void arduino::MbedSPI::notUsingInterrupt (int interruptNumber) {
27
+
28
+ }
29
+
30
+ void arduino::MbedSPI::beginTransaction (SPISettings settings) {
31
+ if (settings != this ->settings ) {
32
+ dev->format (8 , settings.getDataMode ());
33
+ dev->frequency (settings.getClockFreq ());
34
+ this ->settings = settings;
35
+ }
36
+ }
37
+
38
+ void arduino::MbedSPI::endTransaction (void ) {
39
+ // spinlock until transmission is over (if using ASYNC transfer)
40
+ }
41
+
42
+ void arduino::MbedSPI::attachInterrupt () {
43
+
44
+ }
45
+
46
+ void arduino::MbedSPI::detachInterrupt () {
47
+
48
+ }
49
+
50
+ void arduino::MbedSPI::begin () {
51
+ dev = new mbed::SPI ((PinName)_miso, (PinName)_mosi, (PinName)_sck);
52
+ }
53
+
54
+ void arduino::MbedSPI::end () {
55
+ if (dev != NULL ) {
56
+ delete dev;
57
+ }
58
+ }
59
+
60
+ #if DEVICE_SPI > 0
61
+ arduino::MbedSPI SPI (SPI_MISO, SPI_MOSI, SPI_SCK);
62
+ #elif DEVICE_SPI > 1
63
+ arduino::MbedSPI SPI1 (SPI_MISO1, SPI_MOSI1, SPI_SCK1);
64
+ #endif
0 commit comments