Skip to content

Releases: alsa-project/libhinawa

Version 2.5.1 release

30 Jun 03:04
2.5.1
Compare
Choose a tag to compare

This micro release includes refinement of test scripts and complement of
inclusion guard.

Version 2.5.0 release

26 May 12:11
2.5.0
Compare
Choose a tag to compare

The new release includes changes for error domain of Hinawa.FwReqError.
In GNOME convention, the error domain and code enumeration should be
the same name. In libhinawa implementation, Hinawa.FwReqError domain
utilizes Hinawa.FwRcode as its code enumeration against the convention.
Hinawa.FwReqError enumeration is now added.

Additionally, documentation framework is switched from gtk-doc to
gi-docgen, according to recent integration of GNOME software.

Version 2.4.0 release

17 Nov 08:23
Compare
Choose a tag to compare

In this release, the minor part of version is incremented since new symbols are added for new APIs.

ALSA firewire-motu driver in Linux kernel v5.16 prepatch got new functions to parse messages in isochronous packets from the target device. The messages include state of DSP mixer and hardware meter information. The functions allow userspace software to read cached hardware meter information and cached state of DSP mixer as well as to receive notification about change for the state of DSP mixer. For userspace application, UAPI header includes stuffs for the new functions.

In new release of libhinawa, some APIs are newly added to support the functions. For compatibility reason, the source of libhinawa includes the UAPI header.

Version 2.3.0 release

29 Aug 09:51
Compare
Choose a tag to compare

In this release, the minor part of version is incremented since symbol is
added for new API.

Hinawa.FwResp.reserve_within_region() is newly added. It's similar to
Hinawa.FwResp.reserve() but callers can specify region of address for
reservation of range of address, instead of exact range.

Version 2.2.1 release

28 May 10:46
Compare
Choose a tag to compare

In this release, the micro part of version is incremented so that some
bugs are fixed.

The alignment of content of configuration ROM referred by
hinawa_fw_node_get_config_rom() is explicitly big-endian. The backward
compatibility is kept as well.

The spec file is refined.

Version 2.2.0 release

24 Aug 07:41
Compare
Choose a tag to compare

In this release, the minor part of version is incremented so that some
symbols are newly available as public API for new features. The new
features are just for HinawaFwResp.

HinawaFwResp::requested2 is added to deprecate HinawaFwResp::requested

Current implementation of HinawaFwResp::requested signal doesn't deliver
all information in data of struct fw_cdev_event_request2 type. This is
inconvenient for some applications bound to device which sends transactions
to different addresses within a certain space. In the case, the
applications can not get offset of arrival address from current
implementation. The new HinawaFwResp::requested2 signal allows the
applications with enough information about the arrived transaction.

HinawaFwRespError enumeration is added to report error

At release v2.1.0, nothing was added for error reporting of HinawaFwResp
since it was not necessary. However, it's convenient to retrieve error
reporting at failure of allocation in 1394 OHCI controller. In the reason,
HinawaFwRespError enumeration is added and hinawa_fw_resp_error_quark()
represents the domain of GError with the code in enumeration.

Version 2.1.0 release

17 Aug 03:40
Compare
Choose a tag to compare

In this release, the minor part of version is incremented so that some
symbols are newly available as public API. The new features are
categorized to two parts; enhancement for error reporting and
introduction of signal-based asynchronous API.

Enhancement for error reporting

In the initial release, libhinawa have used GError for error reporting.
However the implementation is not necessarily following to guidelines of
GError. In the release, the implementation is improved for enhancement.

At first, below public symbols are obsoleted. They are not declared in
public headers, thus the change brings no regressions for applications
except for symbol maintenance.

  • hinawa_fw_req_quark
  • hinawa_fw_resp_quark
  • hinawa_fw_fcp_quark
  • hinawa_snd_unit_quark
  • hinawa_snd_dice_quark
  • hinawa_snd_efw_quark
  • hinawa_snd_dg00x_quark
  • hinawa_snd_motu_quark
  • hinawa_snd_tscm_quark
  • hinawa_fw_node_quark

Secondly, below public symbols are defined for GQuark value and declared
in public headers, so that they can represent unique value for domains of
GError.

  • hinawa_fw_node_error_quark
  • hinawa_fw_req_error_quark
  • hinawa_fw_fcp_error_quark
  • hinawa_snd_unit_error_quark
  • hinawa_snd_dice_error_quark
  • hinawa_snd_efw_error_quark

