-
Notifications
You must be signed in to change notification settings - Fork 34
Mock for sleep and wdt #115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 7 commits
39a028c
3fe65ba
3a2f644
2002495
16655d5
e56c2e0
062d491
364da41
7e3eedc
6321cba
2600fb5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#include <ArduinoUnitTests.h> | ||
#include <Arduino.h> | ||
|
||
unittest(check_ADCSRA_read_write) { | ||
ADCSRA = 123; | ||
|
||
assertEqual(123, ADCSRA); | ||
} | ||
|
||
unittest_main() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#include <ArduinoUnitTests.h> | ||
#include <Arduino.h> | ||
|
||
// just check if declaration compiles | ||
ISR (WDT_vect) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please move this to There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
} | ||
|
||
unittest_main() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#include <ArduinoUnitTests.h> | ||
#include <avr/sleep.h> | ||
|
||
GodmodeState* state = GODMODE(); | ||
|
||
unittest(sleep_enable) { | ||
state->reset(); | ||
assertFalse(state->sleep.sleep_enable); | ||
assertEqual(0, state->sleep.sleep_enable_count); | ||
|
||
sleep_enable(); | ||
|
||
assertTrue(state->sleep.sleep_enable); | ||
assertEqual(1, state->sleep.sleep_enable_count); | ||
} | ||
|
||
unittest(sleep_disable) { | ||
state->reset(); | ||
assertEqual(0, state->sleep.sleep_disable_count); | ||
|
||
sleep_disable(); | ||
|
||
assertFalse(state->sleep.sleep_enable); | ||
assertEqual(1, state->sleep.sleep_disable_count); | ||
} | ||
|
||
unittest(set_sleep_mode) { | ||
state->reset(); | ||
assertEqual(0, state->sleep.sleep_mode); | ||
|
||
set_sleep_mode(SLEEP_MODE_PWR_DOWN); | ||
|
||
assertEqual(SLEEP_MODE_PWR_DOWN, state->sleep.sleep_mode); | ||
} | ||
|
||
unittest(sleep_bod_disable) { | ||
state->reset(); | ||
assertEqual(0, state->sleep.sleep_bod_disable_count); | ||
|
||
sleep_bod_disable(); | ||
|
||
assertEqual(1, state->sleep.sleep_bod_disable_count); | ||
} | ||
|
||
unittest(sleep_cpu) { | ||
state->reset(); | ||
assertEqual(0, state->sleep.sleep_cpu_count); | ||
|
||
sleep_cpu(); | ||
|
||
assertEqual(1, state->sleep.sleep_cpu_count); | ||
} | ||
|
||
unittest(sleep_mode) { | ||
state->reset(); | ||
assertEqual(0, state->sleep.sleep_mode_count); | ||
|
||
sleep_mode(); | ||
|
||
assertEqual(1, state->sleep.sleep_mode_count); | ||
assertEqual(1, state->sleep.sleep_enable_count); | ||
assertEqual(1, state->sleep.sleep_disable_count); | ||
} | ||
|
||
unittest_main() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
#include <ArduinoUnitTests.h> | ||
#include <avr/wdt.h> | ||
|
||
GodmodeState* state = GODMODE(); | ||
|
||
unittest(taskWdtEnable_checkTimeout) { | ||
state->reset(); | ||
assertEqual(0, state->wdt.timeout); | ||
|
||
wdt_enable(WDTO_1S); | ||
|
||
assertTrue(state->wdt.wdt_enable); | ||
assertEqual(WDTO_1S, state->wdt.timeout); | ||
assertEqual(1, state->wdt.wdt_enable_count); | ||
} | ||
|
||
unittest(taskWdtEnableDisable) { | ||
state->reset(); | ||
assertEqual(0, state->wdt.wdt_enable_count); | ||
|
||
wdt_enable(WDTO_1S); | ||
|
||
assertTrue(state->wdt.wdt_enable); | ||
assertEqual(1, state->wdt.wdt_enable_count); | ||
|
||
wdt_disable(); | ||
|
||
assertFalse(state->wdt.wdt_enable); | ||
assertEqual(1, state->wdt.wdt_enable_count); | ||
} | ||
|
||
unittest(wdt_reset) { | ||
state->reset(); | ||
assertEqual(0, state->wdt.wdt_reset_count); | ||
|
||
wdt_reset(); | ||
|
||
assertEqual(1, state->wdt.wdt_reset_count); | ||
} | ||
|
||
unittest_main() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#include "AvrAdc.h" | ||
|
||
// mock storage to allow access to ADCSRA | ||
unsigned char sfr_store; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#ifndef _AVR_ADC_H_ | ||
ianfixes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
#define _AVR_ADC_H_ | ||
|
||
// mock storage to allow access to ADCSRA | ||
extern unsigned char sfr_store; | ||
#define _SFR_MEM8(mem_addr) sfr_store | ||
|
||
#endif // _AVR_ADC_H_ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#ifndef _AVR_INTERRUPT_H_ | ||
ianfixes marked this conversation as resolved.
Show resolved
Hide resolved
|
||
#define _AVR_INTERRUPT_H_ | ||
|
||
// allows the production code to define an ISR method | ||
#define _VECTOR(N) __vector_ ## N | ||
#define ISR(vector, ...) \ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please add a link to the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I added an explanation there |
||
extern "C" void vector (void) __VA_ARGS__; \ | ||
void vector (void) | ||
|
||
#endif // _AVR_INTERRUPT_H_ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#ifndef _AVR_SLEEP_H_ | ||
#define _AVR_SLEEP_H_ | ||
|
||
#include <Godmode.h> | ||
|
||
void sleep_enable() { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please link to sleep-mode docs There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
GodmodeState* godmode = GODMODE(); | ||
godmode->sleep.sleep_enable = true; | ||
godmode->sleep.sleep_enable_count++; | ||
} | ||
|
||
void sleep_disable() { | ||
GodmodeState* godmode = GODMODE(); | ||
godmode->sleep.sleep_enable = false; | ||
godmode->sleep.sleep_disable_count++; | ||
} | ||
|
||
void set_sleep_mode(unsigned char mode) { | ||
GodmodeState* godmode = GODMODE(); | ||
godmode->sleep.sleep_mode = mode; | ||
} | ||
|
||
void sleep_bod_disable() { | ||
GodmodeState* godmode = GODMODE(); | ||
godmode->sleep.sleep_bod_disable_count++; | ||
} | ||
|
||
void sleep_cpu() { | ||
GodmodeState* godmode = GODMODE(); | ||
godmode->sleep.sleep_cpu_count++; | ||
} | ||
|
||
void sleep_mode() { | ||
GodmodeState* godmode = GODMODE(); | ||
sleep_enable(); | ||
godmode->sleep.sleep_mode_count++; | ||
sleep_disable(); | ||
} | ||
|
||
#endif /* _AVR_SLEEP_H_ */ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
#ifndef _AVR_WDT_H_ | ||
#define _AVR_WDT_H_ | ||
|
||
#include <Godmode.h> | ||
|
||
#define WDTO_15MS 0 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please link to WDT docs There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
#define WDTO_30MS 1 | ||
#define WDTO_60MS 2 | ||
#define WDTO_120MS 3 | ||
#define WDTO_250MS 4 | ||
#define WDTO_500MS 5 | ||
#define WDTO_1S 6 | ||
#define WDTO_2S 7 | ||
#define WDTO_4S 8 | ||
#define WDTO_8S 9 | ||
|
||
void wdt_enable(unsigned char timeout) { | ||
GodmodeState* godmode = GODMODE(); | ||
godmode->wdt.wdt_enable = true; | ||
godmode->wdt.timeout = timeout; | ||
godmode->wdt.wdt_enable_count++; | ||
} | ||
|
||
void wdt_disable() { | ||
GodmodeState* godmode = GODMODE(); | ||
godmode->wdt.wdt_enable = false; | ||
godmode->wdt.wdt_disable_count++; | ||
} | ||
|
||
void wdt_reset() { | ||
GodmodeState* godmode = GODMODE(); | ||
godmode->wdt.wdt_reset_count++; | ||
} | ||
|
||
#endif /* _AVR_WDT_H_ */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where is
ADCSRA
defined?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added explanations into this file