⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csensordatafilter.cpp

📁 一个基于symbian s60 3rd 的3D汽车游戏演示程序,模拟器上编译通过。
💻 CPP
字号:
   /*
============================================================================
    * Name : CSonsorDataFilter.cpp
    * Part of : Example3D
    * Description : Definition of CSensorDataFilter
    * Copyright (c) 2008 Nokia Corporation
============================================================================
    */

#include "CSensorDataFilter.h"

CSensorDataFilter* CSensorDataFilter::NewL( TInt aRingBufferSize )
    {
    CSensorDataFilter* self = new( ELeave )CSensorDataFilter( aRingBufferSize );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
    }

void CSensorDataFilter::ConstructL()
    {
    // Allocate ring buffer for sensor data
    iRingBuffer = new( ELeave )TInt[ iRingBufferSize ];
    
    // Clear ring buffer
    memset(iRingBuffer, '\0', iRingBufferSize * sizeof(TInt));
    
    // Initialize moving ring buffer pointer
    iRingBufferPointer = iRingBuffer;
    }

CSensorDataFilter::CSensorDataFilter( TInt aRingBufferSize )
    {
    iRingBufferSize = aRingBufferSize;
    }

CSensorDataFilter::~CSensorDataFilter()
    {
    delete iRingBuffer;
    }

TInt CSensorDataFilter::FilterSensorData( TInt aNewValue )
    {
    TInt sum = 0;
    
    // Replace the oldest value in the ring buffer with the new value according to the pointer
    *iRingBufferPointer = aNewValue;
    
    // Move the ring buffer pointer
    if (iRingBufferPointer < (iRingBuffer + (iRingBufferSize - 1)))
        {
        iRingBufferPointer++;
        }
    else
        {
        iRingBufferPointer = iRingBuffer;
        }

    // MOVING AVERAGE FILTER ALGORITHM
    
    // Calculate sum of ring buffer values
    for (TInt i = 0; i < iRingBufferSize; i++)
        {
        sum += iRingBuffer[i];
        }
    
    // Calculate the average value
    return (sum / iRingBufferSize);
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -