diff options
Diffstat (limited to 'liboctopus/octopus.h')
-rw-r--r-- | liboctopus/octopus.h | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/liboctopus/octopus.h b/liboctopus/octopus.h new file mode 100644 index 0000000..b123335 --- /dev/null +++ b/liboctopus/octopus.h @@ -0,0 +1,141 @@ +/*************************************************************************** + octopus.h - description + ------------------- + begin : Fri Apr 1 2007 + copyright : (C) 2007 by Embedded Projects + email : sauter@embedded-projects.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Lesser General Public License * + * version 2.1 as published by the Free Software Foundation; * + * * + ***************************************************************************/ + +#ifndef __liboctopus_h__ +#define __liboctopus_h__ + +#include <usb.h> + + +#define VID 0x1781 +#define PID 0x0c65 + +/** + \brief Main context structure for all liboctopus functions. + + Do not access directly if possible. +*/ +struct octopus_context { + // USB specific + /// libusb's usb_dev_handle + struct usb_dev_handle *usb_handle; + + /// String representation of last error + char *error_str; +}; + +/** + \brief list of usb devices created by octopus_usb_find_all() +*/ +struct octopus_device_list { + /// pointer to next entry + struct octopus_device_list *next; + /// pointer to libusb's usb_device + struct usb_device *dev; +}; + +#ifdef __cplusplus +extern "C" { +#endif + + int octopus_init(struct octopus_context *octopus); + + int octopus_open(struct octopus_context *octopus); + int octopus_open_id(struct octopus_context *octopus, int vendor, int product); + int octopus_open_serial(struct octopus_context *octopus, char * serial); + + int octopus_open_dev(struct octopus_context *octopus, struct usb_device *dev); + + int octopus_close(struct octopus_context *octopus); + + int octopus_message(struct octopus_context *octopus, char *msg, + int msglen, char *answer, int answerlen); + + char * octopus_get_hwdesc(struct octopus_context *octopus, char *desc); + + /// part: IO + + int octopus_io_init(struct octopus_context *octopus, int pin); + int octopus_io_init_port(struct octopus_context *octopus, int port); + + int octopus_io_set_port_direction_out(struct octopus_context *octopus, + int port,unsigned char mask); + int octopus_io_set_port_direction_in(struct octopus_context *octopus, + int port, unsigned char mask); + int octopus_io_set_port_direction_tri(struct octopus_context *octopus, + int port, unsigned char mask); + + int octopus_io_set_pin_direction_out(struct octopus_context *octopus, int pin); + int octopus_io_set_pin_direction_in(struct octopus_context *octopus, int pin); + //int octopus_io_set_pin_direction_in_pullup(struct octopus_context *octopus, int pin); + int octopus_io_set_pin_direction_tri(struct octopus_context *octopus, int pin); + + unsigned char octopus_io_get_port(struct octopus_context *octopus, int port); + + int octopus_io_set_port(struct octopus_context *octopus, int port, unsigned char value); + + int octopus_io_set_pin(struct octopus_context *octopus, int pin, int value); //buffered + + int octopus_io_get_pin(struct octopus_context *octopus, int pin); + + /// part: adc + + int octopus_adc_init(struct octopus_context *octopus, int pin); + int octopus_adc_get(struct octopus_context *octopus, int pin); + int octopus_adc_ref(struct octopus_context *octopus, int ref); + // 1= extern AREF, 2 = AVCC as reference, 3=intern voltage + + + /// part: I2C + int octopus_i2c_init(struct octopus_context *octopus); + int octopus_i2c_deinit(struct octopus_context *octopus); + + int octopus_i2c_set_bitrate(struct octopus_context *octopus, int bitrate); + int octopus_i2c_send_byte(struct octopus_context *octopus, char data); + int octopus_i2c_send_bytes(struct octopus_context *octopus, char *buf, int len); + unsigned char octopus_i2c_receive_byte(struct octopus_context *octopus, int address,int timeout); + int octopus_i2c_receive_bytes(struct octopus_context *octopus, int address,char *buf, int len, int timeout); + + int octopus_i2c_send_start(struct octopus_context *octopus); + int octopus_i2c_send_stop(struct octopus_context *octopus); + + /// part: SPI + int octopus_spi_init(struct octopus_context *octopus); + int octopus_spi_deinit(struct octopus_context *octopus); + + int octopus_spi_speed(struct octopus_context *octopus, int speed); + int octopus_spi_send(struct octopus_context *octopus, unsigned char * buf, int length); + int octopus_spi_recv(struct octopus_context *octopus, unsigned char * buf, int length); + int octopus_spi_send_and_recv(struct octopus_context *octopus, unsigned char * buf, int length); + + /// part: Flash 93c46 + int octopus_93c46_init(struct octopus_context *octopus); + int octopus_93c46_deinit(struct octopus_context *octopus); + + int octopus_93c46_read(struct octopus_context *octopus, unsigned char address, int length, unsigned char * buf); + int octopus_93c46_write(struct octopus_context *octopus, unsigned char address, int length, unsigned char * buf); + + /// part: PWM + int octopus_pwm_init(struct octopus_context *octopus, int pin); + int octopus_pwm_deinit(struct octopus_context *octopus, int pin); + int octopus_pwm_speed(struct octopus_context *octopus, int pin, int speed); + int octopus_pwm_value(struct octopus_context *octopus, int pin, unsigned char value); + +#ifdef __cplusplus +} +#endif + +#endif /* __liboctopus_h__ */ |