Exemple #1
0
unsigned char get_led_state ()
{
    unsigned char buf;

    if (!ftdi_ok)
        return 0;
    if (ftdi_read_pins (&ctx, &buf) < 0) {
        init_hw ();
        if (ftdi_ok)
            ftdi_read_pins (&ctx, &buf);
    }

    return buf;
}
Exemple #2
0
cell ft_getbits(cell ops)
{
	unsigned char bits;
	ft_handle handle = (ft_handle)((com_ops_t *)ops)->handle;
	ft_errno = ftdi_read_pins(handle, &bits);
	return ft_errno ? ft_errno : bits;
}
Exemple #3
0
int 
readPins()
{
	int             pins;
	ret = ftdi_read_pins(&ftdic, bits);
	/*
		Bits will be returned as 0xF ?.Subtract off 0xF0 to get it to a 0 - F number.
		Subtract that from 15 to get a 1 - 15 number where 1 is on and 0 is off for each
		of the pins
	*/
	pins = (int) (0xF - (bits[0] - 0xF0));
	switch (pins) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 9:
	case 11:
	case 13:
	case 15:
		printf("LED 1: On\n");
		break;
	default:
		printf("LED 1: Off\n");
	}
	switch (pins) {
	case 2:
	case 3:
	case 6:
	case 7:
	case 10:
	case 11:
	case 14:
	case 15:
		printf("LED 2: On\n");
		break;
	default:
		printf("LED 2: Off\n");
	}
	switch (pins) {
	case 4:
	case 5:
	case 6:
	case 7:
	case 12:
	case 13:
	case 14:
	case 15:
		printf("LED 3: On\n");
		break;
	default:
		printf("LED 3: Off\n");
	}
	if (pins >= 8) {
		printf("LED 4: On\n");
	} else {
		printf("LED 4: Off\n");
	}
	return pins;
}
Exemple #4
0
int modem_is_on(struct ftdi_context *ftdic) {
	unsigned char data;
	int ret;

	ret = ftdi_read_pins(ftdic, &data);
	if (ret < 0)
		return -1;

	return data & CBUS_0_IN_MASK;
}
Exemple #5
0
uint8_t swdptap_bit_in(void) 
{
	uint8_t ret;

	//ftdi_read_data(ftdic, &ret, 1);
	ftdi_read_pins(ftdic, &ret);
	ret &= 0x08;
	ftdi_write_data(ftdic, "\xA1\xA0", 2);

	//DEBUG("%d", ret?1:0);

	return ret;
}
Exemple #6
0
int main(void)
{
    struct ftdi_context ftdic;
    int f;
    unsigned char buf[1];
    unsigned char bitmask;
    unsigned char input[10];

    if (ftdi_init(&ftdic) < 0)
    {
        fprintf(stderr, "ftdi_init failed\n");
        return EXIT_FAILURE;
    }

    f = ftdi_usb_open(&ftdic, 0x0403, 0x6001);
    if (f < 0 && f != -5)
    {
        fprintf(stderr, "unable to open ftdi device: %d (%s)\n", f, ftdi_get_error_string(&ftdic));
        exit(-1);
    }
    printf("ftdi open succeeded: %d\n",f);

    while (1)
    {
        // Set bitmask from input
        fgets(input, sizeof(input) - 1, stdin);
        if (input[0] == '\n') break;
        bitmask = strtol(input, NULL, 0);
        printf("Using bitmask 0x%02x\n", bitmask);
        f = ftdi_set_bitmode(&ftdic, bitmask, BITMODE_CBUS);
        if (f < 0)
        {
            fprintf(stderr, "set_bitmode failed for 0x%x, error %d (%s)\n", bitmask, f, ftdi_get_error_string(&ftdic));
            exit(-1);
        }

        // read CBUS
        f = ftdi_read_pins(&ftdic, &buf[0]);
        if (f < 0)
        {
            fprintf(stderr, "read_pins failed, error %d (%s)\n", f, ftdi_get_error_string(&ftdic));
            exit(-1);
        }
        printf("Read returned 0x%01x\n", buf[0] & 0x0f);
    }
    printf("disabling bitbang mode\n");
    ftdi_disable_bitbang(&ftdic);

    ftdi_usb_close(&ftdic);
    ftdi_deinit(&ftdic);
}
Exemple #7
0
void initBoard(char *serial) {
	//Init FTDI communication
	ftdi_init(&ftdic);
	if (0) {
		//Open
			ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001);
	} else {
		//Open via serial number, to be implemented later.
			ret = ftdi_usb_open_desc(&ftdic, 0x0403, 0x6001, NULL, serial);
	}
	ret = ftdi_read_pins(&ftdic, bits);
	//Board has just been plugged in or power lost
		if (bits[0] == 0xFF) {
		//Prevents 0xFF from flipping all switches on
			//ftdi_enable_bitbang(&ftdic, 0xF0);
			ftdi_set_bitmode(&ftdic, 0xF0, BITMODE_BITBANG);	
			setPins(0);
		}
	ftdi_set_bitmode(&ftdic, 0xFF, BITMODE_BITBANG);
	//ftdi_enable_bitbang(&ftdic, 0xFF);
}
Exemple #8
0
int Context::read_pins(unsigned char *pins)
{
    return ftdi_read_pins(d->ftdi, pins);
}