Hallo Forenkollegen!
Ich laboriere nun bereits seit geraumer Zeit an folgendem Problem:
Dieser Code wird beim Auftreten eines seriellen Interrupts abgearbeitet:
1 | void EingehenderAnruf(){
|
2 | strcpy(Vergleichstring,"HFP"); //Format, das bei Anfrage gesendet wird: HFP 0 CALLERID "+436642734111" "" 80
|
3 | if(strstr(Module_Answer,Vergleichstring)!= NULL){ //Durchsuchen der Modulantwort nach 'HFP'
|
4 | strcpy(Vergleichstring,"CALLERID"); //nächste signifikante Zeichenkette für einen Anruf
|
5 | if(strstr(Module_Answer,Vergleichstring)!= NULL){ //Durchsuchen der Modulantwort nach 'CALLERID'
|
6 | strcpy(Statusausgabe,"Eingehender Anruf");
|
7 | display_str(Statusausgabe);
|
8 | setcursor(13);
|
9 | Tastenwarten=1;
|
10 | delay_ms(2000);
|
11 | clear();
|
12 | do {
|
13 | if(input(dtaste6)){ //B2 - Denial
|
14 | Tastenwarten=0; //Eingabe bereits erfolgt
|
15 | printf("hangup");
|
16 | putchar(13);
|
17 | strcpy(Statusausgabe,"Anruf abgewiesen");
|
18 | clear();
|
19 | display_str(Statusausgabe); //Ausgabe Denial
|
20 | setcursor(13);
|
21 | delay_ms(2000);
|
22 | clear();
|
23 | }
|
24 | if(input(dtaste7)){ //B3 - Accept
|
25 | Tastenwarten=0; //Eingabe bereits erfolgt
|
26 | printf("answer");
|
27 | putchar(13);
|
28 | strcpy(Statusausgabe,"Anruf angenommen");
|
29 | clear();
|
30 | display_str(Statusausgabe); //Ausgabe Accept
|
31 | setcursor(13);
|
32 | delay_ms(2000);
|
33 | clear();
|
34 | }
|
35 | } while(Tastenwarten==1); //Warten auf Benutzereingabe
|
36 | }
|
37 | }
|
38 | }
|
Wenn ich nun angerufen werde funktioniert das ganze einmal. Also kann
ich auflegen oder abheben. Bei einem erneuten Anruf (nach Beendigung des
vorherigen) wird allerdings die ganze Funktion nicht mehr ausgeführt.
Wenn ich die do-while Schleife entferne dann funktioniert das ganze
allerdings prächtig vom Ablauf her, nur kann ich dann eben nicht
auflegen oder abheben.
Das ganze funktioniert über das BT-Modul WT32, dieses sendet jedes Mal
den gleichen String (bereits überprüft).
Ich würde mit wünschen, dass ich bei jedem Anruf abheben oder auflegen
kann und die Schleife keine Probleme mehr macht. Hat jemand von Euch
eine Idee?
Mit freundlichen Grüßen
Andreas