Lizzy project
Dependencies: aconno_I2C Lis2dh12 adc52832_common aconno_SEGGER_RTT
Diff: source/main.cpp
- Revision:
- 0:fc77522f4d28
- Child:
- 1:198b9945994e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/source/main.cpp Wed Mar 07 13:40:28 2018 +0000 @@ -0,0 +1,133 @@ +/* + * aconno.de + * Made by Jurica Resetar + * All right reserved + * + */ + +#include "main.h" + +static advertising_packet advertisementPacket; +static GapAdvertisingData adv_data = GapAdvertisingData(); + +void disableI2C(){ + NRF_TWI0->ENABLE = 0; + NRF_TWI0->PSELSCL = 0xFFFFFFFF; + NRF_TWI1->ENABLE = 0; + NRF_TWI1->PSELSCL = 0xFFFFFFFF; + NRF_TWIM0->ENABLE = 0; + NRF_TWIM0->PSEL.SCL = 0x80000000; + NRF_TWIM0->PSEL.SDA = 0x80000000; + NRF_TWIM1->ENABLE = 0; + NRF_TWIM0->PSEL.SCL = 0x80000000; + NRF_TWIM0->PSEL.SDA = 0x80000000; + DigitalOut foo(I2C_DATA); + DigitalOut bar(I2C_CLK); + foo = 1; + 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()*LSB_VALUE; + advertisementPacket.accelerometer[1] = (int16_t)mems.readYAxis()*LSB_VALUE; + advertisementPacket.accelerometer[2] = (int16_t)mems.readZAxis()*LSB_VALUE; + */ + //advertisementPacket.accelerometer[2] = 0x2323; + //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(1000); + } +} + + +int main(){ + + 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 + + redLed = 1; + AccVcc = 1; + wait_ms(POWER_UP_DELAY_MS); + + /* + INT1.rise(int1Handler); + NRF_GPIO->PIN_CNF[INT_PIN1] &= 0xFFFFFFF3; // NO PullUps + */ + + BLE &ble = BLE::Instance(); + ble.init(bleInitComplete); + + mems.setMode(LOW_POWER); + mems.enableAxes(X_axis); + mems.enableAxes(Y_axis); + mems.enableAxes(Z_axis); + mems.setODR(ODR_50Hz); + mems.setScale(_16g); + mems.int1Setup(0x40); // IntActivity 1 driven to INT1 pad + mems.int1Latch(0x01); // Enable int1 latch + mems.int1Threshold(INT1_THRESHOLD); + mems.int1Duration(INT1_DUR); + mems.int1Config(0x2A); // Enable XHigh, YHigh and ZHigh + + bleT.start(callback(bleF, &ble)); // Start bleT + + + while(1){ + //disableI2C(); + Thread::wait(0xFFFFFFFF); + } +}