• No results found

De Window-Protocol-Monitor voor een ANSI terminal

5. Software debugging van het ISDN terminal board

6.2 De Window-Protocol-Monitor voor een ANSI terminal

}

• Bet verbreken van het opgegeven B-kanaal en het MAP interface door SecDisconnectedO

byte far Set_Disconnected(void) (

if(Param_6

==

1) (

disable(); /*nMR comment, protect command register */

DSC->CRjR

=

MCR1;

DSC->DR

=

OxOO; /*Disconnect MAP and LIU B1 */

DSC->CRjR =LMR1;

DSC->DR

=

(DSC->DR & OxFE); /*Disable llU B1 */

enable();

} else (

disable(); /*nMR comment, protect command register */

DSC->CRjR

=

MCR2;

DSC->DR

=

OxOO; /*Disconnect MAP and llU B2 */

DSC->CRjR =LMR1;

DSC->DR

=

(DSC->DR & OxFD); /* Disable llU B2 */

enable();

} }

6.2 De Window-Protocol-Monitor voor een ANSI terminal

De Protocol Monitor van de MITEL kaarten en Call Control maken beide gebruik van zogenaamde tekst windows. Voor deze tekst windows zijn in TURBO C verschillende functies beschikbaar die echter niet door INTEL C worden ondersteund. Deze zijn dan

ook helemaal niet beschikbaar voor het terminal board

Voor een window systeem moeten we directe toegang hebben tot het videogeheugen zodat characters die naar het beeldscherm zijn geschreven ook weer terug kuooen worden gelezen. Deze optie hebben we nodig, als we willen voorkomen dat een nieuw window de op het beeldschenn aanwezige tekenszaluitvegen. De tekens die door dit nieuwe window zijn uitgeveegd zijn dus verloren gegaan. Door nu voor de creatie van het nieuwe window de characters terug te lezen en in een ander datagebied te bewaren kuooen we later het oude beeldschenn weer herstellen. Deze directe toegang tot het beeldschenn wordt door het gebruik van een RS232 verbinding en terminal programma onmogelijk gemaakt. We kuooen dit echter omzeilen door in het geheugen van het terminal board een copy van het schenn te bewaren. Het wordt dan weI mogelijk een window systeem te bouwen voor het ISDN terminal board als we dan ook gebruik maken van het ANSI-code systeem. Dit systeem maakt gebruik van zogenaamde 'ESCAPE sequences' om speciale functies voor het schenn/cursor te realiseren, b.v.:

