/******************************************************************************* * Function Name: DynamicADVPayloadUpdate ******************************************************************************** * * Summary: * This routine dynamically updates the BLE advertisement packet * * Parameters: * None * * Return: * None * *******************************************************************************/ void DynamicADVPayloadUpdate(void) { if(CyBle_GetBleSsState() == CYBLE_BLESS_STATE_ACTIVE) { count++; /* Loop counter */ /* Once the system enters Sleep/Deepsleep mode during advertisement, the source of wake-up is the next * advertisement interval which has a wakeup interval of 1 advertisement (ADV) interval (100ms). * LOOP_DELAY * ADV interval is the interval after which ADV data is updated in this firmware.*/ if(count >= LOOP_DELAY) { /* Dynamic payload will be continuously updated */ advPayload[MANUFACTURER_SPECIFIC_DYNAMIC_DATA_INDEX] = dynamicPayload++; if(dynamicPayload == MAX_PAYLOAD_VALUE) { dynamicPayload = MIN_PAYLOAD_VALUE; } count = 0; CyBle_GapUpdateAdvData(cyBle_discoveryModeInfo.advData, cyBle_discoveryModeInfo.scanRspData); } } }
void setupType0Adv() { advPacket0 *ap; ap = (advPacket0 *)&cyBle_discoveryModeInfo.advData->advData[ADVINDEX]; // packet type + LSM9Setting ap->setup = ADVPACKET0 | (LSM9DS0GetSetting()<<2); // fix this ap->tb0 =LO8(systime); ap->tb1 =HI8(LO16(systime)); ap->tb2 =LO8(HI16(systime)); // position // if it is a uint16 it causes some unhandled exception uint16 val= QD_ReadCounter(); ap->position = val; // acceleration x,y,z memcpy(&ap->accel , LSM9DS0GetAccel(), 6); // sizeof(LSM9DS0DATA)); // gyro x,y,z memcpy(&ap->gyro , LSM9DS0GetGyro(),6 ); // sizeof(LSM9DS0DATA)); // mag x,y,z memcpy(&ap->mag , LSM9DS0GetMag(),6); //sizeof(LSM9DS0DATA)); CyBle_GapUpdateAdvData(cyBle_discoveryModeInfo.advData, cyBle_discoveryModeInfo.scanRspData); }
void setupType1Adv() { advPacket1 *ap; Types tempData; ap = (advPacket1 *)&cyBle_discoveryModeInfo.advData->advData[ADVINDEX]; // packet type + LSM9Setting ap->setup = ADVPACKET1; tempData.longVal = systime; ap->tb0 = tempData.bytes[0]; ap->tb1 = tempData.bytes[1]; ap->tb2 = tempData.bytes[2]; tempData.f = BMP180GetTemperature(); memcpy(&ap->temperature,&tempData,4); tempData.f = HTU21GetHumidity(); memcpy(&ap->relativeHumdity,&tempData,4); tempData.longVal = BMP180GetPressure(); memcpy(&ap->airPressure,&tempData,4); tempData.f = BMP180GetAltitude(); memcpy(&ap->altitude,&tempData,4); CyBle_GapUpdateAdvData(cyBle_discoveryModeInfo.advData, cyBle_discoveryModeInfo.scanRspData); }
void setupType2Adv() { // packet type advPacket3 *ap; //Types tempData; ap = (advPacket3 *)&cyBle_discoveryModeInfo.advData->advData[ADVINDEX]; // packet type + LSM9Setting ap->setup = ADVPACKET2; ap->wheelCircumfrence = globalDefaults.cmsPerRotation; ap->zeroPos = globalDefaults.zeroPos; ap->ticksPerRotation = globalDefaults.ticksPerRotation; memcpy(&ap->name,globalDefaults.name,sizeof(globalDefaults.name)); CyBle_GapUpdateAdvData(cyBle_discoveryModeInfo.advData, cyBle_discoveryModeInfo.scanRspData); }