Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

serialconfigwidget.cpp

Go to the documentation of this file.
00001 #include "iolayerbase.h"
00002 #include "serialconfigwidget.h"
00003 #include "comboboxhelper.h"
00004 
00005 #include <qlabel.h>
00006 #include <qlayout.h>
00007 #include <qcombobox.h>
00008 
00009 
00010 
00011 SerialConfigWidget::SerialConfigWidget( const QString& name,
00012                                         QWidget* parent,
00013                                         const char* na )
00014     : ProfileDialogConnectionWidget( name, parent, na ) {
00015 
00016     m_lay = new QVBoxLayout(this );
00017     m_device = new QLabel(tr("Device"), this );
00018     m_deviceCmb = new QComboBox(this );
00019     m_deviceCmb->setEditable( TRUE );
00020 
00021     m_base = new IOLayerBase(this, "base");
00022 
00023     m_lay->addWidget( m_device );
00024     m_lay->addWidget( m_deviceCmb );
00025     m_lay->addWidget( m_base );
00026 
00027     m_deviceCmb->insertItem( "/dev/ttyS0" );
00028     m_deviceCmb->insertItem( "/dev/ttyS1" );
00029     m_deviceCmb->insertItem( "/dev/ttySA0");
00030     m_deviceCmb->insertItem( "/dev/ttySA1");
00031 
00032 }
00033 SerialConfigWidget::~SerialConfigWidget() {
00034 
00035 }
00036 void SerialConfigWidget::load( const Profile& prof ) {
00037     int rad_flow = prof.readNumEntry("Flow");
00038     int rad_parity = prof.readNumEntry("Parity");
00039     int speed = prof.readNumEntry("Speed");
00040     int dbits = prof.readNumEntry("DataBits");
00041     int sbits = prof.readNumEntry("StopBits");
00042 
00043     if (rad_flow == 1) {
00044         m_base->setFlow( IOLayerBase::Hardware );
00045     } else if (rad_flow == 2) {
00046         m_base->setFlow( IOLayerBase::Software );
00047     } else {
00048         m_base->setFlow( IOLayerBase::None );
00049     }
00050 
00051     if (rad_parity == 1) {
00052         m_base->setParity( IOLayerBase::Even );
00053     } else if ( rad_parity == 2 ) {
00054         m_base->setParity( IOLayerBase::Odd );
00055     } else {
00056         m_base->setParity( IOLayerBase::NonePar );
00057     }
00058 
00059     switch( speed ) {
00060     case 115200:
00061         m_base->setSpeed(IOLayerBase::Baud_115200 );
00062         break;
00063     case 57600:
00064         m_base->setSpeed( IOLayerBase::Baud_57600  );
00065         break;
00066     case 38400:
00067         m_base->setSpeed(IOLayerBase::Baud_38400  );
00068         break;
00069     case 19200:
00070         m_base->setSpeed( IOLayerBase::Baud_19200  );
00071         break;
00072     case 4800:
00073         m_base->setSpeed( IOLayerBase::Baud_4800  );
00074         break;
00075     case 2400:
00076         m_base->setSpeed( IOLayerBase::Baud_2400  );
00077         break;
00078     case 1200:
00079         m_base->setSpeed( IOLayerBase::Baud_1200  );
00080         break;
00081     case 9600:
00082     default:
00083         m_base->setSpeed(IOLayerBase::Baud_9600 );
00084         break;
00085     }
00086 
00087     if ( dbits == 5) {
00088         m_base->setData( IOLayerBase::Data_Five );
00089     } else if (rad_flow == 6) {
00090         m_base->setData( IOLayerBase::Data_Six );
00091     } else if (rad_flow == 7) {
00092         m_base->setData( IOLayerBase::Data_Seven );
00093     } else {
00094         m_base->setData( IOLayerBase::Data_Eight );
00095     }
00096 
00097     if ( sbits == 2) {
00098         m_base->setStop( IOLayerBase::Stop_Two );
00099     } else if ( sbits == 15 ) {
00100         m_base->setStop( IOLayerBase::Stop_OnePointFive );
00101     } else {
00102         m_base->setStop( IOLayerBase::Stop_One );
00103     }
00104 
00105     if ( prof.readEntry("Device").isEmpty() ) return;
00106     ComboboxHelper::setCurrent( prof.readEntry("Device"), m_deviceCmb );
00107 
00108 }
00109 /*
00110  * save speed,
00111  * flow,
00112  * parity
00113  */
00114 void SerialConfigWidget::save( Profile& prof ) {
00115     int flow, parity, speed,  data, stop;
00116     flow = parity = speed = data = stop = 0;
00117     prof.writeEntry("Device", m_deviceCmb->currentText() );
00118 
00119     switch( m_base->flow() ) {
00120     case IOLayerBase::None:
00121         flow = 0;
00122         break;
00123     case IOLayerBase::Software:
00124         flow = 2;
00125         break;
00126     case IOLayerBase::Hardware:
00127         flow = 1;
00128         break;
00129     }
00130 
00131     switch( m_base->parity() ) {
00132     case IOLayerBase::Odd:
00133         parity = 2;
00134         break;
00135     case IOLayerBase::Even:
00136         parity = 1;
00137         break;
00138     case IOLayerBase::NonePar:
00139         parity = 0;
00140         break;
00141     }
00142 
00143     switch( m_base->speed() ) {
00144     case IOLayerBase::Baud_115200:
00145         speed = 115200;
00146         break;
00147     case IOLayerBase::Baud_57600:
00148         speed = 57600;
00149         break;
00150     case IOLayerBase::Baud_38400:
00151         speed = 38400;
00152         break;
00153     case IOLayerBase::Baud_19200:
00154         speed = 19200;
00155         break;
00156     case IOLayerBase::Baud_4800:
00157         speed = 4800;
00158         break;
00159     case IOLayerBase::Baud_2400:
00160         speed = 2400;
00161         break;
00162     case IOLayerBase::Baud_1200:
00163         speed = 1200;
00164         break;
00165     default:
00166     case IOLayerBase::Baud_9600:
00167         speed = 9600;
00168         break;
00169     }
00170 
00171     switch( m_base->data() ) {
00172     case IOLayerBase::Data_Five:
00173         data = 5;
00174         break;
00175     case IOLayerBase::Data_Six:
00176         data = 6;
00177         break;
00178     case IOLayerBase::Data_Seven:
00179         data = 7;
00180         break;
00181     case IOLayerBase::Data_Eight:
00182         data = 8;
00183         break;
00184     }
00185 
00186     switch( m_base->stop() ) {
00187     case IOLayerBase::Stop_One:
00188         stop = 1;
00189         break;
00190     case IOLayerBase::Stop_OnePointFive:
00191         stop = 15;
00192         break;
00193     case IOLayerBase::Stop_Two:
00194         stop = 2;
00195         break;
00196     }
00197 
00198     prof.writeEntry("Flow",  flow);
00199     prof.writeEntry("Parity", parity);
00200     prof.writeEntry("Speed",  speed);
00201     prof.writeEntry("DataBits", data);
00202     prof.writeEntry("StopBits", stop);
00203 }

Generated on Sat Nov 5 16:16:51 2005 for OPIE by  doxygen 1.4.2