/**
* Load a protocol decoder module into the embedded Python interpreter.
*
- * @param name The module name to be loaded.
+ * @param module_name The module name to be loaded.
*
* @return SRD_OK upon success, a (negative) error code otherwise.
*/
struct srd_decoder *d;
int alen, ret, i;
char **ann;
+ struct srd_probe *p;
+ GSList *l;
srd_dbg("Loading protocol decoder '%s'.", module_name);
/* Import the Python module. */
if (!(d->py_mod = PyImport_ImportModule(module_name))) {
- catch_exception("Import of '%s' failed.", module_name);
+ srd_exception_catch("Import of '%s' failed.", module_name);
goto err_out;
}
if (get_probes(d, "optional_probes", &d->opt_probes) != SRD_OK)
goto err_out;
+ /*
+ * Fix order numbers for the optional probes.
+ *
+ * Example:
+ * Required probes: r1, r2, r3. Optional: o1, o2, o3, o4.
+ * 'order' fields in the d->probes list = 0, 1, 2.
+ * 'order' fields in the d->opt_probes list = 3, 4, 5, 6.
+ */
+ for (l = d->opt_probes; l; l = l->next) {
+ p = l->data;
+ p->order += g_slist_length(d->probes);
+ }
+
/* Store required fields in newly allocated strings. */
if (py_attr_as_str(d->py_dec, "id", &(d->id)) != SRD_OK)
goto err_out;
* @return A newly allocated buffer containing the protocol decoder's
* documentation. The caller is responsible for free'ing the buffer.
*/
-SRD_API char *srd_decoder_doc(const struct srd_decoder *dec)
+SRD_API char *srd_decoder_doc_get(const struct srd_decoder *dec)
{
PyObject *py_str;
char *doc;
return NULL;
if (!(py_str = PyObject_GetAttrString(dec->py_mod, "__doc__"))) {
- catch_exception("");
+ srd_exception_catch("");
return NULL;
}