lab 43
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
idf_component_register(
|
||||
SRC_DIRS "."
|
||||
INCLUDE_DIRS ".")
|
||||
2
part1_iot_framework/lab4-1_menuconfig/main/component.mk
Normal file
2
part1_iot_framework/lab4-1_menuconfig/main/component.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
COMPONENT_SRCDIRS := .
|
||||
COMPONENT_ADD_INCLUDEDIRS := .
|
||||
97
part1_iot_framework/lab4-1_menuconfig/main/main.c
Normal file
97
part1_iot_framework/lab4-1_menuconfig/main/main.c
Normal file
@@ -0,0 +1,97 @@
|
||||
/****************************************************************************
|
||||
* Copyright (C) 2020 by Fabrice Muller *
|
||||
* *
|
||||
* This file is useful for ESP32 Design course. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* @file lab3-3-2_main.c
|
||||
* @author Fabrice Muller
|
||||
* @date 2 Sep. 2020
|
||||
* @brief File containing the lab3-3-2 of Part 1.
|
||||
*
|
||||
* @see https://github.com/fmuller-pns/esp32-vscode-project-template
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_err.h"
|
||||
|
||||
#include "sensors.h"
|
||||
|
||||
|
||||
|
||||
|
||||
static const char* TAG = "MAIN";
|
||||
|
||||
extern struct SensorSetStruct defaultSensorSet;
|
||||
|
||||
/*
|
||||
- Use custom functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief update sensor values with random values
|
||||
*
|
||||
* @param sensorSet
|
||||
*/
|
||||
void updateSensorValues(struct SensorSetStruct *sensorSet) {
|
||||
|
||||
int random = abs(esp_random());
|
||||
sensorSet->temperature.value.f = (random % 400) / 10;
|
||||
random = abs(esp_random());
|
||||
sensorSet->pressure.value.i = 990 + (random % 30);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief print sensor values
|
||||
*
|
||||
* @param sensorSet
|
||||
*/
|
||||
void printSensorValues(struct SensorSetStruct *sensorSet) {
|
||||
printf("Sensor Informations\n");
|
||||
printf("%s : %f\n", sensorSet->temperature.name, sensorSet->temperature.value.f);
|
||||
printf("%s : %d\n", sensorSet->pressure.name, sensorSet->pressure.value.i);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Starting point function
|
||||
*
|
||||
*/
|
||||
|
||||
void app_main(void)
|
||||
{
|
||||
int i;
|
||||
while (1) {
|
||||
|
||||
ESP_LOGI(TAG, "DEFAULT Functions - SENSORS");
|
||||
for (i=0; i<5; i++) {
|
||||
// Wait for 1 sec.
|
||||
usleep(1000000);
|
||||
updateAndDisplaySensorValues(&defaultSensorSet);
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "CUSTOM Functions - SENSORS");
|
||||
defaultSensorSet.Update = updateSensorValues;
|
||||
defaultSensorSet.Display = printSensorValues;
|
||||
for (i=0; i<5; i++) {
|
||||
// Wait for 1 sec.
|
||||
usleep(1000000);
|
||||
updateAndDisplaySensorValues(&defaultSensorSet);
|
||||
}
|
||||
|
||||
// Set Default functions and run again
|
||||
defaultSensorSet.Update = defaultUpdateSensorValues;
|
||||
defaultSensorSet.Display = defaultPrintSensorValues;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
54
part1_iot_framework/lab4-1_menuconfig/main/sensors.c
Normal file
54
part1_iot_framework/lab4-1_menuconfig/main/sensors.c
Normal file
@@ -0,0 +1,54 @@
|
||||
#include "sensors.h"
|
||||
|
||||
|
||||
static const char* TAG = "STRUCT";
|
||||
|
||||
/**
|
||||
* @brief Default update sensor values with random values
|
||||
*
|
||||
* @param sensorSet
|
||||
*/
|
||||
void defaultUpdateSensorValues(struct SensorSetStruct *sensorSet) {
|
||||
|
||||
int random = abs(esp_random());
|
||||
sensorSet->temperature.value.f = (random % 400) / 10;
|
||||
random = abs(esp_random());
|
||||
sensorSet->pressure.value.i = 990 + (random % 30);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Default print sensor values
|
||||
*
|
||||
* @param sensorSet
|
||||
*/
|
||||
void defaultPrintSensorValues(struct SensorSetStruct *sensorSet) {
|
||||
ESP_LOGI(TAG, "> %s = %f", sensorSet->temperature.name, sensorSet->temperature.value.f);
|
||||
ESP_LOGI(TAG, "> %s = %d", sensorSet->pressure.name, sensorSet->pressure.value.i);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Update and Display sensor values
|
||||
*
|
||||
* @param sensorSet
|
||||
*/
|
||||
void updateAndDisplaySensorValues(struct SensorSetStruct *sensorSet) {
|
||||
sensorSet->Update(sensorSet);
|
||||
sensorSet->Display(sensorSet);
|
||||
}
|
||||
|
||||
struct SensorSetStruct defaultSensorSet = {
|
||||
.temperature=
|
||||
{
|
||||
.name="TEMP",
|
||||
.type=FLOAT,
|
||||
.value= {.f=0.0}
|
||||
},
|
||||
.pressure=
|
||||
{
|
||||
.name="PRES",
|
||||
.type=INT,
|
||||
.value={.i=0}
|
||||
},
|
||||
.Update= defaultUpdateSensorValues,
|
||||
.Display= defaultPrintSensorValues
|
||||
};
|
||||
44
part1_iot_framework/lab4-1_menuconfig/main/sensors.h
Normal file
44
part1_iot_framework/lab4-1_menuconfig/main/sensors.h
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef _SENSORS_H_
|
||||
#define _SENSORS_H_
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_err.h"
|
||||
|
||||
|
||||
enum SensorValueType {INT, FLOAT, DOUBLE};
|
||||
|
||||
union SensorValueUnion {
|
||||
int i;
|
||||
float f;
|
||||
double d;
|
||||
};
|
||||
|
||||
typedef struct SensorStruct
|
||||
{
|
||||
char name[10];
|
||||
enum SensorValueType type;
|
||||
union SensorValueUnion value;
|
||||
} Sensor;
|
||||
|
||||
typedef struct SensorSetStruct
|
||||
{
|
||||
Sensor temperature;
|
||||
Sensor pressure;
|
||||
void (* Update)(struct SensorSetStruct *sensorSet);
|
||||
void (* Display)(struct SensorSetStruct *sensorSet);
|
||||
} SensorSet;
|
||||
|
||||
void defaultUpdateSensorValues();
|
||||
void defaultPrintSensorValues(struct SensorSetStruct *);
|
||||
void updateAndDisplaySensorValues(struct SensorSetStruct *);
|
||||
#endif
|
||||
Reference in New Issue
Block a user