Lizzy project
Dependencies: aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT
Diff: source/main.cpp
- Branch:
- mbedOsUpdate
- Revision:
- 19:2681edc2f2b9
- Parent:
- 8:7ba4f82de9b6
- Child:
- 22:7dae8496b97c
diff -r d1f73bb9275a -r 2681edc2f2b9 source/main.cpp --- 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(); + }