27
27
#define SPI_IMODE_EXTINT 1
28
28
#define SPI_IMODE_GLOBAL 2
29
29
30
- #define PIN_SPI_MISO MISO
31
- #define PIN_SPI_MOSI MOSI
30
+ // #define PIN_SPI_MISO MISO
31
+ // #define PIN_SPI_MOSI MOSI
32
32
33
33
34
- SPIClass::SPIClass (uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI, uint8_t uc_pinSS, uint8_t uc_mux)
34
+
35
+ SPIClassMOCK::SPIClassMOCK (uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI, uint8_t uc_pinSS, uint8_t uc_mux)
35
36
{
36
37
initialized = false ;
37
38
@@ -43,7 +44,7 @@ SPIClass::SPIClass(uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI, ui
43
44
_uc_pinSS = uc_pinSS;
44
45
}
45
46
46
- void SPIClass ::begin ()
47
+ void SPIClassMOCK ::begin ()
47
48
{
48
49
init ();
49
50
@@ -56,7 +57,7 @@ void SPIClass::begin()
56
57
config (DEFAULT_SPI_SETTINGS);
57
58
}
58
59
59
- void SPIClass ::init ()
60
+ void SPIClassMOCK ::init ()
60
61
{
61
62
if (initialized)
62
63
return ;
@@ -68,71 +69,73 @@ void SPIClass::init()
68
69
Serial.println (" SPI.ini is called" );
69
70
}
70
71
71
- void SPIClass ::config (SPISettingsMOCK settings)
72
+ void SPIClassMOCK ::config (SPISettingsMOCK settings)
72
73
{
73
74
// SPI0.CTRLA = settings.ctrla;
74
75
// SPI0.CTRLB = settings.ctrlb;
75
76
}
76
77
77
- void SPIClass ::end ()
78
+ void SPIClassMOCK ::end ()
78
79
{
79
80
// SPI0.CTRLA &= ~(SPI_ENABLE_bm);
80
81
initialized = false ;
81
82
}
82
83
83
- void SPIClass ::usingInterrupt (int interruptNumber)
84
+ void SPIClassMOCK ::usingInterrupt (int interruptNumber)
84
85
{
85
86
;
86
87
}
87
88
88
- void SPIClass ::notUsingInterrupt (int interruptNumber)
89
+ void SPIClassMOCK ::notUsingInterrupt (int interruptNumber)
89
90
{
90
91
;
91
92
}
92
93
93
- void SPIClass ::detachMaskedInterrupts () {
94
+ void SPIClassMOCK ::detachMaskedInterrupts () {
94
95
;
95
96
96
97
}
97
98
98
- void SPIClass ::reattachMaskedInterrupts () {
99
+ void SPIClassMOCK ::reattachMaskedInterrupts () {
99
100
;
100
101
}
101
102
102
- void SPIClass ::beginTransaction (SPISettingsMOCK settings)
103
+ void SPIClassMOCK ::beginTransaction (SPISettingsMOCK settings)
103
104
{
104
105
Serial.print (" SPI.beginTransaction: " );
105
106
;
106
107
}
107
108
108
- void SPIClass ::endTransaction (void )
109
+ void SPIClassMOCK ::endTransaction (void )
109
110
{
110
111
Serial.println (" --endTransaction" );
111
112
}
112
113
113
- void SPIClass ::setBitOrder (BitOrder order)
114
+ void SPIClassMOCK ::setBitOrder (BitOrder order)
114
115
{
115
116
;
116
117
}
117
118
118
- void SPIClass ::setDataMode (uint8_t mode)
119
+ void SPIClassMOCK ::setDataMode (uint8_t mode)
119
120
{
120
121
;
121
122
}
122
123
123
- void SPIClass ::setClockDivider (uint8_t div)
124
+ void SPIClassMOCK ::setClockDivider (uint8_t div)
124
125
{
125
126
; // write value
126
127
}
127
128
128
- byte SPIClass ::transfer (uint8_t data)
129
+ byte SPIClassMOCK ::transfer (uint8_t data)
129
130
{
130
131
Serial.print (" " );
131
132
Serial.print (data,HEX);
133
+ if (stream.size () < stream.max_size ())
134
+ stream.push_back (static_cast <char >(data));
132
135
return data; // read data back
133
136
}
134
137
135
- uint16_t SPIClass ::transfer16 (uint16_t data) {
138
+ uint16_t SPIClassMOCK ::transfer16 (uint16_t data) {
136
139
union { uint16_t val; struct { uint8_t lsb; uint8_t msb; }; } t;
137
140
138
141
t.val = data;
@@ -141,13 +144,36 @@ uint16_t SPIClass::transfer16(uint16_t data) {
141
144
return data;
142
145
}
143
146
144
- void SPIClass ::transfer (void *buf, size_t count)
147
+ void SPIClassMOCK ::transfer (void *buf, size_t count)
145
148
{
146
- for (size_t i=0 ;i<count,i++ ){
147
- transfer ( buf[i]);
149
+ if (NULL == buf) {
150
+ return ;
151
+ }
152
+ uint8_t *buffer8 = (uint8_t *) buf;
153
+ for (size_t i=0 ;i<count;i++ ){
154
+ transfer ( buffer8[i]);
148
155
}
149
156
}
150
157
151
- if SPI_HOWMANY > 0
152
- SPIClass SPI (PIN_SPI_MISO, PIN_SPI_SCK, PIN_SPI_MOSI, PIN_SPI_SS, MUX_SPI);
153
- #endif
158
+ int SPIClassMOCK::sizeStream ()
159
+ {
160
+ return stream.size ();
161
+ }
162
+
163
+ int SPIClassMOCK::readStream ()
164
+ {
165
+ if (stream.size () == 0 )
166
+ return -1 ;
167
+
168
+ /* Extract first/oldest element. */
169
+ char const c = stream.at (0 );
170
+ /* Erase first/oldest element. */
171
+ stream.pop_front ();
172
+
173
+ return c;
174
+ }
175
+
176
+ #if SPI_HOWMANY > 0
177
+ SPIClass SPI (PIN_SPI_MISO, PIN_SPI_SCK, PIN_SPI_MOSI, PIN_SPI_CS, MUX_SPI);
178
+ #endif
179
+
0 commit comments