Lizzy project
Dependencies: aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT
Revision 21:35fbf630a24a, committed 2018-09-13
- Comitter:
- jurica238814
- Date:
- Thu Sep 13 12:29:42 2018 +0200
- Branch:
- SimpleExample
- Parent:
- 20:ecb479051bef
- Commit message:
- Ignore this branch
Changed in this revision
| source/main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/source/main.cpp Thu Sep 13 12:23:39 2018 +0200
+++ b/source/main.cpp Thu Sep 13 12:29:42 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();
+
}

