17#ifndef PHYPHOX_BLE_EXPERIMENT
18#define PHYPHOX_BLE_EXPERIMENT
25#define STYLE_LINES "lines"
26#define STYLE_DOTS "dots"
27#define STYLE_VBARS "vbars"
28#define STYLE_HBARS "hbars"
29#define STYLE_MAP "map"
30#define LAYOUT_AUTO "auto"
31#define LAYOUT_EXTEND "extend"
32#define LAYOUT_FIXED "fixed"
38 PhyphoxBleExperiment(
const char* title,
const char* category =
nullptr,
const char* description =
nullptr);
147 void addMap(
float min,
float max,
const char* text);
150 void setMaps(
int n,
const float* mins,
const float* maxs,
const char*
const texts[]);
197 Slider(
const char* label,
float minValue,
float maxValue,
float stepSize,
int channel = 0);
211 void setOptions(
int n,
const char*
const labels[],
const float* values);
#define PHYPHOX_BLE_INLINE_OPTIONS
Entries the incremental addMap()/addOption() setters keep inside the builder object before addExperim...
Definition Config.h:41
Definition phyphoxBleExperiment.h:206
Dropdown()
Definition phyphoxBleExperiment.h:208
uint8_t optionCount
Definition phyphoxBleExperiment.h:219
const char *const * optionLabels
setOptions(): the caller's arrays
Definition phyphoxBleExperiment.h:217
void setOptions(int n, const char *const labels[], const float *values)
1.x form: n options from two arrays (copied at addExperiment; the arrays may be locals).
phyphox::MapEntry inlineOptions[PHYPHOX_BLE_INLINE_OPTIONS]
Definition phyphoxBleExperiment.h:216
const float * optionValues
Definition phyphoxBleExperiment.h:218
void setColor(const char *)
void addOption(const char *label, float value)
New in 2.0; up to PHYPHOX_BLE_INLINE_OPTIONS this way, any number via setOptions().
Dropdown(const char *label, int channel=0)
Definition phyphoxBleExperiment.h:209
Definition phyphoxBleExperiment.h:173
void submitWith(Button &)
Deliver this field only when button is pressed (format 1.20, triggerId).
Edit()
Definition phyphoxBleExperiment.h:175
Edit(const char *label, int channel=0)
Definition phyphoxBleExperiment.h:176
void setUnit(const char *)
Base of every view element. Holds the plain data the serializer reads.
Definition phyphoxBleExperiment.h:47
const Element * aliasOf
An element added to a second view is represented there by a small heap-allocated alias that points ba...
Definition phyphoxBleExperiment.h:68
phyphox::ElementData data_
Definition phyphoxBleExperiment.h:71
virtual void setLabel(const char *)
void setXMLAttribute(const char *)
Raw attribute text appended verbatim to the element's start tag, e.g.
const phyphox::ElementData & data() const
Definition phyphoxBleExperiment.h:61
virtual ~Element()
Definition phyphoxBleExperiment.h:51
Element(const Element &)=delete
View * owner
the view whose list holds this object (set by addElement)
Definition phyphoxBleExperiment.h:64
void setVisibility(int inputChannel)
Show the element only while the last value in that input channel is > 0 (a toggle's channel,...
Element * next
intrusive list link, set by View::addElement()
Definition phyphoxBleExperiment.h:63
Element(phyphox::ElementType t)
Definition phyphoxBleExperiment.h:70
virtual bool isExportData() const
Definition phyphoxBleExperiment.h:62
Element & operator=(const Element &)=delete
phyphox::ElementData & data()
Definition phyphoxBleExperiment.h:60
Definition phyphoxBleExperiment.h:271
bool isExportData() const override
Definition phyphoxBleExperiment.h:278
ExportData(const char *label, int channel)
Definition phyphoxBleExperiment.h:274
ExportData * nextEntry
Definition phyphoxBleExperiment.h:280
phyphox::ExportDataData exportData
Definition phyphoxBleExperiment.h:279
ExportData()
Definition phyphoxBleExperiment.h:273
void setDatachannel(int)
0 = time, 1…5 = data channels
void setLabel(const char *) override
void setDataChannel(int c)
Definition phyphoxBleExperiment.h:276
Definition phyphoxBleExperiment.h:283
ExportSet * next
Definition phyphoxBleExperiment.h:295
void setXMLAttribute(const char *)
ExportData * lastEntry
Definition phyphoxBleExperiment.h:294
phyphox::ErrorRecord error
Definition phyphoxBleExperiment.h:296
ExportData * entries
list head
Definition phyphoxBleExperiment.h:293
ExportSet & addElement(ExportData &)
void addElement(Element &)
1.x signature; must be an ExportData
ExportSet(const char *label)
Definition phyphoxBleExperiment.h:286
phyphox::ExportSetData data
Definition phyphoxBleExperiment.h:292
void setLabel(const char *)
ExportSet(const ExportSet &)=delete
One additional curve in a graph.
Definition phyphoxBleExperiment.h:78
Subgraph(const Subgraph &)=delete
void setStyle(const char *style)
void setLineWidth(float w)
Definition phyphoxBleExperiment.h:86
phyphox::ErrorRecord error
Definition phyphoxBleExperiment.h:88
Subgraph * next
Definition phyphoxBleExperiment.h:89
void setChannel(int x, int y)
0 = time, 1…5 = data channels
phyphox::SubgraphData data
Definition phyphoxBleExperiment.h:87
void setColor(const char *hex6)
Definition phyphoxBleExperiment.h:74
void setSuppressScientificNotation(bool)
void setPartialUpdate(bool)
Graph()
Definition phyphoxBleExperiment.h:92
void setChannel(int x, int y)
the first curve
void setLabelX(const char *)
void setMinY(float, const char *layout)
void addChannel(int x, int y, const char *color)
1.x shortcut: add a curve in one call
void setUnitYperX(const char *)
void setMinX(float, const char *layout)
void setMaxY(float, const char *layout)
void setHideTimeMarkers(bool)
void setUnitY(const char *)
Subgraph * lastSubgraph
Definition phyphoxBleExperiment.h:130
void addSubgraph(Subgraph &)
Subgraph first
the curve setChannel/setStyle/setColor configure
Definition phyphoxBleExperiment.h:128
void setLinewidth(float)
first curve
void setStyle(const char *)
first curve
void setShowColorScale(bool)
void setUnitX(const char *)
Subgraph * subgraphs
added curves, in order
Definition phyphoxBleExperiment.h:129
void setLabelY(const char *)
void setLineWidth(float w)
Definition phyphoxBleExperiment.h:111
void setMaxX(float, const char *layout)
Graph(const char *label)
Definition phyphoxBleExperiment.h:93
void setColor(const char *)
first curve
void setAspectRatio(float)
Definition phyphoxBleExperiment.h:232
InfoField()
Definition phyphoxBleExperiment.h:234
void setColor(const char *)
InfoField(const char *text)
Definition phyphoxBleExperiment.h:235
void setAlign(const char *leftRightCenter)
void setInfo(const char *)
the text (the info element's label)
A sensor of the phone whose readings the phone sends to the board.
Definition phyphoxBleExperiment.h:302
void setType(const char *)
a SENSOR_* constant (phyphox file-format name)
void setRateStrategy(const char *)
How the phone reconciles the requested rate with what its sensor offers: "auto", "request",...
void setStride(int n)
use only every n-th reading (1.14)
void setNameFilter(const char *)
Select a sensor by name (the app's device info lists them) — needed for SENSOR_CUSTOM,...
void setTypeFilter(int androidSensorType)
select by Android sensor type constant (1.19)
Sensor(const char *type)
Definition phyphoxBleExperiment.h:305
void mapChannel(const char *component, int ch)
Deliver component ("x", "y", "z", "abs", "accuracy", "t") into input channel ch.
void setXMLAttribute(const char *)
Sensor * next
Definition phyphoxBleExperiment.h:323
void setComponent(const char *)
1.x: like mapChannel(component, next free)
Sensor(const Sensor &)=delete
phyphox::SensorData data
Definition phyphoxBleExperiment.h:322
Definition phyphoxBleExperiment.h:245
void setColor(const char *)
Separator()
Definition phyphoxBleExperiment.h:247
Definition phyphoxBleExperiment.h:194
void setColor(const char *)
new in 2.0
Slider(const char *label, float minValue, float maxValue, float stepSize, int channel=0)
Slider()
Definition phyphoxBleExperiment.h:196
Definition phyphoxBleExperiment.h:188
Toggle(const char *label, int channel=0)
Definition phyphoxBleExperiment.h:191
Toggle()
Definition phyphoxBleExperiment.h:190
Definition phyphoxBleExperiment.h:133
const phyphox::MapEntry * mapsArray
reserved
Definition phyphoxBleExperiment.h:153
void addMap(float min, float max, const char *text)
Show text instead of the number while min <= value <= max (D17); the first match wins.
void setChannel(int)
data channel 1…5 shown
void setUnit(const char *)
Value()
Definition phyphoxBleExperiment.h:135
phyphox::MapEntry inlineMaps[PHYPHOX_BLE_INLINE_OPTIONS]
Definition phyphoxBleExperiment.h:152
void addMapBelow(float max, const char *text)
const char *const * mapsTexts
Definition phyphoxBleExperiment.h:156
const float * mapsMins
setMaps(): the caller's arrays, read at addExperiment
Definition phyphoxBleExperiment.h:154
Value(const char *label, int channel=1)
Definition phyphoxBleExperiment.h:136
const float * mapsMaxs
Definition phyphoxBleExperiment.h:155
void setColor(const char *)
void addMapAbove(float min, const char *text)
void setMaps(int n, const float *mins, const float *maxs, const char *const texts[])
uint8_t mapCount
Definition phyphoxBleExperiment.h:157
A tab in the app. Links its elements into a list until addExperiment() copies them.
Definition phyphoxBleExperiment.h:253
View & addElement(Element &)
View * next
Definition phyphoxBleExperiment.h:265
void setXMLAttribute(const char *)
View(const char *label)
Definition phyphoxBleExperiment.h:256
~View()
frees the aliases this view created
phyphox::ErrorRecord error
Definition phyphoxBleExperiment.h:266
Element * elements
list head
Definition phyphoxBleExperiment.h:263
View(const View &)=delete
void setLabel(const char *)
phyphox::ViewData data
Definition phyphoxBleExperiment.h:262
Element * lastElement
Definition phyphoxBleExperiment.h:264
Definition phyphoxBleExperiment.h:34
View * lastView
Definition phyphoxBleExperiment.h:344
void setCategory(const char *)
Sensor * sensors
Definition phyphoxBleExperiment.h:345
PhyphoxBleExperiment & addExportSet(ExportSet &)
PhyphoxBleExperiment & addView(View &)
PhyphoxBleExperiment & addSensor(Sensor &)
PhyphoxBleExperiment(const PhyphoxBleExperiment &)=delete
void setResendUnchanged(bool)
1.x behaviour: the phone writes every input's value every analysis cycle, not only on change (decisio...
void setTitle(const char *)
phyphox::ExperimentData data
experiment-level fields; arrays filled at addExperiment
Definition phyphoxBleExperiment.h:342
void setSubscribeOnStart(bool)
View * views
list heads
Definition phyphoxBleExperiment.h:343
ExportSet * lastExportSet
Definition phyphoxBleExperiment.h:348
ExportSet * exportSets
Definition phyphoxBleExperiment.h:347
PhyphoxBleExperiment & operator=(const PhyphoxBleExperiment &)=delete
Sensor * lastSensor
Definition phyphoxBleExperiment.h:346
void setColor(const char *)
PhyphoxBleExperiment()=default
PhyphoxBleExperiment(const char *title, const char *category=nullptr, const char *description=nullptr)
Shortcut for setTitle/setCategory/setDescription.
void setDescription(const char *)
void setRepeating(int)
Samples per data notification when using the array write; emits the repeating attribute.
Definition ChannelStore.h:11
ElementType
Definition ElementData.h:22
void(* ChangeCallback)(float value)
Callback types. Plain function pointers (captureless lambdas convert), never std::function.
Definition ElementData.h:19
void(* PressCallback)()
Definition ElementData.h:20
One view element. label and xmlAttribute are common to all; the union holds the rest.
Definition ElementData.h:146
void init(ElementType t)
Activate the union member for t with its defaults (the builders call this).
The first error recorded on an element, with the setter it came from.
Definition Errors.h:26
The whole experiment.
Definition ElementData.h:211
Definition ElementData.h:178
Definition ElementData.h:184
A value map entry (text shown while min <= value <= max) or a dropdown option (text + value).
Definition ElementData.h:68
Definition ElementData.h:193
One curve of a graph. Channel 0 is the phone's arrival time, 1…5 the data channels.
Definition ElementData.h:35
Definition ElementData.h:171