示例#1
0
    /**
     * Traverses expression tree pre-order.
     * Appends an encoding of each node's match type and path name
     * to the output stream.
     */
    void PlanCache::encodeKeyForMatch(const MatchExpression* tree,
                                      StringBuilder* keyBuilder) const {
        // Encode match type and path.
        *keyBuilder << encodeMatchType(tree->matchType());

        encodeUserString(tree->path(), keyBuilder);

        // GEO and GEO_NEAR require additional encoding.
        if (MatchExpression::GEO == tree->matchType()) {
            encodeGeoMatchExpression(static_cast<const GeoMatchExpression*>(tree), keyBuilder);
        }
        else if (MatchExpression::GEO_NEAR == tree->matchType()) {
            encodeGeoNearMatchExpression(static_cast<const GeoNearMatchExpression*>(tree),
                                         keyBuilder);
        }

        // Encode indexability.
        const IndexabilityDiscriminators& discriminators =
            _indexabilityState.getDiscriminators(tree->path());
        if (!discriminators.empty()) {
            *keyBuilder << kEncodeDiscriminatorsBegin;
            // For each discriminator on this path, append the character '0' or '1'.
            for (const IndexabilityDiscriminator& discriminator : discriminators) {
                *keyBuilder << discriminator(tree);
            }
            *keyBuilder << kEncodeDiscriminatorsEnd;
        }

        // Traverse child nodes.
        // Enclose children in [].
        if (tree->numChildren() > 0) {
            *keyBuilder << kEncodeChildrenBegin;
        }
        // Use comma to separate children encoding.
        for (size_t i = 0; i < tree->numChildren(); ++i) {
            if (i > 0) {
                *keyBuilder << kEncodeChildrenSeparator;
            }
            encodeKeyForMatch(tree->getChild(i), keyBuilder);
        }
        if (tree->numChildren() > 0) {
            *keyBuilder << kEncodeChildrenEnd;
        }
    }
示例#2
0
void B2Trk(B2ChnlPrms * chnlInst,char dataIn)
{	
	B2TrkPrms *trkInst = &(chnlInst->trkInst);

	// 相关运算
	correlation(chnlInst,dataIn);

	//如果是一个完整的码周期
	if (trkInst->oneCircle == 1)
	{
		// 鉴相
			discriminator(trkInst);	

		//一阶滤波
			trkInst->flt_codeLoop = codeLoopFilter(&(trkInst->lpf),trkInst->dis_dll);
				
		//二阶滤波
			trkInst->flt_carrierLoop = carrierLoopFilter(&(trkInst->lpf),trkInst->dis_pll,trkInst->dis_fll);
		
		// 更新跟踪参数
			updateTrk(chnlInst);
		

		//比特流处理
			//subFrameUpdate(chnl);

	}

	
	//↓↓↓↓↓↓ for test↓↓↓↓↓↓↓
	if (outflag == 1)
	{
		writeToFile(chnlInst->TCAR.phs,(chnlInst->chnlID-1)*11+CAR_PHS_SRC_OUT);
		writeToFile(chnlInst->TPRN.phs,(chnlInst->chnlID-1)*11+PRN_PHS_SRC_OUT);
		writeToFile(chnlInst->trkInst.car.phs,(chnlInst->chnlID-1)*11+CAR_PHS_LCL_OUT);
		writeToFile(chnlInst->trkInst.prn.phs.phsP,(chnlInst->chnlID-1)*11+PRN_PHS_LCL_OUT);
	}
	// ↑↑↑↑↑↑for test↑↑↑↑↑↑↑
	


}