• ESC [K : Veeg regel uit vanaf de cursor

• ESC [l;lH : Plaats de cursor op x,y positie 1,1 (links-boven)

Alle functie die in de MITEL software worden gebruikt bij de Protocol Monitor en Call Control en zorgen voor het 'opbouwen' van het schenn en het uitlezen van het toetsenbord zijn uiteindelijk gerealiseerd. Er zijn echter een aantal verschillen met de TURBO C functies (zie ook de help functie van de TURBO-C++ compiler) die in acht moeten worden gehouden:

• de onderstaande functies zijn gerealiseerd:

• void cursor(int status) : schakel de cursor aan of uit.

• void clreol(void) : Veeg de huidige regel vanaf de cursor tot aan het einde van een tekstwindow uit.

• void clrscr(void) : Veeg een tekstwindow uit.

• void gotoxy(int x, int y): Ga naar de positie x,y in een tekstwindow.

(l,lligt links-boven)

• void gettextinfo(struct text info *current) : Haal de infonnatie over het tekstwindow op.

• void textattr(int newattrib) : Zet de kleur-attributen van een tekstwindow.

• void textbackground(int color) : Zet de achtergrondkleur op 'color'.

• void textcolor(int color) : Zet de tekstkleur op 'color'

• int getch(void) : Haal een karakter op van het toetsenbord.

• int ungetch(int ch) : Stop een karakter terug in de toetsenbordbuffer.

• int getche(void) : Haal een karakter op van het toetsenbord en laat dit karakter op het schenn zien.

• int kbhit(void) : Wacht totdat een toets wordt ingedrukt.

• void window(int left, int top, int right, int bottom) : Defmieer een tekstwindow m.b.v. de linkerboven hoek en de rechteronder hoek.

• int wherex(void) : Vraag de x coordinaat van de cursor op.

• int wherey(void) : Vraag de y coordinaat van de cursor op.

• void insline(void) : Voeg een regel toe op de plaats van de cursor.

• int gettext(int left, int top, int right, int bottom, void *dest) : Sla alle tekst op, in het door de pointer aangewezen gebied, die zich bevindt in de rechthoek met de linkerboven hoek left,top (xl, yl) en rechteronder hoek right,bottom (x2, y2).

• int puttext(int left, int top, int right, int bottom, void *src) : Plaats de opgeslagen tekst (met gettextO) weer op het schenn.

• int movetext(int left, int top, int right, int bottom, int destleft, int desttop) : Verplaats de tekst in de rechthoek met de hoeken left, top (xl, yl) en right, bottom (x2, y2) naar een rechthoek van gelijke grote met een linkerboven hoek op destleft, desttop (x3, x4)

• void delay(unsigned Msec) : Wacht Msec milliseconden.

• alle gerealiseerde functies hebben dezelfde parameters nodig als de TURBO C functies

• sommige van de bovengenoemde functies zijn echter beperkt in hun mogelijkheden t.O.v. deTURBO C functies, maar alle mogelijke aanroepen die in de MITEL software worden gedaan, kunnen door de functies goed afgehandeld worden.

• de gebruikte cprintfO, printfO, vsprintfO, putsO, enz. zijn sarnengevoegd tot een functie primO. AIle print-comrnando's moeten door 'print(...)' worden vervangen. De declaratie is als voIgt:

void print(const char *Msg, .••);

• de gebruikte cscanfO, scanfO, enz. zijn samengevoegd tot een functie scanO.

AIle scan-commando's moeten door scan(..) worden vervangen. De declaratie is als voIgt:

• int scan(char *Msg, ...) :Haal een string op uit de toetsenbord buffer (de software buffer en niet de FIFO buffer van de IOPC).

• alleen voor het gebruik in nieuw te creeren functies voor het window systeem zijn de volgende functies die rechtstreeks naar de terminal buffer (de software buffer en niet de FIFO van de IDPC) schrijven:

• int strput(const char *MsgString) :Schrijf een complete string naar de buffer

• int charput(int ch) :Schrijf een enkel karakter naar de buffer.

Met behulp van de bovenstaande functie is nu de MITEL monitoring dispatcher omgezet naar het terminal board. door alleen de print- en scan aanroepen te vervangen.

Omdat niet ieder optie van de MlTEL monitor geschikt is voor het terminal board zoals o.a. het bekijken van de MITEL hardware registers of de 'Quit' mogelijkheid, zijn enkele van deze opties aangepast aan het ISDN tenninal board. De nieuwe functies staan in bijlage 2.

6.3 Samenvatting

In dit hoofdstuk is de implementatie van de Call Control en Resource Management protocollen voor het ISDN terminal board besproken. Deze moesten worden aangepast aan de AMD hardware. Dit gebeurde in de functies: SeLAlertingO, Start_AlertingO, Stop_AlertingO, End_AlertingO voor het belsignaal en in de functies: SeCConnectedO en SeLDisconnectedO voor het doorschakelen van het telefoonkanaal.

Verder is voor een betere controle en aansturing van de protocollen en hardware, de MITEL protocol monitor geconverteerd naar het ISDN terminal board met behulp van geemuleerde TURBO-C functies.

Het is nu mogelijk om over het Sff-interface een telefoonverbinding op te bouwen tussen een MITEL kaart en het ISDN terminal board. We moeten dan weI op de MITEL kaart het D-Phone IC vervangen door een nieuwe versie. De oude versie bevatte namelijk een filter codec dat gebruik maakte van een Il-law code die ten opzichte van de standaard code van het CCITT gemverteerd was.