roo_quantity
API Documentation for roo_quantity
Loading...
Searching...
No Matches
mass.cpp
Go to the documentation of this file.
1#include "roo_quantity/mass.h"
2
3namespace roo_quantity {
4namespace {
5
6void MassToString(Mass val, char* out, int maxlen) {
7 if (val.isUnknown()) {
8 strncpy(out, "? kg", maxlen);
9 } else {
10 const char* format;
11 const char* sign = "";
12 float num;
13 if (val.inKg() == 0.0f) {
14 snprintf(out, maxlen, "0 kg");
15 return;
16 }
17 if (val.inKg() < 0) {
18 sign = "-";
19 val = -val;
20 }
21 if (val >= MassInTons(1.0f)) {
22 format = "%s%g t";
23 num = val.inTons();
24 } else if (val >= MassInKilograms(1.0f)) {
25 format = "%s%g kg";
26 num = val.inKilograms();
27 } else if (val >= MassInGrams(1.0f)) {
28 format = "%s%g g";
29 num = val.inGrams();
30 } else if (val >= MassInMilligrams(1.0f)) {
31 format = "%s%g mg";
32 num = val.inMilligrams();
33 } else {
34 format = "%s%g µg";
35 num = val.inMicrograms();
36 }
37 snprintf(out, maxlen, format, sign, num);
38 }
39}
40
41} // namespace
42
43#if defined(ESP32) || defined(ESP8266) || defined(__linux__)
44
45std::string Mass::asString() const {
46 char out[16];
47 MassToString(*this, out, 16);
48 return out;
49}
50
51#endif
52
53#if defined(ARDUINO)
54
55String Mass::asArduinoString() const {
56 char out[16];
57 MassToString(*this, out, 16);
58 return out;
59}
60
61#endif
62
63roo_logging::Stream& operator<<(roo_logging::Stream& os, const Mass& val) {
64 char out[16];
65 MassToString(val, out, 16);
66 os << out;
67 return os;
68}
69
70} // namespace roo_quantity
Representation of mass, internally stored as floating-point kilograms.
Definition mass.h:19
For convenience conversion from roo_time::Duration.
Definition area.cpp:3
roo_logging::Stream & operator<<(roo_logging::Stream &os, const Area &val)
Definition area.cpp:57
Mass MassInMilligrams(float mass)
Returns a mass object equivalent to the specified mass expressed in milligrams.
Definition mass.h:125
Mass MassInGrams(float mass)
Returns a mass object equivalent to the specified mass expressed in grams.
Definition mass.h:121
Mass MassInTons(float mass)
Returns a mass object equivalent to the specified mass expressed in metric tons.
Definition mass.h:117
Mass MassInKilograms(float mass)
Returns a mass object equivalent to the specified mass expressed in kilograms.
Definition mass.h:109