1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#define OPCODE_SWAF 0xc0 /* Wiederanlaufauftrag der BS */
#define OPCODE_SWQU 0xe0 /* Wiederanlaufquittung des MSC */
#define OPCODE_SSSAF 0xcc /* Sprechkanal-Sammel-Sperrauftrag der BS */
#define OPCODE_SSSQU 0xec /* Sprechkanal-Sammel-Sperrquitting des MSC */
#define OPCODE_SSAF 0xd8 /* SPRECHKANAL-SPERR-AUFTRAG DER BS */
#define OPCODE_SSQU 0xd1 /* SPRECHKANAL-SPERR-QUITTUNG VON DER MSC */
#define OPCODE_SFAF 0xda /* SPRECHKANAL-FREIGABE-AUFTRAG DER BS */
#define OPCODE_SFQU 0xd3 /* SPRECHKANAL-FREIGABE-QUITTUNG VON DER MSC */
#define OPCODE_SUAF 0xc5 /* Datum-Uhrzeit-Auftrag der BS */
#define OPCODE_SUQU 0xe6 /* Datum-Uhrzeit-Quittung des MSC */
#define OPCODE_SVAF 0xc2 /* Vermittlungsfaehig-Auftrag der BS */
#define OPCODE_SVQU 0xe2 /* Vermittlungsfaehig-Quittung des MSC */
#define OPCODE_YLSAF 0xc3 /* Systemmeldungsanforderung an MSC */
#define OPCODE_YLSMU 0xe3 /* Systemmeldungsbestaetigung vom MSC */
#define OPCODE_YLSMF 0xdf /* Systemmeldung an MSC */
#define OPCODE_YLSEF 0xcb /* Systemmeldungsuebertragungsende an MSC */
#define OPCODE_STDAF 0xc6 /* Tarifdatenauftrag der BS */
#define OPCODE_XGTAU 0x90 /* Tarifdatensignalisierung vom MSC */
#define OPCODE_EBAF 0x09 /* EINBUCHUNGS-AUFTRAG DER BS */
#define OPCODE_EBPQU 0x01 /* EINBUCHUNGS-POSITIV-QUITTUNG VOM MSC */
#define OPCODE_EBNQU 0x02 /* EINBUCHUNGS-NEGATIV-QUITTUNG VOM MSC */
#define OPCODE_ABAF 0x08 /* AUSBUCHUNGS-AUFTRAG DER BS */
#define OPCODE_GVAF 0x12 /* GEHENDER VERBINDUNGS-AUFTRAG DER BS */
#define OPCODE_GVWAF 0x13 /* GEHENDER VERBINDUNGS-WARTESCHLANGEN-AUFTRAG DER BS */
#define OPCODE_GVPQU 0x22 /* GEHENDE VERBINDUNGS-POSITIV-QUITTUNG VOM MSC */
#define OPCODE_GVNQU 0x23 /* GEHENDE VERBINDUNGS-NEGATIV-QUITTUNG VOM MSC */
#define OPCODE_KVAU 0x20 /* KOMMENDER VERBINDUNGS-AUFTRAG VOM MSC */
#define OPCODE_KVWQF 0x11 /* KOMMENDE VERBINDUNGS-WARTESCHLANGEN-QUITTUNG DER BS */
#define OPCODE_KVBAF 0x10 /* KOMMENDE VERBINDUNGS-BEGINN-AUFTRAG DER BS */
#define OPCODE_STAF 0x18 /* SCHLEIFENTEST-AUFTRAG DER BS */
#define OPCODE_STPQU 0x28 /* SCHLEIFENTEST-POSITIV-QUITTUNG VOM MSC */
#define OPCODE_STNQU 0x29 /* SCHLEIFENTEST-NEGATIV-QUITTUNG VOM MSC */
#define OPCODE_APF 0x1d /* AUTORISIERUNGSPARAMETER */
#define OPCODE_GSTAU 0x2a /* GEBUEHREN-START-AUFTRAG VOM MSC */
#define OPCODE_FAF 0x19 /* FANG-AUFTRAG BS */
#define OPCODE_NAF 0x14 /* NEVATIV-AUFTRAG DER BS */
#define OPCODE_EQU 0x25 /* ENDE-QUITTUNG VOM MSC */
#define OPCODE_AAF 0x16 /* AUSLOESE-AUFTRAG DER BS */
#define OPCODE_AQU 0x27 /* AUSLOESE-QUITTUNG VOM MSC */
#define OPCODE_NAU 0x24 /* NEVATIV-AUFTRAG VOM MSC */
#define OPCODE_EQF 0x15 /* ENDE-QUITTUNG DER BS */
#define OPCODE_AAU 0x26 /* AUSLOESE-AUFTRAG VOM MSC */
#define OPCODE_AQF 0x17 /* AUSLOESE-QUITTUNG DER BS */
#define OPCODE_XADBF 0x86 /* ANFORDERUNG EINES BS-DB-DATENBLOCKES VON DER MSC */
#define OPCODE_XEDBU 0x9b /* BS-DB-TRANSFER-ERGEBNIS-SIGN. VON DER MSC */
#define OPCODE_YAAAU 0xd4 /* ANLAUF-AKTIVIERUNGS-AUFTRAG DER MSC (INITIALISIEREN DER BS) */
#define OPCODE_SWAU 0xe1 /* Wiederanlaufauftrag des MSC */
#define OPCODE_SWQF 0xc1 /* Wiederanlauf-Quittung von der BS */
#define OPCODE_SADAU 0xe4 /* Aktivdatei-Auftrag vom MSC */
#define OPCODE_SADQF 0xc4 /* Aktivdateiquittung der BS */
#define VERSION_LM8 6
struct SysMeld {
uint16_t FUKO;
uint8_t Monat;
uint8_t Tag;
uint8_t Stunde;
uint8_t Minute;
uint8_t Kennzeichen_posthum;
uint16_t Systemmeldungsnr;
uint8_t Indizienlaenge;
uint8_t Indizien[10];
uint8_t ASCII_Typ;
uint8_t Einrichtungstyp;
uint8_t Einrichtungsnr;
uint8_t Zusatzinfo[4];
};
const char *einrichtrungstyp_string(uint8_t T);
void decode_swaf(uint8_t *data, int len, uint8_t *V, uint8_t *N, uint8_t *U, uint8_t *F, uint8_t *C, uint8_t *B);
int encode_swqu(uint8_t *opcode, uint8_t **data, uint8_t A);
void decode_suaf(uint8_t *data, int len, uint8_t *V, uint8_t *N, uint8_t *U, uint8_t *F, uint8_t *C, uint8_t *B);
int encode_suqu(uint8_t *opcode, uint8_t **data, uint8_t Q, uint8_t N, time_t now);
void decode_sssaf(uint8_t *data, int len);
void encode_sssqu(uint8_t *opcode);
void decode_ssaf(uint8_t *data, int len, uint8_t *S);
int encode_ssqu(uint8_t *opcode, uint8_t **data, uint8_t S);
void decode_sfaf(uint8_t *data, int len, uint8_t *S);
int encode_sfqu(uint8_t *opcode, uint8_t **data, uint8_t S);
void decode_svaf(uint8_t *data, int len);
int encode_svqu(uint8_t *opcode, uint8_t **data);
void decode_ylsaf(uint8_t *data, int len);
int encode_ylsmu(uint8_t *opcode, uint8_t **data);
void decode_ylsmf(uint8_t *data, int len, uint8_t *N, uint8_t *C, struct SysMeld *SM);
void decode_ylsef(uint8_t *data, int len);
void decode_stdaf(uint8_t *data, int len);
int encode_xgtau(uint8_t *opcode, uint8_t **data, uint8_t Z, uint32_t T, uint8_t S, uint8_t K, uint16_t CS);
void decode_ebaf(uint8_t *data, int len, uint16_t *T, uint8_t *U, uint8_t *N, uint16_t *s, uint8_t *u, uint8_t *b, uint8_t *l);
int encode_ebpqu(uint8_t *opcode, uint8_t **data);
void decode_abaf(uint8_t *data, int len, uint16_t *T, uint8_t *U, uint8_t *N);
void decode_gvaf(uint8_t *data, int len, uint16_t *T, uint8_t *U, uint8_t *N, char *number);
void decode_gvwaf(uint8_t *data, int len, uint16_t *T, uint8_t *U, uint8_t *N, char *number);
int encode_gvpqu(uint8_t *opcode, uint8_t **data, uint8_t P, uint8_t e);
int encode_gvnqu(uint8_t *opcode, uint8_t **data, uint8_t X, uint8_t Y);
int encode_kvau(uint8_t *opcode, uint8_t **data, uint16_t T, uint8_t U, uint8_t N, uint8_t F, uint8_t e);
void decode_kvwqf(uint8_t __attribute__((unused)) *data, int __attribute__((unused)) len);
void decode_kvbaf(uint8_t __attribute__((unused)) *data, int __attribute__((unused)) len);
void decode_staf(uint8_t *data, int len, uint8_t *Q, uint8_t *V, uint8_t *e, uint64_t *n);
int encode_stpqu(uint8_t *opcode, uint8_t **data, uint8_t Q, uint8_t A, uint8_t K, uint16_t G, uint8_t U, uint8_t X, uint8_t Y, uint8_t mystery);
int encode_stnqu(uint8_t *opcode, uint8_t **data, uint8_t Q);
void decode_apf(uint8_t *data, int len, uint8_t *Q, uint64_t *a);
int encode_gstau(uint8_t *opcode, uint8_t **data, uint8_t Q, uint16_t G, uint8_t U, uint8_t Y, uint8_t A, uint8_t K);
void decode_faf(uint8_t __attribute__((unused)) *data, int __attribute__((unused)) len);
void decode_naf(uint8_t *data, int len, uint8_t *X);
int encode_equ(uint8_t *opcode, uint8_t **data);
void decode_aaf(uint8_t *data, int len, uint8_t *Q, uint8_t *X);
int encode_aqu(uint8_t *opcode, uint8_t **data, uint8_t Q);
int encode_nau(uint8_t *opcode, uint8_t **data, uint8_t X, uint8_t Y);
void decode_eqf(uint8_t *data, int len);
int encode_aau(uint8_t *opcode, uint8_t **data, uint8_t Q, uint8_t X, uint8_t Y);
void decode_aqf(uint8_t *data, int len, uint8_t *Q);
void decode_xadbf(uint8_t *data, int len, uint8_t *PJ, uint16_t *D, uint16_t *L);
int encode_xedbu_1(uint8_t *opcode, uint8_t **data, uint8_t R, uint8_t PJ, uint16_t A);
int encode_xedbu_2(uint8_t *opcode, uint8_t **data, uint8_t S, uint8_t PJ, uint8_t *P);
int encode_xedbu_3(uint8_t *opcode, uint8_t **data, uint8_t S, uint8_t PJ, uint16_t D, uint16_t L, uint32_t CS);
int encode_yaaau(uint8_t *opcode, uint8_t **data, uint8_t J);
int encode_swau(uint8_t *opcode, uint8_t **data, uint8_t V);
void decode_swqf(uint8_t *data, int len, uint8_t *V, uint8_t *N, uint8_t *U, uint8_t *F, uint8_t *C, uint8_t *B);
void encode_sadau(uint8_t *opcode);
int decode_sadqf(uint8_t *data, int len, uint16_t *S, uint8_t *E, uint8_t *l, uint16_t *T, uint8_t *U, uint8_t *N);
|