extern "C" long CanalOpen(const char *pDevice, unsigned long flags) { long h = CANAL_ERROR_SUB_DRIVER; unsigned long filter = 0, mask = 0; bool bFilter = false, bMask = false; std::string str; std::string strDevice(pDevice); std::deque<std::string> tokens; vscp_split(tokens, strDevice, ";"); // Get possible filter if (!tokens.empty()) { str = tokens.front(); tokens.pop_front(); if (0 != str.size()) { filter = vscp_readStringValue(str); } } // Get possible mask if (!tokens.empty()) { str = tokens.front(); tokens.pop_front(); if (0 != str.size()) { mask = vscp_readStringValue(str); } } VscpRemoteTcpIf *pvscpif = new VscpRemoteTcpIf(); if (NULL != pvscpif) { if (pvscpif->doCmdOpen(strDevice, flags)) { if (!(h = addDriverObject(pvscpif))) { delete pvscpif; } else { if (bFilter) { pvscpif->doCmdFilter(filter); } if (bMask) { pvscpif->doCmdMask(mask); } } } else { delete pvscpif; } } return h; }
extern "C" long CanalOpen( const char *pDevice, unsigned long flags ) { long h = CANAL_ERROR_SUB_DRIVER; unsigned long filter=0, mask=0; bool bFilter=false, bMask=false; wxString str; wxString strDevice( pDevice, wxConvUTF8); wxStringTokenizer tkz(strDevice, _(";") ); // Get possible filter str = tkz.GetNextToken(); if ( 0 != str.Length() ) { if ( str.ToULong( &filter ) ) { bFilter = true; } } // Get possible mask if ( 0 != str.Length() ) { if ( str.ToULong( &mask ) ) { bMask = true; } } VscpRemoteTcpIf *pvscpif = new VscpRemoteTcpIf(); if ( NULL != pvscpif ) { if ( pvscpif->doCmdOpen( strDevice, flags ) ){ if ( !( h = theApp.addDriverObject( pvscpif ) ) ) { delete pvscpif; } else { if ( bFilter ) { pvscpif->doCmdFilter( filter ); } if ( bMask ) { pvscpif->doCmdMask( mask ); } } } else { delete pvscpif; } } return h; }
void dlgVscpInterfaceSettings::OnButtonTestInterfaceClick( wxCommandEvent& event ) { VscpRemoteTcpIf tcpif; wxString wxstr; m_btnTestConnection->Enable( false ); // If server username is given and no password is entered we ask for it. if ( m_RemoteServerPassword->GetValue().IsEmpty() && !m_RemoteServerUsername->GetValue().IsEmpty() ) { wxstr = ::wxGetTextFromUser( _("Please enter password"), _("Connection Test") ); } else { wxstr = m_RemoteServerPassword->GetValue(); } wxBusyCursor busy; long rv = tcpif.doCmdOpen( m_RemoteServerURL->GetValue(), m_RemoteServerUsername->GetValue(), wxstr ); if ( VSCP_ERROR_SUCCESS == rv ) { tcpif.doCmdClose(); wxMessageBox(_("Successful connect to server."), _("Connection Test"), wxICON_INFORMATION ); /*rv = tcpif.doCmdNOOP(); if ( CANAL_ERROR_SUCCESS == rv ) { wxMessageBox(_("Successful connect to server."), _("Connection Test"), wxICON_INFORMATION ); } else { wxMessageBox(_("Failed do command on server (connected OK)."), _("Connection Test"), wxICON_STOP ); }*/ } else { wxMessageBox(_("Failed to connect to server."), _("Connection Test"), wxICON_STOP ); tcpif.doCmdClose(); } m_btnTestConnection->Enable( true ); event.Skip(); }
void dlgVscpInterfaceSettings::OnButtonGetInterfacesClick( wxCommandEvent& event ) { VscpRemoteTcpIf tcpif; wxString wxstr; m_btnGetInterfaces->Enable( false ); // If server username is given and no password is entered we ask for it. if ( m_RemoteServerPassword->GetValue().IsEmpty() && !m_RemoteServerUsername->GetValue().IsEmpty() ) { wxstr = ::wxGetTextFromUser( _("Please enter password"), _("Password is needed") ); } else { wxstr = m_RemoteServerPassword->GetValue(); } wxBusyCursor busy; long rv = tcpif.doCmdOpen( m_RemoteServerURL->GetValue(), m_RemoteServerUsername->GetValue(), wxstr ); if ( VSCP_ERROR_SUCCESS == rv ) { // Get the interface list wxArrayString array; tcpif.doCmdInterfaceList( array ); // Close the channel tcpif.doCmdClose(); if ( array.Count() ) { dlgSelectDaemonInterface dlg( this ); for ( unsigned int i=0; i<array.Count(); i++ ) { wxStringTokenizer tkz( array[i], _(",") ); wxString strOrdinal = tkz.GetNextToken(); wxString strType = tkz.GetNextToken(); wxString strGUID = tkz.GetNextToken(); wxString strDescription = tkz.GetNextToken(); wxString strLine = strGUID; strLine += _(" "); strLine += _(" Type = "); strLine += strType; strLine += _(" - "); strLine += strDescription; dlg.m_ctrlListInterfaces->Append( strLine ); } if ( wxID_OK == dlg.ShowModal() ) { int selidx; if ( wxNOT_FOUND != ( selidx = dlg.m_ctrlListInterfaces->GetSelection() ) ) { wxStringTokenizer tkz( array[selidx], _(",") ); wxString strOrdinal = tkz.GetNextToken(); wxString strType = tkz.GetNextToken(); wxString strGUID = tkz.GetNextToken(); // Name of interface wxString strifName = tkz.GetNextToken(); int pos; if ( wxNOT_FOUND != ( pos = strifName.Find(_(" ") ) ) ) { strifName = strifName.Left( pos ); strifName.Trim(); } m_RemoteInterfaceName->ChangeValue( strifName ); } } } else { wxMessageBox(_("No interfaces found!")); } } else { wxMessageBox(_("Failed to connect to server."), _("Get daemon interfaces"), wxICON_STOP ); } m_btnGetInterfaces->Enable( true ); event.Skip( false ); }