// %flair:license{ // This file is part of the Flair framework distributed under the // CECILL-C License, Version 1.0. // %flair:license} // created: 2014/04/11 // filename: UavMultiplex_impl.cpp // // author: Guillaume Sanahuja // Copyright Heudiasyc UMR UTC/CNRS 7253 // // version: $Id: $ // // purpose: Class defining uav multiplexing // // /*********************************************************************/ #include "UavMultiplex_impl.h" #include "UavMultiplex.h" #include #include #include #include #include #include #include #include using std::string; using std::ostringstream; using namespace flair::core; using namespace flair::gui; using namespace flair::filter; UavMultiplex_impl::UavMultiplex_impl(const FrameworkManager* parent,UavMultiplex* self,std::string name) { input=new cvmatrix(self,7,1,floatType); multiplexcombobox=NULL; this->self=self; //station sol main_tab=new Tab(parent->GetTabWidget(),name); tabwidget=new TabWidget(main_tab->NewRow(),"UavMultiplex"); setup_tab=new Tab(tabwidget,"Setup"); } UavMultiplex_impl::~UavMultiplex_impl(void) { delete main_tab; if(multiplexcombobox!=NULL) free(multiplexcombobox); } void UavMultiplex_impl::SetMultiplexComboBox(string name,int index) { //we do not know motorcount at constructor time, so allocation is done here if(multiplexcombobox==NULL) { multiplexcombobox=(ComboBox**)malloc(self->MotorsCount()*sizeof(ComboBox*)); for(int i=0;iMotorsCount();i++) multiplexcombobox[i]=NULL; groupbox=new GroupBox(setup_tab->NewRow(),"motor attribution"); } if(index>self->MotorsCount()) { self->Err("index out of bound %i/%i\n",index,self->MotorsCount()); return; } if(multiplexcombobox[index]!=NULL) { self->Err("index already setup\n"); return; } multiplexcombobox[index]=new ComboBox(groupbox->At(index/4,index%4),name); for(int i=0;iMotorsCount();i++) { ostringstream oss; oss << i; multiplexcombobox[index]->AddItem(oss.str()); } } int UavMultiplex_impl::MultiplexValue(int index) const { if(multiplexcombobox[index]!=NULL) { return multiplexcombobox[index]->CurrentIndex(); } else { self->Err("multiplex not setup for motor %i\n",index); return 0; } }