Newer
Older
Tardis / src / main.cpp
/*
SPDX-License-Identifier: MIT
Copyright (c) 2023 Casey Reeves and the LuminaSensum contributors
Copyright (c) 2023 John Watts and the LuminaSensum contributors
*/

#include "ButtonThread.h"
#include "Filesystem.h"
#include "FlashErase.h"
#include "MainBD.h"
#include "MainFilesystem.h"
#include "MyUSBMSD.h"
#include "NetworkHandler.h"
#include "mbed-trace/mbed_trace.h"
#include "mbed.h"
#define TRACE_GROUP "APP"

#if MBED_CONF_MBED_TRACE_ENABLE
// mutex setup for tracing in thread safe mode

static Mutex traceMutex;

static void trace_mutex_wait() { traceMutex.lock(); }

static void trace_mutex_release() { traceMutex.unlock(); }

void setup_tracing(void) {
	char trace_filters[] = "APP,FS,FLER,NET,SNTP,USBM";
	mbed_trace_mutex_wait_function_set(trace_mutex_wait);
	mbed_trace_mutex_release_function_set(trace_mutex_release);
	mbed_trace_init();
	mbed_trace_include_filters_set(trace_filters);
	tr_debug("Debug tracing enabled");
	tr_info("Info tracing enabled");
	tr_warn("Warning tracing enabled");
	tr_err("Error tracing enabled");
}
#else
void setup_tracing(void) {
	// do nothing
}
#endif

int main() {
	setup_tracing();

	tr_info("Project Tardis");

	mountFilesystem(mainBD, mainFS);

	Thread buttonThread;
	buttonThread.start(buttonTask);

	network_init();

	while (true) {
		int presses = waitForPresses(600s);

		if (presses == 1) {
			unmountFilesystem(mainBD, mainFS);
			doUSBMSD(mainBD);
			mountFilesystem(mainBD, mainFS);
		}

		if (presses == 2) {
			unmountFilesystem(mainBD, mainFS);
			doErase(mainBD);
		}
	}

	unmountFilesystem(mainBD, mainFS);
	buttonThread.terminate();

	return 0;
}