Thirdly, below public symbols are defined for GLib enumerations and
declared in public headers, so that they can represent actual error code
for GError.

  • hinawa_fw_node_error_get_type()
  • hinawa_fw_fcp_error_get_type()
  • hinawa_snd_unit_error_get_type()
  • hinawa_snd_dice_error_get_type()

However, for hinawa_fw_req_error_quark() and hinawa_snd_efw_error_quark(),
it's inconvenient to use standard way for the name of enumerations. For
these two error domains, error codes come from below enumerations:

  • hinawa_fw_rcode_get_type()
  • hinawa_snd_efw_status_get_type()

Finally, many error checks are simplified according to GLib's guideline so
that programming errors should not reported by GError. The error of invalid
arguments and unexpected function call is not handled by GError. In the
cases, function call just returns with warnings.

Introduction of signal-based asynchronous API

In the initial release, libhinawa have used synchronous API to finish some
types of transaction. The call of API has an effect to wait for event by
yielding processor, therefore the process is blocked. However it's useful
for some kind of applications to receive signal as event notification
instead of blocking process. In this note, I call it 'asynchronous API'.

GObject supports signaling. In the release, event notification is
implemented by the mechanism and below signals are added:

  • HinawaFwReq.responded
  • HinawaSndEfw.responded
  • HinawaFwFcp.responded

Additionally, below asynchronous APIs are added:

  • hinawa_fw_req_transaction_async()
  • hinawa_snd_efw_transaction_async()
  • hinawa_fw_fcp_command()

Furthermore, below synchronous APIs are added for refactoring to existent APIs:

  • hinawa_fw_req_transaction_sync
  • hinawa_snd_efw_transaction_sync
  • hinawa_fw_fcp_avc_transaction

Version 2.0.0 release

29 May 04:45
Compare
Choose a tag to compare

A new major version of libhinawa is released. The release includes refactoring and code cleanup to dismiss obsoleted stuffs added by period of version 1, toward better language bindings such as Python 3 and Rust. Some points are listed below for losses of backward compatibility against version 1.

  • HinawaFwUnit
    • This gobject class is dropped. Instead, HinawaFwNode should be used to communicate to the node on IEEE 1394 bus.
  • HinawaFwReq/HinawaFwResp/HinawaFwFcp
    • Any API with arguments for HinawaFwUnit is dropped. Instead, use APIs with arguments for HinawaFwNode.
    • Any API with arguments for GByteArray is dropped. Instead, use APIs with arguments for guint8(buffer) and gsize(buffer length).
  • HinawaSndEfw/HinawaSndDice
    • Any API with arguments for GArray is dropped. Instead, use APIs with arguments for guint32(buffer) and gsize(buffer length).
  • I/O thread
    • No thread is launched internally for event dispatcher. Instead, retrieve GSource from HinawaFwNode and HinawaSndUnit and use it with GMainContext for event dispatcher. When no dispatcher runs, timeout occurs for any transaction.
  • Notifier thread
    • No thread is launched internally for GObject signal notifier. Instead, implement another thread for your notifier by your own and delegate any transaction into it. This is required to prevent I/O thread to be stalled because of waiting for an additional event of the transaction.

The namespace of GIR bumps up to 3.0 to reflect the losses of backward compatibility.

Version 1.4.5 release

11 May 07:12
Compare
Choose a tag to compare

In this maintenance release, a critical bug is fixed.

The application of HinawaFwReq can configure timeout of transaction, and
receive error at expiration. However, if Linux FireWire subsystem make
an event available for the transaction after the expiration, HinawaFwNode
handles the event and results in memory corruption. This bug is fixed
by addition of invalidation for the timeout transaction.

Additionally Github Actions is supported for build test.

This will be the last release of libhinawa v1.0 series. The next release, libhinawa v2.0 is planned to drop deprecated APIs, internal threading and HinawaFwUnit class.

Version 1.4.4 release

19 Jan 16:25
Compare
Choose a tag to compare

In this maintenance release, two bugs are fixed, one of which is
critical and introduced in former maintenance release.

The call of g_object_new() should have NULL in the last element of
argument list as sentinel. If missing it, glib hits SIGSEGV by
referring to invalid pointer. In previous release, HinawaFwFcp sets
timeout property of HinawaFwReq but the call has no sentinel.

Additionally, default transaction timeout is too small to the one
in IEEE 1394a:2000. The timeout is expanded to better value.