From fc803713dd12b99b7b5d3271d0b328dbdeaec0a5 Mon Sep 17 00:00:00 2001 From: antopoid Date: Fri, 9 Sep 2022 14:10:01 +0200 Subject: [PATCH] lab3-2-4_working_with_c --- .../lab3-2-2_working_with_c/main/main.c | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/part1_iot_framework/lab3-2-2_working_with_c/main/main.c b/part1_iot_framework/lab3-2-2_working_with_c/main/main.c index 9fdea9e..1ec321f 100644 --- a/part1_iot_framework/lab3-2-2_working_with_c/main/main.c +++ b/part1_iot_framework/lab3-2-2_working_with_c/main/main.c @@ -45,6 +45,8 @@ typedef struct SensorSetStruct { Sensor temperature; Sensor pressure; + void (* Update)(struct SensorSetStruct *sensorSet); + void (* Display)(struct SensorSetStruct *sensorSet); } SensorSet; /** @@ -53,7 +55,6 @@ typedef struct SensorSetStruct * @param sensorSet */ void defaultUpdateSensorValues(struct SensorSetStruct *sensorSet) { - int random = abs(esp_random()); sensorSet->temperature.value.f = (random % 400) / 10; random = abs(esp_random()); @@ -75,10 +76,9 @@ void defaultPrintSensorValues(struct SensorSetStruct *sensorSet) { * * @param sensorSet */ -void updateAndDisplaySensorValues(struct SensorSetStruct *sensorSet, void function()) { - - function(sensorSet); - function(sensorSet); +void updateAndDisplaySensorValues(struct SensorSetStruct *sensorSet) { + sensorSet->Update(sensorSet); + sensorSet->Display(sensorSet); } @@ -89,11 +89,13 @@ void updateAndDisplaySensorValues(struct SensorSetStruct *sensorSet, void functi void app_main(void) { + + /* TODO: Declare and init sensorSet variable (structure is SensorSetStruct) Tip: Use designated initializer */ - struct SensorSetStruct houlou = { + static struct SensorSetStruct houlou = { .temperature= { .name="TEMP", @@ -105,18 +107,20 @@ void app_main(void) { .name="PRES", .type=INT, .value={.i=0} - } + }, + .Update= defaultUpdateSensorValues, + .Display= defaultPrintSensorValues }; - while (1) { // Wait for 1 sec. usleep(1000000); - updateAndDisplaySensorValues(&houlou,defaultPrintSensorValues); - printf ("\n%d\n", sizeof (int)); + updateAndDisplaySensorValues(&houlou); + + /*printf ("\n%d\n", sizeof (int)); printf ("\n%d\n", sizeof (float)); printf ("\n%d\n", sizeof (double)); - printf ("\n%d\n", sizeof (union SensorValueUnion)); + printf ("\n%d\n", sizeof (union SensorValueUnion));*/ } }