<p>pespin <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/15418">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, but someone else must approve
  fixeria: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">tdef: Introduce API osmo_tdef_set()<br><br>This API is already useful for users willing to set a given timer to a<br>given value. It will also contain code later that checks for value being<br>inside valid range for that timer.<br><br>Related: OS#4190<br>Change-Id: Id56a1226d724a374f04231df85fe5b49ffd2c43c<br>---<br>M include/osmocom/core/tdef.h<br>M src/tdef.c<br>2 files changed, 21 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/core/tdef.h b/include/osmocom/core/tdef.h</span><br><span>index 566f5dd..a1ad4cc 100644</span><br><span>--- a/include/osmocom/core/tdef.h</span><br><span>+++ b/include/osmocom/core/tdef.h</span><br><span>@@ -97,6 +97,7 @@</span><br><span> unsigned long osmo_tdef_get(const struct osmo_tdef *tdefs, int T, enum osmo_tdef_unit as_unit,</span><br><span>                       long val_if_not_present);</span><br><span> struct osmo_tdef *osmo_tdef_get_entry(struct osmo_tdef *tdefs, int T);</span><br><span style="color: hsl(120, 100%, 40%);">+int osmo_tdef_set(struct osmo_tdef *tdefs, int T, unsigned long val, enum osmo_tdef_unit as_unit);</span><br><span> </span><br><span> /*! Using osmo_tdef for osmo_fsm_inst: array entry for a mapping of state numbers to timeout definitions.</span><br><span>  * For a usage example, see osmo_tdef_get_state_timeout() and test_tdef_state_timeout() in tdef_test.c. */</span><br><span>diff --git a/src/tdef.c b/src/tdef.c</span><br><span>index 40a9900..dfb47f6 100644</span><br><span>--- a/src/tdef.c</span><br><span>+++ b/src/tdef.c</span><br><span>@@ -25,6 +25,7 @@</span><br><span>  */</span><br><span> </span><br><span> #include <limits.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <errno.h></span><br><span> </span><br><span> #include <osmocom/core/fsm.h></span><br><span> #include <osmocom/core/tdef.h></span><br><span>@@ -210,6 +211,25 @@</span><br><span>      return NULL;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*! Set value in entry matching T, converting val from val_unit to unit of T.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] tdefs  Array of timer definitions, last entry being fully zero.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] T  Timer number to set the value for.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] val  The new timer value to set.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \param[in] val_unit  Units of value in parameter val.</span><br><span style="color: hsl(120, 100%, 40%);">+ * \return 0 on success, negative on error.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+int osmo_tdef_set(struct osmo_tdef *tdefs, int T, unsigned long val, enum osmo_tdef_unit val_unit)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   struct osmo_tdef *t;</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_tdef_for_each(t, tdefs) {</span><br><span style="color: hsl(120, 100%, 40%);">+                if (t->T == T) {</span><br><span style="color: hsl(120, 100%, 40%);">+                   t->val = osmo_tdef_round(val, val_unit, t->unit);</span><br><span style="color: hsl(120, 100%, 40%);">+                       return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return -EEXIST;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! Using osmo_tdef for osmo_fsm_inst: find a given state's osmo_tdef_state_timeout entry.</span><br><span>  *</span><br><span>  * The timeouts_array shall contain exactly 32 elements, regardless whether only some of them are actually populated</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/15418">change 15418</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/15418"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Id56a1226d724a374f04231df85fe5b49ffd2c43c </div>
<div style="display:none"> Gerrit-Change-Number: 15418 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>