From 2fe47fb3bd700acebf07cd777e3a1ecb49fb9f46 Mon Sep 17 00:00:00 2001 From: sowgro Date: Fri, 12 Dec 2025 00:25:31 -0500 Subject: reduce warnings, try to get passive speaker to work --- project/.settings/language.settings.xml | 4 ++-- project/Core/Inc/Activities/activity4.h | 2 +- project/Core/Inc/Project/player.h | 24 ++++++++++++++++++++++++ project/Core/Inc/Project/song_info.h | 2 +- project/Core/Src/Activties/activity13.c | 15 +++++++++++---- project/Core/Src/Activties/activity4.c | 10 +++++----- project/Core/Src/Project/player.c | 12 +++--------- project/Core/Src/Project/player_actions.c | 3 ++- project/Core/Src/Project/song_info.c | 3 +-- project/Core/Src/main.c | 4 ++-- 10 files changed, 52 insertions(+), 27 deletions(-) create mode 100644 project/Core/Inc/Project/player.h (limited to 'project') diff --git a/project/.settings/language.settings.xml b/project/.settings/language.settings.xml index ec1bb84..ae082b2 100644 --- a/project/.settings/language.settings.xml +++ b/project/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/project/Core/Inc/Activities/activity4.h b/project/Core/Inc/Activities/activity4.h index fb9d5ce..2a3c714 100644 --- a/project/Core/Inc/Activities/activity4.h +++ b/project/Core/Inc/Activities/activity4.h @@ -18,6 +18,6 @@ typedef struct { void activity4_run(); -header_t *get_header(uint8_t *p_song); +header_t get_header(uint8_t *p_song); #endif /* INC_ACTIVITIES_ACTIVITY4_H_ */ diff --git a/project/Core/Inc/Project/player.h b/project/Core/Inc/Project/player.h new file mode 100644 index 0000000..23853cb --- /dev/null +++ b/project/Core/Inc/Project/player.h @@ -0,0 +1,24 @@ +/* + * player.h + * + * Created on: Dec 10, 2025 + * Author: sowgro + */ + +#ifndef INC_PROJECT_PLAYER_H_ +#define INC_PROJECT_PLAYER_H_ + +typedef struct { + uint8_t ev_type; + uint32_t abs_time; + uint8_t key_number; + uint8_t value; +} note_event_t; + +note_event_t NULL_EVENT = {10, 0, 0, 0}; + +void parse_song(uint8_t *p_song); + +uint8_t *parse_track(uint8_t *p_song, note_event_t *events); + +#endif /* INC_PROJECT_PLAYER_H_ */ diff --git a/project/Core/Inc/Project/song_info.h b/project/Core/Inc/Project/song_info.h index c951fca..9d6d5e6 100644 --- a/project/Core/Inc/Project/song_info.h +++ b/project/Core/Inc/Project/song_info.h @@ -14,6 +14,6 @@ typedef struct { int tempo; } song_info_t; -song_info_t get_song_info(uint8_t *p_song, song_info_t *ret); +uint8_t *get_song_info(uint8_t *p_song, song_info_t *ret); #endif /* INC_PROJECT_SONG_INFO_H_ */ diff --git a/project/Core/Src/Activties/activity13.c b/project/Core/Src/Activties/activity13.c index 19eb0a4..16c2c1b 100644 --- a/project/Core/Src/Activties/activity13.c +++ b/project/Core/Src/Activties/activity13.c @@ -7,20 +7,27 @@ #include #include #include "systick.h" +#include "tone.h" +#include "dac.h" //write 1s for half the freq and 0s for the other half void play_freq(uint8_t hz) { - uint32_t rollover =herz_to_systicks(hz); + uint32_t rollover = hertz_to_systicks(hz); int count = systick_get_count(); - if ((count % rollover) < (rollover >> 1)) + if ((count % rollover) < (rollover >> 1)) { + DAC_Set_Value(3000); printf("1"); - else + } + else { + DAC_Set_Value(0); printf("0"); + } } void activity13_run() { init_systick(); + DAC_Init(); for(;;) { - play_freq(1); + play_freq(3000); } } diff --git a/project/Core/Src/Activties/activity4.c b/project/Core/Src/Activties/activity4.c index 898cd2d..c2a0d63 100644 --- a/project/Core/Src/Activties/activity4.c +++ b/project/Core/Src/Activties/activity4.c @@ -12,13 +12,13 @@ #include "activity4.h" void activity4_run() { - header_t* p_header = get_header(get_song(0).p_song); + header_t p_header = get_header(get_song(0).p_song); printf ("Header: \r\n"); - printf ("\tLength: %lu\r\n", p_header->length); - printf ("\tFormat: %u\r\n", p_header->format); - printf ("\tNum Tracks: %u\r\n", p_header->ntrcks); - printf ("\tDivision: %u\r\n", p_header->division); + printf ("\tLength: %lu\r\n", p_header.length); + printf ("\tFormat: %u\r\n", p_header.format); + printf ("\tNum Tracks: %u\r\n", p_header.ntrcks); + printf ("\tDivision: %u\r\n", p_header.division); } header_t get_header(uint8_t *p_song) { diff --git a/project/Core/Src/Project/player.c b/project/Core/Src/Project/player.c index 0925483..f9ffbce 100644 --- a/project/Core/Src/Project/player.c +++ b/project/Core/Src/Project/player.c @@ -11,18 +11,12 @@ #include "hw8.h" #include "activity4.h" #include "song_info.h" +#include "player.h" #define NOTE_OFF_EVENT (0) #define NOTE_ON_EVENT (1) #define KEY_PRESSURE (2) -typedef struct { - uint8_t ev_type; - uint32_t abs_time; - uint8_t key_number; - uint8_t value; -} note_event_t; - void parse_song(uint8_t *p_song) { header_t header; header = get_header(p_song); @@ -37,7 +31,7 @@ void parse_song(uint8_t *p_song) { } } -uint8_t parse_track(uint8_t *p_song, note_event_t *events) { +uint8_t *parse_track(uint8_t *p_song, note_event_t *events) { p_song += 4; // skip MTrk uint32_t MTrk_len = convert_to_uint32(p_song); p_song += 4; @@ -76,7 +70,7 @@ uint8_t parse_track(uint8_t *p_song, note_event_t *events) { events[curEvent++] = note; } - events[curEvent] = 0; // null terminate array + events[curEvent] = NULL_EVENT; // null terminate array return p_song; } diff --git a/project/Core/Src/Project/player_actions.c b/project/Core/Src/Project/player_actions.c index 72b8801..01aff5e 100644 --- a/project/Core/Src/Project/player_actions.c +++ b/project/Core/Src/Project/player_actions.c @@ -51,7 +51,8 @@ void player_next() { current_song = 0; void *song = get_song(current_song).p_song; - song_info_t song_info = get_song_info(song); + song_info_t song_info; + get_song_info(song, &song_info); printf("Song #%i\r\n", current_song + 1); if (song_info.title) diff --git a/project/Core/Src/Project/song_info.c b/project/Core/Src/Project/song_info.c index 2990da0..5be94e5 100644 --- a/project/Core/Src/Project/song_info.c +++ b/project/Core/Src/Project/song_info.c @@ -11,13 +11,12 @@ #include "song_info.h" #include "endian_converters.h" -uint8_t get_song_info(uint8_t *p_song, song_info_t *ret) { +uint8_t *get_song_info(uint8_t *p_song, song_info_t *ret) { ret->copyright = 0; ret->tempo = 0; ret->title = 0; p_song += 4; // move past MTrk label - uint32_t MTrk_len = convert_to_uint32(p_song); // read in size of MTrk p_song += sizeof(MTrk_len); diff --git a/project/Core/Src/main.c b/project/Core/Src/main.c index 29c8f5e..0863915 100644 --- a/project/Core/Src/main.c +++ b/project/Core/Src/main.c @@ -31,8 +31,8 @@ int main(void){ // activity10_run(); // hw6_run(); // activity12_run(); -// activity13_run(); + activity13_run(); // hw8_run(); - parse_song(get_song(0).p_song + 109); +// parse_song(get_song(0).p_song + 109); } -- cgit v1.2.3