Lizzy project

Dependencies:   aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT

Branch:
mbedOsUpdate
Revision:
19:2681edc2f2b9
Parent:
8:7ba4f82de9b6
Child:
22:7dae8496b97c
--- a/source/main.cpp	Wed Sep 12 16:21:36 2018 +0200
+++ b/source/main.cpp	Thu Sep 13 12:20:35 2018 +0200
@@ -1,29 +1,29 @@
-/* 
+/*
  * aconno.de
  * Made by Jurica Resetar
- * All right reserved 
+ * All right reserved
  *
  */
 
-#include "main.h"
 #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
 
-char memsI2CAddress = I2C_ADDRESS;
-Mutex uartM;
+EventQueue queue(32 * EVENTS_EVENT_SIZE);
+
 Thread uartT;
 Thread bleT;
 Thread measureT;
 Thread updateServiceT;
 Thread updateBuzzLedsT;
-
-DigitalOut AccVcc(ACC_POWER_PIN);
-InterruptIn INT1(INT_PIN1);
-//InterruptIn INT2(INT_PIN2);
-I2C i2c(I2C_DATA,I2C_CLK);
-Ticker bleTicker;
-
+Thread updateStatisticsT;
 
 void disableI2C(){
     NRF_TWI0->ENABLE = 0;
@@ -42,51 +42,92 @@
     bar = 1;
 }
 
-int main(){
+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);
-    
-    tasks_init();
-    
-    printf("Main program started.\r\n");
-    
-    NRF_NVMC->CONFIG = 0x00000002;      // Erase enable UICR
-    NRF_NVMC->ERASEUICR = 0x00000001;   // Erase all
-    NRF_NVMC->CONFIG = 0x00000001;      // Write enable UICR
-    NRF_UICR->NFCPINS = 0xFFFFFFFE;     // Change NFC to GPIO function
-    
-    AccVcc = 1;
+
+    lisPowerCtrl((lisPower_t)LIS_ON);
     wait_ms(POWER_UP_DELAY_MS);
 
-    /*
-    INT1.rise(int1Handler);
+
+    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.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.int1Threshold(INT1_THRESHOLD);
+    mems.int1Duration(INT1_DUR);
     mems.int1Config(0x2A);      // Enable XHigh, YHigh and ZHigh
-    
-    bleT.start(callback(bleF, &ble));   // Start bleT
-    measureT.start(callback(measureF, &mems));
-    updateServiceT.start(updateServiceF);
-    updateBuzzLedsT.start(updateBuzzLedsF);
-    
-    
-    while(1){
-        //disableI2C();
-        ble.waitForEvent();
-    }
+	//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();
+
 }