Commit Graph

2198 Commits

Author SHA1 Message Date
Daniel Elstner 2cfd16a316 sysclk-lwla: Streamline packet output logic.
(process_sample_data): When expanding run-length samples into
session packets, calculate the number of samples to write in
advance while honoring all constraints.  This is cleaner than
checking constraints within the expansion loop.  Also, the new
logic always fills up packets exactly to whatever limit applies
first, thereby removing the need for truncation after the fact.
2014-01-18 17:36:23 +01:00
Daniel Elstner 29d587670d sysclk-lwla: Implement SR_CONF_LIMIT_MSEC.
Allow the acquisition to be constrained by time in addition to
a sample count limit.  Since the LWLA protocol actually provides
only a duration natively, implement the sample count limit on top
of the new duration limit.

With this change, limiting an acquisition in external clock mode
should finally work properly.
2014-01-18 16:08:39 +01:00
Uwe Hermann 17794067f9 tests: Fix a few warnings.
Fix a bunch of "no previous prototype for ..." warnings exposed
by -Wmissing-prototypes.
2014-01-17 20:49:45 +01:00
Bert Vermeulen 2438b737ae demo: Bring analog square wave amplitude into line with other patterns. 2014-01-17 14:36:00 +01:00
poljar (Damir Jelić) 9f54e0e84f demo: Add analog sawtooth pattern. 2014-01-17 14:30:28 +01:00
poljar (Damir Jelić) 091c962127 demo: Add triangle pattern. 2014-01-17 14:30:28 +01:00
poljar (Damir Jelić) 4374219bc8 demo: Implement sine wave pattern.
This adds sine wave generation capabilities for the analog channels in the demo
driver. The frequency of the sine wave depends on the configured sample rate of
the demo device. The frequency of the sine wave is always 20 times smaller than
the sample rate, in other words we always have 20 samples per period.
2014-01-17 14:30:28 +01:00
Bert Vermeulen e196cb6193 uni-t-ut32x: Fix typo that prevents usage with multiple devices. 2014-01-17 12:11:52 +01:00
Uwe Hermann c2b394d562 rigol-ds: Minor whitespace fixes. 2014-01-17 02:03:09 +01:00
Martin Ling 04e8e01ec6 rigol-ds: Enable/disable LA pod when (de)selecting digital channels. 2014-01-17 01:52:29 +01:00
Martin Ling 51b294cd01 rigol-ds: Reset num_frames to zero in dev_acquisition_start. 2014-01-17 01:52:29 +01:00
Martin Ling b751cf7a82 rigol-ds: Make sure to always send SR_DF_END at end of capture. 2014-01-17 01:52:29 +01:00
Martin Ling 4914dd4b9a rigol-ds: Calculate effective samplerate. 2014-01-17 01:52:29 +01:00
Martin Ling 5415e60247 rigol-ds: Separate function to compute analog frame size. 2014-01-17 01:52:29 +01:00
Martin Ling c1bcb8cc63 rigol-ds: Advertise SR_CONF_LIMIT_FRAMES support. 2014-01-17 01:52:29 +01:00
Martin Ling 969edf6306 rigol-ds: Fix check for probe group validity. 2014-01-17 01:52:29 +01:00
Uwe Hermann 55eb33dbf8 hameg-hmo: Fix two compiler warnings on Windows.
CC       libsigrok_hw_hameg_hmo_la-protocol.lo
api.c: In function 'auto_find_usb':
api.c:70:39: warning: unused parameter 'vendor_id' [-Wunused-parameter]
 static GSList *auto_find_usb(uint16_t vendor_id, uint16_t product_id)
                                       ^
api.c:70:59: warning: unused parameter 'product_id' [-Wunused-parameter]
 static GSList *auto_find_usb(uint16_t vendor_id, uint16_t product_id)
                                                           ^
2014-01-17 00:38:47 +01:00
Uwe Hermann dcc94340bd usb: Fix two compiler warnings on Windows.
CC       libsigrok_hw_common_la-usb.lo
usb.c:241:18: warning: no previous prototype for 'usb_thread'
[-Wmissing-prototypes]
 SR_PRIV gpointer usb_thread(gpointer data)
                  ^
