X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=src%2Fexamples%2Fcpread.c;fp=src%2Fexamples%2Fcpread.c;h=cac0b2f13a250eba8e5a21e536fdf3b809f94f80;hb=6000a45218d62d5e28a5b6c5150bdd2b84b84a01;hp=f5a5d8a1442f8679bd72ba4b850f5c1b9f5e5de5;hpb=3c0ea1205a69103a17f39f9b0a96d99207fe0451;p=cp210x.git diff --git a/src/examples/cpread.c b/src/examples/cpread.c index f5a5d8a..cac0b2f 100644 --- a/src/examples/cpread.c +++ b/src/examples/cpread.c @@ -4,68 +4,19 @@ * Read the configuration of a cp2103-equipped device. */ +#include #include #include #include +#include #include #include #include -#include - -#define VID 0x10c4 -#define PID 0xea60 - -/* CP2103 ioctls */ -#define IOCTL_GPIOGET 0x8000 /* Get gpio bits */ -#define IOCTL_GPIOSET 0x8001 /* Set gpio bits */ -#define IOCTL_GPIOBIC 0x8002 /* Clear specific gpio bit(s) */ -#define IOCTL_GPIOBIS 0x8003 /* Set specific gpio bit(s) */ - -/* CP210x ioctls principally used during initial device configuration */ -#define IOCTL_DEVICERESET 0x8004 /* Reset the cp210x */ -#define IOCTL_PORTCONFGET 0x8005 /* Get port configuration */ -#define IOCTL_PORTCONFSET 0x8006 /* Set port configuration */ -#define IOCTL_SETVID 0x8007 /* Set vendor id */ -#define IOCTL_SETPID 0x8008 /* Set product id */ -#define IOCTL_SETMFG 0x8009 /* Set manufacturer string */ -#define IOCTL_SETPRODUCT 0x800a /* Set product string */ -#define IOCTL_SETSERIAL 0x800b /* Set serial number string */ -#define IOCTL_SETDEVVER 0x800c /* set device version id */ -/* FIXME: where is IOCTL_SETMFG? */ - -/* CP2103 GPIO */ -#define GPIO_0 0x01 -#define GPIO_1 0x02 -#define GPIO_2 0x04 -#define GPIO_3 0x08 -#define GPIO_MASK (GPIO_0|GPIO_1|GPIO_2|GPIO_3) - -/* Port config definitions */ -typedef struct { - uint16_t mode; /* Push-pull = 1, Open-drain = 0 */ - uint16_t lowPower; - uint16_t latch; /* Logic high = 1, Logic low = 0 */ -} cp2101_port_state_t; - -typedef struct { - cp2101_port_state_t reset; - cp2101_port_state_t suspend; - uint8_t enhancedFxn; -} cp2101_port_config_t; - -#define PORT_CONFIG_LEN 13 /* Because sizeof() will pad to full words */ - -/* Used to pass variable sized buffers between user and kernel space (ioctls) */ -typedef struct { - char* buf; - size_t len; -} cp210x_buffer_t; - -void exit(int); +#include +#include int cpConnect(char* device) { - int ret, ioval; int fd = open(device, O_RDWR); if (fd < 0) { fprintf(stderr, "cannot open %s\n", device); @@ -81,13 +32,13 @@ void cpDisconnect(int fd) close(fd); } -void printState(cp2101_port_state_t* state) +void printState(struct cp210x_port_state* state) { printf("m:0x%02x lp:0x%02x l:0x%02x", state->mode, state->lowPower, state->latch); } -void printConfig(cp2101_port_config_t* config) +void printConfig(struct cp210x_port_config* config) { printf("config: reset: "); printState(&config->reset); printf("\nconfig: suspend: "); printState(&config->reset); @@ -99,7 +50,7 @@ void cpReset(int fd) int ret; /* Reset the part */ - if ((ret = ioctl(fd, IOCTL_DEVICERESET, 0))) { + if ((ret = ioctl(fd, CP210x_IOCTL_DEVICERESET, 0))) { fprintf(stderr, "device reset ioctl %d\n", ret); exit(1); } @@ -107,7 +58,7 @@ void cpReset(int fd) int main(int argc, char* argv[]) { - cp2101_port_config_t config; + struct cp210x_port_config config; uint8_t gpio = 0xff; int ret; int fd; @@ -120,13 +71,13 @@ int main(int argc, char* argv[]) fd = cpConnect(argv[1]); /* Read the current port configuration */ - if ((ret = ioctl(fd, IOCTL_PORTCONFGET, &config))) { + if ((ret = ioctl(fd, CP210x_IOCTL_PORTCONFGET, &config))) { fprintf(stderr, "portconfget ioctl failed %d\n", ret); return 1; } /* Read the current gpio latches */ - if ((ret = ioctl(fd, IOCTL_GPIOGET, &gpio))) { + if ((ret = ioctl(fd, CP210x_IOCTL_GPIOGET, &gpio))) { fprintf(stderr, "gpioget ioctl failed %d\n", ret); return 1; }