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