{###########################################################################}
//MP3-Fernbedienungs-Routinen
//angepasst für Simpel-Player mit Myson Century MTM809/CS8822 Chipsatz}

procedure MP3remote;
//MP3-Player-Taste/Befehl in MP3command
begin
  MP3State:= MP3command;  // "Taste drücken"
  SendSR;
  mdelay(100);
  MP3State:=  c_MP3inh;     // "Taste loslassen"
  SendSR;
  mdelay(150);
end;

procedure MP3setRepeatA;
var myTime:word;
//Repeat-Punkt A setzen, falls Player keinen Repeat1-Modus hat
begin
  myTime:= word(MP3sec)*100 + 4;     //+ Repeat Setup Time (*10 = ms)
  setSysTimer(MP3repeatTimer,myTime);  //vor Ablauf von 60 Sekunden
  mdelay(100);
  MP3command:= c_MP3repeat;
  MP3remote;
  MP3repeatBset:=false;
  MP3runningSeconds:=0;
  MP3runningTimer:=0;
end;

procedure MP3setRepeatB;
//Repeat-Punkt B setzen, falls Player keinen Repeat1-Modus hat
begin
  MP3setRepeatA;
  MP3repeatBset:=true;
end;

procedure MP3next;
//Nächsten Track
begin
  MP3command:= c_MP3forw;
  MP3remote;
  inc(MP3currenttrack);
end;

procedure MP3prev;
//Vorherigen Track
begin
  MP3command:= c_MP3rev;
  MP3remote;
  dec(MP3currenttrack);
end;

procedure MP3gotoTrack;
//gehe zu Track in Variable MP3Track
begin
  if MP3Track > MP3currenttrack then
    repeat
      MP3next;
    until MP3currenttrack = MP3Track;
  endif;
  if MP3Track < MP3currenttrack then
    repeat
      MP3prev;
    until MP3currenttrack = MP3Track;
  endif;
  MP3setRepeatA;  //Repeat-Anfangspunkt setzen
end;

procedure MP3checkRepeat;
//Anhand der abgelaufenen Zeit prüfen, ob Repeat B gesetzt werden muss
//wird laufend aufgerufen, während auf Tastendruck gewartet wird
begin
  if issystimerzero(MP3repeatTimer) then
    if not MP3repeatBset then
      MP3setRepeatB;
    endif;
//Alternative: Forward/Reverse kurz hintereinander drücken
//Bei Playern, die bei AB-Repeat nach einigen Minuten abschalten
//     MP3next;    // setzt auch Systimer neu
//     MP3Prev;
  endif;
end;

procedure MP3on;
//Player einschalten, Vol. max, erstes Stück spielen
begin
  MP3isOn:= true;
  MP3State:= c_MP3inh;
  SendSR;
  mdelay(100);   // Boot-Zeit
  MP3State:= c_MP3playstop;  // stopp gedrückt halten
  SendSR;
  mdelay(1200);
// MP3-Player einschalten, max. Lautstärke, Equ off, Repeat on
  MP3command:= c_MP3inh;  // gain mute, stopp loslassen
  MP3remote;
  mdelay(200);   // Boot-Zeit
  MP3State:= c_MP3forw;  // hier: inc volume to max
  SendSR;
  mdelay(3000);  // Vol++
  MP3command:= c_MP3inh;
  MP3remote;
  MP3currenttrack:=1;
  MP3setRepeatA;  //Repeat-Anfangspunkt setzen
end;

procedure MP3off;
//Player ausschalten
begin
  MP3isOn:= false;
  SendSR;
end;
{###########################################################################}

