Bindings: Flesh out the analog payload bindings
This commit is contained in:
parent
845060fa9d
commit
0cee3a3ea5
|
@ -1227,6 +1227,58 @@ vector<shared_ptr<Channel>> Analog::channels()
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int Analog::unitsize() const
|
||||||
|
{
|
||||||
|
return _structure->encoding->unitsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Analog::is_signed() const
|
||||||
|
{
|
||||||
|
return _structure->encoding->is_signed;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Analog::is_float() const
|
||||||
|
{
|
||||||
|
return _structure->encoding->is_float;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Analog::is_bigendian() const
|
||||||
|
{
|
||||||
|
return _structure->encoding->is_bigendian;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Analog::digits() const
|
||||||
|
{
|
||||||
|
return _structure->encoding->digits;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Analog::is_digits_decimal() const
|
||||||
|
{
|
||||||
|
return _structure->encoding->is_digits_decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_ptr<Rational> Analog::scale()
|
||||||
|
{
|
||||||
|
unique_ptr<Rational> scale;
|
||||||
|
scale.reset(new Rational(&(_structure->encoding->scale)));
|
||||||
|
|
||||||
|
if (scale)
|
||||||
|
return scale->share_owned_by(shared_from_this());
|
||||||
|
else
|
||||||
|
throw Error(SR_ERR_NA);
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_ptr<Rational> Analog::offset()
|
||||||
|
{
|
||||||
|
unique_ptr<Rational> offset;
|
||||||
|
offset.reset(new Rational(&(_structure->encoding->offset)));
|
||||||
|
|
||||||
|
if (offset)
|
||||||
|
return offset->share_owned_by(shared_from_this());
|
||||||
|
else
|
||||||
|
throw Error(SR_ERR_NA);
|
||||||
|
}
|
||||||
|
|
||||||
const Quantity *Analog::mq() const
|
const Quantity *Analog::mq() const
|
||||||
{
|
{
|
||||||
return Quantity::get(_structure->meaning->mq);
|
return Quantity::get(_structure->meaning->mq);
|
||||||
|
@ -1242,6 +1294,36 @@ vector<const QuantityFlag *> Analog::mq_flags() const
|
||||||
return QuantityFlag::flags_from_mask(_structure->meaning->mqflags);
|
return QuantityFlag::flags_from_mask(_structure->meaning->mqflags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rational::Rational(const struct sr_rational *structure) :
|
||||||
|
_structure(structure)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Rational::~Rational()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_ptr<Rational> Rational::share_owned_by(shared_ptr<Analog> _parent)
|
||||||
|
{
|
||||||
|
return static_pointer_cast<Rational>(
|
||||||
|
ParentOwned::share_owned_by(_parent));
|
||||||
|
}
|
||||||
|
|
||||||
|
int64_t Rational::numerator() const
|
||||||
|
{
|
||||||
|
return _structure->p;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t Rational::denominator() const
|
||||||
|
{
|
||||||
|
return _structure->q;
|
||||||
|
}
|
||||||
|
|
||||||
|
float Rational::value() const
|
||||||
|
{
|
||||||
|
return (float)(_structure->p) / (float)(_structure->q);
|
||||||
|
}
|
||||||
|
|
||||||
InputFormat::InputFormat(const struct sr_input_module *structure) :
|
InputFormat::InputFormat(const struct sr_input_module *structure) :
|
||||||
_structure(structure)
|
_structure(structure)
|
||||||
{
|
{
|
||||||
|
|
|
@ -115,6 +115,7 @@ class SR_API PacketType;
|
||||||
class SR_API Quantity;
|
class SR_API Quantity;
|
||||||
class SR_API Unit;
|
class SR_API Unit;
|
||||||
class SR_API QuantityFlag;
|
class SR_API QuantityFlag;
|
||||||
|
class SR_API Rational;
|
||||||
class SR_API Input;
|
class SR_API Input;
|
||||||
class SR_API InputDevice;
|
class SR_API InputDevice;
|
||||||
class SR_API Output;
|
class SR_API Output;
|
||||||
|
@ -771,6 +772,26 @@ public:
|
||||||
unsigned int num_samples() const;
|
unsigned int num_samples() const;
|
||||||
/** Channels for which this packet contains data. */
|
/** Channels for which this packet contains data. */
|
||||||
vector<shared_ptr<Channel> > channels();
|
vector<shared_ptr<Channel> > channels();
|
||||||
|
/** Size of a single sample in bytes. */
|
||||||
|
unsigned int unitsize() const;
|
||||||
|
/** Samples use a signed data type. */
|
||||||
|
bool is_signed() const;
|
||||||
|
/** Samples use float. */
|
||||||
|
bool is_float() const;
|
||||||
|
/** Samples are stored in big-endian order. */
|
||||||
|
bool is_bigendian() const;
|
||||||
|
/**
|
||||||
|
* Number of significant digits after the decimal point if positive,
|
||||||
|
* or number of non-significant digits before the decimal point if negative
|
||||||
|
* (refers to the value we actually read on the wire).
|
||||||
|
*/
|
||||||
|
int digits() const;
|
||||||
|
/** TBD */
|
||||||
|
bool is_digits_decimal() const;
|
||||||
|
/** TBD */
|
||||||
|
shared_ptr<Rational> scale();
|
||||||
|
/** TBD */
|
||||||
|
shared_ptr<Rational> offset();
|
||||||
/** Measured quantity of the samples in this packet. */
|
/** Measured quantity of the samples in this packet. */
|
||||||
const Quantity *mq() const;
|
const Quantity *mq() const;
|
||||||
/** Unit of the samples in this packet. */
|
/** Unit of the samples in this packet. */
|
||||||
|
@ -787,6 +808,28 @@ private:
|
||||||
friend class Packet;
|
friend class Packet;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Number represented by a numerator/denominator integer pair */
|
||||||
|
class SR_API Rational :
|
||||||
|
public ParentOwned<Rational, Analog>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/** Numerator, i.e. the dividend. */
|
||||||
|
int64_t numerator() const;
|
||||||
|
/** Denominator, i.e. the divider. */
|
||||||
|
uint64_t denominator() const;
|
||||||
|
/** Actual (lossy) value. */
|
||||||
|
float value() const;
|
||||||
|
private:
|
||||||
|
explicit Rational(const struct sr_rational *structure);
|
||||||
|
~Rational();
|
||||||
|
shared_ptr<Rational> share_owned_by(shared_ptr<Analog> parent);
|
||||||
|
|
||||||
|
const struct sr_rational *_structure;
|
||||||
|
|
||||||
|
friend class Analog;
|
||||||
|
friend struct std::default_delete<Rational>;
|
||||||
|
};
|
||||||
|
|
||||||
/** An input format supported by the library */
|
/** An input format supported by the library */
|
||||||
class SR_API InputFormat :
|
class SR_API InputFormat :
|
||||||
public ParentOwned<InputFormat, Context>
|
public ParentOwned<InputFormat, Context>
|
||||||
|
|
Loading…
Reference in New Issue