Compare commits
1 Commits
79859f2d9d
...
99c2fb28bb
Author | SHA1 | Date | |
---|---|---|---|
|
99c2fb28bb |
4
Makefile
4
Makefile
@ -10,7 +10,9 @@ OBJ_DIR = obj
|
|||||||
BIN_DIR = bin
|
BIN_DIR = bin
|
||||||
|
|
||||||
INCLUDES := inc
|
INCLUDES := inc
|
||||||
|
LIBS := ftdi
|
||||||
|
|
||||||
|
LD_FLAGS :=
|
||||||
C_FLAGS := -O0 -g
|
C_FLAGS := -O0 -g
|
||||||
CPP_FLAGS := $(addprefix -I, $(INCLUDES))
|
CPP_FLAGS := $(addprefix -I, $(INCLUDES))
|
||||||
|
|
||||||
@ -27,7 +29,7 @@ all: $(TARGET)
|
|||||||
|
|
||||||
$(TARGET): $(OBJS) $(THIS_MAKEFILE)
|
$(TARGET): $(OBJS) $(THIS_MAKEFILE)
|
||||||
@mkdir -p $(BIN_DIR)
|
@mkdir -p $(BIN_DIR)
|
||||||
$(CC) $(LD_FLAGS) $(OBJS) $(LIBS) -o $@
|
$(CC) $(C_FLAGS) $(LD_FLAGS) $(OBJS) $(addprefix -l,$(LIBS)) -o $@
|
||||||
|
|
||||||
.PRECIOUS: $(OBJ_DIR)/%.d
|
.PRECIOUS: $(OBJ_DIR)/%.d
|
||||||
$(OBJ_DIR)/%.d: $(SRC_DIR)/%.c
|
$(OBJ_DIR)/%.d: $(SRC_DIR)/%.c
|
||||||
|
52
src/main.c
52
src/main.c
@ -1,10 +1,56 @@
|
|||||||
#include <stdio.h>
|
#include <syslog.h>
|
||||||
|
#include <ftdi.h>
|
||||||
|
|
||||||
#include <def.h>
|
#include <def.h>
|
||||||
|
|
||||||
|
#define LED 0x08
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
printf("%s\n", HELLO);
|
struct ftdi_context *ftdi;
|
||||||
|
int f, retval, cnt;
|
||||||
|
unsigned char buf[1];
|
||||||
|
|
||||||
return 0;
|
openlog("ftdi_gpio", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
|
||||||
|
setlogmask(LOG_DEBUG);
|
||||||
|
|
||||||
|
if ((ftdi = ftdi_new()) == 0) {
|
||||||
|
syslog(LOG_ERR, "ftdi_new failed\n");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
f = ftdi_usb_open(ftdi, 0x0403, 0x6001);
|
||||||
|
|
||||||
|
if (f < 0 && f != -5) {
|
||||||
|
syslog(LOG_ERR, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(ftdi));
|
||||||
|
retval = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
f = ftdi_set_bitmode(ftdi, LED, BITMODE_BITBANG);
|
||||||
|
if(f < 0) {
|
||||||
|
syslog(LOG_ERR, "unable to set bit bang mode: %d (%s)\n", f, ftdi_get_error_string(ftdi));
|
||||||
|
retval = 1;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf[0] = 0;
|
||||||
|
for(cnt = 0; cnt < 10; cnt++) {
|
||||||
|
buf[0] ^= LED,
|
||||||
|
f = ftdi_write_data(ftdi, buf, 1);
|
||||||
|
if(f < 0) {
|
||||||
|
syslog(LOG_ERR, "write failed for 0x%x, error %d (%s)\n",buf[0], f, ftdi_get_error_string(ftdi));
|
||||||
|
cnt = 10;
|
||||||
|
} else {
|
||||||
|
syslog(LOG_DEBUG, "set LED to: %u\n", (unsigned int)buf[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ftdi_usb_close(ftdi);
|
||||||
|
done:
|
||||||
|
ftdi_free(ftdi);
|
||||||
|
closelog();
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user