@@ -315,6 +315,7 @@ class Chip:
req_internal = self._chip.request_lines(line_cfg, consumer, event_buffer_size)
request = LineRequest(req_internal)
+ request._chip_name = req_internal.chip_name
request._offsets = req_internal.offsets
request._name_map = name_map
request._offset_map = offset_map
@@ -37,6 +37,13 @@ static void request_finalize(request_object *self)
gpiod_edge_event_buffer_free(self->buffer);
}
+static PyObject *
+request_chip_name(request_object *self, void *Py_UNUSED(ignored))
+{
+ return PyUnicode_FromString(
+ gpiod_line_request_get_chip_name(self->request));
+}
+
static PyObject *
request_num_lines(request_object *self, void *Py_UNUSED(ignored))
{
@@ -92,6 +99,10 @@ static PyObject *request_fd(request_object *self, void *Py_UNUSED(ignored))
}
static PyGetSetDef request_getset[] = {
+ {
+ .name = "chip_name",
+ .get = (getter)request_chip_name,
+ },
{
.name = "num_lines",
.get = (getter)request_num_lines,
@@ -212,10 +212,18 @@ class LineRequest:
if not self._req:
return "<LineRequest RELEASED>"
- return "<LineRequest num_lines={} offsets={} fd={}>".format(
- self.num_lines, self.offsets, self.fd
+ return '<LineRequest chip="{}" num_lines={} offsets={} fd={}>'.format(
+ self.chip_name, self.num_lines, self.offsets, self.fd
)
+ @property
+ def chip_name(self) -> str:
+ """
+ Name of the chip this request was made on.
+ """
+ self._check_released()
+ return self._chip_name
+
@property
def num_lines(self) -> int:
"""
@@ -529,11 +529,14 @@ class LineRequestStringRepresentation(TestCase):
del self.sim
def test_str(self):
- with gpiod.request_lines(self.sim.dev_path, config={(2, 6, 4, 1): None}) as req:
- self.assertEqual(
- str(req),
- "<LineRequest num_lines=4 offsets=[2, 6, 4, 1] fd={}>".format(req.fd),
- )
+ with gpiod.Chip(self.sim.dev_path) as chip:
+ with chip.request_lines(config={(2, 6, 4, 1): None}) as req:
+ self.assertEqual(
+ str(req),
+ '<LineRequest chip="{}" num_lines=4 offsets=[2, 6, 4, 1] fd={}>'.format(
+ self.sim.name, req.fd
+ ),
+ )
def test_str_released(self):
req = gpiod.request_lines(self.sim.dev_path, config={(2, 6, 4, 1): None})