+++ /dev/null
-#include <stdio.h>
-#include <string.h>
-#include "watch.h"
-
-typedef struct ApplicationState {
- bool play;
-} ApplicationState;
-
-ApplicationState application_state;
-
-
-void cb_alarm_pressed() {
- application_state.play = true;
-}
-
-void app_init() {
- memset(&application_state, 0, sizeof(application_state));
-}
-
-void app_wake_from_deep_sleep() {
-}
-
-void app_setup() {
- watch_register_extwake_callback(BTN_ALARM, cb_alarm_pressed, true);
-
- watch_enable_display();
-
- watch_enable_buzzer();
-}
-
-void app_prepare_for_sleep() {
- watch_display_string(" rains ", 2);
-}
-
-void app_wake_from_sleep() {
-}
-
-bool app_loop() {
- if (application_state.play) {
- printf("Playing song...\n");
- const BuzzerNote rains[] = {
- BUZZER_NOTE_A4,
- BUZZER_NOTE_F5,
- BUZZER_NOTE_REST,
- BUZZER_NOTE_A4,
- BUZZER_NOTE_E5,
- BUZZER_NOTE_REST,
- BUZZER_NOTE_A4,
- BUZZER_NOTE_F5,
- BUZZER_NOTE_G5,
- BUZZER_NOTE_E5,
- BUZZER_NOTE_REST,
- BUZZER_NOTE_A4,
- BUZZER_NOTE_G5,
- BUZZER_NOTE_F5,
- BUZZER_NOTE_E5,
- BUZZER_NOTE_D5,
- BUZZER_NOTE_E5,
- BUZZER_NOTE_REST,
-
- BUZZER_NOTE_A5,
- BUZZER_NOTE_REST,
- BUZZER_NOTE_A5,
- BUZZER_NOTE_A5SHARP_B5FLAT,
- BUZZER_NOTE_G5,
- BUZZER_NOTE_REST,
- BUZZER_NOTE_C5,
- BUZZER_NOTE_A5,
- BUZZER_NOTE_A5SHARP_B5FLAT,
- BUZZER_NOTE_G5,
- BUZZER_NOTE_REST,
- BUZZER_NOTE_D5,
- BUZZER_NOTE_A5SHARP_B5FLAT,
- BUZZER_NOTE_A5,
- BUZZER_NOTE_G5,
- BUZZER_NOTE_F5,
- BUZZER_NOTE_E5,
- };
- const uint16_t durations[] = {
- 200,
- 600,
- 100,
- 200,
- 600,
- 100,
- 200,
- 400,
- 400,
- 600,
- 100,
- 200,
- 400,
- 400,
- 400,
- 400,
- 800,
- 600,
-
- 200,
- 50,
- 400,
- 200,
- 400,
- 100,
- 200,
- 400,
- 400,
- 400,
- 200,
- 200,
- 400,
- 400,
- 400,
- 400,
- 900,
- };
- application_state.play = false;
- for(size_t i = 0; i < sizeof(rains); i++) {
- char buf[9] = {0};
- if (rains[i] == BUZZER_NOTE_REST) {
- printf("rest for %d ms\n", durations[i]);
- sprintf(buf, "%2drESt ", i);
- } else {
- printf("playing note %2d: %3.0f Hz for %d ms\n", i, 1000000.0 / (float)NotePeriods[rains[i]], durations[i]);
- sprintf(buf, "%2d%6d", i, NotePeriods[rains[i]]);
- }
- watch_display_string(buf, 2);
- watch_buzzer_play_note(rains[i], durations[i]);
- }
- printf("done!\n\n");
- }
-
- return true;
-}
--- /dev/null
+#include <stdio.h>
+#include <string.h>
+#include "watch.h"
+
+typedef struct ApplicationState {
+ bool play;
+} ApplicationState;
+
+ApplicationState application_state;
+
+
+void cb_alarm_pressed() {
+ application_state.play = true;
+}
+
+void app_init() {
+ memset(&application_state, 0, sizeof(application_state));
+}
+
+void app_wake_from_deep_sleep() {
+}
+
+void app_setup() {
+ watch_register_extwake_callback(BTN_ALARM, cb_alarm_pressed, true);
+
+ watch_enable_display();
+
+ watch_enable_buzzer();
+}
+
+void app_prepare_for_sleep() {
+ watch_display_string(" rains ", 2);
+}
+
+void app_wake_from_sleep() {
+}
+
+bool app_loop() {
+ if (application_state.play) {
+ printf("Playing song...\n");
+ const BuzzerNote rains[] = {
+ BUZZER_NOTE_A4,
+ BUZZER_NOTE_F5,
+ BUZZER_NOTE_REST,
+ BUZZER_NOTE_A4,
+ BUZZER_NOTE_E5,
+ BUZZER_NOTE_REST,
+ BUZZER_NOTE_A4,
+ BUZZER_NOTE_F5,
+ BUZZER_NOTE_G5,
+ BUZZER_NOTE_E5,
+ BUZZER_NOTE_REST,
+ BUZZER_NOTE_A4,
+ BUZZER_NOTE_G5,
+ BUZZER_NOTE_F5,
+ BUZZER_NOTE_E5,
+ BUZZER_NOTE_D5,
+ BUZZER_NOTE_E5,
+ BUZZER_NOTE_REST,
+
+ BUZZER_NOTE_A5,
+ BUZZER_NOTE_REST,
+ BUZZER_NOTE_A5,
+ BUZZER_NOTE_A5SHARP_B5FLAT,
+ BUZZER_NOTE_G5,
+ BUZZER_NOTE_REST,
+ BUZZER_NOTE_C5,
+ BUZZER_NOTE_A5,
+ BUZZER_NOTE_A5SHARP_B5FLAT,
+ BUZZER_NOTE_G5,
+ BUZZER_NOTE_REST,
+ BUZZER_NOTE_D5,
+ BUZZER_NOTE_A5SHARP_B5FLAT,
+ BUZZER_NOTE_A5,
+ BUZZER_NOTE_G5,
+ BUZZER_NOTE_F5,
+ BUZZER_NOTE_E5,
+ };
+ const uint16_t durations[] = {
+ 200,
+ 600,
+ 100,
+ 200,
+ 600,
+ 100,
+ 200,
+ 400,
+ 400,
+ 600,
+ 100,
+ 200,
+ 400,
+ 400,
+ 400,
+ 400,
+ 800,
+ 600,
+
+ 200,
+ 50,
+ 400,
+ 200,
+ 400,
+ 100,
+ 200,
+ 400,
+ 400,
+ 400,
+ 200,
+ 200,
+ 400,
+ 400,
+ 400,
+ 400,
+ 900,
+ };
+ application_state.play = false;
+ for(size_t i = 0; i < sizeof(rains); i++) {
+ char buf[9] = {0};
+ if (rains[i] == BUZZER_NOTE_REST) {
+ printf("rest for %d ms\n", durations[i]);
+ sprintf(buf, "%2drESt ", i);
+ } else {
+ printf("playing note %2d: %3.0f Hz for %d ms\n", i, 1000000.0 / (float)NotePeriods[rains[i]], durations[i]);
+ sprintf(buf, "%2d%6d", i, NotePeriods[rains[i]]);
+ }
+ watch_display_string(buf, 2);
+ watch_buzzer_play_note(rains[i], durations[i]);
+ }
+ printf("done!\n\n");
+ }
+
+ return true;
+}