0a8bcf75da23ad14cf7bb2bdacf70dc4959fbd4a
[slipway.git] / src / com / ftdi / usb / ftdi.i
1 %module example
2 %{
3 #include "ftdi.h"
4 %}
5
6 %include<typemaps.i>
7 %include<arrays_java.i>
8
9 %inline %{
10 #include "ftdi.h"
11 struct ftdi_context *new_ftdi_context() {
12   return (struct ftdi_context*)malloc(sizeof(struct ftdi_context));
13 }
14 struct ftdi_eeprom *new_ftdi_eeprom() {
15   return (struct ftdi_eeprom*)malloc(sizeof(struct ftdi_eeprom));
16 }
17
18 %}
19
20
21 %exception ftdi_init {
22   $action
23   if (result) {
24     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
25     (*jenv)->ThrowNew(jenv, clazz, "ftdi_init() returned nonzero result");
26     return $null;
27   }
28 }
29 int ftdi_init(struct ftdi_context *ftdi);
30
31 %exception ftdi_read_data {
32   $action
33   if (result<0) {
34     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
35     (*jenv)->ThrowNew(jenv, clazz, "ftdi_read_data() returned negative result");
36     return $null;
37   }
38 }
39 int ftdi_read_data(struct ftdi_context *ftdi, signed char buf[], int size);
40
41 %exception ftdi_write_data {
42   $action
43   if (result<0) {
44     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
45     (*jenv)->ThrowNew(jenv, clazz, "ftdi_write_data() returned negative result");
46     return $null;
47   }
48 }
49 int ftdi_write_data(struct ftdi_context *ftdi, signed char buf[], int size);
50
51 %exception ftdi_usb_open {
52   $action
53   if (result) {
54     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
55     (*jenv)->ThrowNew(jenv, clazz, "ftdi_usb_open() returned nonzero result");
56     return $null;
57   }
58 }
59 int ftdi_usb_open(struct ftdi_context *ftdi, int vendor, int product);
60
61 %exception ftdi_set_baudrate {
62   $action
63   if (result) {
64     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
65     (*jenv)->ThrowNew(jenv, clazz, "ftdftdi_set_baudrate() returned nonzero result");
66     return $null;
67   }
68 }
69 int ftdi_set_baudrate(struct ftdi_context *ftdi, int baudrate);
70
71 %exception ftdi_set_line_property {
72   $action
73   if (result) {
74     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
75     (*jenv)->ThrowNew(jenv, clazz, "ftdi_set_line_property() returned nonzero result");
76     return $null;
77   }
78 }
79 int ftdi_set_line_property(struct ftdi_context *ftdi, int bits, int sbit, int parity);
80
81 %exception ftdi_set_bitmode {
82   $action
83   if (result) {
84     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
85     (*jenv)->ThrowNew(jenv, clazz, "ftftdi_set_bitmodeeturned nonzero result");
86     return $null;
87   }
88 }
89 int ftdi_set_bitmode(struct ftdi_context *ftdi, unsigned char bitmask, unsigned char mode);
90
91 %exception ftdi_read_pins {
92   $action
93   if (result<0) {
94     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
95     (*jenv)->ThrowNew(jenv, clazz, "ftdi_read_pins() returned negative result");
96     return $null;
97   }
98 }
99 int ftdi_read_pins(struct ftdi_context *ftdi, signed char pins[]);
100
101 %exception ftdi_setflowctrl {
102   $action
103   if (result) {
104     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
105     (*jenv)->ThrowNew(jenv, clazz, "ftdi_setflowctrl() returned nonzero result");
106     return $null;
107   }
108 }
109 int ftdi_setflowctrl(struct ftdi_context *ftdi, int flowctrl);
110
111 %exception ftdi_usb_reset {
112   $action
113   if (result) {
114     jclass clazz = (*jenv)->FindClass(jenv, "java/io/IOException");
115     (*jenv)->ThrowNew(jenv, clazz, "ftdi_usb_reset() nonzero result");
116     return $null;
117   }
118 }
119 int ftdi_usb_reset(struct ftdi_context *ftdi);
120
121 /*
122 int ftdi_set_interface(struct ftdi_context *ftdi, enum ftdi_interface interface);
123 */
124
125 void ftdi_deinit(struct ftdi_context *ftdi);
126 void ftdi_set_usbdev (struct ftdi_context *ftdi, usb_dev_handle *usbdev);
127     
128 int ftdi_usb_find_all(struct ftdi_context *ftdi, struct ftdi_device_list **devlist,
129                       int vendor, int product);
130 void ftdi_list_free(struct ftdi_device_list **devlist);
131     
132 int ftdi_usb_open_desc(struct ftdi_context *ftdi, int vendor, int product,
133                        const char* description, const char* serial);
134 int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct usb_device *dev);
135     
136 int ftdi_usb_close(struct ftdi_context *ftdi);
137 int ftdi_usb_purge_buffers(struct ftdi_context *ftdi);
138
139 int ftdi_read_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
140 int ftdi_read_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
141
142 int ftdi_write_data_set_chunksize(struct ftdi_context *ftdi, unsigned int chunksize);
143 int ftdi_write_data_get_chunksize(struct ftdi_context *ftdi, unsigned int *chunksize);
144
145 int ftdi_enable_bitbang(struct ftdi_context *ftdi, unsigned char bitmask);
146 int ftdi_disable_bitbang(struct ftdi_context *ftdi);
147
148 int ftdi_set_latency_timer(struct ftdi_context *ftdi, unsigned char latency);
149 int ftdi_get_latency_timer(struct ftdi_context *ftdi, unsigned char *latency);
150
151 // init and build eeprom from ftdi_eeprom structure
152 void ftdi_eeprom_initdefaults(struct ftdi_eeprom *eeprom);
153 int  ftdi_eeprom_build(struct ftdi_eeprom *eeprom, signed char output[]);
154
155 int ftdi_read_eeprom(struct ftdi_context *ftdi, signed char eeprom[]);
156 int ftdi_write_eeprom(struct ftdi_context *ftdi, signed char eeprom[]);
157 int ftdi_erase_eeprom(struct ftdi_context *ftdi);