/* Copyright (C) Magna Carta Software, Inc. 1988, 1989. All Rights Reserved MENUS.C -- Some menus used in C Communications Toolkit examples CCT04.C - CCT14.C. They are placed here in one #include file in order not to clutter the source code of the examples. Each example #includes this file. You may compile it instead, and link it in, if you wish. The menus found here are: The data format menu; The data transfer rate menu; */ #include #include void do_data_menu(COMM_PORT * p_port); long do_speed_menu(COMM_PORT *p_port); char *parity_strings[] = {"NONE","ODD","", "EVEN","", "MARK","", "SPACE"}; /* DO_DATA_MENU -- Show a menu for setting the data format. */ void do_data_menu(COMM_PORT * p_port) { short key, DONE = FALSE; do { puts("\nSET THE DATA FORMAT"); printf("\nFormat: %d Data bits, %s Parity, %d Stopbits\n", p_port->rxdatabits, parity_strings[p_port->parity], p_port->stopbits ); puts("A. Set number of databits"); puts("B. Set number of stopbits"); puts("C. Set parity"); puts("Any other key exits"); key = bios_key(0) & 0XFF; key = toupper(key); switch (key) { case 'A': puts("\nEnter databits (5, 6, 7 or 8): "); key = bios_key(0) & 0XF; set_databits(p_port, key); break; case 'B': puts("\nEnter stopbits (1 or 2): "); key = bios_key(0) & 0XF; set_stopbits(p_port, key); break; case 'C': puts("\nEnter parity ('N' for none, 'E' for even, etc.): "); key = bios_key(0) & 0XFF; key = toupper(key); if (key == 'N') set_parity(p_port, PARITY_NONE); else if (key == 'E') set_parity(p_port, PARITY_EVEN); else if (key == 'O') set_parity(p_port, PARITY_ODD); else if (key == 'M') set_parity(p_port, PARITY_MARK); else if (key == 'S') set_parity(p_port, PARITY_SPACE); else puts("\nNot recognized. Use 'N', 'E', 'O', 'M' or 'S'"); break; default: DONE = TRUE; break; } } while (!DONE); printf("\nFormat now : %d Data bits, %s Parity, %d Stopbits\n", p_port->rxdatabits, parity_strings[p_port->parity], p_port->stopbits ); } /* DO_SPEED_MENU -- Show a menu for setting the data tranfer rate. */ long do_speed_menu(COMM_PORT *p_port) { short key; long ret; do { puts("\nSET THE DATA TRANSFER SPEED"); printf("\nSpeed: %ld bits-per-second\n", p_port->speed); puts("A. Data transfer rate 50 bits-per-second"); puts("B. Data transfer rate 75 bits-per-second"); puts("C. Data transfer rate 110 bits-per-second"); puts("D. Data transfer rate 134.5 bits-per-second"); puts("E. Data transfer rate 150 bits-per-second"); puts("F. Data transfer rate 300 bits-per-second"); puts("G. Data transfer rate 600 bits-per-second"); puts("H. Data transfer rate 1200 bits-per-second"); puts("I. Data transfer rate 2400 bits-per-second"); puts("J. Data transfer rate 4800 bits-per-second"); puts("K. Data transfer rate 9600 bits-per-second"); puts("L. Data transfer rate 19200 bits-per-second"); puts("M. Data transfer rate 38400 bits-per-second"); puts("N. Data transfer rate 57600 bits-per-second"); puts("O. Data transfer rate 115200 bits-per-second"); printf("\n\tNew data transfer rate: "); fflush(stdout); key = bios_key(0) & 0XFF; key = toupper(key); } while (key < 'A' || key > 'O'); switch (key) { case 'A': ret = 50; break; case 'B': ret = 75; break; case 'C': ret = 110; break; case 'D': puts("\nSorry, that data transfer rate not supported"); ret = EOF; break; case 'E': ret = 150; break; case 'F': ret = 300; break; case 'G': ret = 600; break; case 'H': ret = 1200; break; case 'I': ret = 2400; break; case 'J': ret = 4800; break; case 'K': ret = 9600; break; case 'L': ret = 19200; break; case 'M': ret = 38400L; break; case 'N': ret = 57600L; break; case 'O': ret = 115200L; break; default: ret = EOF; } if (ret != EOF) { set_speed(p_port, ret); printf("\nSpeed now set to: %ld bits-per-second", p_port->speed); } return ((long) ret); }