aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test-bkp.cpp
diff options
context:
space:
mode:
authorbryan newbold <bnewbold@robocracy.org>2014-10-16 20:20:20 -0700
committerbryan newbold <bnewbold@robocracy.org>2014-10-16 20:20:20 -0700
commitdba5a9fe68ebb996eeee69fa9b573fe5a1561ce2 (patch)
tree6d9c249686b81b2b70da9b9a3dd1e246c221b4b3 /tests/test-bkp.cpp
parent160d861ba3fe50c30891d1abcb2c520be84aaa85 (diff)
downloadlibrambutan-dba5a9fe68ebb996eeee69fa9b573fe5a1561ce2.tar.gz
librambutan-dba5a9fe68ebb996eeee69fa9b573fe5a1561ce2.zip
refactor: move test-style examples to ./tests
Diffstat (limited to 'tests/test-bkp.cpp')
-rw-r--r--tests/test-bkp.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/test-bkp.cpp b/tests/test-bkp.cpp
new file mode 100644
index 0000000..719cac7
--- /dev/null
+++ b/tests/test-bkp.cpp
@@ -0,0 +1,80 @@
+#include <stdio.h> // for snprintf()
+
+#include <wirish/wirish.h>
+#include <libmaple/bkp.h>
+#include <libmaple/iwdg.h>
+
+void print_bkp_contents();
+void write_to_bkp(uint16 val);
+
+#define comm Serial2
+
+void setup() {
+ pinMode(BOARD_BUTTON_PIN, INPUT);
+
+ comm.begin(9600);
+ comm.println("*** Beginning BKP test");
+
+ comm.println("Init...");
+ bkp_init();
+ comm.println("Done.");
+
+ print_bkp_contents();
+ write_to_bkp(10);
+ print_bkp_contents();
+
+ comm.println("Enabling backup writes.");
+ bkp_enable_writes();
+ write_to_bkp(20);
+ print_bkp_contents();
+
+ comm.println("Disabling backup writes.");
+ bkp_disable_writes();
+ write_to_bkp(30);
+ print_bkp_contents();
+
+ comm.println("Done testing backup registers; press button to enable "
+ "independent watchdog (in order to cause a reset).");
+ waitForButtonPress(0);
+ iwdg_init(IWDG_PRE_4, 1);
+ comm.println();
+}
+
+void loop() {
+}
+
+void print_bkp_contents() {
+ comm.println("Backup data register contents:");
+ char buf[100];
+ for (int i = 1; i <= BKP_NR_DATA_REGS; i++) {
+ snprintf(buf, sizeof buf, "DR%d: %d ", i, bkp_read(i));
+ comm.print(buf);
+ if (i % 5 == 0) comm.println();
+ }
+ comm.println();
+}
+
+void write_to_bkp(uint16 val) {
+ comm.print("Attempting to write ");
+ comm.print(val);
+ comm.println(" to backup registers...");
+ for (int i = 1; i <= BKP_NR_DATA_REGS; i++) {
+ bkp_write(i, val);
+ }
+ comm.println("Done.");
+}
+
+__attribute__((constructor)) void premain() {
+ init();
+}
+
+int main(void) {
+ init();
+ setup();
+
+ while (1) {
+ loop();
+ }
+ return 0;
+}
+