def from_reg_unsigned(_offset, _len, xform=lambda obj, x: x):
    """ Returns a callable that will unpack an unsigned data value from a
    register bitfield. Designed as shorthand for common use in instrument
    register accessor lists. Supports single and compound registers
    (i.e. data values that span more than one register).

    :param _offset: Offset of data field in the register (set)
    :param _len: Length of data field in the register (set)
    :param xform: a callable that translates the register value to the
        user attribute's natural units
    """
    mask = ((1 << _len) - 1) << _offset

    def __ug(obj, reg):
        try:
            return xform(obj, (reg & mask) >> _offset)
        except TypeError:
            v = 0
            for r in reg:
                v <<= 32
                v |= r

            return xform(obj, (v & mask) >> _offset)

    return __ug