Changeset 162 in flair-src


Ignore:
Timestamp:
Mar 6, 2017, 8:30:06 PM (5 years ago)
Author:
Sanahuja Guillaume
Message:

modifs pb crash fin simulateur

Location:
trunk/lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/FlairFilter/src/ButterworthLowPass.cpp

    r157 r162  
    3131ButterworthLowPass::ButterworthLowPass(const IODevice *parent,
    3232                                       const LayoutPosition *position,
    33                                        string name, int order)
     33                                       string name, uint32_t order,uint32_t nbRow,uint32_t nbCol)
    3434    : IODevice(parent, name) {
    35   pimpl_ = new ButterworthLowPass_impl(this, position, name, order);
     35  pimpl_ = new ButterworthLowPass_impl(this, position, name, order,nbRow,nbCol);
    3636  AddDataToLog(pimpl_->output);
    3737 
     
    4040
    4141ButterworthLowPass::ButterworthLowPass(const gui::LayoutPosition *position,
    42                                        string name, int order)
     42                                       string name, uint32_t order,uint32_t nbRow,uint32_t nbCol)
    4343    : IODevice(position->getLayout(), name) {
    44   pimpl_ = new ButterworthLowPass_impl(this, position, name, order);
     44  pimpl_ = new ButterworthLowPass_impl(this, position, name, order,nbRow,nbCol);
    4545  AddDataToLog(pimpl_->output);
    4646}
  • trunk/lib/FlairFilter/src/ButterworthLowPass.h

    r15 r162  
    4848  * \param name name
    4949  * \param order order of the filter
     50  * \param nbRow number of rows of input/output
     51  * \param nbCol number of cols of input/output
    5052  */
    5153  ButterworthLowPass(const IODevice *parent,
    5254                     const gui::LayoutPosition *position, std::string name,
    53                      int order);
     55                     uint32_t order,uint32_t nbRow=1,uint32_t nbCol=1);
    5456
    5557  /*!
     
    6567  * \param name name
    6668  * \param order order of the filter
     69  * \param nbRow number of rows of input/output
     70  * \param nbCol number of cols of input/output
    6771  */
    6872  ButterworthLowPass(const gui::LayoutPosition *position, std::string name,
    69                      int order);
     73                     uint32_t order,uint32_t nbRow,uint32_t nbCol);
    7074
    7175  /*!
  • trunk/lib/FlairFilter/src/ButterworthLowPass_impl.cpp

    r148 r162  
    3131ButterworthLowPass_impl::ButterworthLowPass_impl(ButterworthLowPass *self,
    3232                                                 const LayoutPosition *position,
    33                                                  string name, int order) {
     33                                                 string name, uint32_t order,uint32_t nbRow,uint32_t nbCol) {
    3434  // init UI
    3535  GroupBox *reglages_groupbox = new GroupBox(position, name);
     
    3939                             " Hz", 0, 10000, 0.1, 2, 1);
    4040
    41   cvmatrix_descriptor *desc = new cvmatrix_descriptor(1, 1);
    42   desc->SetElementName(0, 0, "output");
     41  cvmatrix_descriptor *desc = new cvmatrix_descriptor(nbRow, nbCol);
     42  //desc->SetElementName(0, 0, "output");
    4343  output = new cvmatrix(self, desc, floatType, name);
    4444  delete desc;
    4545
    46   f = new PoleFilter(order);
    47 
    48   if (T->Value() != 0) {
    49     f->setup(1. / T->Value(), cutoff->Value());
     46  f=(PoleFilter**)malloc(sizeof(PoleFilter*)*nbRow*nbCol);
     47 
     48  for(uint32_t i=0;i<nbRow;i++) {
     49    for(uint32_t j=0;j<nbCol;j++) {
     50      f[i*nbCol+j] = new PoleFilter(order);
     51      if (T->Value() != 0) {
     52        f[i*nbCol+j]->setup(1. / T->Value(), cutoff->Value());
     53      }
     54      f[i*nbCol+j]->reset();
     55    }
    5056  }
    51  
    52   f->reset();
    5357
    5458  first_update = true;
    5559  this->order=order;
     60  this->nbRow=nbRow;
     61  this->nbCol=nbCol;
    5662}
    5763
    58 ButterworthLowPass_impl::~ButterworthLowPass_impl() { delete f; }
     64ButterworthLowPass_impl::~ButterworthLowPass_impl() {
     65  for(uint32_t i=0;i<nbRow;i++) {
     66    for(uint32_t j=0;j<nbCol;j++) {
     67     delete f[i*nbCol+j];
     68    }
     69  }
     70  free(f);
     71}
    5972
    6073void ButterworthLowPass_impl::UpdateFrom(const io_data *data) {
    61   float result;
    6274  cvmatrix *input = (cvmatrix *)data;
    6375  float delta_t;
    6476 
    65   if (T->ValueChanged()) {
    66     if (T->Value() != 0) {
    67       f->setup(1. / T->Value(), cutoff->Value());
    68       settingsChanged(input->Value(0, 0));
     77  if (T->ValueChanged() && T->Value() != 0) {
     78    for(uint32_t i=0;i<nbRow;i++) {
     79      for(uint32_t j=0;j<nbCol;j++) {
     80        f[i*nbCol+j]->setup(1. / T->Value(), cutoff->Value());
     81        settingsChanged(f[i*nbCol+j],input->Value(i, j));
     82      }
    6983    }
    7084  }
     
    7286  if (T->Value() == 0) {
    7387    delta_t = (float)(data->DataTime() - previous_time) / 1000000000.;
    74     f->setup(1. / delta_t, cutoff->Value());
     88    for(uint32_t i=0;i<nbRow;i++) {
     89      for(uint32_t j=0;j<nbCol;j++) {
     90        f[i*nbCol+j]->setup(1. / delta_t, cutoff->Value());
     91      }
     92    }
    7593  } else {
    7694    delta_t=T->Value();
     
    82100
    83101  if (cutoff->ValueChanged()) {
    84     f->setup(1. / delta_t, cutoff->Value());
    85     settingsChanged(input->ValueNoMutex(0, 0));
     102    for(uint32_t i=0;i<nbRow;i++) {
     103      for(uint32_t j=0;j<nbCol;j++) {
     104        f[i*nbCol+j]->setup(1. / delta_t, cutoff->Value());
     105        settingsChanged(f[i*nbCol+j],input->ValueNoMutex(i, j));
     106      }
     107    }
    86108  }
    87109
     
    89111    first_update = false;
    90112  } else {
    91     result = f->filter(input->ValueNoMutex(0, 0));
    92     output->SetValueNoMutex(0, 0, result);
     113    for(uint32_t i=0;i<nbRow;i++) {
     114      for(uint32_t j=0;j<nbCol;j++) {
     115        float result = f[i*nbCol+j]->filter(input->ValueNoMutex(i, j));
     116        output->SetValueNoMutex(i, j, result);
     117      }
     118    }
    93119  }
    94120
     
    101127
    102128//ne gere pas les oscillations (s'arrete des qu'une valeure est bonne a 5%)
    103 void ButterworthLowPass_impl::settingsChanged(float inputValue) {
     129void ButterworthLowPass_impl::settingsChanged(PoleFilter*f,float inputValue) {
    104130  float result=f->filter(inputValue);
    105131 
  • trunk/lib/FlairFilter/src/unexported/ButterworthLowPass_impl.h

    r147 r162  
    122122  ButterworthLowPass_impl(flair::filter::ButterworthLowPass *self,
    123123                          const flair::gui::LayoutPosition *position,
    124                           std::string name, int order);
     124                          std::string name, uint32_t order,uint32_t nbRow,uint32_t nbCol);
    125125  ~ButterworthLowPass_impl();
    126126  void UpdateFrom(const flair::core::io_data *data);
     
    128128
    129129private:
    130   void settingsChanged(float inputValue);
     130  void settingsChanged(PoleFilter*f,float inputValue);
    131131  flair::gui::DoubleSpinBox *cutoff, *T;
    132   PoleFilter *f;
     132  PoleFilter **f;
    133133  bool first_update;
    134134  flair::core::Time previous_time;
    135   int order;
     135  uint32_t order;
     136  uint32_t nbRow, nbCol;
    136137};
    137138
  • trunk/lib/FlairSimulator/src/Gui_impl.cpp

    r145 r162  
    131131Gui_impl::~Gui_impl() {
    132132  // printf("del Gui_impl\n");
    133   device->drop();
     133  //device->drop();
    134134
    135135  delete receiver;
     
    209209
    210210  while (device->run()) {
    211     if (dbtFile_r != NULL) // rejeu
    212     {
     211    if (dbtFile_r != NULL) {// rejeu
    213212      takeScreenshot(); // on enregistre l'image precedente
    214213      road_time_t time;
     
    258257                 }
    259258                 device->setWindowCaption(L"toto");*/
    260 
    261     if (dbtFile_r == NULL) // mode normal
    262     {
     259    if (dbtFile_r == NULL) {// mode normal
    263260      for (size_t i = 0; i < models.size(); i++) {
    264261        models.at(i)->pimpl_->CheckCollision();
  • trunk/lib/FlairSimulator/src/SimuCameraGL.cpp

    r158 r162  
    111111    free(buffer);
    112112  }
     113  camera->removeAnimator(this);
     114  camera->drop();
    113115}
    114116
  • trunk/lib/FlairSimulator/src/Simulator_impl.cpp

    r15 r162  
    2121#include "Gui.h"
    2222#include "Gui_impl.h"
     23#include <ISceneManager.h>
    2324#endif
    2425#include "Model.h"
     
    4647    models.at(i)->pimpl_->SafeStop();
    4748    models.at(i)->pimpl_->Join();
     49#ifdef GL
     50    getGui()->getSceneManager()->getRootSceneNode()->removeChild(models.at(i)->pimpl_);
     51#endif
    4852    delete models.at(i);
    4953  }
Note: See TracChangeset for help on using the changeset viewer.