107 static int g_trigger_status[9] = { 0 };
108 static int g_trigger_count = 1;
109 static int g_filter_status[8] = { 0 };
110 static int g_filter_enable = 0;
112 static int g_freq_value = 100;
115 static int g_ramsize_triggerbar_addr = 0x80000 >> 2;
116 static int g_triggerbar_addr = 0x3fe;
120 static int analyzer_write_status(libusb_device_handle *devh,
unsigned char unk,
127 static int __analyzer_set_freq(libusb_device_handle *devh,
int freq,
int scale)
129 int reg0 = 0, divisor = 0, reg2 = 0;
133 if (freq >= 100 && freq <= 200) {
139 if (freq >= 50 && freq < 100) {
145 if (freq >= 10 && freq < 50) {
158 if (freq >= 2 && freq < 10) {
175 if (freq >= 500 && freq < 1000) {
181 if (freq >= 300 && freq < 500) {
182 reg0 = freq * 0.005 * 8;
187 if (freq >= 100 && freq < 300) {
188 reg0 = freq * 0.005 * 16;
198 if (freq >= 500 && freq < 1000) {
204 if (freq >= 100 && freq < 500) {
210 if (freq >= 50 && freq < 100) {
216 if (freq >= 10 && freq < 50) {
228 if (freq >= 2 && freq < 10) {
259 static void __analyzer_set_ramsize_trigger_address(libusb_device_handle *devh,
260 unsigned int address)
267 static void __analyzer_set_triggerbar_address(libusb_device_handle *devh,
268 unsigned int address)
275 static void __analyzer_set_compression(libusb_device_handle *devh,
282 static void __analyzer_set_trigger_count(libusb_device_handle *devh,
289 static void analyzer_write_enable_insert_data(libusb_device_handle *devh)
297 static void analyzer_set_filter(libusb_device_handle *devh)
301 for (i = 0; i < 8; i++)
323 if ((status &
set) && ((status & unset) == 0))
334 for (i = 0; i < 8; i++)
371 __analyzer_set_freq(devh, g_freq_value, g_freq_scale);
380 for (i = 0; i < 9; i++)
383 __analyzer_set_trigger_count(devh, g_trigger_count);
392 __analyzer_set_ramsize_trigger_address(devh, g_ramsize_triggerbar_addr);
393 __analyzer_set_triggerbar_address(devh, g_triggerbar_addr);
399 analyzer_set_filter(devh);
404 analyzer_write_enable_insert_data(devh);
405 __analyzer_set_compression(devh, g_compression);
412 if ((channel & 0xf) >= 8)
426 if ((channel & 0xf) >= 4) {
430 g_trigger_status[i] |=
431 1 << ((2 * channel) + (type ==
TRIGGER_LOW ? 1 : 0));
434 g_trigger_status[8] = 0x40;
436 g_trigger_status[8] = 0x80;
438 g_trigger_status[8] = 0xc0;
442 g_trigger_status[8] += 8;
444 g_trigger_status[8] += 16;
446 g_trigger_status[8] += 24;
447 g_trigger_status[8] += channel % 8;
457 if ((channel & 0xf) >= 8)
471 if ((channel & 0xf) >= 4) {
476 g_filter_status[i] |=
477 1 << ((2 * channel) + (type ==
FILTER_LOW ? 1 : 0));
484 g_trigger_count = count;
490 g_freq_scale = scale;
495 g_memory_size = size;
500 g_ramsize_triggerbar_addr = address;
505 g_triggerbar_addr = address;
533 g_compression = type;
547 void *output,
unsigned int output_len)
549 unsigned char *in = input;
550 unsigned char *out = output;
551 unsigned int A, B, C, count;
552 unsigned int written = 0;
554 while (input_len > 0) {
560 if (count > output_len)