usb.c:256:13: warning: no previous prototype for 'usb_callback'
[-Wmissing-prototypes]
 SR_PRIV int usb_callback(int fd, int revents, void *cb_data)
             ^
2014-01-17 00:38:33 +01:00
poljar (Damir Jelić) c06c24d2d3 hameg-hmo: Silence warning about format security.
The command for fetching the sample rate while in single shot mode doesn't take
an argument so the snprintf here is redundant.
2014-01-16 23:02:47 +01:00
poljar (Damir Jelić) ef1a346b0b hameg-hmo: Reset the number of acquired frames in acquisition stop. 2014-01-16 23:02:47 +01:00
poljar (Damir Jelić) ccf1461825 hameg-hmo: Expose more options with config_get().
This patch exposes the TRIGGER_SOURCE and COUPLING options via config_get().
2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) eff1ee0321 hameg-hmo: Advertise the frame limit option. 2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 23e1ea7a7d hameg-hmo: Update the sample rate when the channel states or the timebase change.
The sample rate on the Hameg scopes changes depending on the number of channels
turned on and on the current timebase.

Update the sample rate if any of the above change.
2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 14a2f74d9a hameg-hmo: Add support for sample rate fetching. 2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) c09392d092 scpi: Add CMD_GET_SAMPLE_RATE to the command enum. 2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 8de2dc3b2e hameg-hmo: Change the way vdiv and timebase are saved.
The current vertical division setting (per channel) and the timebase are stored
as a floating point number. This is suboptimal since clients expect us to send
this information to them in form of a rational number.

Store only the index of the current setting since all the supported settings are
already stored inside of an array.
2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 66e3219dbd hameg-hmo: Send the DF_END packet in acquisition_stop()
The DF_END packet was send out after all configured frames were fetched, but
devices may stop the acquisition at any point in time and an DF_END will not be
send out in this case.

Send the DF_END packet inside of acquisition_stop() so this can't happen.
2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 68e3d07014 hameg-hmo: Close the device after initial scan.
The device is after a scan left open and clients that don't call unconditionally
dev_open() will never fetch the initial device state.

Close the device after the scan so clients know they need to open it.
2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 965b463d98 hameg-hmo: Handle floating point numbers while ignoring the locale. 2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 13dbd151fe scpi: Use sr_atof_ascii() instead of sr_atof(). 2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 9806c2d573 strutil: Add function to parse floating point numbers while ignoring the locale.
Most of the supported gear uses the ANSI C locale for communication, and if the
client sets up an incompatible locale parsing would fail.

This function ignores the client's locale and parses floating point numbers
using the ANSI C locale. This function should be always used when parsing
floating point numbers coming from the instrument.
2014-01-16 16:27:35 +01:00
poljar (Damir Jelić) 92b68bb5d6 device: Pass sdi as an function argument to config_list in dev_has_option()
With drivers that support multiple devices we need to know the device model
while listing options. That information is most of the time saved in the private
part of the dev_inst structure.

Pass the pointer to the dev_inst structure as an function argument so we have
access to this information.
2014-01-16 09:35:38 +01:00
poljar (Damir Jelić) 580f309948 strutil: Correctly parse floating point frequencies in parse_size_string().
parse_size_string() incorrectly parses a real number, e.g. 1.5 kHz ends up
being 1Hz.

