Lizzy project

Dependencies:   aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT

Revision:
8:7ba4f82de9b6
Parent:
7:ac8277568115
Child:
14:65734075c8d3
Child:
19:2681edc2f2b9
diff -r ac8277568115 -r 7ba4f82de9b6 source/main.cpp
--- a/source/main.cpp	Wed Mar 14 08:48:26 2018 +0000
+++ b/source/main.cpp	Tue Mar 20 15:13:51 2018 +0000
@@ -6,9 +6,24 @@
  */
 
 #include "main.h"
+#include "bsp.h"
+#include "tasks.h"
 
-static advertising_packet advertisementPacket;
-static GapAdvertisingData adv_data = GapAdvertisingData();
+
+char memsI2CAddress = I2C_ADDRESS;
+Mutex uartM;
+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;
+
 
 void disableI2C(){
     NRF_TWI0->ENABLE = 0;
@@ -27,135 +42,10 @@
     bar = 1;
 }
 
-void bleF(BLE *ble)
-{
-    while(true)
-    {
-
-        advertisementPacket.header = APPLICATION_ID;
-        advertisementPacket.type = 0x00;
-        advertisementPacket.gyroscope[0] = (int16_t)0;
-        advertisementPacket.gyroscope[1] = (int16_t)0;
-        advertisementPacket.gyroscope[2] = (int16_t)0;
-        advertisementPacket.magnetometer[0] = (int16_t)0;
-        advertisementPacket.magnetometer[1] = (int16_t)0;
-        advertisementPacket.magnetometer[2] = (int16_t)0;
-        
-        
-        advertisementPacket.accelerometer[0] = (int16_t)mems.readXAxis();
-        advertisementPacket.accelerometer[1] = (int16_t)mems.readYAxis();
-        advertisementPacket.accelerometer[2] = (int16_t)mems.readZAxis();
-        
-        //advertisementPacket.acc_lsb_value = 0xC000;
-        advertisementPacket.acc_lsb_value = 0x0100;
-        
-        
-        printf("%6d\t", advertisementPacket.accelerometer[0]);
-        printf("%6d\t", advertisementPacket.accelerometer[1]);
-        printf("%6d\r\n", advertisementPacket.accelerometer[2]);
-
-        //updatePayload(ble, &advertisementPacket);
-        
-        /* setup advertising */
-        
-        
-        /*
-        GapAdvertisingData advetisementData = GapAdvertisingData();
-        advetisementData = ble->getAdvertisingData();
-        advetisementData.updateData(advetisementData.MANUFACTURER_SPECIFIC_DATA, (uint8_t *)&advertisementPacket, sizeof(advertising_packet));
-        ble->setAdvertisingData(advetisementData);
-        */
-        adv_data = ble->getAdvertisingData();
-        adv_data.updateData(adv_data.MANUFACTURER_SPECIFIC_DATA, (uint8_t *)&advertisementPacket, sizeof(advertisementPacket));
-        ble->setAdvertisingData(adv_data);
-        
-        
-        //printf("Ble advertisement is ON.\r\n");
-        
-        #if DEBUG_LED
-            redLed = 0;
-        #endif
-        ble->gap().startAdvertising();
-        //wait_ms(1000);
-        
-        wait_ms(MEASURE_INTERVAL_MS);
-        //wait_ms(1000);
-        
-        //printf("Ble advertisement is OFF.\r\n\r\n");
-        #if DEBUG_LED
-            redLed = 1;
-        #endif
-        //ble->gap().stopAdvertising();
-        /*
-        GapAdvertisingData advetisementData = GapAdvertisingData();
-        advetisementData = ble->getAdvertisingData();
-        advetisementData.updateData(advetisementData.MANUFACTURER_SPECIFIC_DATA, (uint8_t *)&advertisementPacket, sizeof(advertising_packet));
-        ble->setAdvertisingData(advetisementData);
-        */
-        //wait_ms(100);
-    }
-}
-
-void led_tick();
-
-void buzz_tick()
-{
-    static int start = 1;
+int main(){
+    Lis2dh12 mems(&i2c, memsI2CAddress);
     
-    if (start)
-    {
-        buzzer.enable(BUZZER_FREQUENCY_HZ);
-        buzzer.enableChannel(0, BUZZER_PIN);
-        buzzer.setDuty(0,0.5f);
-        start = 0;
-    }
-    else
-    {
-        buzzer.enable(0);
-        buzzer.setDuty(0, 0);
-        buzzer.disable();
-        start = 1;
-        led_tick();
-        test_ticker.detach();
-        test_ticker.attach(led_tick, 0.5);
-    }
-}
-
-
-void led_tick()
-{
-    static int count = 0;
-    
-    switch(count)
-    {
-        case 0:
-            redLed = 0;
-            break;
-            
-        case 1:
-            redLed = 1;
-            greenLed = 0;
-            break;
-            
-        case 2:
-            greenLed = 1;
-            blueLed = 0;
-            break;
-        
-        default:
-            blueLed = 1;
-            count = -1;
-            buzz_tick();
-            test_ticker.detach();
-            test_ticker.attach(buzz_tick, BUZZ_TIME_S);
-    }
-    
-    count++;
-}
-
-int main(){
-    
-    test_ticker.attach(led_tick, 0.5);
+    tasks_init();
     
     printf("Main program started.\r\n");
     
@@ -164,11 +54,7 @@
     NRF_NVMC->CONFIG = 0x00000001;      // Write enable UICR
     NRF_UICR->NFCPINS = 0xFFFFFFFE;     // Change NFC to GPIO function
     
-    redLed = 0;
     AccVcc = 1;
-    
-    greenLed = 1;
-    blueLed = 1;
     wait_ms(POWER_UP_DELAY_MS);
 
     /*
@@ -194,10 +80,13 @@
     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();
-        Thread::wait(0xFFFFFFFF);
+        ble.waitForEvent();
     }
 }