Skip to content

Commit 27688d8

Browse files
committed
testing away
1 parent 01cfebe commit 27688d8

File tree

7 files changed

+210
-36
lines changed

7 files changed

+210
-36
lines changed

.vscode/settings.json

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,71 @@
1616
}
1717
},
1818
"cmake.sourceDirectory": "${env:USERPROFILE}/Documents/GitHub/Arduino/ArduinoCore-mockMCU/test",
19-
"cmake.buildDirectory": "${workspaceFolder}/build"
19+
"cmake.buildDirectory": "${workspaceFolder}/build",
20+
"files.associations": {
21+
"array": "cpp",
22+
"atomic": "cpp",
23+
"bit": "cpp",
24+
"*.tcc": "cpp",
25+
"bitset": "cpp",
26+
"cctype": "cpp",
27+
"chrono": "cpp",
28+
"clocale": "cpp",
29+
"cmath": "cpp",
30+
"compare": "cpp",
31+
"concepts": "cpp",
32+
"condition_variable": "cpp",
33+
"cstdarg": "cpp",
34+
"cstddef": "cpp",
35+
"cstdint": "cpp",
36+
"cstdio": "cpp",
37+
"cstdlib": "cpp",
38+
"cstring": "cpp",
39+
"ctime": "cpp",
40+
"cwchar": "cpp",
41+
"cwctype": "cpp",
42+
"deque": "cpp",
43+
"map": "cpp",
44+
"set": "cpp",
45+
"string": "cpp",
46+
"unordered_map": "cpp",
47+
"vector": "cpp",
48+
"exception": "cpp",
49+
"algorithm": "cpp",
50+
"functional": "cpp",
51+
"iterator": "cpp",
52+
"memory": "cpp",
53+
"memory_resource": "cpp",
54+
"numeric": "cpp",
55+
"optional": "cpp",
56+
"random": "cpp",
57+
"ratio": "cpp",
58+
"regex": "cpp",
59+
"string_view": "cpp",
60+
"system_error": "cpp",
61+
"tuple": "cpp",
62+
"type_traits": "cpp",
63+
"utility": "cpp",
64+
"fstream": "cpp",
65+
"future": "cpp",
66+
"initializer_list": "cpp",
67+
"iomanip": "cpp",
68+
"iosfwd": "cpp",
69+
"iostream": "cpp",
70+
"istream": "cpp",
71+
"limits": "cpp",
72+
"mutex": "cpp",
73+
"new": "cpp",
74+
"numbers": "cpp",
75+
"ostream": "cpp",
76+
"semaphore": "cpp",
77+
"sstream": "cpp",
78+
"stdexcept": "cpp",
79+
"stop_token": "cpp",
80+
"streambuf": "cpp",
81+
"thread": "cpp",
82+
"cinttypes": "cpp",
83+
"typeinfo": "cpp",
84+
"variant": "cpp"
85+
}
2086
}

cores/arduino/UART.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ class UartClass : public HardwareSerial
174174
inline size_t write(int n) { return write((uint8_t)n); };
175175
using Print::write; // pull in write(str) and write(buf, size) from Print
176176
explicit operator bool() { return true; }
177-
bool operator! () { return true; };
177+
bool operator! () { return false; };
178178

179179

180180
void bind(UartClass& ser) {bound = &ser; }

libraries/SPI/SPI.cpp

Lines changed: 50 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,12 @@
2727
#define SPI_IMODE_EXTINT 1
2828
#define SPI_IMODE_GLOBAL 2
2929

30-
#define PIN_SPI_MISO MISO
31-
#define PIN_SPI_MOSI MOSI
30+
//#define PIN_SPI_MISO MISO
31+
//#define PIN_SPI_MOSI MOSI
3232

