Commit 7fdc703e authored by Víctor Fernandes Gandara's avatar Víctor Fernandes Gandara
Browse files

Criação do módulo de queueing, remoção dos arquivos de teste. Update do...

Criação do módulo de queueing, remoção dos arquivos de teste. Update do process_event() para se parecer mais com como será no futuro. Agora o código deve executar uma rotina igual àquela proposto no diagrama (em pseudocódigo,claro)
parent 1fc0c146
#include <stdio.h>
#include <stdbool.h>
#include "../CPDigiStorage/CPDigiStorage.h"
#include "../CPDigiStorage/CPDigiStorage.c"
#include "../CPDigiQueue/CPDigiQueue.c"
char *data = "dados";
int event_count = 0;
char *build_data_string()
{
......@@ -20,8 +20,10 @@ int incrementEventID()
void process_event()
{
event_flag = false;
event_count = event_count + 1;
char *data_message = build_data_string();
/* queue_data(data_message); está comentado pois não seria compilável, uma vez que ainda não temos um header com esta função*/
queue_event(data_message);
/*Envia o string de dados para a fila. Precisaremos incluir neste arquivo o CPDigiQueue.h para poder fazer o chamamento desta função*/
bool SDWrite_status = store_data(data_message);
/*Faz a escrita de 'data_message' no cartão SD. Precisaremos incluir neste arquivo o CPDigiStorage.h para poder fazer o chamemento desta função*/
......@@ -29,9 +31,7 @@ void process_event()
{
printf("Escrita em cartão SD realizada com sucesso\n");
}
event_count = incrementEventID();
printf("%d", event_count);
Serial.println(event_count);
}
......
void process_event();
char build_data_string();
#include <stdio.h>
#include "CPDigiMain.h"
void check_event()
{
if (event_flag)
{
event_flag = false;
Serial.println("Evento detectado.");
event_count = event_count + 1;
Serial.println(event_count);
}
else
{
Serial.println(".");
}
}
void UpdateSensor()
{
Serial.println("Updating sensors...");
Serial.println("Done.");
}
Este arquivo serve somente para me guiar na estruturação do header e deixar claro a função dos arquivos.
"CPDigiMain.h" me parece ser o arquivo que o compilador usa pra buscar as funções em si
Já "CPDigiMain.c" me parece ser onde fica o código destas funções em si
Desta maneira, quando lemos "teste.c", podemos ver que ao usar
> #include "CPDigiMain.h"
Para o CPDigiStorage, que está em outro diretório, precisamos dar o caminho completo, dessa forma:
> #include "../CPDigiStorage/CPDigiStorage.h"
estamos incluindo no programa todas as funções presentes em "CPDigiMain.h", sendo que elas executarão aquilo que está em "CPDigiMain.c" (o mesmo vale pro CPDigiStorage)
para compilarmos o programa, no entanto, temos que usar o seguinte comando:
> gcc -o teste teste.c CPDigiMain.c ../CPDigiStorage/CPDigiStorage.c
para que o compilador entenda onde procurar as funções dos headers externos
#include <stdio.h>
void queue_event(char *data)
{
Serial.print("O string de dados ");
Serial.print(data);
Serial.println(" foi enviado à lista.");
}
#include <stdbool.h>
bool store_data(char *data);
#include <stdio.h>
#include <stdbool.h>
#include "CPDigiStorage.h"
int main()
{
char *data_message = "Hello world";
bool SDWrite_status = store_data(data_message);
if (SDWrite_status)
{
printf("Ok\n");
}
}
......@@ -10,7 +10,7 @@ int event_count = 0;
unsigned long queue_last_time = 0;
unsigned long sensors_last_time = 0;
#include "CPDigiMain/teste.c"
#include "CPDigiMain/CPDigiMain.c"
void setup() {
......@@ -23,19 +23,23 @@ attachInterrupt(digitalPinToInterrupt(InterruptPin), interrupt_call, RISING);
ICACHE_RAM_ATTR void interrupt_call() {
event_flag = true;
/*ReadCPAmp();*/
delay(0);
}
void loop() {
check_event();
if (event_flag)
{
process_event();
}
//Update sensor caches
unsigned long currentMillis = millis();
if (currentMillis - sensors_last_time >= SensorTimeInterval) {
sensors_last_time = currentMillis;
UpdateSensor();
//UpdateSensor();
}
// Queue timer
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment