Skip to content

Commit fd1bdaa

Browse files
committed
Fixes test
1 parent 0cfea77 commit fd1bdaa

4 files changed

Lines changed: 112 additions & 21 deletions

File tree

platformio.ini

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ board = m5stack-stamps3
5353
lib_deps = ${env.lib_deps}
5454
m5stack/M5Dial
5555

56-
;include AtomLite
5756
[AtomMatrix]
57+
;include AtomLite
5858
extends = m5base
5959
board = m5stack-atom
6060
lib_deps = ${env.lib_deps}
@@ -65,8 +65,8 @@ board = m5stack-atoms3
6565
lib_deps = ${env.lib_deps}
6666

6767
; Using ./boards/m5stack-atoms3r.json
68-
;include もじと AtomEchoS3R
6968
[AtomS3R]
69+
;include AtomEchoS3R
7070
extends = m5base
7171
board = m5stack-atoms3r
7272
lib_deps = ${env.lib_deps}
@@ -117,13 +117,13 @@ build_flags =
117117
-DBOARD_HAS_PSRAM
118118
-DARDUINO_USB_CDC_ON_BOOT=1
119119
-DARDUINO_USB_MODE=1
120+
lib_deps = ${env.lib_deps}
120121

121122
[NessoN1]
122123
extends = m5base
123124
board = arduino_nesso_n1
124125
lib_deps = ${env.lib_deps}
125126

126-
127127
[sdl]
128128
build_flags = -O3 -xc++ -std=c++14 -lSDL2
129129
-arch arm64 ; for arm mac
@@ -299,6 +299,24 @@ lib_deps = ${CoreInk.lib_deps}
299299
${test_fw.lib_deps}
300300
test_filter= embedded/test_max30100
301301

302+
[env:test_UnitHeart_Cardputer]
303+
extends=Cardputer, option_release, arduino_latest
304+
lib_deps = ${Cardputer.lib_deps}
305+
${test_fw.lib_deps}
306+
test_filter= embedded/test_max30100
307+
308+
[env:test_UnitHeart_Tab5]
309+
extends=Tab5, option_release, pioarduino_latest
310+
lib_deps = ${Tab5.lib_deps}
311+
${test_fw.lib_deps}
312+
test_filter= embedded/test_max30100
313+
314+
[env:test_UnitHeart_NessoN1]
315+
extends=NessoN1, option_release, pioarduino_latest
316+
lib_deps = ${NessoN1.lib_deps}
317+
${test_fw.lib_deps}
318+
test_filter= embedded/test_max30100
319+
302320
; HatHeart
303321
[env:test_HatHeart_StickCPlus]
304322
extends=StickCPlus, option_release, arduino_latest
@@ -312,6 +330,20 @@ lib_deps = ${StickCPlus2.lib_deps}
312330
${test_fw.lib_deps}
313331
test_filter= embedded/test_max30102
314332

333+
[env:test_HatHeart_CoreInk]
334+
extends=CoreInk, option_release, arduino_latest
335+
lib_deps = ${CoreInk.lib_deps}
336+
${test_fw.lib_deps}
337+
test_filter= embedded/test_max30102
338+
339+
[env:test_HatHeart_NessoN1]
340+
extends=NessoN1, option_release, pioarduino_latest
341+
lib_deps = ${NessoN1.lib_deps}
342+
${test_fw.lib_deps}
343+
test_filter= embedded/test_max30102
344+
345+
346+
315347
;--------------------------------
316348
;Examples by M5UnitUnified
317349
;--------------------------------

test/embedded/embedded_main.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ void test()
3030

