/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: config.proto */

/* Do not generate deprecated warnings for self */
#ifndef PROTOBUF_C__NO_DEPRECATED
#define PROTOBUF_C__NO_DEPRECATED
#endif

#include "config.pb-c.h"
void   hydroponics__sampling__init
                     (Hydroponics__Sampling         *message)
{
  static const Hydroponics__Sampling init_value = HYDROPONICS__SAMPLING__INIT;
  *message = init_value;
}
size_t hydroponics__sampling__get_packed_size
                     (const Hydroponics__Sampling *message)
{
  assert(message->base.descriptor == &hydroponics__sampling__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t hydroponics__sampling__pack
                     (const Hydroponics__Sampling *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &hydroponics__sampling__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t hydroponics__sampling__pack_to_buffer
                     (const Hydroponics__Sampling *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &hydroponics__sampling__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Hydroponics__Sampling *
       hydroponics__sampling__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (Hydroponics__Sampling *)
     protobuf_c_message_unpack (&hydroponics__sampling__descriptor,
                                allocator, len, data);
}
void   hydroponics__sampling__free_unpacked
                     (Hydroponics__Sampling *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &hydroponics__sampling__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   hydroponics__controller__entry__pid__init
                     (Hydroponics__Controller__Entry__Pid         *message)
{
  static const Hydroponics__Controller__Entry__Pid init_value = HYDROPONICS__CONTROLLER__ENTRY__PID__INIT;
  *message = init_value;
}
void   hydroponics__controller__entry__init
                     (Hydroponics__Controller__Entry         *message)
{
  static const Hydroponics__Controller__Entry init_value = HYDROPONICS__CONTROLLER__ENTRY__INIT;
  *message = init_value;
}
void   hydroponics__controller__init
                     (Hydroponics__Controller         *message)
{
  static const Hydroponics__Controller init_value = HYDROPONICS__CONTROLLER__INIT;
  *message = init_value;
}
size_t hydroponics__controller__get_packed_size
                     (const Hydroponics__Controller *message)
{
  assert(message->base.descriptor == &hydroponics__controller__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t hydroponics__controller__pack
                     (const Hydroponics__Controller *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &hydroponics__controller__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t hydroponics__controller__pack_to_buffer
                     (const Hydroponics__Controller *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &hydroponics__controller__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Hydroponics__Controller *
       hydroponics__controller__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (Hydroponics__Controller *)
     protobuf_c_message_unpack (&hydroponics__controller__descriptor,
                                allocator, len, data);
}
void   hydroponics__controller__free_unpacked
                     (Hydroponics__Controller *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &hydroponics__controller__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   hydroponics__task__cron__init
                     (Hydroponics__Task__Cron         *message)
{
  static const Hydroponics__Task__Cron init_value = HYDROPONICS__TASK__CRON__INIT;
  *message = init_value;
}
void   hydroponics__task__init
                     (Hydroponics__Task         *message)
{
  static const Hydroponics__Task init_value = HYDROPONICS__TASK__INIT;
  *message = init_value;
}
size_t hydroponics__task__get_packed_size
                     (const Hydroponics__Task *message)
{
  assert(message->base.descriptor == &hydroponics__task__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t hydroponics__task__pack
                     (const Hydroponics__Task *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &hydroponics__task__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t hydroponics__task__pack_to_buffer
                     (const Hydroponics__Task *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &hydroponics__task__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Hydroponics__Task *
       hydroponics__task__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (Hydroponics__Task *)
     protobuf_c_message_unpack (&hydroponics__task__descriptor,
                                allocator, len, data);
}
void   hydroponics__task__free_unpacked
                     (Hydroponics__Task *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &hydroponics__task__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   hydroponics__hardware_id__init
                     (Hydroponics__HardwareId         *message)
{
  static const Hydroponics__HardwareId init_value = HYDROPONICS__HARDWARE_ID__INIT;
  *message = init_value;
}
size_t hydroponics__hardware_id__get_packed_size
                     (const Hydroponics__HardwareId *message)
{
  assert(message->base.descriptor == &hydroponics__hardware_id__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t hydroponics__hardware_id__pack
                     (const Hydroponics__HardwareId *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &hydroponics__hardware_id__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t hydroponics__hardware_id__pack_to_buffer
                     (const Hydroponics__HardwareId *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &hydroponics__hardware_id__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Hydroponics__HardwareId *
       hydroponics__hardware_id__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (Hydroponics__HardwareId *)
     protobuf_c_message_unpack (&hydroponics__hardware_id__descriptor,
                                allocator, len, data);
}
void   hydroponics__hardware_id__free_unpacked
                     (Hydroponics__HardwareId *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &hydroponics__hardware_id__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   hydroponics__startup_state__init
                     (Hydroponics__StartupState         *message)
{
  static const Hydroponics__StartupState init_value = HYDROPONICS__STARTUP_STATE__INIT;
  *message = init_value;
}
size_t hydroponics__startup_state__get_packed_size
                     (const Hydroponics__StartupState *message)
{
  assert(message->base.descriptor == &hydroponics__startup_state__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t hydroponics__startup_state__pack
                     (const Hydroponics__StartupState *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &hydroponics__startup_state__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t hydroponics__startup_state__pack_to_buffer
                     (const Hydroponics__StartupState *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &hydroponics__startup_state__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Hydroponics__StartupState *
       hydroponics__startup_state__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (Hydroponics__StartupState *)
     protobuf_c_message_unpack (&hydroponics__startup_state__descriptor,
                                allocator, len, data);
}
void   hydroponics__startup_state__free_unpacked
                     (Hydroponics__StartupState *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &hydroponics__startup_state__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   hydroponics__firmware__init
                     (Hydroponics__Firmware         *message)
{
  static const Hydroponics__Firmware init_value = HYDROPONICS__FIRMWARE__INIT;
  *message = init_value;
}
size_t hydroponics__firmware__get_packed_size
                     (const Hydroponics__Firmware *message)
{
  assert(message->base.descriptor == &hydroponics__firmware__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t hydroponics__firmware__pack
                     (const Hydroponics__Firmware *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &hydroponics__firmware__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t hydroponics__firmware__pack_to_buffer
                     (const Hydroponics__Firmware *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &hydroponics__firmware__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Hydroponics__Firmware *
       hydroponics__firmware__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (Hydroponics__Firmware *)
     protobuf_c_message_unpack (&hydroponics__firmware__descriptor,
                                allocator, len, data);
}
void   hydroponics__firmware__free_unpacked
                     (Hydroponics__Firmware *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &hydroponics__firmware__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
void   hydroponics__config__init
                     (Hydroponics__Config         *message)
{
  static const Hydroponics__Config init_value = HYDROPONICS__CONFIG__INIT;
  *message = init_value;
}
size_t hydroponics__config__get_packed_size
                     (const Hydroponics__Config *message)
{
  assert(message->base.descriptor == &hydroponics__config__descriptor);
  return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
}
size_t hydroponics__config__pack
                     (const Hydroponics__Config *message,
                      uint8_t       *out)
{
  assert(message->base.descriptor == &hydroponics__config__descriptor);
  return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
}
size_t hydroponics__config__pack_to_buffer
                     (const Hydroponics__Config *message,
                      ProtobufCBuffer *buffer)
{
  assert(message->base.descriptor == &hydroponics__config__descriptor);
  return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
}
Hydroponics__Config *
       hydroponics__config__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data)
{
  return (Hydroponics__Config *)
     protobuf_c_message_unpack (&hydroponics__config__descriptor,
                                allocator, len, data);
}
void   hydroponics__config__free_unpacked
                     (Hydroponics__Config *message,
                      ProtobufCAllocator *allocator)
{
  if(!message)
    return;
  assert(message->base.descriptor == &hydroponics__config__descriptor);
  protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
}
static const ProtobufCFieldDescriptor hydroponics__sampling__field_descriptors[6] =
{
  {
    "humidity_ms",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Sampling, humidity_ms),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "temperature_ms",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Sampling, temperature_ms),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "ec_probe_ms",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Sampling, ec_probe_ms),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "ec_probe_temp_ms",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Sampling, ec_probe_temp_ms),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "ph_probe_ms",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Sampling, ph_probe_ms),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "mqtt_ms",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Sampling, mqtt_ms),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__sampling__field_indices_by_name[] = {
  2,   /* field[2] = ec_probe_ms */
  3,   /* field[3] = ec_probe_temp_ms */
  0,   /* field[0] = humidity_ms */
  5,   /* field[5] = mqtt_ms */
  4,   /* field[4] = ph_probe_ms */
  1,   /* field[1] = temperature_ms */
};
static const ProtobufCIntRange hydroponics__sampling__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor hydroponics__sampling__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Sampling",
  "Sampling",
  "Hydroponics__Sampling",
  "hydroponics",
  sizeof(Hydroponics__Sampling),
  6,
  hydroponics__sampling__field_descriptors,
  hydroponics__sampling__field_indices_by_name,
  1,  hydroponics__sampling__number_ranges,
  (ProtobufCMessageInit) hydroponics__sampling__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__controller__entry__pid__field_descriptors[4] =
{
  {
    "sampling",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry__Pid, sampling),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "p",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry__Pid, p),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "i",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry__Pid, i),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "d",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry__Pid, d),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__controller__entry__pid__field_indices_by_name[] = {
  3,   /* field[3] = d */
  2,   /* field[2] = i */
  1,   /* field[1] = p */
  0,   /* field[0] = sampling */
};
static const ProtobufCIntRange hydroponics__controller__entry__pid__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor hydroponics__controller__entry__pid__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Controller.Entry.Pid",
  "Pid",
  "Hydroponics__Controller__Entry__Pid",
  "hydroponics",
  sizeof(Hydroponics__Controller__Entry__Pid),
  4,
  hydroponics__controller__entry__pid__field_descriptors,
  hydroponics__controller__entry__pid__field_indices_by_name,
  1,  hydroponics__controller__entry__pid__number_ranges,
  (ProtobufCMessageInit) hydroponics__controller__entry__pid__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__controller__entry__field_descriptors[6] =
{
  {
    "target",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry, target),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "min",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry, min),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "max",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry, max),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "pid",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry, pid),
    &hydroponics__controller__entry__pid__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "min_graph",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry, min_graph),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "max_graph",
    6,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_FLOAT,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller__Entry, max_graph),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__controller__entry__field_indices_by_name[] = {
  2,   /* field[2] = max */
  5,   /* field[5] = max_graph */
  1,   /* field[1] = min */
  4,   /* field[4] = min_graph */
  3,   /* field[3] = pid */
  0,   /* field[0] = target */
};
static const ProtobufCIntRange hydroponics__controller__entry__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor hydroponics__controller__entry__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Controller.Entry",
  "Entry",
  "Hydroponics__Controller__Entry",
  "hydroponics",
  sizeof(Hydroponics__Controller__Entry),
  6,
  hydroponics__controller__entry__field_descriptors,
  hydroponics__controller__entry__field_indices_by_name,
  1,  hydroponics__controller__entry__number_ranges,
  (ProtobufCMessageInit) hydroponics__controller__entry__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__controller__field_descriptors[4] =
{
  {
    "eca",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller, eca),
    &hydroponics__controller__entry__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "pha",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller, pha),
    &hydroponics__controller__entry__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "ecb",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller, ecb),
    &hydroponics__controller__entry__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "phb",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Controller, phb),
    &hydroponics__controller__entry__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__controller__field_indices_by_name[] = {
  0,   /* field[0] = eca */
  2,   /* field[2] = ecb */
  1,   /* field[1] = pha */
  3,   /* field[3] = phb */
};
static const ProtobufCIntRange hydroponics__controller__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor hydroponics__controller__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Controller",
  "Controller",
  "Hydroponics__Controller",
  "hydroponics",
  sizeof(Hydroponics__Controller),
  4,
  hydroponics__controller__field_descriptors,
  hydroponics__controller__field_indices_by_name,
  1,  hydroponics__controller__number_ranges,
  (ProtobufCMessageInit) hydroponics__controller__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__task__cron__field_descriptors[2] =
{
  {
    "state",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Task__Cron, state),
    &hydroponics__output_state__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "expression",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_STRING,
    offsetof(Hydroponics__Task__Cron, n_expression),
    offsetof(Hydroponics__Task__Cron, expression),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__task__cron__field_indices_by_name[] = {
  1,   /* field[1] = expression */
  0,   /* field[0] = state */
};
static const ProtobufCIntRange hydroponics__task__cron__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor hydroponics__task__cron__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Task.Cron",
  "Cron",
  "Hydroponics__Task__Cron",
  "hydroponics",
  sizeof(Hydroponics__Task__Cron),
  2,
  hydroponics__task__cron__field_descriptors,
  hydroponics__task__cron__field_indices_by_name,
  1,  hydroponics__task__cron__number_ranges,
  (ProtobufCMessageInit) hydroponics__task__cron__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__task__field_descriptors[3] =
{
  {
    "name",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Task, name),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "output",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_ENUM,
    offsetof(Hydroponics__Task, n_output),
    offsetof(Hydroponics__Task, output),
    &hydroponics__output__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "cron",
    3,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(Hydroponics__Task, n_cron),
    offsetof(Hydroponics__Task, cron),
    &hydroponics__task__cron__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__task__field_indices_by_name[] = {
  2,   /* field[2] = cron */
  0,   /* field[0] = name */
  1,   /* field[1] = output */
};
static const ProtobufCIntRange hydroponics__task__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 3 }
};
const ProtobufCMessageDescriptor hydroponics__task__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Task",
  "Task",
  "Hydroponics__Task",
  "hydroponics",
  sizeof(Hydroponics__Task),
  3,
  hydroponics__task__field_descriptors,
  hydroponics__task__field_indices_by_name,
  1,  hydroponics__task__number_ranges,
  (ProtobufCMessageInit) hydroponics__task__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__hardware_id__field_descriptors[4] =
{
  {
    "name",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__HardwareId, name),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dev_id",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__HardwareId, dev_id),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "dps_id",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_INT32,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__HardwareId, dps_id),
    NULL,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "output",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__HardwareId, output),
    &hydroponics__output__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__hardware_id__field_indices_by_name[] = {
  1,   /* field[1] = dev_id */
  2,   /* field[2] = dps_id */
  0,   /* field[0] = name */
  3,   /* field[3] = output */
};
static const ProtobufCIntRange hydroponics__hardware_id__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 4 }
};
const ProtobufCMessageDescriptor hydroponics__hardware_id__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.HardwareId",
  "HardwareId",
  "Hydroponics__HardwareId",
  "hydroponics",
  sizeof(Hydroponics__HardwareId),
  4,
  hydroponics__hardware_id__field_descriptors,
  hydroponics__hardware_id__field_indices_by_name,
  1,  hydroponics__hardware_id__number_ranges,
  (ProtobufCMessageInit) hydroponics__hardware_id__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__startup_state__field_descriptors[2] =
{
  {
    "state",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__StartupState, state),
    &hydroponics__output_state__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "output",
    2,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_ENUM,
    offsetof(Hydroponics__StartupState, n_output),
    offsetof(Hydroponics__StartupState, output),
    &hydroponics__output__descriptor,
    NULL,
    0 | PROTOBUF_C_FIELD_FLAG_PACKED,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__startup_state__field_indices_by_name[] = {
  1,   /* field[1] = output */
  0,   /* field[0] = state */
};
static const ProtobufCIntRange hydroponics__startup_state__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 2 }
};
const ProtobufCMessageDescriptor hydroponics__startup_state__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.StartupState",
  "StartupState",
  "Hydroponics__StartupState",
  "hydroponics",
  sizeof(Hydroponics__StartupState),
  2,
  hydroponics__startup_state__field_descriptors,
  hydroponics__startup_state__field_indices_by_name,
  1,  hydroponics__startup_state__number_ranges,
  (ProtobufCMessageInit) hydroponics__startup_state__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue hydroponics__firmware__type__enum_values_by_number[2] =
{
  { "TEST", "HYDROPONICS__FIRMWARE__TYPE__TEST", 0 },
  { "RELEASE", "HYDROPONICS__FIRMWARE__TYPE__RELEASE", 1 },
};
static const ProtobufCIntRange hydroponics__firmware__type__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex hydroponics__firmware__type__enum_values_by_name[2] =
{
  { "RELEASE", 1 },
  { "TEST", 0 },
};
const ProtobufCEnumDescriptor hydroponics__firmware__type__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "hydroponics.Firmware.Type",
  "Type",
  "Hydroponics__Firmware__Type",
  "hydroponics",
  2,
  hydroponics__firmware__type__enum_values_by_number,
  2,
  hydroponics__firmware__type__enum_values_by_name,
  1,
  hydroponics__firmware__type__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCEnumValue hydroponics__firmware__arch__enum_values_by_number[2] =
{
  { "ESP32", "HYDROPONICS__FIRMWARE__ARCH__ESP32", 0 },
  { "ESP32_S2", "HYDROPONICS__FIRMWARE__ARCH__ESP32_S2", 1 },
};
static const ProtobufCIntRange hydroponics__firmware__arch__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex hydroponics__firmware__arch__enum_values_by_name[2] =
{
  { "ESP32", 0 },
  { "ESP32_S2", 1 },
};
const ProtobufCEnumDescriptor hydroponics__firmware__arch__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "hydroponics.Firmware.Arch",
  "Arch",
  "Hydroponics__Firmware__Arch",
  "hydroponics",
  2,
  hydroponics__firmware__arch__enum_values_by_number,
  2,
  hydroponics__firmware__arch__enum_values_by_name,
  1,
  hydroponics__firmware__arch__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCFieldDescriptor hydroponics__firmware__field_descriptors[5] =
{
  {
    "type",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Firmware, type),
    &hydroponics__firmware__type__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "arch",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_ENUM,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Firmware, arch),
    &hydroponics__firmware__arch__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "version",
    3,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Firmware, version),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "id",
    4,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Firmware, id),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "url",
    5,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_STRING,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Firmware, url),
    NULL,
    &protobuf_c_empty_string,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__firmware__field_indices_by_name[] = {
  1,   /* field[1] = arch */
  3,   /* field[3] = id */
  0,   /* field[0] = type */
  4,   /* field[4] = url */
  2,   /* field[2] = version */
};
static const ProtobufCIntRange hydroponics__firmware__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 5 }
};
const ProtobufCMessageDescriptor hydroponics__firmware__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Firmware",
  "Firmware",
  "Hydroponics__Firmware",
  "hydroponics",
  sizeof(Hydroponics__Firmware),
  5,
  hydroponics__firmware__field_descriptors,
  hydroponics__firmware__field_indices_by_name,
  1,  hydroponics__firmware__number_ranges,
  (ProtobufCMessageInit) hydroponics__firmware__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCFieldDescriptor hydroponics__config__field_descriptors[6] =
{
  {
    "sampling",
    1,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Config, sampling),
    &hydroponics__sampling__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "controller",
    2,
    PROTOBUF_C_LABEL_NONE,
    PROTOBUF_C_TYPE_MESSAGE,
    0,   /* quantifier_offset */
    offsetof(Hydroponics__Config, controller),
    &hydroponics__controller__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "task",
    3,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(Hydroponics__Config, n_task),
    offsetof(Hydroponics__Config, task),
    &hydroponics__task__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "hardware_id",
    4,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(Hydroponics__Config, n_hardware_id),
    offsetof(Hydroponics__Config, hardware_id),
    &hydroponics__hardware_id__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "startup_state",
    5,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(Hydroponics__Config, n_startup_state),
    offsetof(Hydroponics__Config, startup_state),
    &hydroponics__startup_state__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
  {
    "firmware",
    6,
    PROTOBUF_C_LABEL_REPEATED,
    PROTOBUF_C_TYPE_MESSAGE,
    offsetof(Hydroponics__Config, n_firmware),
    offsetof(Hydroponics__Config, firmware),
    &hydroponics__firmware__descriptor,
    NULL,
    0,             /* flags */
    0,NULL,NULL    /* reserved1,reserved2, etc */
  },
};
static const unsigned hydroponics__config__field_indices_by_name[] = {
  1,   /* field[1] = controller */
  5,   /* field[5] = firmware */
  3,   /* field[3] = hardware_id */
  0,   /* field[0] = sampling */
  4,   /* field[4] = startup_state */
  2,   /* field[2] = task */
};
static const ProtobufCIntRange hydroponics__config__number_ranges[1 + 1] =
{
  { 1, 0 },
  { 0, 6 }
};
const ProtobufCMessageDescriptor hydroponics__config__descriptor =
{
  PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
  "hydroponics.Config",
  "Config",
  "Hydroponics__Config",
  "hydroponics",
  sizeof(Hydroponics__Config),
  6,
  hydroponics__config__field_descriptors,
  hydroponics__config__field_indices_by_name,
  1,  hydroponics__config__number_ranges,
  (ProtobufCMessageInit) hydroponics__config__init,
  NULL,NULL,NULL    /* reserved[123] */
};
static const ProtobufCEnumValue hydroponics__output__enum_values_by_number[19] =
{
  { "EXT_GPIO_A_0", "HYDROPONICS__OUTPUT__EXT_GPIO_A_0", 0 },
  { "EXT_GPIO_A_1", "HYDROPONICS__OUTPUT__EXT_GPIO_A_1", 1 },
  { "EXT_GPIO_A_2", "HYDROPONICS__OUTPUT__EXT_GPIO_A_2", 2 },
  { "EXT_GPIO_A_3", "HYDROPONICS__OUTPUT__EXT_GPIO_A_3", 3 },
  { "EXT_GPIO_A_4", "HYDROPONICS__OUTPUT__EXT_GPIO_A_4", 4 },
  { "EXT_GPIO_A_5", "HYDROPONICS__OUTPUT__EXT_GPIO_A_5", 5 },
  { "EXT_GPIO_A_6", "HYDROPONICS__OUTPUT__EXT_GPIO_A_6", 6 },
  { "EXT_GPIO_A_7", "HYDROPONICS__OUTPUT__EXT_GPIO_A_7", 7 },
  { "EXT_GPIO_B_0", "HYDROPONICS__OUTPUT__EXT_GPIO_B_0", 8 },
  { "EXT_GPIO_B_1", "HYDROPONICS__OUTPUT__EXT_GPIO_B_1", 9 },
  { "EXT_GPIO_B_2", "HYDROPONICS__OUTPUT__EXT_GPIO_B_2", 10 },
  { "EXT_GPIO_B_3", "HYDROPONICS__OUTPUT__EXT_GPIO_B_3", 11 },
  { "EXT_GPIO_B_4", "HYDROPONICS__OUTPUT__EXT_GPIO_B_4", 12 },
  { "EXT_GPIO_B_5", "HYDROPONICS__OUTPUT__EXT_GPIO_B_5", 13 },
  { "EXT_GPIO_B_6", "HYDROPONICS__OUTPUT__EXT_GPIO_B_6", 14 },
  { "EXT_GPIO_B_7", "HYDROPONICS__OUTPUT__EXT_GPIO_B_7", 15 },
  { "EXT_TUYA_OUT_1", "HYDROPONICS__OUTPUT__EXT_TUYA_OUT_1", 101 },
  { "EXT_TUYA_OUT_2", "HYDROPONICS__OUTPUT__EXT_TUYA_OUT_2", 102 },
  { "EXT_TUYA_OUT_3", "HYDROPONICS__OUTPUT__EXT_TUYA_OUT_3", 103 },
};
static const ProtobufCIntRange hydroponics__output__value_ranges[] = {
{0, 0},{101, 16},{0, 19}
};
static const ProtobufCEnumValueIndex hydroponics__output__enum_values_by_name[19] =
{
  { "EXT_GPIO_A_0", 0 },
  { "EXT_GPIO_A_1", 1 },
  { "EXT_GPIO_A_2", 2 },
  { "EXT_GPIO_A_3", 3 },
  { "EXT_GPIO_A_4", 4 },
  { "EXT_GPIO_A_5", 5 },
  { "EXT_GPIO_A_6", 6 },
  { "EXT_GPIO_A_7", 7 },
  { "EXT_GPIO_B_0", 8 },
  { "EXT_GPIO_B_1", 9 },
  { "EXT_GPIO_B_2", 10 },
  { "EXT_GPIO_B_3", 11 },
  { "EXT_GPIO_B_4", 12 },
  { "EXT_GPIO_B_5", 13 },
  { "EXT_GPIO_B_6", 14 },
  { "EXT_GPIO_B_7", 15 },
  { "EXT_TUYA_OUT_1", 16 },
  { "EXT_TUYA_OUT_2", 17 },
  { "EXT_TUYA_OUT_3", 18 },
};
const ProtobufCEnumDescriptor hydroponics__output__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "hydroponics.Output",
  "Output",
  "Hydroponics__Output",
  "hydroponics",
  19,
  hydroponics__output__enum_values_by_number,
  19,
  hydroponics__output__enum_values_by_name,
  2,
  hydroponics__output__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
static const ProtobufCEnumValue hydroponics__output_state__enum_values_by_number[2] =
{
  { "OFF", "HYDROPONICS__OUTPUT_STATE__OFF", 0 },
  { "ON", "HYDROPONICS__OUTPUT_STATE__ON", 1 },
};
static const ProtobufCIntRange hydroponics__output_state__value_ranges[] = {
{0, 0},{0, 2}
};
static const ProtobufCEnumValueIndex hydroponics__output_state__enum_values_by_name[2] =
{
  { "OFF", 0 },
  { "ON", 1 },
};
const ProtobufCEnumDescriptor hydroponics__output_state__descriptor =
{
  PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
  "hydroponics.OutputState",
  "OutputState",
  "Hydroponics__OutputState",
  "hydroponics",
  2,
  hydroponics__output_state__enum_values_by_number,
  2,
  hydroponics__output_state__enum_values_by_name,
  1,
  hydroponics__output_state__value_ranges,
  NULL,NULL,NULL,NULL   /* reserved[1234] */
};