3333

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)
3536
{
3637
initialized = false;
3738

@@ -43,7 +44,7 @@ SPIClass::SPIClass(uint8_t uc_pinMISO, uint8_t uc_pinSCK, uint8_t uc_pinMOSI, ui
4344
_uc_pinSS = uc_pinSS;
4445
}
4546

46-
void SPIClass::begin()
47+
void SPIClassMOCK::begin()
4748
{
4849
init();
4950

@@ -56,7 +57,7 @@ void SPIClass::begin()
5657
config(DEFAULT_SPI_SETTINGS);
5758
}
5859

59-
void SPIClass::init()
60+
void SPIClassMOCK::init()
6061
{
6162
if (initialized)
6263
return;
@@ -68,71 +69,73 @@ void SPIClass::init()
6869
Serial.println("SPI.ini is called");
6970
}
7071

71-
void SPIClass::config(SPISettingsMOCK settings)
72+
void SPIClassMOCK::config(SPISettingsMOCK settings)
7273
{
7374
//SPI0.CTRLA = settings.ctrla;
7475
//SPI0.CTRLB = settings.ctrlb;
7576
}
7677

77-
void SPIClass::end()
78+
void SPIClassMOCK::end()
7879
{
7980
//SPI0.CTRLA &= ~(SPI_ENABLE_bm);
8081
initialized = false;
8182
}
8283

83-
void SPIClass::usingInterrupt(int interruptNumber)
84+
void SPIClassMOCK::usingInterrupt(int interruptNumber)
8485
{
8586
;
8687
}
8788

88-
void SPIClass::notUsingInterrupt(int interruptNumber)
89+
void SPIClassMOCK::notUsingInterrupt(int interruptNumber)
8990
{
9091
;
9192
}
9293

93-
void SPIClass::detachMaskedInterrupts() {
94+
void SPIClassMOCK::detachMaskedInterrupts() {
9495
;
9596

9697
}
9798

98-
void SPIClass::reattachMaskedInterrupts() {
99+
void SPIClassMOCK::reattachMaskedInterrupts() {
99100
;
100101
}
101102

102-
void SPIClass::beginTransaction(SPISettingsMOCK settings)
103+
void SPIClassMOCK::beginTransaction(SPISettingsMOCK settings)
103104
{
104105
Serial.print("SPI.beginTransaction: ");
105106
;
106107
}
107108

108-
void SPIClass::endTransaction(void)
109+
void SPIClassMOCK::endTransaction(void)
109110
{
110111
Serial.println(" --endTransaction");
111112
}
112113

113-
void SPIClass::setBitOrder(BitOrder order)
114+
void SPIClassMOCK::setBitOrder(BitOrder order)
114115
{
115116
;
116117
}
117118

118-
void SPIClass::setDataMode(uint8_t mode)
119+
void SPIClassMOCK::setDataMode(uint8_t mode)
119120
{
120121
;
121122
}
122123

123-
void SPIClass::setClockDivider(uint8_t div)
124+
void SPIClassMOCK::setClockDivider(uint8_t div)
124125
{
125126
; // write value
126127
}
127128

128-
byte SPIClass::transfer(uint8_t data)
129+
byte SPIClassMOCK::transfer(uint8_t data)
129130
{
130131
Serial.print(" ");
131132
Serial.print(data,HEX);
133+
if(stream.size() < stream.max_size())
134+
stream.push_back(static_cast<char>(data));
132135
return data; // read data back
133136
}
134137

135-
uint16_t SPIClass::transfer16(uint16_t data) {
138+
uint16_t SPIClassMOCK::transfer16(uint16_t data) {
136139
union { uint16_t val; struct { uint8_t lsb; uint8_t msb; }; } t;
137140

138141
t.val = data;
@@ -141,13 +144,36 @@ uint16_t SPIClass::transfer16(uint16_t data) {
141144
return data;
142145
}
143146

144-
void SPIClass::transfer(void *buf, size_t count)
147+
void SPIClassMOCK::transfer(void *buf, size_t count)
145148
{
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]);
148155
}
149156
}
150157

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+

libraries/SPI/SPI.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
#include <api/HardwareSPI.h>
2525
#include <api/Print.h>
2626

27+
#include <deque>
28+
2729
#ifndef USE_MALLOC_FOR_IRQ_MAP
2830
#define USE_MALLOC_FOR_IRQ_MAP 0
2931
#endif
@@ -43,8 +45,8 @@
4345
#define MISO 2
4446
#define SCK 1
4547

46-
#define PIN_SPI_SCK 100
47-
#define PIN_SPI_SS SS
48+
//#define PIN_SPI_SCK 100
49+
//#define PIN_SPI_SS SS
4850

4951
#define MUX_SPI 0
5052

@@ -177,13 +179,18 @@ class SPIClassMOCK : public arduino::HardwareSPI {
177179
void setBitOrder(BitOrder order);
178180
void setDataMode(uint8_t uc_mode);
179181
void setClockDivider(uint8_t uc_div);
180-
182+
183+
int readStream();
184+
int sizeStream();
185+
std::deque<char> stream;
181186
private:
182187

183188
void init();
184189
void config(SPISettingsMOCK settings);
185190
void config(SPISettings settings) {
186191
config(SPISettingsMOCK(settings));
192+
193+
187194
}
188195

189196
// These undocumented functions should not be used. SPI.transfer()
@@ -211,7 +218,7 @@ class SPIClassMOCK : public arduino::HardwareSPI {
211218
};
212219

213220
#define SPIClass SPIClassMOCK
214-
221+
#define SPISettings SPISettingsMOCK
215222
#if SPI_HOWMANY > 0
216223
extern SPIClass SPI;
217224
#endif

test/CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@ if(EXISTS ${arduinoCore_API})
4444
endif()
4545
message("Arduino_API at: " ${arduinoCore_API} " exists?" ${arduinoCore_API_exists})
4646

47+
cmake_path(APPEND local_LIBS "${PRJ_ROOT}" "libraries")
4748

48-
49-
49+
include_directories(${local_LIBS}/Wire) #Path tho arduino-core
50+
include_directories(${local_LIBS}/SPI) #Path tho arduino-core
5051
include_directories(../variants/mock_v1) #Path tho arduino-core
5152

5253
include_directories(external/catch/v2.13.9/include)
@@ -83,6 +84,7 @@ set(TEST_SRCS
8384

8485
src/Serial/test_Serial.cpp
8586
src/SPI/test_SPI.cpp
87+
8688

8789
)
8890

@@ -95,11 +97,16 @@ set(TEST_DUT_SRCS
9597
${arduinoCore_API}/Print.cpp
9698
${arduinoCore_API}/Common.cpp
9799

100+
98101
${arduinoCore}/UART.cpp
99102
${arduinoCore}/UART0.cpp
100103
${arduinoCore}/UART1.cpp
101104
${arduinoCore}/UART2.cpp
102105
${arduinoCore}/UART3.cpp
106+
107+
${local_LIBS}/SPI/SPI.cpp
108+
${local_LIBS}/Wire/Wire.cpp
109+
103110
../variants/mock_v1/variant.cpp
104111
)
105112
#message(${TEST_DUT_SRCS})

0 commit comments

Comments
 (0)