diff options
author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2023-07-17 18:27:14 +0900 |
---|---|---|
committer | 坂本 貴史 <o-takashi@sakamocchi.jp> | 2023-07-17 22:49:46 +0900 |
commit | a32b1bff36e517184bcaa33bb51d9c8d88d38282 (patch) | |
tree | 4969bcbb7018f35666a92aaeb15af7148ec5e9d0 | |
parent | 42b29538e8ddb205534ab1211423a96781d6f466 (diff) | |
download | libhinoko-a32b1bff36e517184bcaa33bb51d9c8d88d38282.tar.gz |
fw_iso_it: implement Hinoko.FwIsoCtx.read_cycle_time() method
This commit implements the new abstract method.
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
-rwxr-xr-x | samples/iso-it | 12 | ||||
-rw-r--r-- | src/fw_iso_it.c | 14 | ||||
-rwxr-xr-x | tests/fw-iso-it | 2 |
3 files changed, 21 insertions, 7 deletions
diff --git a/samples/iso-it b/samples/iso-it index 9b1c09f..470626c 100755 --- a/samples/iso-it +++ b/samples/iso-it @@ -4,10 +4,8 @@ from threading import Timer from struct import unpack,pack import gi -gi.require_version('GLib', '2.0') -from gi.repository import GLib -gi.require_version('Hinoko', '0.0') -from gi.repository import Hinoko +gi.require_versions({'GLib': '2.0', 'Hinawa': '3.0', 'Hinoko': '0.0'}) +from gi.repository import GLib, Hinawa, Hinoko class IsoIt(Hinoko.FwIsoIt): def new(self, path, channel, maximum_bytes_per_payload, packets_per_buffer): @@ -47,10 +45,10 @@ class IsoIt(Hinoko.FwIsoIt): self.sy = 0 # Start 100 msec later. Scheduling is available with lower 2 bits of second field. - cycle_timer = Hinoko.CycleTimer.new() + cycle_time = Hinawa.CycleTime.new() clock_id = 4 # CLOCK_MONOTONIC_RAW - _, cycle_timer = self.get_cycle_timer(clock_id, cycle_timer) - (sec, cycle, tick) = cycle_timer.get_cycle_timer() + _, cycle_time = self.read_cycle_time(clock_id, cycle_time) + (sec, cycle, tick) = cycle_time.get_fields() sec, cycle = self.__increment_cycle(sec, cycle, 800) cycle_match = (sec & 0x3, cycle) diff --git a/src/fw_iso_it.c b/src/fw_iso_it.c index 4553cee..5037f04 100644 --- a/src/fw_iso_it.c +++ b/src/fw_iso_it.c @@ -130,6 +130,19 @@ static void fw_iso_it_release(HinokoFwIsoCtx *inst) fw_iso_ctx_state_release(&priv->state); } +static gboolean fw_iso_it_read_cycle_time(HinokoFwIsoCtx *inst, gint clock_id, + HinawaCycleTime *const *cycle_time, GError **error) +{ + HinokoFwIsoIt *self; + HinokoFwIsoItPrivate *priv; + + g_return_val_if_fail(HINOKO_IS_FW_ISO_IT(inst), FALSE); + self = HINOKO_FW_ISO_IT(inst); + priv = hinoko_fw_iso_it_get_instance_private(self); + + return fw_iso_ctx_state_read_cycle_time(&priv->state, clock_id, cycle_time, error); +} + static gboolean fw_iso_it_get_cycle_timer(HinokoFwIsoCtx *inst, gint clock_id, HinokoCycleTimer *const *cycle_timer, GError **error) @@ -203,6 +216,7 @@ static void fw_iso_ctx_iface_init(HinokoFwIsoCtxInterface *iface) iface->stop = fw_iso_it_stop; iface->unmap_buffer = fw_iso_it_unmap_buffer; iface->release = fw_iso_it_release; + iface->read_cycle_time = fw_iso_it_read_cycle_time; iface->get_cycle_timer = fw_iso_it_get_cycle_timer; iface->flush_completions = fw_iso_it_flush_completions; iface->create_source = fw_iso_it_create_source; diff --git a/tests/fw-iso-it b/tests/fw-iso-it index 69ef456..319fbaf 100755 --- a/tests/fw-iso-it +++ b/tests/fw-iso-it @@ -25,6 +25,7 @@ methods = ( 'stop', 'unmap_buffer', 'release', + 'read_cycle_time', 'get_cycle_timer', 'create_source', 'flush_completions', @@ -35,6 +36,7 @@ vmethods = ( 'do_stop', 'do_unmap_buffer', 'do_release', + 'do_read_cycle_time', 'do_get_cycle_timer', 'do_flush_completions', 'do_create_source', |