diff options
author | Joey Castillo <joeycastillo@utexas.edu> | 2021-12-05 23:06:25 -0600 |
---|---|---|
committer | Joey Castillo <joeycastillo@utexas.edu> | 2021-12-10 11:54:16 -0500 |
commit | 316e1f292c603885f2af3dcd69ce797d64776425 (patch) | |
tree | 96eeba3e256e49ec6393a39767098e3975426454 /apps/buzzer-test/app.c | |
parent | 616587a2030be054277ef74fdbf0be626684db3c (diff) | |
download | Sensor-Watch-316e1f292c603885f2af3dcd69ce797d64776425.tar.gz Sensor-Watch-316e1f292c603885f2af3dcd69ce797d64776425.tar.bz2 Sensor-Watch-316e1f292c603885f2af3dcd69ce797d64776425.zip |
rename project files
Diffstat (limited to 'apps/buzzer-test/app.c')
-rw-r--r-- | apps/buzzer-test/app.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/apps/buzzer-test/app.c b/apps/buzzer-test/app.c new file mode 100644 index 00000000..58158dff --- /dev/null +++ b/apps/buzzer-test/app.c @@ -0,0 +1,134 @@ +#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_backup() { +} + +void app_setup() { + watch_register_extwake_callback(BTN_ALARM, cb_alarm_pressed, true); + + watch_enable_display(); + + watch_enable_buzzer(); +} + +void app_prepare_for_standby() { + watch_display_string(" rains ", 2); +} + +void app_wake_from_standby() { +} + +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; +} |