Rev 139 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 139 | Rev 264 | ||
|---|---|---|---|
| Line 11... | Line 11... | ||
| 11 | #include <stdint.h> |
11 | #include <stdint.h> |
| 12 | #include <string.h> |
12 | #include <string.h> |
| 13 | #endif |
13 | #endif |
| 14 | 14 | ||
| 15 | #include "wusbvme_dll.h" |
15 | #include "wusbvme_dll.h" |
| - | 16 | #include <userint.h> |
|
| - | 17 | #include <utility.h> |
|
| 16 | 18 | ||
| 17 | usb_dev_handle *WUSB_udev; |
19 | usb_dev_handle *WUSB_udev; |
| 18 | 20 | ||
| 19 | static HINSTANCE DLLHandle; |
21 | static HINSTANCE DLLHandle; |
| 20 | 22 | ||
| Line 67... | Line 69... | ||
| 67 | short __stdcall VME_write_16(usb_dev_handle *hdev, short Address_Modifier, long VME_Address, long Data); |
69 | short __stdcall VME_write_16(usb_dev_handle *hdev, short Address_Modifier, long VME_Address, long Data); |
| 68 | short __stdcall VME_write_32(usb_dev_handle *hdev, short Address_Modifier, long VME_Address, long Data); |
70 | short __stdcall VME_write_32(usb_dev_handle *hdev, short Address_Modifier, long VME_Address, long Data); |
| 69 | 71 | ||
| 70 | 72 | ||
| 71 | void _VI_FUNC WIENER_VMUSB_load (const char* module_path) { |
73 | void _VI_FUNC WIENER_VMUSB_load (const char* module_path) { |
| - | 74 | ||
| 72 | if (module_path == NULL) { |
75 | if (module_path == NULL) { |
| 73 | DLLHandle = LoadLibrary("c:\\Windows\\system32\\libxxusb.dll"); |
76 | DLLHandle = LoadLibrary("c:\\Windows\\system32\\libxxusb.dll"); |
| 74 | } else { |
77 | } else { |
| 75 | DLLHandle = LoadLibrary(module_path); |
78 | DLLHandle = LoadLibrary(module_path); |
| - | 79 | printf("Module Path %s\n", module_path); |
|
| 76 | } |
80 | } |
| 77 | if (!DLLHandle) { |
81 | if (!DLLHandle) { |
| 78 | printf ("\n\nFailed to Open libxxusb.dll |
82 | printf ("\n\nFailed to Open libxxusb.dll \n"); |
| 79 | printf("LastError 0x%x\n",GetLastError() ); |
83 | printf("LastError 0x%x\n",GetLastError() ); |
| - | 84 | MessagePopup ("ERROR", "Failed to load libxxusb.dll "); |
|
| 80 | return; |
85 | return; |
| - | 86 | } else { |
|
| - | 87 | printf ("\n\nSuccesfully Opened libxxusb.dll \n"); |
|
| 81 | } |
88 | } |
| 82 | if (!(xxusb_register_read_Ptr = (void *) GetProcAddress(DLLHandle,"xxusb_register_read"))) exit(1); |
89 | if (!(xxusb_register_read_Ptr = (void *) GetProcAddress(DLLHandle,"xxusb_register_read"))) exit(1); |
| 83 | if (!(xxusb_stack_read_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_stack_read"))) exit(1); |
90 | if (!(xxusb_stack_read_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_stack_read"))) exit(1); |
| 84 | if (!(xxusb_stack_write_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_stack_write"))) exit(1); |
91 | if (!(xxusb_stack_write_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_stack_write"))) exit(1); |
| 85 | if (!(xxusb_stack_execute_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_stack_execute"))) exit(1); |
92 | if (!(xxusb_stack_execute_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_stack_execute"))) exit(1); |
| 86 | if (!(xxusb_longstack_execute_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_longstack_execute"))) exit(1); |
93 | if (!(xxusb_longstack_execute_Ptr = (void*) GetProcAddress(DLLHandle,"xxusb_longstack_execute"))) exit(1); |
| Line 118... | Line 125... | ||
| 118 | 125 | ||
| 119 | void _VI_FUNC WIENER_VMUSB_open (const char *serial) { |
126 | void _VI_FUNC WIENER_VMUSB_open (const char *serial) { |
| 120 | 127 | ||
| 121 | xxusb_device_type devices[100]; |
128 | xxusb_device_type devices[100]; |
| 122 | struct usb_device *dev; |
129 | struct usb_device *dev; |
| 123 | if (serial != NULL) |
130 | if (serial != NULL) { |
| 124 | WUSB_udev = xxusb_serial_open((char *) serial); |
131 | WUSB_udev = xxusb_serial_open((char *) serial); |
| 125 | else { |
132 | } else { |
| 126 | //Find XX_USB devices and open the first one found |
133 | //Find XX_USB devices and open the first one found |
| 127 | xxusb_devices_find(devices); |
134 | xxusb_devices_find(devices); |
| 128 | dev = devices[0].usbdev; |
135 | dev = devices[0].usbdev; |
| 129 | WUSB_udev = xxusb_device_open(dev); |
136 | WUSB_udev = xxusb_device_open(dev); |
| 130 | } |
137 | } |
| Line 155... | Line 162... | ||
| 155 | 162 | ||
| 156 | void WIENER_VMUSB_StackClear() { |
163 | void WIENER_VMUSB_StackClear() { |
| 157 | WIENER_VMUSB_StackInit(); |
164 | WIENER_VMUSB_StackInit(); |
| 158 | } |
165 | } |
| 159 | 166 | ||
| 160 | int |
167 | int WIENER_VMUSB_StackGetUint16(int maxn, uint16_t *stack) { |
| 161 | int i; |
168 | int i; |
| 162 | uint16_t * u16Stack = (uint16_t *) fStack; |
169 | uint16_t * u16Stack = (uint16_t *) fStack; |
| 163 | for (i=0; i< fStackSize*2; i++) { |
170 | for (i=0; i< fStackSize*2; i++) { |
| 164 | if (i<maxn) stack[i]=u16Stack[i]; |
171 | if (i<maxn) stack[i]=u16Stack[i]; |
| 165 | else return -1; |
172 | else return -1; |
| 166 | } |
173 | } |
| 167 | return fStackSize*2; |
174 | return fStackSize*2; |
| 168 | } |
175 | } |
| 169 | 176 | ||
| 170 | int |
177 | int WIENER_VMUSB_StackGetUint32(int maxn, uint32_t *stack) { |
| 171 | int i; |
178 | int i; |
| 172 | uint16_t * u16Stack = (uint16_t *) fStack; |
179 | uint16_t * u16Stack = (uint16_t *) fStack; |
| 173 | for (i=0; i< fStackSize*2; i++) { |
180 | for (i=0; i< fStackSize*2; i++) { |
| 174 | if (i<maxn) stack[i]=u16Stack[i]; |
181 | if (i<maxn) stack[i]=u16Stack[i]; |
| 175 | else return -1; |
182 | else return -1; |
| Line 219... | Line 226... | ||
| 219 | void WIENER_VMUSB_StackPrint() { |
226 | void WIENER_VMUSB_StackPrint() { |
| 220 | uint16_t * u16Stack = (uint16_t *) fStack; |
227 | uint16_t * u16Stack = (uint16_t *) fStack; |
| 221 | uint32_t i; |
228 | uint32_t i; |
| 222 | for (i=0; i < fStackSize*2; i++) printf("0x%04x\n",u16Stack[i]); |
229 | for (i=0; i < fStackSize*2; i++) printf("0x%04x\n",u16Stack[i]); |
| 223 | printf("size of stack %d __________________________________\n",fStackSize*2-1); |
230 | printf("size of stack %d __________________________________\n",fStackSize*2-1); |
| 224 | } |
231 | } |
| 225 | 232 | ||
| 226 | 233 | ||
| 227 | char wusbcc_stack[MAXSTACKSIZE*4]; |
234 | char wusbcc_stack[MAXSTACKSIZE*4]; |
| 228 | 235 | ||
| 229 | 236 | ||
| 230 | int _VI_FUNC WUSBXX_stack_execute (usb_dev_handle * dev, char * stack) { |
237 | int _VI_FUNC WUSBXX_stack_execute (usb_dev_handle * dev, char * stack) { |
| 231 | int i, nb=0; |
238 | int i, nb=0; |
| 232 | if (!dev) { |
239 | if (!dev) { |
| 233 | printf("WUSBXX_stack_execute device not open\n"); |
240 | printf("WUSBXX_stack_execute device not open\n"); |
| 234 | return -1; |
241 | return -1; |
| 235 | } |
242 | } |
| 236 | uint16_t * exstack = (uint16_t *) wusbcc_stack; |
243 | uint16_t * exstack = (uint16_t *) wusbcc_stack; |
| 237 | exstack[0]=0; |
244 | exstack[0]=0; |
| 238 | nb = |
245 | nb = WIENER_VMUSB_StackGetUint16(MAXSTACKSIZE, &exstack[1] ); |
| 239 | //printf("WUSBXX_stack_execute stack size %d\n", nb); |
246 | //printf("WUSBXX_stack_execute stack size %d\n", nb); |
| 240 | //WIENER_VMUSB_StackPrint(); |
247 | //WIENER_VMUSB_StackPrint(); |
| 241 | nb = xxusb_longstack_execute (dev, exstack, nb, 1000); |
248 | nb = xxusb_longstack_execute (dev, exstack, nb, 1000); |
| 242 | //DataBuffer(0 - (ReturnValue/2-1)) - (unsigned short)array of returned data when ReturnValue>0 |
249 | //DataBuffer(0 - (ReturnValue/2-1)) - (unsigned short)array of returned data when ReturnValue>0 |
| 243 | //printf("WUSBXX_stack_execute return size %d\n", nb); |
250 | //printf("WUSBXX_stack_execute return size %d\n", nb); |
| 244 | if (nb<0 ) printf("xxusb_longstack_execute %s line:%d err=%d %s\n",__FILE__,__LINE__,nb, strerror(-nb) ); |
251 | if (nb<0 ) printf("xxusb_longstack_execute %s line:%d err=%d %s\n",__FILE__,__LINE__,nb, strerror(-nb) ); |
| 245 | if (stack!=NULL) for ( i=0; i<nb; i++) stack[i]=wusbcc_stack[i]; |
252 | if (stack!=NULL) for ( i=0; i<nb; i++) stack[i]=wusbcc_stack[i]; |
| 246 | return nb/sizeof(uint32_t); |
253 | return nb/sizeof(uint32_t); |
| 247 | } |
254 | } |
| - | 255 | ||
| - | 256 | ||
| 248 | 257 | ||
| 249 | 258 | ||
| 250 | 259 | ||
| 251 | #ifndef VME_D32 |
260 | #ifndef VME_D32 |
| 252 | 261 | ||