This is chbaud.m in view mode; [Download] [Up]
/* * A program that communicates with myTestDriver. */ #import <driverkit/IODeviceMaster.h> #import <driverkit/IODevice.h> #import <mach/mach.h> #import <libc.h> #import "HayesESP.h" int prescale[4] = {1, 2, 4, 8}; void arg_error() { printf("usage: chbaud [n]\n"); printf("args: n Set baud rate multiplier\n"); printf(" 0 - baud rate x1\n"); printf(" 1 - baud rate x2\n"); printf(" 2 - baud rate x4\n"); printf(" 3 - baud rate x8\n"); exit(-1); } void main(int argc, char *argv[]) { IOReturn ret; IOObjectNumber tag; IOString kind; IOIntParameter value; unsigned int count = IO_MAX_PARAMETER_ARRAY_LENGTH, unit = 0; char name[80]; IODeviceMaster *devMaster; /* Look up the test driver, using IODeviceMaster. */ devMaster = [IODeviceMaster new]; sprintf(name, "%s%d", my_DEVICE_NAME, unit); ret = [devMaster lookUpByDeviceName:name objectNumber:&tag deviceKind:&kind]; if (ret != IO_R_SUCCESS) { /* handle the error */ fprintf(stderr, "Lookup failed: %s\n", [IODevice stringFromReturn:ret]); exit(-1); } /* Get the value of the test driver's parameter. */ ret = [devMaster getIntValues:value forParameter:get_PARAMETER_NAME objectNumber:tag count:&count]; if (ret != IO_R_SUCCESS) { /* handle the error */ fprintf(stderr, "Failed to get parameter value: %s\n", [IODevice stringFromReturn:ret]); exit(-1); } if (argc > 2) { arg_error(); } if (argc == 1) { printf("Hayes ESP baud rate x%d\n", prescale[value[0]]); exit(0); } value[0] = atoi(argv[1]) % 4; /* Set the value of the test driver's parameter. */ ret = [devMaster setIntValues:value forParameter:set_PARAMETER_NAME objectNumber:tag count:count]; if (ret != IO_R_SUCCESS) { /* handle the error */ fprintf(stderr, "Failed to set parameter value: %s\n", [IODevice stringFromReturn:ret]); exit(-1); } printf("Hayes ESP baud rate x%d\n", prescale[value[0]]); exit(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.