]> sigrok.org Git - libsigrokdecode.git/blobdiff - type_decoder.c
type_decoder: update and extend Decoder base class doc strings
[libsigrokdecode.git] / type_decoder.c
index b57b60655e0056f84b3d55c57b311e8c125e10fd..d21e92d5d0df76501c0ceb7722e3089e3be7279d 100644 (file)
@@ -396,6 +396,13 @@ static void release_meta(GVariant *gvar)
        g_variant_unref(gvar);
 }
 
+PyDoc_STRVAR(Decoder_put_doc,
+       "Put an annotation for the specified span of samples.\n"
+       "\n"
+       "Arguments: start and end sample number, stream id, annotation data.\n"
+       "Annotation data's layout depends on the output stream type."
+);
+
 static PyObject *Decoder_put(PyObject *self, PyObject *args)
 {
        GSList *l;
@@ -554,8 +561,12 @@ err:
        return NULL;
 }
 
-static PyObject *Decoder_register(PyObject *self, PyObject *args,
-               PyObject *kwargs)
+PyDoc_STRVAR(Decoder_register_doc,
+       "Register a new output stream."
+);
+
+static PyObject *Decoder_register(PyObject *self,
+       PyObject *args, PyObject *kwargs)
 {
        struct srd_decoder_inst *di;
        struct srd_pd_output *pdo;
@@ -952,6 +963,23 @@ static int set_skip_condition(struct srd_decoder_inst *di, uint64_t count)
        return SRD_OK;
 }
 
+PyDoc_STRVAR(Decoder_wait_doc,
+       "Wait for one or more conditions to occur.\n"
+       "\n"
+       "Returns the sample data at the next position where the condition\n"
+       "is seen. When the optional condition is missing or empty, the next\n"
+       "sample number is used. The condition can be a dictionary with one\n"
+       "condition's details, or a list of dictionaries specifying multiple\n"
+       "conditions of which at least one condition must be true. Dicts can\n"
+       "contain one or more key/value pairs, all of which must be true for\n"
+       "the dict's condition to be considered true. The key either is a\n"
+       "channel index or a keyword, the value is the operation's parameter.\n"
+       "\n"
+       "Supported parameters for channel number keys: 'h', 'l', 'r', 'f',\n"
+       "or 'e' for level or edge conditions. Other supported keywords:\n"
+       "'skip' to advance over the given number of samples.\n"
+);
+
 static PyObject *Decoder_wait(PyObject *self, PyObject *args)
 {
        int ret;
@@ -1085,6 +1113,14 @@ err:
        return NULL;
 }
 
+PyDoc_STRVAR(Decoder_has_channel_doc,
+       "Check whether input data is supplied for a given channel.\n"
+       "\n"
+       "Argument: A channel index.\n"
+       "Returns: A boolean, True if the channel is connected,\n"
+       "False if the channel is open (won't see any input data).\n"
+);
+
 /**
  * Return whether the specified channel was supplied to the decoder.
  *
@@ -1141,15 +1177,25 @@ err:
        return NULL;
 }
 
+PyDoc_STRVAR(Decoder_doc, "sigrok Decoder base class");
+
 static PyMethodDef Decoder_methods[] = {
-       { "put", Decoder_put, METH_VARARGS,
-         "Accepts a dictionary with the following keys: startsample, endsample, data" },
-       { "register", (PyCFunction)(void(*)(void))Decoder_register, METH_VARARGS|METH_KEYWORDS,
-                       "Register a new output stream" },
-       { "wait", Decoder_wait, METH_VARARGS,
-                       "Wait for one or more conditions to occur" },
-       { "has_channel", Decoder_has_channel, METH_VARARGS,
-                       "Report whether a channel was supplied" },
+       { "put",
+         Decoder_put, METH_VARARGS,
+         Decoder_put_doc,
+       },
+       { "register",
+         (PyCFunction)(void(*)(void))Decoder_register, METH_VARARGS | METH_KEYWORDS,
+         Decoder_register_doc,
+       },
+       { "wait",
+         Decoder_wait, METH_VARARGS,
+         Decoder_wait_doc,
+       },
+       { "has_channel",
+         Decoder_has_channel, METH_VARARGS,
+         Decoder_has_channel_doc,
+       },
        {NULL, NULL, 0, NULL}
 };
 
@@ -1164,7 +1210,7 @@ SRD_PRIV PyObject *srd_Decoder_type_new(void)
 {
        PyType_Spec spec;
        PyType_Slot slots[] = {
-               { Py_tp_doc, "sigrok Decoder base class" },
+               { Py_tp_doc, Decoder_doc },
                { Py_tp_methods, Decoder_methods },
                { Py_tp_new, (void *)&PyType_GenericNew },
                { 0, NULL }