X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fstd.c;h=e36b7ccc77910637dd0e0bbc484d3150e40b66a2;hb=463160cbca37367ef94dfead0c64531d82b83ab8;hp=c6ff4ccef96cc07d758b13f4936db374eb2631f2;hpb=db944f1622479a91c257315ad368b63c5b58149c;p=libsigrok.git diff --git a/src/std.c b/src/std.c index c6ff4cce..e36b7ccc 100644 --- a/src/std.c +++ b/src/std.c @@ -578,3 +578,26 @@ SR_PRIV GVariant *std_gvar_tuple_rational(const struct sr_rational *r, unsigned return g_variant_builder_end(&gvb); } + +static GVariant *samplerate_helper(const uint64_t samplerates[], unsigned int n, const char *str) +{ + GVariant *gvar; + GVariantBuilder gvb; + + g_variant_builder_init(&gvb, G_VARIANT_TYPE("a{sv}")); + gvar = g_variant_new_fixed_array(G_VARIANT_TYPE("t"), samplerates, + n, sizeof(uint64_t)); + g_variant_builder_add(&gvb, "{sv}", str, gvar); + + return g_variant_builder_end(&gvb); +} + +SR_PRIV GVariant *std_gvar_samplerates(const uint64_t samplerates[], unsigned int n) +{ + return samplerate_helper(samplerates, n, "samplerates"); +} + +SR_PRIV GVariant *std_gvar_samplerates_steps(const uint64_t samplerates[], unsigned int n) +{ + return samplerate_helper(samplerates, n, "samplerate-steps"); +}