X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fzeroplus-logic-cube%2Fzeroplus.c;h=1c5f2cef0488d128ed0a2a1e30838f14a9aedebe;hb=08b488b84896d0e29c401c67f7bda7fed968f9ca;hp=791202d90dc611ab9154dec5d014e4ed15472d7b;hpb=9a4988343fe72bf2e7e5364dbdaa4ce0d4d6c59d;p=libsigrok.git diff --git a/hardware/zeroplus-logic-cube/zeroplus.c b/hardware/zeroplus-logic-cube/zeroplus.c index 791202d9..1c5f2cef 100644 --- a/hardware/zeroplus-logic-cube/zeroplus.c +++ b/hardware/zeroplus-logic-cube/zeroplus.c @@ -140,7 +140,7 @@ static unsigned int get_memory_size(int type) return 0; } -static int opendev3(struct sigrok_device_instance **sdi, libusb_device *dev, +static int opendev4(struct sigrok_device_instance **sdi, libusb_device *dev, struct libusb_device_descriptor *des) { unsigned int i; @@ -205,7 +205,7 @@ struct sigrok_device_instance *zp_open_device(int device_index) libusb_get_device_list(usb_context, &devlist); for (i = 0; devlist[i]; i++) { /* TODO: Error handling. */ - err = opendev3(&sdi, devlist[i], &des); + err = opendev4(&sdi, devlist[i], &des); } } else { /* Status must be ST_ACTIVE, i.e. already in use... */ @@ -280,7 +280,7 @@ static int hw_init(char *deviceinfo) libusb_device **devlist; int err, devcnt, i; - /* QUICK HACK */ + /* Avoid compiler warnings. */ deviceinfo = deviceinfo; if (libusb_init(&usb_context) != 0) { @@ -340,7 +340,6 @@ static int hw_opendev(int device_index) } analyzer_reset(sdi->usb->devhdl); analyzer_initialize(sdi->usb->devhdl); - analyzer_configure(sdi->usb->devhdl); analyzer_set_memory_size(MEMORY_SIZE_512K); // analyzer_set_freq(g_freq, g_freq_scale); @@ -444,7 +443,7 @@ static int *hw_get_capabilities(void) /* TODO: This will set the same samplerate for all devices. */ static int set_configuration_samplerate(uint64_t samplerate) { - g_message("%s(%llu)", __FUNCTION__, samplerate); + g_message("%s(%" PRIu64 ")", __FUNCTION__, samplerate); if (samplerate > MHZ(1)) analyzer_set_freq(samplerate / MHZ(1), FREQ_SCALE_MHZ); else if (samplerate > KHZ(1)) @@ -472,7 +471,8 @@ static int hw_set_configuration(int device_index, int capability, void *value) case HWCAP_PROBECONFIG: return configure_probes((GSList *) value); case HWCAP_LIMIT_SAMPLES: - limit_samples = strtoull(value, NULL, 10); + tmp_u64 = value; + limit_samples = *tmp_u64; return SIGROK_OK; default: return SIGROK_ERR; @@ -491,6 +491,9 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) if (!(sdi = get_sigrok_device_instance(device_instances, device_index))) return SIGROK_ERR; + /* push configured settings to device */ + analyzer_configure(sdi->usb->devhdl); + analyzer_start(sdi->usb->devhdl); g_message("Waiting for data"); analyzer_wait_data(sdi->usb->devhdl); @@ -509,7 +512,8 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) gettimeofday(&header.starttime, NULL); header.samplerate = cur_samplerate; header.protocol_id = PROTO_RAW; - header.num_probes = num_channels; + header.num_logic_probes = num_channels; + header.num_analog_probes = 0; session_bus(session_device_id, &packet); buf = g_malloc(PACKET_SIZE); @@ -525,8 +529,9 @@ static int hw_start_acquisition(int device_index, gpointer session_device_id) PACKET_SIZE, res); #endif - packet.type = DF_LOGIC32; + packet.type = DF_LOGIC; packet.length = PACKET_SIZE; + packet.unitsize = 4; packet.payload = buf; session_bus(session_device_id, &packet); }