removed some functions in the C library
[unix-history] / usr / src / usr.bin / tn3270 / api / test.c
CommitLineData
f6e43951
KB
1/*
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that this notice is preserved and that due credit is given
7 * to the University of California at Berkeley. The name of the University
8 * may not be used to endorse or promote products derived from this
9 * software without specific prior written permission. This software
10 * is provided ``as is'' without express or implied warranty.
11 */
12
13#ifndef lint
14char copyright[] =
15"@(#) Copyright (c) 1988 Regents of the University of California.\n\
16 All rights reserved.\n";
17#endif /* not lint */
18
19#ifndef lint
20static char sccsid[] = "@(#)test.c 1.6 (Berkeley) %G%";
21#endif /* not lint */
22
f81b28ad 23#include <stdio.h>
87f7c3b6 24
e99f17a9
GM
25#include "../api/api.h"
26#include "apilib.h"
27#include "../ctlr/oia.h"
28
7a0874c9
GM
29static char mybuffer[2000];
30
e99f17a9
GM
31api_perror(string)
32char *string;
33{
34 fprintf(stderr, "Error: [0x%x/0x%x:0x%x/0x%x] from %s.\n",
35 api_sup_fcn_id, api_sup_errno,
36 api_fcn_fcn_id, api_fcn_errno, string);
37}
38
39
40char *
41session_type(type)
42int type;
43{
44 switch (type) {
45 case TYPE_WSCTL:
46 return "work station control";
47 case TYPE_DFT:
48 return "distributed function terminal";
49 case TYPE_CUT:
50 return "control unit terminal";
51 case TYPE_NOTEPAD:
52 return "notepad";
53 case TYPE_PC:
54 return "personal computer";
55 default:
56 return "(UNKNOWN)";
57 }
58}
59
60
87f7c3b6
GM
61main()
62{
7a0874c9 63 register int i;
e99f17a9
GM
64 int session_id;
65 OIA oia;
66 QuerySessionIdParms id;
67 QuerySessionParametersParms pa;
68 QuerySessionCursorParms cu;
69 ConnectToKeyboardParms conn;
70 DisconnectFromKeyboardParms disc;
71 WriteKeystrokeParms wr;
72 DisableInputParms disable;
73 EnableInputParms enable;
74 CopyStringParms copy;
75 ReadOiaGroupParms re;
76 NameArray namearray;
87f7c3b6 77
f81b28ad
GM
78 if (api_init() == 0) {
79 fprintf(stderr, "API function not available.\n");
80 return 1;
81 }
82
e99f17a9
GM
83 id.rc = 0;
84 id.function_id = 0;
85 id.option_code = ID_OPTION_BY_NAME;
86 id.data_code = 'E';
87 id.name_array = &namearray;
88 namearray.length = sizeof namearray;
89 if (api_query_session_id(&id)) {
90 api_perror("api_query_session_id");
91 } else if (namearray.number_matching_session == 0) {
92 fprintf(stderr, "query_session_id: No matching sessions!\n");
87f7c3b6 93 } else {
e99f17a9
GM
94 printf("Session short name 0x%x, type is ",
95 namearray.name_array_element.short_name);
96 printf("%s", session_type(namearray.name_array_element.type));
97 printf(", session ID is: 0x%x\n",
98 namearray.name_array_element.session_id);
87f7c3b6 99 }
e99f17a9
GM
100 session_id = namearray.name_array_element.session_id;
101
102 pa.rc = pa.function_id = 0;
103 pa.session_id = session_id;
104 if (api_query_session_parameters(&pa) == -1) {
105 api_perror("api_query_session_parameters");
87f7c3b6 106 } else {
e99f17a9
GM
107 printf("Session type %s, ", session_type(pa.session_type));
108 if (pa.session_characteristics&CHARACTERISTIC_EAB) {
109 printf(" has EAB, ");
110 }
111 if (pa.session_characteristics&CHARACTERISTIC_PSS) {
112 printf(" has PSS, ");
113 }
114 printf("%d rows, %d columns ", pa.rows, pa.columns);
115 if (pa.presentation_space) {
116 printf("presentation space at 0x%x:0x%x.\n",
117 FP_SEG(pa.presentation_space), FP_OFF(pa.presentation_space));
118 } else {
119 printf("(no direct presentation space access).\n");
120 }
87f7c3b6 121 }
e99f17a9
GM
122
123 cu.rc = cu.function_id = 0;
124 cu.session_id = session_id;
125 if (api_query_session_cursor(&cu) == -1) {
126 api_perror("api_query_session_cursor");
87f7c3b6 127 } else {
e99f17a9
GM
128 printf("cursor");
129 if (cu.cursor_type&CURSOR_INHIBITED_AUTOSCROLL) {
130 printf(" inhibited autoscroll");
131 }
132 if (cu.cursor_type&CURSOR_INHIBITED) {
133 printf(" inhibited");
134 }
135 if (cu.cursor_type&CURSOR_BLINKING) {
136 printf(" blinking");
137 } else {
138 printf(" not blinking");
139 }
140 if (cu.cursor_type&CURSOR_BOX) {
141 printf(" box ");
142 } else {
143 printf(" not box ");
144 }
145 printf("at row %d, column %d.\n", cu.row_address, cu.column_address);
87f7c3b6 146 }
e99f17a9
GM
147
148 re.rc = re.function_id = 0;
149 re.session_id = session_id;
150 re.oia_buffer = (char far *) &oia;
151 re.oia_group_number = API_OIA_ALL_GROUPS;
152 if (api_read_oia_group(&re) == -1) {
153 api_perror("api_read_oia_group");
87f7c3b6 154 } else {
e99f17a9
GM
155 if (IsOiaReady3274(&oia)) {
156 printf("3274 ready, ");
157 }
158 if (IsOiaMyJob(&oia)) {
159 printf("my job, ");
160 }
161 if (IsOiaInsert(&oia)) {
162 printf("insert mode, ");
163 }
164 if (IsOiaSystemLocked(&oia)) {
165 printf("system locked, ");
166 }
167 if (IsOiaTWait(&oia)) {
168 printf("terminal wait, ");
169 }
170 printf("are some bits from the OIA.\n");
87f7c3b6 171 }
e99f17a9
GM
172
173 conn.rc = conn.function_id = 0;
174 conn.session_id = session_id;
175 conn.event_queue_id = conn.input_queue_id = 0;
176 conn.intercept_options = 0;
177 if (api_connect_to_keyboard(&conn) == -1) {
178 api_perror("api_connect_to_keyboard");
179 } else {
180 if (conn.first_connection_identifier) {
181 printf("First keyboard connection.\n");
182 } else {
183 printf("Not first keyboard connection.\n");
184 }
185 }
186
187 disable.rc = disable.function_id = 0;
188 disable.session_id = session_id;
189 disable.connectors_task_id = 0;
190 if (api_disable_input(&disable) == -1) {
191 api_perror("api_disable_input");
192 } else {
193 printf("Disabled.\n");
194 }
195
196 wr.rc = wr.function_id = 0;
197 wr.session_id = session_id;
198 wr.connectors_task_id = 0;
199 wr.options = OPTION_SINGLE_KEYSTROKE;
200 wr.number_of_keys_sent = 0;
201 wr.keystroke_specifier.keystroke_entry.scancode = 0x3a;
202 wr.keystroke_specifier.keystroke_entry.shift_state = 0;
203 if (api_write_keystroke(&wr) == -1) {
204 api_perror("api_write_keystroke");
205 } else {
206 if (wr.number_of_keys_sent != 1) {
207 fprintf(stderr,
208 "write_keystroke claims to have sent %d keystrokes.\n",
209 wr.number_of_keys_sent);
210 } else {
211 printf("Keystroke sent.\n");
212 }
213 }
214
215 enable.rc = enable.function_id = 0;
216 enable.session_id = session_id;
217 enable.connectors_task_id = 0;
218 if (api_enable_input(&enable) == -1) {
219 api_perror("api_enable");
220 } else {
221 printf("Enabled.\n");
222 }
223
224 disc.rc = disc.function_id = 0;
225 disc.session_id = session_id;
226 disc.connectors_task_id = 0;
227 if (api_disconnect_from_keyboard(&disc) == -1) {
228 api_perror("api_disconnect_from_keyboard");
229 } else {
230 printf("Disconnected from keyboard.\n");
231 }
7a0874c9
GM
232 /* Time copy services */
233
234 for (i = 0; i < 100; i++) {
235 copy.copy_mode = 0;
236 copy.rc = copy.function_id = 0;
237 copy.source.session_id = session_id;
238 copy.source.characteristics = 0;
239 copy.source.session_type = TYPE_DFT;
240 copy.source.begin = 0;
241
242 copy.source_end = 1920;
243
244 copy.target.session_id = 0;
245 copy.target.buffer = mybuffer;
246 copy.target.characteristics = 0;
247 copy.target.session_type = TYPE_DFT;
248
249 if (api_copy_string(&copy) == -1) {
250 api_perror("api_copy_string");
251 break;
252 }
253 }
254 printf("Copied data out.\n");
e99f17a9 255
d024bcc4
GM
256 (void) api_finish();
257
e99f17a9 258 return 0;
87f7c3b6 259}