summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/Makefile2
-rw-r--r--firmware/ajf.c1
-rw-r--r--firmware/app.lds7
-rw-r--r--firmware/mpeg.c24
-rw-r--r--firmware/player.lds7
5 files changed, 16 insertions, 25 deletions
diff --git a/firmware/Makefile b/firmware/Makefile
index eb173848f3..f3de26b48a 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -33,7 +33,7 @@ else
33CFLAGS += -fomit-frame-pointer -fschedule-insns 33CFLAGS += -fomit-frame-pointer -fschedule-insns
34endif 34endif
35 35
36SRC := $(wildcard drivers/*.c common/*.c malloc/*.c *.c) 36SRC := $(wildcard drivers/*.c common/*.c *.c)
37 37
38OBJS := $(SRC:%.c=$(OBJDIR)/%.o) $(OBJDIR)/crt0.o 38OBJS := $(SRC:%.c=$(OBJDIR)/%.o) $(OBJDIR)/crt0.o
39DEPS:=.deps 39DEPS:=.deps
diff --git a/firmware/ajf.c b/firmware/ajf.c
index e542bdc81e..82ba0b7939 100644
--- a/firmware/ajf.c
+++ b/firmware/ajf.c
@@ -21,7 +21,6 @@
21#endif 21#endif
22#include <file.h> 22#include <file.h>
23#include "ajf.h" 23#include "ajf.h"
24#include <malloc.h>
25#include <string.h> 24#include <string.h>
26#include <errno.h> 25#include <errno.h>
27#include <stdbool.h> 26#include <stdbool.h>
diff --git a/firmware/app.lds b/firmware/app.lds
index 810695ae45..2e594b6db1 100644
--- a/firmware/app.lds
+++ b/firmware/app.lds
@@ -51,13 +51,6 @@ SECTIONS
51 _end = .; 51 _end = .;
52 } > DRAM 52 } > DRAM
53 53
54 .heap :
55 {
56 _poolstart = .;
57 . = 0x20000;
58 _poolend = .;
59 } > DRAM
60
61 .mp3buf : 54 .mp3buf :
62 { 55 {
63 _mp3buf = .; 56 _mp3buf = .;
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index a85545efce..f9df3236f2 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -23,7 +23,6 @@
23#include "id3.h" 23#include "id3.h"
24#include "mpeg.h" 24#include "mpeg.h"
25#include "ata.h" 25#include "ata.h"
26#include "malloc.h"
27#include "string.h" 26#include "string.h"
28#ifndef SIMULATOR 27#ifndef SIMULATOR
29#include "i2c.h" 28#include "i2c.h"
@@ -147,9 +146,11 @@ struct id3tag
147{ 146{
148 struct mp3entry id3; 147 struct mp3entry id3;
149 int mempos; 148 int mempos;
149 bool used;
150}; 150};
151 151
152static struct id3tag *id3tags[MAX_ID3_TAGS]; 152static struct id3tag *id3tags[MAX_ID3_TAGS];
153static struct id3tag _id3tags[MAX_ID3_TAGS];
153 154
154static unsigned int current_track_counter = 0; 155static unsigned int current_track_counter = 0;
155static unsigned int last_track_counter = 0; 156static unsigned int last_track_counter = 0;
@@ -202,7 +203,6 @@ static bool append_tag(struct id3tag *tag)
202static void remove_current_tag(void) 203static void remove_current_tag(void)
203{ 204{
204 int oldidx = tag_read_idx; 205 int oldidx = tag_read_idx;
205 struct id3tag *tag = id3tags[tag_read_idx];
206 206
207 if(num_tracks_in_memory() > 0) 207 if(num_tracks_in_memory() > 0)
208 { 208 {
@@ -210,8 +210,8 @@ static void remove_current_tag(void)
210 tag_read_idx = (tag_read_idx+1) & MAX_ID3_TAGS_MASK; 210 tag_read_idx = (tag_read_idx+1) & MAX_ID3_TAGS_MASK;
211 211
212 /* Now delete it */ 212 /* Now delete it */
213 id3tags[oldidx]->used = false;
213 id3tags[oldidx] = NULL; 214 id3tags[oldidx] = NULL;
214 free(tag);
215 debug_tags(); 215 debug_tags();
216 } 216 }
217} 217}
@@ -578,21 +578,26 @@ void IMIA1(void)
578 578
579static void add_track_to_tag_list(char *filename) 579static void add_track_to_tag_list(char *filename)
580{ 580{
581 struct id3tag *t; 581 struct id3tag *t = NULL;
582 int i;
582 583
583 /* grab id3 tag of new file and 584 /* find a free tag */
584 remember where in memory it starts */ 585 for (i=0; i < MAX_ID3_TAGS_MASK; i++ )
585 t = malloc(sizeof(struct id3tag)); 586 if ( !_id3tags[i].used )
587 t = &_id3tags[i];
586 if(t) 588 if(t)
587 { 589 {
590 /* grab id3 tag of new file and
591 remember where in memory it starts */
588 mp3info(&(t->id3), filename); 592 mp3info(&(t->id3), filename);
589 t->mempos = mp3buf_write; 593 t->mempos = mp3buf_write;
590 t->id3.elapsed = 0; 594 t->id3.elapsed = 0;
591 if(!append_tag(t)) 595 if(!append_tag(t))
592 { 596 {
593 free(t);
594 DEBUGF("Tag list is full\n"); 597 DEBUGF("Tag list is full\n");
595 } 598 }
599 else
600 t->used = true;
596 } 601 }
597 else 602 else
598 { 603 {
@@ -659,7 +664,7 @@ static void mpeg_thread(void)
659 int amount_to_read; 664 int amount_to_read;
660 int amount_to_swap; 665 int amount_to_swap;
661 int t1, t2; 666 int t1, t2;
662 667
663 play_pending = false; 668 play_pending = false;
664 playing = false; 669 playing = false;
665 mpeg_file = -1; 670 mpeg_file = -1;
@@ -1411,4 +1416,5 @@ void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost, i
1411#endif /* !SIMULATOR */ 1416#endif /* !SIMULATOR */
1412 1417
1413 memset(id3tags, sizeof(id3tags), 0); 1418 memset(id3tags, sizeof(id3tags), 0);
1419 memset(_id3tags, sizeof(id3tags), 0);
1414} 1420}
diff --git a/firmware/player.lds b/firmware/player.lds
index 55e26885cd..341d2ebf91 100644
--- a/firmware/player.lds
+++ b/firmware/player.lds
@@ -51,13 +51,6 @@ SECTIONS
51 _end = .; 51 _end = .;
52 } > DRAM 52 } > DRAM
53 53
54 .heap :
55 {
56 _poolstart = .;
57 . = 0x20000;
58 _poolend = .;
59 } > DRAM
60
61 .mp3buf : 54 .mp3buf :
62 { 55 {
63 _mp3buf = .; 56 _mp3buf = .;