~*
~*

** Routinen dieses Moduls

*J

char ~
strip cr(char ~cptr)

char *oldcptr;

oldopEr = cptr;
while (*cptr '=
if t*cptr =e
cptr++;
)
return(oldcptr);

}

#define ADRESS O
#define DATEN I

void
decode_frame(int framopo~,

static unsigned long lastadress = 0L:
6tRtiC iDt lastadrfunktion ~ 0;
static char lastchar = '\O';
static int 1astbitpas = 0;
static int lastget G ADRESS;

int i;
unsigned long 1;

	if (~frame&Ox80000000) != 0L)	i = 1i

eLse i = 0;
~ f ri -- O)

#ifdef LOGFILE

~endif

L3~

/* CK+LF rausscheissen */

'\r' || ~cptr == '\n') ~cptx - '~0';

/* Wir haben eine Adresse */

J. Wir haben Daten */

unsigned long frame) /* Ein emfangenee Frame
entschlnes~eln */

/* letzte emfaenger adresse */
t* letzte funktion der adresse */

J* letzte Framoposition */
/* was fuer einen Typ hatte das
letzte Frame ~ */

/* nachricht */
/* adresse (nur Ton) */
/* es ist oin sdress
frame */

i! (lastget == ADRESS && lastadrfunktion > 0 && ~
lastadress != 0) { /* dor letzte war eine adresse also
war er nurton */

printt(~\nA!%071d 1 ts I T | BEEP", lastadress, asc_time)
printf("%d", lastadrfunktion);

fprintitlopfile, ~nA:1071d | ts | T | BEEP", lastadress, \
asc time);
fprlntf(logfile' "`d"! lastadrfunktion);

if (frame == SYNCRON) {

lastget = DATEN-;

else if tframe =- IDLE) {
lastadresa = 0L;
lastadrfunktion - 0:

/* das ist nur ein eingeschobenes
Syncronwort */

t* wird nicht als adresse
gewertet */

/* da6 ist nur ein Fuellwort */
/* alles zurneckstellen */
D~ wiss~scha~licheFachblatt~rDate~ei~nde

SDic $!nien~c'leu~cr

1

~lz~er k~GFILE

#endif

#ifdef LOGFILE
fendif

~c ~nten~c~kUb~r

-

~ elee ~

		~.	~

lastbitpos ~ O;
lastget ~ ADRESS;

/* ende einer Nachricht */

	J~ adres6se + funktion merken */
lastadresvv = ttframeŻlO)&OxOOlFFFF8~+(framepos/2)
lastadrfunktion - ttframe >> ~nYnnnnnan~.
lastbitpos = 0;
lastget - ADRESS;

}

} elee {
if (lastbi~pos -= 0) {

_ _ ~ ~ ~ v v v v V ~ ~ / ~ "L ~
J* dies war eine Adresse */
/* en ist ein Daten frame */
t* wir oind am anfang eines
Datenwortes */

it (lostedrfunktion == 1) ~ J. numerikpager */
printf("\nA:1071d t is | N | u, lastadrese, asc time);
fprintf(loqfile. ~\nA~1071d 1 ~Q I ~ I ~ 1~_l~

prinef ( ~\nA: %o7ld 1 ts t ~

~endif

._ -1~.= 1le' ~llA:'UJ10 I tS I N I ~, lastadress, ~
r GlI"11

} else if (lastadrfunktion -- 4) { /* alphaPager */
printf("\nA:~071d | la ~ A | ", lastadreGs, asc time);

fprintf(logfile, ~\nA:S071d | %s | A | ", lastadress, \
~endif

:

,

}

1

asc_time};

lastchar - '\O';

/* Daten analy~iern und ausgeben
frame ~c" 1;

i = 0;
if (lastadrfunktion == 1) f
for (i - O; i <a 4 i++ ) {
1 - frame&OxfOOOOOOOL:

1 Ż= 28

/* das erste bit wurde schon
interpretiert und wird jetzt

ignoriert *t
t* numerik Pager decodieren */

/* ich brauch nur die
hoschsten vier bits */

i. bitte als ahar */
prlnt~t'~%c't, numerikt(char)l]); /* so einer sind wir *'

fprintftloqfile, "%c~, numerikl(char)l]);

frame cce 4;
lastbitpos += 4;

if (lastadrfunktion == 4) ~

, /* alpha Pager decodieren */
for (i 2 0; i <= lg; i+~) { t* Alle 20 Bits nachein~der
lastchar >~- 1;

durchmachen */
it ((frameSox8oooooooL) 1= 0L) lastchar 1- Ox40; /* hit in

	frame cc- 1;	ein Ch&r 6chieben *J
	lastbitpos++;
	if ((lastbitposl7) ~- o? ~
	printf(~\c4tr lastchar):
	fprintf(logfile, "%c", la~tchar);
	lastchar - '\O'i

/* ein neues Datenwort
iBt voll */

Das wissenschaRliche Fachblatt fi]r l~atenreiserde

