Lizzy project

Dependencies:   aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT

source/main.cpp

Committer:
jurica238814
Date:
2018-09-13
Branch:
mbedOsUpdate
Revision:
19:2681edc2f2b9
Parent:
8:7ba4f82de9b6
Child:
22:7dae8496b97c

File content as of revision 19:2681edc2f2b9:

/*
 * aconno.de
 * Made by Jurica Resetar
 * All right reserved
 *
 */

#include "bsp.h"
#include "bspLed.h"
#include "tasks.h"
#include <events/mbed_events.h>
#include "aconnoConfig.h"
#include "aconno_ble.h"

#if !defined(MBED_CPU_STATS_ENABLED) || !defined(DEVICE_LPTICKER) || !defined(DEVICE_SLEEP)
#error [NOT_SUPPORTED] Test not supported for statistics
#endif

EventQueue queue(32 * EVENTS_EVENT_SIZE);

Thread uartT;
Thread bleT;
Thread measureT;
Thread updateServiceT;
Thread updateBuzzLedsT;
Thread updateStatisticsT;

void disableI2C(){
    NRF_TWI0->ENABLE = 0;
    NRF_TWI0->PSELSCL = 0xFFFFFFFF;
    NRF_TWI1->ENABLE = 0;
    NRF_TWI1->PSELSCL = 0xFFFFFFFF;
    NRF_TWIM0->ENABLE = 0;
    NRF_TWIM0->PSEL.SCL = 0x80000000;
    NRF_TWIM0->PSEL.SDA = 0x80000000;
    NRF_TWIM1->ENABLE = 0;
    NRF_TWIM0->PSEL.SCL = 0x80000000;
    NRF_TWIM0->PSEL.SDA = 0x80000000;
    DigitalOut foo(I2C_DATA);
    DigitalOut bar(I2C_CLK);
    foo = 1;
    bar = 1;
}

void printStatsF()
{
    mbed_stats_cpu_t stats;

    mbed_stats_cpu_get(&stats);
    printf("%-20lld", stats.uptime/1000);
    printf("%-20lld", stats.idle_time/1000);
    printf("%-20lld", stats.sleep_time/1000);
    printf("%-20lld\n", stats.deep_sleep_time/1000);
}

void bleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context) {
    BLE &ble = BLE::Instance();
    queue.call(Callback<void()>(&ble, &BLE::processEvents));
}

Thread testThread;

void testFunction()
{
	while(1)
	{
		printf("Test thread\n");
		Thread::wait(1000);
	}
}

void int1Handler(void)
{
    __disable_irq();
	/*
    untilSleep = ACTIVE_PERIOD / MEASURE_INTERVAL_MS;
    measureT.signal_set(START_MEAS);
	*/
	mems.clearIntFlag();
	redLed = !redLed;
    __enable_irq();
}

int main()
{

	printf("Main program started.\r\n");

	bspLedInit();

    Lis2dh12 mems(&i2c, memsI2CAddress);

    lisPowerCtrl((lisPower_t)LIS_ON);
    wait_ms(POWER_UP_DELAY_MS);


    lisInt1Pin.rise(int1Handler);
    NRF_GPIO->PIN_CNF[INT_PIN1] &= 0xFFFFFFF3;  // NO PullUps

	/*
    BLE &ble = BLE::Instance();
	ble.onEventsToProcess(bleEventsProcessing);
    ble.init(bleInitComplete);
	*/

    //mems.setMode(LOW_POWER);
    mems.setMode(HIGH_RES);
    mems.enableAxes(X_axis);
    mems.enableAxes(Y_axis);
    mems.enableAxes(Z_axis);
    mems.setODR(ODR_50Hz);
    //mems.setScale(_16g);
    mems.setScale(_2g);
    mems.int1Setup(0x40);       // IntActivity 1 driven to INT1 pad
    mems.int1Latch(0x01);       // Enable int1 latch
    mems.int1Threshold(INT1_THRESHOLD);
    mems.int1Duration(INT1_DUR);
    mems.int1Config(0x2A);      // Enable XHigh, YHigh and ZHigh
	//lisPowerCtrl(LIS_OFF);

	//disableI2C();		// THIS REALLY NEEDS TO BE HERE!

	#if PRINT_ON_RTT
		queue.call_every(2000, printStatsF);
	#endif
	//testThread.start(testFunction);
    //measureT.start(callback(measureF, &mems));
    //updateServiceT.start(updateServiceF);
    //updateBuzzLedsT.start(updateBuzzLedsF);

	queue.dispatch_forever();

}