12#include <nanopb/pb_decode.h>
13#include <nanopb/pb_encode.h>
44 double voltage,
double current, uint8_t*
buffer) {
45 Measurement meas = Measurement_init_zero;
50 meas.meta.logger_id = logger_id;
51 meas.meta.cell_id = cell_id;
53 meas.which_measurement = Measurement_power_tag;
54 meas.measurement.power.voltage = voltage;
55 meas.measurement.power.current = current;
61 uint32_t cell_id,
double vwc_raw,
62 double vwc_adj,
double temp, uint32_t ec,
64 Measurement meas = Measurement_init_zero;
69 meas.meta.logger_id = logger_id;
70 meas.meta.cell_id = cell_id;
72 meas.which_measurement = Measurement_teros12_tag;
73 meas.measurement.teros12.vwc_raw = vwc_raw;
74 meas.measurement.teros12.vwc_adj = vwc_adj;
75 meas.measurement.teros12.temp = temp;
76 meas.measurement.teros12.ec = ec;
82 uint32_t cell_id,
double voltage,
83 double leaf_wetness, uint8_t*
buffer) {
84 Measurement meas = Measurement_init_zero;
89 meas.meta.logger_id = logger_id;
90 meas.meta.cell_id = cell_id;
92 meas.which_measurement = Measurement_phytos31_tag;
93 meas.measurement.phytos31.voltage = voltage;
94 meas.measurement.phytos31.leaf_wetness = leaf_wetness;
100 uint32_t cell_id, uint32_t pressure,
101 int32_t temperature, uint32_t humidity,
103 Measurement meas = Measurement_init_zero;
105 meas.has_meta =
true;
108 meas.meta.logger_id = logger_id;
109 meas.meta.cell_id = cell_id;
111 meas.which_measurement = Measurement_bme280_tag;
112 meas.measurement.bme280.pressure = pressure;
113 meas.measurement.bme280.temperature = temperature;
114 meas.measurement.bme280.humidity = humidity;
120 uint32_t cell_id,
double matric_pot,
121 double temp, uint8_t*
buffer) {
122 Measurement meas = Measurement_init_zero;
124 meas.has_meta =
true;
127 meas.meta.logger_id = logger_id;
128 meas.meta.cell_id = cell_id;
130 meas.which_measurement = Measurement_teros21_tag;
131 meas.measurement.teros21.matric_pot = matric_pot;
132 meas.measurement.teros21.temp = temp;
138 uint32_t cell_id,
double voltage,
139 double humidity, uint8_t*
buffer) {
140 Measurement meas = Measurement_init_zero;
142 meas.has_meta =
true;
145 meas.meta.logger_id = logger_id;
146 meas.meta.cell_id = cell_id;
148 meas.which_measurement = Measurement_sen0308_tag;
149 meas.measurement.sen0308.voltage = voltage;
150 meas.measurement.sen0308.humidity = humidity;
156 uint32_t cell_id,
double voltage,
157 double water_pressure, uint8_t*
buffer) {
158 Measurement meas = Measurement_init_zero;
160 meas.has_meta =
true;
163 meas.meta.logger_id = logger_id;
164 meas.meta.cell_id = cell_id;
166 meas.which_measurement = Measurement_sen0257_tag;
167 meas.measurement.sen0257.voltage = voltage;
168 meas.measurement.sen0257.pressure = water_pressure;
174 uint32_t cell_id,
double water_flow,
176 Measurement meas = Measurement_init_zero;
178 meas.has_meta =
true;
181 meas.meta.logger_id = logger_id;
182 meas.meta.cell_id = cell_id;
184 meas.which_measurement = Measurement_yfs210c_tag;
185 meas.measurement.yfs210c.flow = water_flow;
191 uint32_t cell_id,
double capacitance,
193 Measurement meas = Measurement_init_zero;
195 meas.has_meta =
true;
198 meas.meta.logger_id = logger_id;
199 meas.meta.cell_id = cell_id;
201 meas.which_measurement = Measurement_pcap02_tag;
202 meas.measurement.pcap02.capacitance = capacitance;
211 pb_istream_t istream = pb_istream_from_buffer(
data, len);
213 bool status = pb_decode(&istream, Response_fields, &resp);
224 pb_ostream_t ostream = pb_ostream_from_buffer(
buffer, 256);
226 bool status = pb_encode(&ostream, Measurement_fields, meas);
232 return ostream.bytes_written;
237 pb_istream_t istream = pb_istream_from_buffer(
buffer, len);
238 bool status = pb_decode(&istream, Measurement_fields, meas);
249 pb_istream_t istream = pb_istream_from_buffer(
data, len);
250 pb_decode(&istream, Esp32Command_fields, &cmd);
256 size_t n, uint8_t*
buffer,
size_t size) {
258 Esp32Command cmd = Esp32Command_init_default;
259 cmd.which_command = Esp32Command_page_command_tag;
260 cmd.command.page_command.file_request = req;
261 cmd.command.page_command.file_descriptor = fd;
262 cmd.command.page_command.block_size = bs;
263 cmd.command.page_command.num_bytes = n;
269 uint8_t*
buffer,
size_t size) {
270 Esp32Command cmd = Esp32Command_init_default;
271 cmd.which_command = Esp32Command_test_command_tag;
272 cmd.command.test_command.state =
state;
273 cmd.command.test_command.data =
data;
280 Esp32Command cmd = Esp32Command_init_default;
282 cmd.which_command = Esp32Command_microsd_command_tag;
285 memcpy(&cmd.command.microsd_command, microsd_cmd,
sizeof(MicroSDCommand));
292 Esp32Command cmd = Esp32Command_init_default;
294 cmd.which_command = Esp32Command_wifi_command_tag;
297 memcpy(&cmd.command.wifi_command, wifi_cmd,
sizeof(WiFiCommand));
303 const UserConfiguration* config_data,
304 uint8_t*
buffer,
size_t size) {
306 Esp32Command cmd = Esp32Command_init_default;
307 cmd.which_command = Esp32Command_user_config_command_tag;
308 cmd.command.user_config_command.type = type;
311 if (config_data != NULL) {
312 cmd.command.user_config_command.has_config_data =
true;
313 memcpy(&cmd.command.user_config_command.config_data, config_data,
314 sizeof(UserConfiguration));
316 cmd.command.user_config_command.has_config_data =
false;
323 uint8_t*
buffer,
size_t size) {
324 Esp32Command cmd = Esp32Command_init_default;
326 cmd.which_command = Esp32Command_irrigation_command_tag;
329 memcpy(&cmd.command.irrigation_command, irrigation_cmd,
330 sizeof(IrrigationCommand));
337 Esp32Command cmd = Esp32Command_init_default;
339 cmd.which_command = Esp32Command_power_command_tag;
342 memcpy(&cmd.command.power_command, power_cmd,
sizeof(PowerCommand));
350 pb_ostream_t ostream = pb_ostream_from_buffer(
buffer, size);
352 bool status = pb_encode(&ostream, Esp32Command_fields, cmd);
358 return ostream.bytes_written;
364 pb_ostream_t ostream = pb_ostream_from_buffer(
buffer, UserConfiguration_size);
367 bool status = pb_encode(&ostream, UserConfiguration_fields, config);
373 return ostream.bytes_written;
377 UserConfiguration* config) {
379 pb_istream_t istream = pb_istream_from_buffer(
data, len);
382 bool status = pb_decode(&istream, UserConfiguration_fields, config);
size_t EncodeTeros21Measurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double matric_pot, double temp, uint8_t *buffer)
Encodes a Teros21 measurement.
size_t EncodeWiFiCommand(const WiFiCommand *wifi_cmd, uint8_t *buffer, size_t size)
Encodes a WiFiCommand.
size_t EncodeWaterFlowMeasurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double water_flow, uint8_t *buffer)
Encodes a Water Flow measurement.
int DecodeUserConfiguration(const uint8_t *data, const size_t len, UserConfiguration *config)
Decodes user configuration data.
size_t EncodePhytos31Measurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double voltage, double leaf_wetness, uint8_t *buffer)
Encodes a Phytos31 measurement.
size_t EncodePageCommand(PageCommand_RequestType req, int fd, size_t bs, size_t n, uint8_t *buffer, size_t size)
Encodes a page command.
Response_ResponseType DecodeResponse(const uint8_t *data, const size_t len)
Decodes a response message.
size_t EncodePCAP02Measurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double capacitance, uint8_t *buffer)
Encodes a PCAP02 measurement.
size_t EncodeTestCommand(TestCommand_ChangeState state, int32_t data, uint8_t *buffer, size_t size)
Encodes a test command.
size_t EncodePowerCommand(const PowerCommand *power_cmd, uint8_t *buffer, size_t size)
Encodes a PowerCommand.
size_t EncodeSEN0308Measurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double voltage, double humidity, uint8_t *buffer)
Encodes a Capacitive Soil Moisture measurement.
size_t EncodeIrrigationCommand(const IrrigationCommand *irrigation_cmd, uint8_t *buffer, size_t size)
Encodes an IrrigationCommand.
Esp32Command DecodeEsp32Command(const uint8_t *data, const size_t len)
Decodes an Esp32Command message.
size_t EncodePowerMeasurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double voltage, double current, uint8_t *buffer)
Encodes a power measurement.
size_t EncodeUserConfigCommand(UserConfigCommand_RequestType type, const UserConfiguration *config_data, uint8_t *buffer, size_t size)
Encodes a UserConfigCommand into a protobuf message.
size_t EncodeBME280Measurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, uint32_t pressure, int32_t temperature, uint32_t humidity, uint8_t *buffer)
Encodes a BME280 measurement.
size_t EncodeUserConfiguration(const UserConfiguration *config, uint8_t *buffer)
Encodes user configuration data.
size_t EncodeTeros12Measurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double vwc_raw, double vwc_adj, double temp, uint32_t ec, uint8_t *buffer)
Encodes a Teros12 measurement.
size_t EncodeWaterPressMeasurement(uint32_t ts, uint32_t logger_id, uint32_t cell_id, double voltage, double water_pressure, uint8_t *buffer)
Encodes a Water Pressure measurement.
size_t EncodeMicroSDCommand(const MicroSDCommand *microsd_cmd, uint8_t *buffer, size_t size)
Encodes a MicroSDCommand.
int DecodeMeasurement(Measurement *meas, const uint8_t *buffer, const size_t len)
Decodes a measurement.
size_t EncodeEsp32Command(const Esp32Command *cmd, uint8_t *buffer, size_t size)
Encodes a esp32command.
size_t EncodeMeasurement(Measurement *meas, uint8_t *buffer)
Encodes a measurement.
Library for encoding/decoding protobuf messages.