Lizzy project
Dependencies: aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT
Diff: source/main.cpp
- 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(); } }