- g_variant_get(data, "(tt)", &p, &q);
-
- for (i = 0; i < ARRAY_SIZE(dlm_timebases); i++) {
- if (p != dlm_timebases[i][0] ||
- q != dlm_timebases[i][1])
- continue;
- state->timebase = i;
- g_ascii_formatd(float_str, sizeof(float_str),
- "%E", (float) p / q);
- ret = dlm_timebase_set(sdi->conn, float_str);
- update_sample_rate = TRUE;
- break;
- }
+ if ((idx = std_u64_tuple_idx(data, ARRAY_AND_SIZE(dlm_timebases))) < 0)
+ return SR_ERR_ARG;
+ state->timebase = idx;
+ g_ascii_formatd(float_str, sizeof(float_str),
+ "%E", (float) dlm_timebases[idx][0] / dlm_timebases[idx][1]);
+ ret = dlm_timebase_set(sdi->conn, float_str);
+ update_sample_rate = TRUE;