This patch fixes parse_size_string() to take the fractional part as well into
account. The fractional part is parsed as an double precision floating point
number while ignoring the locale.
2014-01-16 09:35:38 +01:00
Daniel Elstner 0b92c32cb8 sysclk-lwla: Make use of the probe index again.
(configure_probes): sr_probe::index has been un-deprecated,
so use it instead of relying on the list order.
2014-01-15 21:44:59 +01:00
Daniel Elstner d02d475442 sysclk-lwla: Bypass divider in external clock mode.
(lwla_setup_acquisition): Set the clock divider bypass
flag to 1 for the external clock modes as well.
(capture_setup): Set the clock divide count to 0 if an
external clock source is selected.
2014-01-15 21:44:59 +01:00
Daniel Elstner 313c7a7da2 sysclk-lwla: Utility functions clean-up and semantic fixes.
(lwla_send_bitstream): Unref the mapped file earlier in order
to simplify the error handling.
(lwla_receive_reply): Do not treat a reply buffer length of
zero as silent no-op.  That logic was left over from an earlier
iteration, before the distinction between reply buffer size and
expected read length was introduced.
2014-01-15 21:44:59 +01:00
Daniel Elstner 60e2fa0a03 sysclk-lwla: Remove unused dev_context::next_state. 2014-01-15 21:44:59 +01:00
Daniel Elstner 945e4343e2 sysclk-lwla: Avoid warning due to bogus range check.
(lwla_set_clock_source): Checking whether an enum value is greater
than or equal to zero apparently results in a warning with some
compilers.  Assign the enum to an unsigned variable to avoid this,
and return SR_ERR_BUG if the range is exceeded, as this indicates
a bug in the driver code itself.
2014-01-15 21:43:54 +01:00
Aurelien Jacobs 9e2bf9d204 configure: add -Wmissing-prototypes compiler option
This should avoid introduction SR_PRIV functions when static would be enough.
2014-01-14 23:39:23 +01:00
Aurelien Jacobs 8a2aaffa02 remove unused static functions 2014-01-14 23:39:23 +01:00
Aurelien Jacobs d87c1766f2 change a bunch of functions from SR_PRIV to static
None of those functions are called across compilation units.
2014-01-14 23:39:23 +01:00
Aurelien Jacobs 8162cad7e0 move function declarations to the appropriate header 2014-01-14 23:39:23 +01:00
Aurelien Jacobs 2588e50c63 es519xx: add missing declarations for es519xx_2400_11b_altfn 2014-01-14 23:26:00 +01:00
Aurelien Jacobs 365cca8aca gnuplot: proper error message when using gnuplot output without logic probe 2014-01-14 22:59:33 +01:00
Aurelien Jacobs ad7621d445 add udev rule for the Rigol DS2000 series 2014-01-14 22:58:48 +01:00
Uwe Hermann 1f98295dfa sysclk-lwla: Fix probe name issue.
The g_ascii_formatd() function expects the "format" argument to start
with a '%' character, e.g. it should be "%f" or such (this is not
clearly documented in the glib API docs, but visible from the source code).

The usage of "CH%f" for example will trigger an assertion and thus make the
LWLA device unusable in practice (e.g. in PulseView on Windows no probenames
would be shown, and sampling wouldn't work).

Example:
  GLib-CRITICAL **: g_ascii_formatd: assertion 'format[0] == '%'' failed

(not exposed in all glib versions or builds of glib on all distros
apparently, some may need G_MESSAGES_DEBUG=all or other measures)

From the glib g_ascii_formatd() code:
  g_return_val_if_fail (format[0] == '%', NULL);

We now use g_snprintf() instead for simplicity. This has been tested to
fix this specific issue (i.e. the probenames now do show up in PulseView).

This closes bug #270.
2014-01-14 19:52:26 +01:00
Uwe Hermann 2379783d85 configure.ac: Don't build sysclk-lwla if libusb-1.0 is not found. 2014-01-14 19:46:05 +01:00
Uwe Hermann 87283d98c9 configure.ac: Move sysclk-lwla chunk to correct location. 2014-01-14 19:36:28 +01:00
Daniel Elstner 7ebe9b9e7e sysclk-lwla: Honor SR_CONF_CONN at scan time. 2014-01-14 19:33:31 +01:00
Daniel Elstner 8a3ddd8815 sysclk-lwla: Fix calculation of the running sample count.
Field 7 of the status response is actually a duration in
milliseconds at all samplerates but 125 MHz.
2014-01-14 19:33:31 +01:00