/* Automatically generated nanopb header */
/* Generated by nanopb-0.4.9.1 */

#ifndef PB_SNS_CLIENT_SENSOR_PB_H_INCLUDED
#define PB_SNS_CLIENT_SENSOR_PB_H_INCLUDED
#include <pb.h>
#include "sns_std.pb.h"
#include "sns_std_type.pb.h"

#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif

/* Enum definitions */
/* @brief Client Sensor Message IDs */
typedef enum _sns_client_sensor_msgid {
    /* @brief Initial configuration message
 Message: sns_client_sensor_config */
    SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_CONFIG = 6,
    /* @brief Enable a new client or send a message from an existing
 client to the configured sensor
 Message: sns_client_sensor_enable */
    SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_ENABLE = 7,
    /* @brief Disable one client.
 Message: sns_client_sensor_disable */
    SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_DISABLE = 8,
    /* @brief Event forwarded to one of the clients
 Message: sns_client_sensor_event */
    SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_EVENT = 256
} sns_client_sensor_msgid;

/* Struct definitions */
/* @brief Client Sensor Config message */
typedef struct _sns_client_sensor_config {
    /* @brief SUID of the Sensor to connect to */
    sns_std_suid suid;
} sns_client_sensor_config;

/* @brief Client Sensor Enable message */
typedef struct _sns_client_sensor_enable {
    /* @brief ID provided by the client */
    uint32_t client_id;
    /* @brief Msg ID of the request for the configured sensor */
    uint32_t request_msg_id;
    /* @brief Request message to be relayed to the configured sensor */
    pb_callback_t request_payload;
} sns_client_sensor_enable;

/* @brief Client Sensor Disable message */
typedef struct _sns_client_sensor_disable {
    /* @brief Client ID */
    uint32_t client_id;
} sns_client_sensor_disable;

/* @brief Client Sensor Event message */
typedef struct _sns_client_sensor_event {
    /* @brief Client ID */
    uint32_t client_id;
    /* @brief Msg ID of the event */
    uint32_t event_msg_id;
    /* @brief Event Message received from the suid */
    pb_callback_t event;
} sns_client_sensor_event;

/* @brief client sensor flush complete event
 Associated Msg ID:SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_FLUSH_COMPLETE_EVENT
 Client sensor will send this event after sending flush event. */
typedef struct _sns_client_sensor_flush_complete_event { /* empty message */
    char dummy_field;
} sns_client_sensor_flush_complete_event;


#ifdef __cplusplus
extern "C" {
#endif

/* Helper constants for enums */
#define _sns_client_sensor_msgid_MIN SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_CONFIG
#define _sns_client_sensor_msgid_MAX SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_EVENT
#define _sns_client_sensor_msgid_ARRAYSIZE ((sns_client_sensor_msgid)(SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_EVENT+1))
#define sns_client_sensor_msgid_SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_CONFIG SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_CONFIG
#define sns_client_sensor_msgid_SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_ENABLE SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_ENABLE
#define sns_client_sensor_msgid_SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_DISABLE SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_DISABLE
#define sns_client_sensor_msgid_SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_EVENT SNS_CLIENT_SENSOR_MSGID_SNS_CLIENT_SENSOR_EVENT







/* Initializer values for message structs */
#define sns_client_sensor_config_init_default    {sns_std_suid_init_default}
#define sns_client_sensor_enable_init_default    {0, 0, {{NULL}, NULL}}
#define sns_client_sensor_disable_init_default   {0}
#define sns_client_sensor_event_init_default     {0, 0, {{NULL}, NULL}}
#define sns_client_sensor_flush_complete_event_init_default {0}
#define sns_client_sensor_config_init_zero       {sns_std_suid_init_zero}
#define sns_client_sensor_enable_init_zero       {0, 0, {{NULL}, NULL}}
#define sns_client_sensor_disable_init_zero      {0}
#define sns_client_sensor_event_init_zero        {0, 0, {{NULL}, NULL}}
#define sns_client_sensor_flush_complete_event_init_zero {0}

/* Field tags (for use in manual encoding/decoding) */
#define sns_client_sensor_config_suid_tag        1
#define sns_client_sensor_enable_client_id_tag   1
#define sns_client_sensor_enable_request_msg_id_tag 2
#define sns_client_sensor_enable_request_payload_tag 3
#define sns_client_sensor_disable_client_id_tag  1
#define sns_client_sensor_event_client_id_tag    1
#define sns_client_sensor_event_event_msg_id_tag 2
#define sns_client_sensor_event_event_tag        3

/* Struct field encoding specification for nanopb */
#define sns_client_sensor_config_FIELDLIST(X, a) \
X(a, STATIC,   REQUIRED, MESSAGE,  suid,              1)
#define sns_client_sensor_config_CALLBACK NULL
#define sns_client_sensor_config_DEFAULT NULL
#define sns_client_sensor_config_suid_MSGTYPE sns_std_suid

#define sns_client_sensor_enable_FIELDLIST(X, a) \
X(a, STATIC,   REQUIRED, UINT32,   client_id,         1) \
X(a, STATIC,   REQUIRED, UINT32,   request_msg_id,    2) \
X(a, CALLBACK, OPTIONAL, BYTES,    request_payload,   3)
#define sns_client_sensor_enable_CALLBACK pb_default_field_callback
#define sns_client_sensor_enable_DEFAULT NULL

#define sns_client_sensor_disable_FIELDLIST(X, a) \
X(a, STATIC,   REQUIRED, UINT32,   client_id,         1)
#define sns_client_sensor_disable_CALLBACK NULL
#define sns_client_sensor_disable_DEFAULT NULL

#define sns_client_sensor_event_FIELDLIST(X, a) \
X(a, STATIC,   REQUIRED, UINT32,   client_id,         1) \
X(a, STATIC,   REQUIRED, UINT32,   event_msg_id,      2) \
X(a, CALLBACK, OPTIONAL, BYTES,    event,             3)
#define sns_client_sensor_event_CALLBACK pb_default_field_callback
#define sns_client_sensor_event_DEFAULT NULL

#define sns_client_sensor_flush_complete_event_FIELDLIST(X, a) \

#define sns_client_sensor_flush_complete_event_CALLBACK NULL
#define sns_client_sensor_flush_complete_event_DEFAULT NULL

extern const pb_msgdesc_t sns_client_sensor_config_msg;
extern const pb_msgdesc_t sns_client_sensor_enable_msg;
extern const pb_msgdesc_t sns_client_sensor_disable_msg;
extern const pb_msgdesc_t sns_client_sensor_event_msg;
extern const pb_msgdesc_t sns_client_sensor_flush_complete_event_msg;

/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
#define sns_client_sensor_config_fields &sns_client_sensor_config_msg
#define sns_client_sensor_enable_fields &sns_client_sensor_enable_msg
#define sns_client_sensor_disable_fields &sns_client_sensor_disable_msg
#define sns_client_sensor_event_fields &sns_client_sensor_event_msg
#define sns_client_sensor_flush_complete_event_fields &sns_client_sensor_flush_complete_event_msg

/* Maximum encoded size of messages (where known) */
/* sns_client_sensor_enable_size depends on runtime parameters */
/* sns_client_sensor_event_size depends on runtime parameters */
#define SNS_CLIENT_SENSOR_PB_H_MAX_SIZE          sns_client_sensor_config_size
#define sns_client_sensor_config_size            20
#define sns_client_sensor_disable_size           6
#define sns_client_sensor_flush_complete_event_size 0

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif
