X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=src%2Fexamples%2Fcptwiddle.c;fp=src%2Fexamples%2Fcptwiddle.c;h=5e144eb3d43dc04e2c8c99de8752e57bc55c4227;hb=6000a45218d62d5e28a5b6c5150bdd2b84b84a01;hp=54171752fe318f3d5585e41512925a38f2a32d2b;hpb=3c0ea1205a69103a17f39f9b0a96d99207fe0451;p=cp210x.git diff --git a/src/examples/cptwiddle.c b/src/examples/cptwiddle.c index 5417175..5e144eb 100644 --- a/src/examples/cptwiddle.c +++ b/src/examples/cptwiddle.c @@ -10,52 +10,21 @@ * - Twiddles the LEDs * - Restores the original configuration * - Resets the device again so that the original config is immediately active - * - * Watch out; the tty device is hard-coded. */ +#include +#include #include #include #include #include #include #include -#include - -/* 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? */ - - -typedef struct { - uint16_t mode; - uint16_t lowPower; - uint16_t latch; -} cp2103_port_state_t; - -typedef struct { - cp2103_port_state_t reset; - cp2103_port_state_t suspend; - uint8_t enhancedFxn; -} cp2103_port_config_t; +#include +#include int cpConnect(char* device) { - int ret, ioval; int fd = open(device, O_RDWR); if (fd < 0) { fprintf(stderr, "cannot open tty\n"); @@ -74,8 +43,8 @@ void cpDisconnect(int fd) int main(int argc, char* argv[]) { int fd; - cp2103_port_config_t config; - cp2103_port_config_t saveConfig; + struct cp210x_port_config config; + struct cp210x_port_config saveConfig; uint8_t saveGpio; int ret; int i; @@ -90,7 +59,7 @@ int main(int argc, char* argv[]) return 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; } @@ -98,7 +67,7 @@ int main(int argc, char* argv[]) printf("port config received\n"); /* Read the current gpio latches */ - if ((ret = ioctl(fd, IOCTL_GPIOGET, &saveGpio))) { + if ((ret = ioctl(fd, CP210x_IOCTL_GPIOGET, &saveGpio))) { fprintf(stderr, "gpioget ioctl failed %d\n", ret); return 1; } @@ -109,14 +78,14 @@ int main(int argc, char* argv[]) config.suspend.mode &= ~0x0300; config.reset.latch |= 0x0300; config.enhancedFxn &= ~0x03; - if ((ret = ioctl(fd, IOCTL_PORTCONFSET, &config))) { + if ((ret = ioctl(fd, CP210x_IOCTL_PORTCONFSET, &config))) { fprintf(stderr, "portconfset ioctl failed %d\n", ret); return 1; } printf("port config altered\n"); /* Reset the part */ - if ((ret = ioctl(fd, IOCTL_DEVICERESET, 0))) { + if ((ret = ioctl(fd, CP210x_IOCTL_DEVICERESET, 0))) { fprintf(stderr, "device reset ioctl failed %d\n", ret); return 1; } @@ -139,7 +108,7 @@ int main(int argc, char* argv[]) /* Now, twiddle some bits */ for (i = 0; i < 8; i++) { uint8_t leds = i & 0x03; - if ((ret = ioctl(fd, IOCTL_GPIOSET, leds))) { + if ((ret = ioctl(fd, CP210x_IOCTL_GPIOSET, leds))) { fprintf(stderr, "gpio set ioctl failed %d\n", ret); return 1; } @@ -148,21 +117,21 @@ int main(int argc, char* argv[]) } /* Restore the original latches */ - if ((ret = ioctl(fd, IOCTL_GPIOSET, saveGpio))) { + if ((ret = ioctl(fd, CP210x_IOCTL_GPIOSET, saveGpio))) { fprintf(stderr, "gpio set ioctl failed %d\n", ret); return 1; } printf("gpio latches restored\n"); /* Return the original configuration */ - if ((ret = ioctl(fd, IOCTL_PORTCONFSET, &saveConfig))) { + if ((ret = ioctl(fd, CP210x_IOCTL_PORTCONFSET, &saveConfig))) { fprintf(stderr, "portconfset ioctl failed %d\n", ret); return 1; } printf("port config restored\n"); /* Reset the part again */ - if ((ret = ioctl(fd, IOCTL_DEVICERESET, 0))) { + if ((ret = ioctl(fd, CP210x_IOCTL_DEVICERESET, 0))) { fprintf(stderr, "device reset ioctl failed %d\n", ret); return 1; }