Skip to content

Commit

Permalink
wiring/api: updates System.sleep() tests
Browse files Browse the repository at this point in the history
  • Loading branch information
avtolstoy authored and m-mcgowan committed Jan 22, 2018
1 parent 2c0f89e commit f24fbdf
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
12 changes: 11 additions & 1 deletion user/tests/wiring/api/system.cpp
Expand Up @@ -86,7 +86,7 @@ test(system_sleep)

const pin_t pins_array[] = {D0, D1};
const InterruptMode mode_array[] = {RISING, FALLING};

/*
* wakeup pins: pin_t* + size_t
* trigger mode: single InterruptMode
Expand All @@ -107,6 +107,16 @@ test(system_sleep)
API_COMPILE(System.sleep(pins_array, sizeof(pins_array)/sizeof(*pins_array), mode_array, sizeof(mode_array)/sizeof(*mode_array), 20, SLEEP_NETWORK_STANDBY));
API_COMPILE(System.sleep(pins_array, sizeof(pins_array)/sizeof(*pins_array), mode_array, sizeof(mode_array)/sizeof(*mode_array), SLEEP_NETWORK_STANDBY, 20));
}

// SLEEP_DISABLE_WKP_PIN
API_COMPILE(System.sleep(SLEEP_MODE_DEEP, SLEEP_DISABLE_WKP_PIN));
API_COMPILE(System.sleep(SLEEP_MODE_DEEP, SLEEP_DISABLE_WKP_PIN, 60));
API_COMPILE(System.sleep(SLEEP_MODE_DEEP, 60, SLEEP_DISABLE_WKP_PIN));

// Flags OR-ing
API_COMPILE(System.sleep(SLEEP_MODE_DEEP, SLEEP_DISABLE_WKP_PIN | SLEEP_NETWORK_STANDBY));
API_COMPILE(System.sleep(SLEEP_MODE_DEEP, SLEEP_DISABLE_WKP_PIN | SLEEP_NETWORK_STANDBY, 60));
API_COMPILE(System.sleep(SLEEP_MODE_DEEP, 60, SLEEP_DISABLE_WKP_PIN | SLEEP_NETWORK_STANDBY));
}

test(system_mode) {
Expand Down
24 changes: 12 additions & 12 deletions wiring/inc/spark_wiring_system.h
Expand Up @@ -125,48 +125,48 @@ class SystemClass {
* wakeup pins: std::initializer_list<pin_t>
* trigger mode: single InterruptMode
*/
inline static void sleep(std::initializer_list<pin_t> pins, InterruptMode edgeTriggerMode, long seconds = 0, SleepNetworkFlag flag = SLEEP_NETWORK_OFF) {
inline static void sleep(std::initializer_list<pin_t> pins, InterruptMode edgeTriggerMode, long seconds = 0, SleepOptionFlags flag = SLEEP_NETWORK_OFF) {
// This will only work in C++14
// static_assert(pins.size() > 0, "Provided pin list is empty");
system_sleep_pins(pins.begin(), pins.size(), &edgeTriggerMode, 1, seconds, flag.flag(), nullptr);
system_sleep_pins(pins.begin(), pins.size(), &edgeTriggerMode, 1, seconds, flag.value(), nullptr);
}
inline static void sleep(std::initializer_list<pin_t> pins, InterruptMode edgeTriggerMode, SleepNetworkFlag flag, long seconds = 0) {
inline static void sleep(std::initializer_list<pin_t> pins, InterruptMode edgeTriggerMode, SleepOptionFlags flag, long seconds = 0) {
sleep(pins, edgeTriggerMode, seconds, flag);
}
/*
* wakeup pins: std::initializer_list<pin_t>
* trigger mode: std::initializer_list<InterruptMode>
*/
inline static void sleep(std::initializer_list<pin_t> pins, std::initializer_list<InterruptMode> edgeTriggerMode, long seconds = 0, SleepNetworkFlag flag = SLEEP_NETWORK_OFF) {
inline static void sleep(std::initializer_list<pin_t> pins, std::initializer_list<InterruptMode> edgeTriggerMode, long seconds = 0, SleepOptionFlags flag = SLEEP_NETWORK_OFF) {
// This will only work in C++14
// static_assert(pins.size() > 0, "Provided pin list is empty");
// static_assert(edgeTriggerMode.size() > 0, "Provided InterruptMode list is empty");

system_sleep_pins(pins.begin(), pins.size(), edgeTriggerMode.begin(), edgeTriggerMode.size(), seconds, flag.flag(), nullptr);
system_sleep_pins(pins.begin(), pins.size(), edgeTriggerMode.begin(), edgeTriggerMode.size(), seconds, flag.value(), nullptr);
}
inline static void sleep(std::initializer_list<pin_t> pins, std::initializer_list<InterruptMode> edgeTriggerMode, SleepNetworkFlag flag, long seconds = 0) {
inline static void sleep(std::initializer_list<pin_t> pins, std::initializer_list<InterruptMode> edgeTriggerMode, SleepOptionFlags flag, long seconds = 0) {
sleep(pins, edgeTriggerMode, seconds, flag);
}

/*
* wakeup pins: pin_t* + size_t
* trigger mode: single InterruptMode
*/
inline static void sleep(const pin_t* pins, size_t pinsSize, InterruptMode edgeTriggerMode, long seconds = 0, SleepNetworkFlag flag = SLEEP_NETWORK_OFF) {
system_sleep_pins(pins, pinsSize, &edgeTriggerMode, 1, seconds, flag.flag(), nullptr);
inline static void sleep(const pin_t* pins, size_t pinsSize, InterruptMode edgeTriggerMode, long seconds = 0, SleepOptionFlags flag = SLEEP_NETWORK_OFF) {
system_sleep_pins(pins, pinsSize, &edgeTriggerMode, 1, seconds, flag.value(), nullptr);
}
inline static void sleep(const pin_t* pins, size_t pinsSize, InterruptMode edgeTriggerMode, SleepNetworkFlag flag, long seconds = 0) {
inline static void sleep(const pin_t* pins, size_t pinsSize, InterruptMode edgeTriggerMode, SleepOptionFlags flag, long seconds = 0) {
sleep(pins, pinsSize, edgeTriggerMode, seconds, flag);
}

/*
* wakeup pins: pin_t* + size_t
* trigger mode: InterruptMode* + size_t
*/
inline static void sleep(const pin_t* pins, size_t pinsSize, const InterruptMode* edgeTriggerMode, size_t edgeTriggerModeSize, long seconds = 0, SleepNetworkFlag flag = SLEEP_NETWORK_OFF) {
system_sleep_pins(pins, pinsSize, edgeTriggerMode, edgeTriggerModeSize, seconds, flag.flag(), nullptr);
inline static void sleep(const pin_t* pins, size_t pinsSize, const InterruptMode* edgeTriggerMode, size_t edgeTriggerModeSize, long seconds = 0, SleepOptionFlags flag = SLEEP_NETWORK_OFF) {
system_sleep_pins(pins, pinsSize, edgeTriggerMode, edgeTriggerModeSize, seconds, flag.value(), nullptr);
}
inline static void sleep(const pin_t* pins, size_t pinsSize, const InterruptMode* edgeTriggerMode, size_t edgeTriggerModeSize, SleepNetworkFlag flag, long seconds = 0) {
inline static void sleep(const pin_t* pins, size_t pinsSize, const InterruptMode* edgeTriggerMode, size_t edgeTriggerModeSize, SleepOptionFlags flag, long seconds = 0) {
sleep(pins, pinsSize, edgeTriggerMode, edgeTriggerModeSize, seconds, flag);
}

Expand Down

0 comments on commit f24fbdf

Please sign in to comment.