/**
 * Generated by Eclipse Mita 0.1.0.
 * @date 2022-05-14 23:02:01
 */


#ifndef XDK110TYPES_H
#define XDK110TYPES_H

#include <stdint.h>
#include "xdk110Types.h"



typedef enum {
	Range_2G,
	Range_4G,
	Range_8G,
	Range_16G
} BMA280_Range;
typedef enum {
	BW_7_81Hz,
	BW_15_63Hz,
	BW_31_25Hz,
	BW_62_50Hz,
	BW_125Hz,
	BW_250Hz,
	BW_500Hz,
	BW_1000Hz
} BMA280_Bandwidth;
typedef enum {
	BW_10_7Hz,
	BW_20_8Hz,
	BW_39_9Hz,
	BW_74_6Hz,
	BW_136_6Hz,
	BW_254_6Hz,
	BW_523_9Hz,
	BW_890Hz
} BMI160_Bandwidth;
typedef enum {
	Range_125s,
	Range_250s,
	Range_500s,
	Range_1000s,
	Range_2000s
} BMI160_BMG160_Range;
typedef enum {
	Bw_12Hz,
	Bw_23Hz,
	Bw_32Hz,
	Bw_47Hz,
	Bw_64Hz,
	Bw_116Hz,
	Bw_230Hz,
	Bw_523Hz
} BMG160_Bandwidth;
typedef enum {
	Normal,
	Forced
} BME280_PowerMode;
typedef enum {
	OVERSAMPLE_1X,
	OVERSAMPLE_2X,
	OVERSAMPLE_4X,
	OVERSAMPLE_8X,
	OVERSAMPLE_16X
} BME280_Oversampling;
typedef enum {
	LowPower,
	Regular,
	HighAccuracy,
	Enhanced
} BMM150_Preset;
typedef enum {
	MS_800,
	MS_400,
	MS_200,
	MS_100,
	MS_50,
	MS_25,
	MS_12_5,
	MS_6_25
} MAX44009_IntegrationTime;
typedef enum {
	CH4,
	CH5,
	CH6,
	CH7,
	TEMP,
	VDDDIV3,
	VDD,
	VSS,
	VREFDIV2
} ADC_Channel;
typedef enum {
	Ref_1V25,
	Ref_2V5,
	Ref_VDD,
	Ref_5VDIFF,
	Ref_ExtSingle,
	Ref_ExtDiff,
	Ref_2xVDD
} ADC_Reference_Voltage;
typedef enum {
	Resolution_12Bit,
	Resolution_8Bit,
	Resolution_6Bit,
	Resolution_OVS
} ADC_Resolution;
typedef enum {
	Time_1,
	Time_2,
	Time_4,
	Time_8,
	Time_16,
	Time_32,
	Time_64,
	Time_128,
	Time_256
} ADC_SampleTime;
typedef enum {
	Confirmed,
	Unconfirmed
} LoRaMessageConfirmation;
typedef enum {
	EU,
	US
} Region;
typedef enum {
	GET,
	POST,
	PUT,
	DELETE,
	UPDATE
} HttpMethod;
typedef enum {
	Red,
	Yellow,
	Orange
} LedColor;
typedef enum {
	LittleEndian,
	BigEndian
} ByteOrder;
typedef enum {
	None,
	Read,
	Write,
	ReadWrite
} I2CMode;
typedef enum {
	PA0,
	PA1,
	PB2,
	PB3,
	PB4,
	PB5,
	PB9,
	PB10,
	PC0,
	PC1,
	PC2,
	PC3,
	PC4,
	PC8,
	PC9,
	PC10,
	PD5,
	PD6,
	PD8,
	PE2,
	PF6
} GPIOPin;
typedef enum {
	NoPull,
	PullUp,
	PullDown,
	PullUpFilter
} GPIOMode;

typedef struct {
	char* psk;
} Personal_t;
typedef struct {
	char* username;
	char* password;
} Enterprise_t;


typedef enum {
	WlanAuthentication_None_e,
	WlanAuthentication_Personal_e,
	WlanAuthentication_Enterprise_e
} WlanAuthentication_enum;

typedef struct {
	WlanAuthentication_enum tag;
	union {
		Personal_t Personal;
		Enterprise_t Enterprise;
	} data;
} WlanAuthentication;
typedef struct {
	char* ip;
	char* subnetMask;
	char* gateway;
	char* dns;
} Static_t;


typedef enum {
	IpConfiguration_Dhcp_e,
	IpConfiguration_Static_e
} IpConfiguration_enum;

typedef struct {
	IpConfiguration_enum tag;
	union {
		Static_t Static;
	} data;
} IpConfiguration;
typedef struct {
	int32_t Latitude;
	int32_t Longitude;
	int32_t Altitude;
} GpsLocation_t;

typedef struct {
	int16_t _0;
	int16_t _1;
	int16_t _2;
} Accelerometer_t;
typedef struct {
	int16_t _0;
	int16_t _1;
	int16_t _2;
} Gyrometer_t;

typedef enum {
	CayennePayload_DigitalInput_e,
	CayennePayload_DigitalOutput_e,
	CayennePayload_AnalogInput_e,
	CayennePayload_AnalogOutput_e,
	CayennePayload_IlluminanceSensor_e,
	CayennePayload_PresenceSensor_e,
	CayennePayload_TemperatureSensor_e,
	CayennePayload_HumiditySensor_e,
	CayennePayload_Accelerometer_e,
	CayennePayload_Barometer_e,
	CayennePayload_Gyrometer_e,
	CayennePayload_GpsLocation_e
} CayennePayload_enum;

typedef struct {
	CayennePayload_enum tag;
	union {
		uint8_t DigitalInput;
		uint8_t DigitalOutput;
		int16_t AnalogInput;
		int16_t AnalogOutput;
		uint16_t IlluminanceSensor;
		uint8_t PresenceSensor;
		int16_t TemperatureSensor;
		uint8_t HumiditySensor;
		Accelerometer_t Accelerometer;
		uint16_t Barometer;
		Gyrometer_t Gyrometer;
		GpsLocation_t GpsLocation;
	} data;
} CayennePayload;
typedef struct {
	char* username;
	char* password;
} Login_t;


typedef enum {
	MqttAuthentication_None_e,
	MqttAuthentication_Login_e
} MqttAuthentication_enum;

typedef struct {
	MqttAuthentication_enum tag;
	union {
		Login_t Login;
	} data;
} MqttAuthentication;
typedef struct {
	char* topic;
	char* message;
	uint8_t qos;
} LastWill_t;


typedef enum {
	MqttWill_NoWill_e,
	MqttWill_LastWill_e
} MqttWill_enum;

typedef struct {
	MqttWill_enum tag;
	union {
		LastWill_t LastWill;
	} data;
} MqttWill;
typedef struct {
	char* username;
	char* password;
} Authenticated_t;
typedef struct {
	char* tenant;
	char* deviceId;
} Unauthenticated_t;


typedef enum {
	HonoAuthentication_Authenticated_e,
	HonoAuthentication_Unauthenticated_e
} HonoAuthentication_enum;

typedef struct {
	HonoAuthentication_enum tag;
	union {
		Authenticated_t Authenticated;
		Unauthenticated_t Unauthenticated;
	} data;
} HonoAuthentication;


typedef enum {
	PowerStatus_Battery_e,
	PowerStatus_Corded_e
} PowerStatus_enum;

typedef struct {
	PowerStatus_enum tag;
	union {
		float Battery;
	} data;
} PowerStatus;

#endif
