WIP
This commit is contained in:
		
							parent
							
								
									f1a706792e
								
							
						
					
					
						commit
						e3416272cb
					
				
							
								
								
									
										194
									
								
								apps/Sensor Watch Halloween Demo/app.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								apps/Sensor Watch Halloween Demo/app.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,194 @@
 | 
				
			|||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include "watch.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    bool beep;
 | 
				
			||||||
 | 
					    bool play;
 | 
				
			||||||
 | 
					    uint8_t press_count;
 | 
				
			||||||
 | 
					} ApplicationState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					    BuzzerNote note;
 | 
				
			||||||
 | 
					    uint16_t duration;
 | 
				
			||||||
 | 
					    char lyric[7];
 | 
				
			||||||
 | 
					} SongNote;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const BuzzerNote beeps[] = {
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_F5SHARP_G5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_C5,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_C5,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_D5SHARP_E5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_F5SHARP_G5FLAT,
 | 
				
			||||||
 | 
					    BUZZER_NOTE_REST,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const SongNote melody[] = {
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    200,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_F5SHARP_G5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_REST,              20,     ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_C5,                200,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_C5,                300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_REST,              20,     ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_D5SHARP_E5FLAT,    200,    ""},
 | 
				
			||||||
 | 
					    // {BUZZER_NOTE_F5SHARP_G5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              20,     "      "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    300,    ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                300,    ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              20,     ""},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    400,    " dig  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              10,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " thru "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " the  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " ditch"},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    "  es  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " and  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    500,    " burn "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              10,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " thru "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " the  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " Witch"},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    "  es  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " and  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    500,    " S1aN7"},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              10,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " 1n   "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " the  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " back "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    "  OF  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                300,    "  n&y "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              20,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    250,    " drAG "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_F5,                400,    "   U  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_G5,                250,    "   LA "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_F5,                600,    "    AA"},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              50, ""},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    400,    " dig  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              10,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " thru "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " the  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " ditch"},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    "  es  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " and  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    500,    " burn "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              10,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " thru "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " the  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " Witch"},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    "  es  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " and  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    500,    " S1aN7"},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              10,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " 1n   "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " the  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    " back "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                200,    "  OF  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_C5,                300,    "  n&y "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_REST,              20,     ""},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_D5SHARP_E5FLAT,    250,    " drAG "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_F5,                400,    "   U  "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_G5,                250,    "   LA "},
 | 
				
			||||||
 | 
					    {BUZZER_NOTE_F5,                600,    "    AA"},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ApplicationState application_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cb_tick() {
 | 
				
			||||||
 | 
					    watch_set_led_color(rand() % 128 + 127, rand() % 128);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void cb_alarm_pressed() {
 | 
				
			||||||
 | 
					    application_state.beep = true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void app_init() {
 | 
				
			||||||
 | 
					    memset(&application_state, 0, sizeof(application_state));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void app_wake_from_backup() {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void app_setup() {
 | 
				
			||||||
 | 
					    watch_enable_external_interrupts();
 | 
				
			||||||
 | 
					    watch_register_interrupt_callback(BTN_MODE, cb_alarm_pressed, INTERRUPT_TRIGGER_RISING);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    watch_enable_display();
 | 
				
			||||||
 | 
					    application_state.play = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    watch_enable_buzzer();
 | 
				
			||||||
 | 
					    watch_set_indicator(WATCH_INDICATOR_PM);
 | 
				
			||||||
 | 
					    watch_set_colon();
 | 
				
			||||||
 | 
					    watch_display_string("    1117  ", 0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void app_prepare_for_standby() {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void app_wake_from_standby() {
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool app_loop() {
 | 
				
			||||||
 | 
					    if (application_state.beep) {
 | 
				
			||||||
 | 
					        watch_buzzer_play_note(beeps[application_state.press_count++], 50);
 | 
				
			||||||
 | 
					        if (application_state.press_count % 2) {
 | 
				
			||||||
 | 
					            watch_clear_indicator(WATCH_INDICATOR_PM);
 | 
				
			||||||
 | 
					            watch_set_colon();
 | 
				
			||||||
 | 
					            watch_display_string("ST  000000", 0);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            watch_set_indicator(WATCH_INDICATOR_PM);
 | 
				
			||||||
 | 
					            watch_set_colon();
 | 
				
			||||||
 | 
					            watch_display_string("    1117  ", 0);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (application_state.press_count >= sizeof(beeps)) {
 | 
				
			||||||
 | 
					            application_state.press_count = 0;
 | 
				
			||||||
 | 
					            application_state.play = true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        application_state.beep = false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (application_state.play) {
 | 
				
			||||||
 | 
					        watch_clear_display();
 | 
				
			||||||
 | 
					        application_state.play = false;
 | 
				
			||||||
 | 
					        for(size_t i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
 | 
				
			||||||
 | 
					            if(i == 7) {
 | 
				
			||||||
 | 
					                watch_enable_leds();
 | 
				
			||||||
 | 
					                watch_rtc_register_periodic_callback(cb_tick, 8);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            watch_display_string(melody[i].lyric, 4);
 | 
				
			||||||
 | 
					            watch_buzzer_play_note(melody[i].note, melody[i].duration);
 | 
				
			||||||
 | 
					            delay_ms(5);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        watch_rtc_disable_periodic_callback(8);
 | 
				
			||||||
 | 
					        watch_set_led_off();
 | 
				
			||||||
 | 
					        watch_set_indicator(WATCH_INDICATOR_PM);
 | 
				
			||||||
 | 
					        watch_set_colon();
 | 
				
			||||||
 | 
					        watch_display_string("    1117  ", 0);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								apps/Sensor Watch Halloween Demo/make/.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								apps/Sensor Watch Halloween Demo/make/.gitignore
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					build/
 | 
				
			||||||
							
								
								
									
										10
									
								
								apps/Sensor Watch Halloween Demo/make/Makefile
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								apps/Sensor Watch Halloween Demo/make/Makefile
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					TOP = ../../..
 | 
				
			||||||
 | 
					include $(TOP)/make.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INCLUDES += \
 | 
				
			||||||
 | 
					  -I../
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SRCS += \
 | 
				
			||||||
 | 
					  ../app.c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include $(TOP)/rules.mk
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user