static void FieldProcessing(FuncObjC*& inputXYFO) { char baseID[idLen]; CopyString(baseID, inputXYFO->GetID(), 80); int idNum = 0; char incID[idLen]; IncrementID(baseID, incID, idNum); inputXYFO->SetID(incID); if (processDups) { IncrementID(baseID, incID, idNum); MenuObjC* xyObj = AddNewObject("DPO_XYRemoveDuplicate", incID); DFO_XYRemoveDuplicate* currXY = static_cast<DFO_XYRemoveDuplicate*>(xyObj->objFunction); currXY->xyInputObjRef = FuncObjRef(*inputXYFO); inputXYFO = currXY; } if (processReduce) { IncrementID(baseID, incID, idNum); MenuObjC* xyObj = AddNewObject("DPO_XYReduction", incID); DFO_XYReduction* currXY = static_cast<DFO_XYReduction*>(xyObj->objFunction); currXY->xyInputObjRef = FuncObjRef(*inputXYFO); inputXYFO = currXY; } if (processST) { IncrementID(baseID, incID, idNum); MenuObjC* xyObj = AddNewObject("DPO_XYDualScaleTransform", incID); DFO_XYDualScaleTransform* currXY = static_cast<DFO_XYDualScaleTransform*>(xyObj->objFunction); currXY->xyInputObjRef = FuncObjRef(*inputXYFO); inputXYFO = currXY; } inputXYFO->SetID(baseID); }
/******************************************************************************* * Function Name: ReceiveData ******************************************************************************** * * Summary: * receive data from start in struct "inData" * Return: * NETWORK_CONNECT or NETWORK_DISCONNECT * *******************************************************************************/ uint32_t ReceiveData(void) { if(inData.readStatus == NO_READ && outData.writeStatus == WRITE_OK) { uint32_t result = 0; int i; uint8_t byte; struct Resp recvData; while((UART_XB_SpiUartGetRxBufferSize() > 0) && ((byte=UART_XB_UartGetChar()) != 0)) { result = UnpackData(&recvData, (uint8_t)(byte & 0xFF)); CyDelay(2); if(recvData.EndPacket == 1) { inData.IDpacket = recvData.Seq; /*id packet ok*/ if(outData.IDpacket == inData.IDpacket) { inData.readStatus = READ_OK; outData.writeStatus = NO_WRITE; /*connect network*/ networkStatus = NETWORK_CONNECT; noConnect = 0; /*write data*/ inData.newSkier = (recvData.Data3 & 0xFF00) >> 8; inData.unixStartTime = recvData.Data1; inData.startMsTime = recvData.Data2; inData.reboot = (recvData.Data3 & 0x00FF); /*if new skier on track*/ if(inData.newSkier == NEW_SKIER_IN_TARCK ) { WriteStartTime(inData.unixStartTime, inData.startMsTime); BLE_sendOneSkierTimeStart(inData.unixStartTime, inData.startMsTime,GetIDskierStarted(),SkierOnWay(),MAX_SKIERS_ON_WAY); IncrementID(); } /*next packet*/ outData.IDpacket++; CyDelay(50); } /* if prev packet late*/ else if(outData.IDpacket == (inData.IDpacket + 1))