roo_quantity
API Documentation for roo_quantity
Loading...
Searching...
No Matches
capacitance.h
Go to the documentation of this file.
1#pragma once
2
3#include <cmath>
4
5#include "roo_flags.h"
6#include "roo_logging.h"
8#include "roo_quantity/time.h"
10
11#if defined(ESP32) || defined(ESP8266) || defined(__linux__)
12#include <string>
13#endif
14
15#if defined(ARDUINO)
16#include <Arduino.h>
17#endif
18
19namespace roo_quantity {
20
21/// Representation of capacitance, internally stored as floating-point Farads.
23 public:
24 /// Creates a capacitance object representing an 'unknown' capacitance.
25 Capacitance() : capacitance_(std::nanf("")) {}
26
27 /// Returns the capacitance in kiloFarads.
28 float inKiloFarads() const { return capacitance_ * 0.001f; }
29
30 /// Returns the capacitance in Farads.
31 float inFarads() const { return capacitance_; }
32
33 /// Returns the capacitance in milliFarads.
34 float inMilliFarads() const { return capacitance_ * 1000.0f; }
35
36 /// Returns the capacitance in microFarads.
37 float inMicroFarads() const { return capacitance_ * 1000000.0f; }
38
39 /// Returns the capacitance in nanoFarads.
40 float inNanoFarads() const { return capacitance_ * 1000000000.0f; }
41
42 /// Returns the capacitance in picoFarads.
43 float inPicoFarads() const { return capacitance_ * 1000000000000.0f; }
44
45 /// Returns whether the object represents an unknown capacitance.
46 bool isUnknown() const { return std::isnan(capacitance_); }
47
48 bool operator<(const Capacitance& other) const {
49 return capacitance_ < other.capacitance_;
50 }
51
52 bool operator==(const Capacitance& other) const {
53 return capacitance_ == other.capacitance_;
54 }
55
56 bool operator>(const Capacitance& other) const {
57 return other.capacitance_ < capacitance_;
58 }
59
60 bool operator<=(const Capacitance& other) const {
61 return !(other.capacitance_ < capacitance_);
62 }
63
64 bool operator>=(const Capacitance& other) const {
65 return !(capacitance_ < other.capacitance_);
66 }
67
68 bool operator!=(const Capacitance& other) const {
69 return !(capacitance_ == other.capacitance_);
70 }
71
72 inline Capacitance& operator+=(const Capacitance& other) {
73 capacitance_ += other.inFarads();
74 return *this;
75 }
76
77 inline Capacitance& operator-=(const Capacitance& other) {
78 capacitance_ -= other.inFarads();
79 return *this;
80 }
81
82 inline Capacitance& operator*=(float multi) {
83 capacitance_ *= multi;
84 return *this;
85 }
86
87 inline Capacitance& operator/=(float div) {
88 capacitance_ /= div;
89 return *this;
90 }
91
92#if defined(ESP32) || defined(ESP8266) || defined(__linux__)
93 /// Returns the string representation of the capacitance.
94 std::string asString() const;
95#endif
96
97#if defined(ARDUINO)
98 String asArduinoString() const;
99#endif
100
101 private:
103
104 friend Capacitance CapacitanceInFarads(float);
105
106 explicit Capacitance(float capacitance) : capacitance_(capacitance) {}
107
108 /// Stored in Farads.
109 float capacitance_;
110};
111
112inline Capacitance CapacitanceInFarads(float capacitance);
113
114/// Returns a capacitance object representing an unknown capacitance.
116
117/// Returns a capacitance object equivalent to the specified capacitance
118/// expressed in kiloFarads.
119inline Capacitance CapacitanceInKiloFarads(float capacitance) {
120 return CapacitanceInFarads(capacitance * 1000.0f);
121}
122
123/// Returns a capacitance object equivalent to the specified capacitance
124/// expressed in Farads.
125inline Capacitance CapacitanceInFarads(float capacitance) {
126 return Capacitance(capacitance);
127}
128
129/// Returns a capacitance object equivalent to the specified capacitance
130/// expressed in milliFarads.
131inline Capacitance CapacitanceInMilliFarads(float capacitance) {
132 return CapacitanceInFarads(capacitance * 0.001f);
133}
134
135/// Returns a capacitance object equivalent to the specified capacitance
136/// expressed in microFarads.
137inline Capacitance CapacitanceInMicroFarads(float capacitance) {
138 return CapacitanceInFarads(capacitance * 0.000001f);
139}
140
141/// Returns a capacitance object equivalent to the specified capacitance
142/// expressed in nanoFarads.
143inline Capacitance CapacitanceInNanoFarads(float capacitance) {
144 return CapacitanceInFarads(capacitance * 0.000000001f);
145}
146
147/// Returns a capacitance object equivalent to the specified capacitance
148/// expressed in picoFarads.
149inline Capacitance CapacitanceInPicoFarads(float capacitance) {
150 return CapacitanceInFarads(capacitance * 0.000000000001f);
151}
152
156
160
164
166 return CapacitanceInFarads(a.inFarads() * b);
167}
168
170 return CapacitanceInFarads(a * b.inFarads());
171}
172
174 return CapacitanceInFarads(a.inFarads() / b);
175}
176
178 return a.inFarads() / b.inFarads();
179}
180
181/// Vs charge.
182
184 return ChargeInCoulombs(a.inFarads() * b.inVolts());
185}
186
188 return ChargeInCoulombs(a.inVolts() * b.inFarads());
189}
190
192 return CapacitanceInFarads(a.inCoulombs() / b.inVolts());
193}
194
196 return VoltageInVolts(a.inCoulombs() / b.inFarads());
197}
198
199roo_logging::Stream& operator<<(roo_logging::Stream& os,
200 const Capacitance& val);
201
202} // namespace roo_quantity
Representation of capacitance, internally stored as floating-point Farads.
Definition capacitance.h:22
float inMilliFarads() const
Returns the capacitance in milliFarads.
Definition capacitance.h:34
Capacitance()
Creates a capacitance object representing an 'unknown' capacitance.
Definition capacitance.h:25
float inNanoFarads() const
Returns the capacitance in nanoFarads.
Definition capacitance.h:40
float inFarads() const
Returns the capacitance in Farads.
Definition capacitance.h:31
Capacitance & operator*=(float multi)
Definition capacitance.h:82
float inPicoFarads() const
Returns the capacitance in picoFarads.
Definition capacitance.h:43
bool operator<=(const Capacitance &other) const
Definition capacitance.h:60
bool operator==(const Capacitance &other) const
Definition capacitance.h:52
Capacitance & operator+=(const Capacitance &other)
Definition capacitance.h:72
float inKiloFarads() const
Returns the capacitance in kiloFarads.
Definition capacitance.h:28
float inMicroFarads() const
Returns the capacitance in microFarads.
Definition capacitance.h:37
bool isUnknown() const
Returns whether the object represents an unknown capacitance.
Definition capacitance.h:46
Capacitance & operator/=(float div)
Definition capacitance.h:87
friend Capacitance CapacitanceInFarads(float)
Returns a capacitance object equivalent to the specified capacitance expressed in Farads.
Capacitance & operator-=(const Capacitance &other)
Definition capacitance.h:77
bool operator>(const Capacitance &other) const
Definition capacitance.h:56
bool operator<(const Capacitance &other) const
Definition capacitance.h:48
bool operator!=(const Capacitance &other) const
Definition capacitance.h:68
bool operator>=(const Capacitance &other) const
Definition capacitance.h:64
friend Capacitance UnknownCapacitance()
Returns a capacitance object representing an unknown capacitance.
Representation of charge, internally stored as floating-point Coulombs.
Definition charge.h:19
float inCoulombs() const
Returns the charge in Coulombs.
Definition charge.h:28
Representation of voltage, internally stored as floating-point Volts.
Definition voltage.h:21
float inVolts() const
Returns the voltage in Volts.
Definition voltage.h:30
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
Capacitance CapacitanceInMicroFarads(float capacitance)
Returns a capacitance object equivalent to the specified capacitance expressed in microFarads.
Capacitance CapacitanceInPicoFarads(float capacitance)
Returns a capacitance object equivalent to the specified capacitance expressed in picoFarads.
Voltage VoltageInVolts(float voltage)
Returns a voltage object equivalent to the specified voltage expressed in Volts.
Definition voltage.h:118
Capacitance CapacitanceInMilliFarads(float capacitance)
Returns a capacitance object equivalent to the specified capacitance expressed in milliFarads.
Capacitance UnknownCapacitance()
Returns a capacitance object representing an unknown capacitance.
Area operator+(Area a, Area b)
Definition area.h:171
Area operator-(Area a, Area b)
Definition area.h:175
Capacitance CapacitanceInKiloFarads(float capacitance)
Returns a capacitance object equivalent to the specified capacitance expressed in kiloFarads.
Capacitance CapacitanceInFarads(float capacitance)
Returns a capacitance object equivalent to the specified capacitance expressed in Farads.
Capacitance CapacitanceInNanoFarads(float capacitance)
Returns a capacitance object equivalent to the specified capacitance expressed in nanoFarads.
Area operator/(Area a, float b)
Definition area.h:191
Area operator*(Area a, float b)
Definition area.h:183
Charge ChargeInCoulombs(float charge)
Returns a charge object equivalent to the specified charge expressed in Coulombs.
Definition charge.h:112