Commit 3f1c385c authored by Daniel Friesel's avatar Daniel Friesel
Browse files

add luxlog app

parent b47e5150
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
arch_drivers += ,i2c
drivers += ,max44009
loop ?= 1

src/app/luxlog/main.cc

0 → 100644
+65 −0
Original line number Diff line number Diff line
#include "arch.h"
#include "driver/gpio.h"
#include "driver/stdout.h"
#include "driver/timer.h"
#if defined(MULTIPASS_ARCH_HAS_I2C) && !defined(DRIVER_SOFTI2C)
#include "driver/i2c.h"
#else
#include "driver/soft_i2c.h"
#endif
#include "driver/max44009.h"

// Alle 10 Minuten ein Messwert -> 144 Werte pro Tag -> 28,4 Tage für 4096 Werte
// Alle 4 Minuten ein Messwert -> 144 Werte pro Tag -> 11,37 Tage für 4096 Werte
__attribute__ ((section(".text"))) uint32_t log[4096];

uint16_t log_offset = 0;
float val = 0;
uint8_t loop_count = 0;

void loop(void)
{
	if ((log_offset == 0) && (loop_count < 2)) {
		for (uint16_t i = 0; i < 4096; i++) {
			kout << i << " = " << log[i] << endl;
		}
	}

	if ( (loop_count % 10) == 0) {
		gpio.led_on(0);
		arch.sleep_ms(1);
		gpio.led_off(0);
	}

	if (++loop_count == 4*60) {
		loop_count = 0;
		val = max44009.getLux();

		log[log_offset] = val * 10;
		log[log_offset + 1] = 0x00C0FFEE;

		log_offset++;

		kout.printf_float(val);
		kout << endl;
	}
}

int main(void)
{

	arch.setup();
	gpio.setup();
	kout.setup();

	if (i2c.setup() != 0) {
		kout << "I2C setup failed" << endl;
		return 1;
	}

	kout << "I2C setup OK" << endl;

	arch.idle_loop();

	return 0;
}