main/config.h

Wed, 04 Oct 2023 11:28:49 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 04 Oct 2023 11:28:49 +0200
changeset 80
715785443a95
parent 77
15dc572a7fcb
permissions
-rw-r--r--

Version 0.3.1. Remove obsolete files from spiffs filesystem. Removed obsolete wifi stations.conf file and functions. Removed obsolete user screens.

/**
 * @file config.h
 * @brief The 'co2meter' configuration data. These are stored in the 
 *        spiffs filesystem in a flash partition.
 */

#ifndef _G_CONFIG_H
#define _G_CONFIG_H

// Global includes for the project

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <time.h>
#include <inttypes.h>
#include <errno.h>
#include <sys/unistd.h>
#include <sys/fcntl.h>
#include <sys/time.h>

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "freertos/event_groups.h"
#include "freertos/queue.h"
#include "driver/gpio.h"
#include "driver/rtc_io.h"
#include "soc/sens_periph.h"
#include "soc/rtc.h"
#include "esp_adc/adc_oneshot.h"
#include "esp_adc/adc_cali.h"
#include "esp_adc/adc_cali_scheme.h"
#include "esp_log.h"
#include "esp_spiffs.h"
#include "esp_vfs.h"
#include "esp_system.h"
#include "esp_chip_info.h"
#include "esp_mac.h"
#include "esp_wifi.h"
#include "esp_wpa2.h"
#include "esp_event.h"
#include "esp_timer.h"
#include "esp_ota_ops.h"
#include "esp_http_client.h"
#include "esp_app_format.h"
#include "nvs_flash.h"
#include "lwip/sockets.h"
#include "lwip/dns.h"
#include "lwip/netdb.h"
#include "mqtt_client.h"

#include "rotary_encoder.h"
#include "u8g2_esp32_hal.h"

#include "task_ds18b20.h"
#include "task_adc.h"
#include "task_wifi.h"
#include "task_mqtt.h"
#include "task_user.h"
#include "xutil.h"
#include "updates.h"


#define MAINLOOP_TIMER	60	///< Mainloop interval


/**
 * @brief Mainloop 1 timed actions.
 */
typedef enum
{
    ML1_INIT = 0,		///< Init fase
    ML1_CONNECT,		///< Connect WiFi
    ML1_MQTT_CONNECT,		///< Connect MQTT if WiFi
    ML1_WAITCON,		///< Wait for connection and measurements
    ML1_SEND,			///< Send MQTT node and units messages
    ML1_WAITACK,		///< MQTT messages received
    ML1_STATUS,			///< Update status
    ML1_SCAN,			///< Scan AP's for better one
    ML1_DONE			///< All done
} ML1;



/**
 * @brief Mainloop 2 user actions.
 */
typedef enum
{
    ML2_INIT = 0,
    ML2_USER,			///< User mainmenu
    ML2_UNIT1,			///< Unit 1
    ML2_UNIT2,			///< Unit 2
    ML2_UNIT3,			///< Unit 3
    ML2_WIFI,			///< WiFi status
    ML2_NETWORK,		///< Network status
    ML2_MQTT,			///< MQTT status
    ML2_UPDATE,			///< Update
    ML2_COUNTERS,		///< Counters display
    ML2_SETUP_UNIT1,		///< Unit 1 setup
    ML2_SETUP_UNIT2,		///< Unit 2 setup
    ML2_SETUP_UNIT3,		///< Unit 3 setup
    ML2_ZERO_UNIT1,		///< Unit 1 set zero
    ML2_ZERO_UNIT2,		///< Unit 2 set zero
    ML2_ZERO_UNIT3,		///< Unit 3 set zero
    ML2_SEL_SENSOR1,		///< Unit 1 select sensor
    ML2_SEL_SENSOR2,		///< Unit 2 select sensor
    ML2_SEL_SENSOR3,		///< Unit 3 select sensor
    ML2_INACTIVE,		///< Inactive reached, cleanup
    ML2_DONE			///< All done
} ML2;



/**
 * @brief Records that describes the carbonation units,
 */
typedef struct {
    char		uuid[37];			///< Unit uuid
    char		alias[33];			///< Alias name 'unit1'
    int			temperature_state;		///< Reading status
    char		temperature_rom_code[17];	///< DS18B20 address
    uint32_t		temperature;			///< Temperature in C * 1000
    int			pressure_state;			///< Reading status
    uint8_t		pressure_channel;		///< ADC channel
    uint32_t		pressure_voltage;		///< Measured voltage in mV.
    uint32_t		pressure_zero;			///< Zero offset promille of the full scale.
    uint32_t		pressure;			///< Pressure in bar * 1000;
    int			mode;				///< Unit mode
    uint32_t		alarm;				///< Alarm bits
} unit_t;

#define ALARM_UNIT_PRESSURE		0x0001		///< Unit pressure sensor error
#define ALARM_UNIT_TEMPERATURE		0x0002		///< Unit temperature sensor error
#define	ALARM_SYS_TEMPERATURE		0x0004		///< System temperature sensor error


/**
 * @brief Write units to disk.
 */
void write_units(void);

/** @brief Read units file. If it doesn't exist create and
 *         write a new units file with sane defaults.
 */
void read_units(void);



#endif

mercurial