3131
void setup()
3232
{
33-
M5.begin();
33+
auto m5cfg = M5.config();
34+
m5cfg.pmic_button = false; // Disable BtnPWR
35+
m5cfg.internal_imu = false; // Disable internal IMU
36+
m5cfg.internal_rtc = false; // Disable internal RTC
37+
M5.begin(m5cfg);
3438

3539
M5_LOGI("CPP %ld", __cplusplus);
3640
M5_LOGI("ESP-IDF Version %d.%d.%d", (ESP_IDF_VERSION >> 16) & 0xFF, (ESP_IDF_VERSION >> 8) & 0xFF,

test/embedded/test_max30100/max30100_test.cpp

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,30 @@ const ::testing::Environment* global_fixture = ::testing::AddGlobalTestEnvironme
2828

2929
class TestMAX30100 : public ComponentTestBase<UnitMAX30100, bool> {
3030
protected:
31+
virtual bool begin() override
32+
{
33+
// NessoN1 GROVE must use HAL
34+
auto board = M5.getBoard();
35+
if (board == m5::board_t::board_ArduinoNessoN1 || is_using_hal()) {
36+
// Using M5HAL
37+
auto pin_num_sda = M5.getPin(m5::pin_name_t::port_a_sda);
38+
auto pin_num_scl = M5.getPin(m5::pin_name_t::port_a_scl);
39+
if (board == m5::board_t::board_ArduinoNessoN1) {
40+
pin_num_sda = M5.getPin(m5::pin_name_t::port_b_out);
41+
pin_num_scl = M5.getPin(m5::pin_name_t::port_b_in);
42+
}
43+
// M5_LOGI("pin:%d,%d", pin_num_sda, pin_num_scl);
44+
45+
m5::hal::bus::I2CBusConfig i2c_cfg;
46+
i2c_cfg.pin_sda = m5::hal::gpio::getPin(pin_num_sda);
47+
i2c_cfg.pin_scl = m5::hal::gpio::getPin(pin_num_scl);
48+
auto i2c_bus = m5::hal::bus::i2c::getBus(i2c_cfg);
49+
return Units.add(*unit, i2c_bus ? i2c_bus.value() : nullptr) && Units.begin();
50+
}
51+
52+
// Using TwoWire
53+
return Units.add(*unit, Wire) && Units.begin();
54+
}
3155
virtual UnitMAX30100* get_instance() override
3256
{
3357
auto ptr = new m5::unit::UnitMAX30100();
@@ -286,7 +310,6 @@ void test_periodic_spo2(UnitMAX30100* unit)
286310
EXPECT_TRUE(unit->stopPeriodicMeasurement());
287311
EXPECT_FALSE(unit->inPeriodic());
288312

289-
EXPECT_NE(elapsed, 0);
290313
EXPECT_GE(elapsed, STORED_SIZE * unit->interval());
291314
// M5_LOGI(">>> %s>elapsed: %ld/%u retrieved:%u overflow:%u", s.c_str(), elapsed, STORED_SIZE *
292315
// unit->interval(),
@@ -377,11 +400,9 @@ void test_periodic_hr(UnitMAX30100* unit)
377400
EXPECT_TRUE(unit->stopPeriodicMeasurement());
378401
EXPECT_FALSE(unit->inPeriodic());
379402

380-
EXPECT_NE(elapsed, 0);
381403
EXPECT_GE(elapsed, STORED_SIZE * unit->interval());
382-
// M5_LOGI(">>> %s>elapsed: %ld/%u retrieved:%u overflow:%u", s.c_str(), elapsed, STORED_SIZE *
383-
// unit->interval(),
384-
// unit->retrieved(), unit->overflow());
404+
M5_LOGI(">>> %s>elapsed: %ld/%u retrieved:%u overflow:%u", s.c_str(), elapsed, STORED_SIZE * unit->interval(),
405+
unit->retrieved(), unit->overflow());
385406

386407
EXPECT_GE(unit->available(), STORED_SIZE); // Check GE not EQ! (because FIFO)
387408
EXPECT_FALSE(unit->empty());

test/embedded/test_max30102/max30102_test.cpp

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,35 +22,72 @@ using namespace m5::unit::max30102;
2222
using namespace m5::unit::max30102::command;
2323
using m5::unit::types::elapsed_time_t;
2424

25-
#if !defined(M5STACK_M5STICK_CPLUS2) && !defined(ARDUINO_M5Stick_C)
26-
#error This test for M5StckCPlus or M5StckCPlus2
27-
#else
2825
namespace hat {
26+
struct I2cPins {
27+
int sda;
28+
int scl;
29+
};
30+
31+
I2cPins get_hat_i2c_pins(const m5::board_t board)
32+
{
33+
switch (board) {
34+
case m5::board_t::board_M5StickC:
35+
case m5::board_t::board_M5StickCPlus:
36+
case m5::board_t::board_M5StickCPlus2:
37+
return {0, 26};
38+
case m5::board_t::board_M5StickS3:
39+
return {8, 0};
40+
case m5::board_t::board_M5StackCoreInk:
41+
return {25, 26};
42+
case m5::board_t::board_ArduinoNessoN1:
43+
return {6, 7};
44+
default:
45+
return {-1, -1};
46+
}
47+
}
48+
2949
template <uint32_t FREQ, uint32_t WNUM = 0>
3050
class GlobalFixture : public ::testing::Environment {
3151
static_assert(WNUM < 2, "Wire number must be lesser than 2");
3252

3353
public:
3454
void SetUp() override
3555
{
36-
// Setup required to use HatHEART
37-
pinMode(25, INPUT_PULLUP);
38-
pinMode(26, OUTPUT);
56+
const auto pins = get_hat_i2c_pins(M5.getBoard());
57+
// M5_LOGI("pin:%d %d", pins.sda, pins.scl);
58+
59+
pinMode(pins.scl, OUTPUT);
3960

4061
TwoWire* w[2] = {&Wire, &Wire1};
4162
if (WNUM < m5::stl::size(w) && i2cIsInit(WNUM)) {
4263
M5_LOGW("Already inititlized Wire %d. Terminate and restart FREQ %u", WNUM, FREQ);
4364
w[WNUM]->end();
4465
}
45-
w[WNUM]->begin(0, 26, FREQ);
66+
w[WNUM]->begin(pins.sda, pins.scl, FREQ);
4667
}
4768
};
69+
4870
} // namespace hat
49-
const ::testing::Environment* global_fixture = ::testing::AddGlobalTestEnvironment(new hat::GlobalFixture<400000U>());
50-
#endif
71+
const ::testing::Environment* global_fixture =
72+
::testing::AddGlobalTestEnvironment(new hat::GlobalFixture<400000U, 1 /* Wire1 */>());
5173

5274
class TestMAX30102 : public ComponentTestBase<UnitMAX30102, bool> {
5375
protected:
76+
virtual bool begin() override
77+
{
78+
if (is_using_hal()) {
79+
const auto pins = hat::get_hat_i2c_pins(M5.getBoard());
80+
m5::hal::bus::I2CBusConfig i2c_cfg;
81+
i2c_cfg.pin_sda = m5::hal::gpio::getPin(pins.sda);
82+
i2c_cfg.pin_scl = m5::hal::gpio::getPin(pins.scl);
83+
auto i2c_bus = m5::hal::bus::i2c::getBus(i2c_cfg);
84+
return Units.add(*unit, i2c_bus ? i2c_bus.value() : nullptr) && Units.begin();
85+
}
86+
87+
// Using TwoWire
88+
return Units.add(*unit, Wire1) && Units.begin();
89+
}
90+
5491
virtual UnitMAX30102* get_instance() override
5592
{
5693
auto ptr = new m5::unit::UnitMAX30102();
@@ -362,7 +399,6 @@ void test_periodic_spo2(UnitMAX30102* unit)
362399
EXPECT_TRUE(unit->stopPeriodicMeasurement());
363400
EXPECT_FALSE(unit->inPeriodic());
364401

365-
EXPECT_NE(elapsed, 0);
366402
EXPECT_GE(elapsed, STORED_SIZE * unit->interval());
367403
// M5_LOGI(">>> %s>elapsed: %ld/%u retrieved:%u overflow:%u", s.c_str(), elapsed, STORED_SIZE *
368404
// unit->interval(),
@@ -481,7 +517,6 @@ void test_periodic_hr(UnitMAX30102* unit)
481517
EXPECT_TRUE(unit->stopPeriodicMeasurement());
482518
EXPECT_FALSE(unit->inPeriodic());
483519

484-
EXPECT_NE(elapsed, 0);
485520
EXPECT_GE(elapsed, STORED_SIZE * unit->interval());
486521
// M5_LOGI(">>> %s>elapsed: %ld/%u retrieved:%u overflow:%u", s.c_str(), elapsed, STORED_SIZE *
487522
// unit->interval(),
@@ -554,7 +589,6 @@ void test_periodic_multi(UnitMAX30102* unit)
554589
EXPECT_TRUE(unit->stopPeriodicMeasurement());
555590
EXPECT_FALSE(unit->inPeriodic());
556591

557-
EXPECT_NE(elapsed, 0);
558592
EXPECT_GE(elapsed, STORED_SIZE * unit->interval());
559593
// M5_LOGI(">>> %s>elapsed: %ld/%u retrieved:%u overflow:%u", s.c_str(), elapsed, STORED_SIZE *
560594
// unit->interval(),

0 commit comments

Comments
 (0)