📄 monitorpage.cpp
字号:
if( ( ( CAutoChoice * ) FindWindowById( ID_CH_OPERATINGMODE ) )->GetStringSelection( ) == sp->OperModeStrings[ 1 ] ) { FindWindowById( ID_ST_CHANNEL )->Enable( false ); FindWindowById( ID_CH_CHANNEL )->Enable( false ); } else { FindWindowById( ID_ST_CHANNEL )->Enable( mInChangeMode ); FindWindowById( ID_CH_CHANNEL )->Enable( mInChangeMode ); } FindWindowById( ID_ST_ESSID )->Enable( mInChangeMode ); FindWindowById( ID_CB_ESSID )->Enable( mInChangeMode ); FindWindowById( ID_ST_RADIOONOFF )->Enable( mInChangeMode ); FindWindowById( ID_CH_RADIOONOFF )->Enable( mInChangeMode ); FindWindowById( ID_ST_MACADDRESS )->Enable( mInChangeMode ); FindWindowById( ID_TX_MACADDRESS )->Enable( mInChangeMode ); FindWindowById( ID_ST_INROAMING )->Enable( mInChangeMode ); FindWindowById( ID_CH_INROAMING )->Enable( mInChangeMode ); FindWindowById( ID_ST_TRANSMITRATE )->Enable( mInChangeMode ); FindWindowById( ID_CH_TRANSMITRATE )->Enable( mInChangeMode ); } event.Skip(); return;}void CMonitorPage::OnChIntRoamingChanged( wxCommandEvent &event ){ update_channel_list( ); return;}void CMonitorPage::update_channel_list( ){ CAutoChoice *chch = ( CAutoChoice * ) FindWindowById( ID_CH_CHANNEL ); CAutoChoice *chin = ( CAutoChoice * ) FindWindowById( ID_CH_INROAMING ); bool all_channels = true; if( chin->GetStringSelection( ) == _( "Enabled" ) ) { all_channels = false; } wxString sel = chch->GetStringSelection( ); chch->Clear( ); CWinterModel *model = ( CWinterModel * ) CAccessor::Access( AID_CURRENTMODEL ); CDeviceConfigurationData *data = ( CDeviceConfigurationData * ) model->GetChild( MC_DEVICECONFIGURATIONDATA ); UCHAR *vector = data->GetChannelVector( ); for( int c = 1; c <= 14; c++ ) { if( all_channels == false && vector[ c ] == 0 ) { continue; } chch->Append( wxString::Format( wxT( "%d" ), c ) ); } if( chch->FindString( sel ) != -1 ) { chch->SetStringSelection( sel ); } return;}// Higher update levelvoid CMonitorPage::UpdateWinterPage( ){ CWinterModel *model = ( CWinterModel * ) CAccessor::Access( AID_CURRENTMODEL ); CVnetDeviceBase *device = ( CVnetDeviceBase * ) CAccessor::Access( AID_CURRENTDEVICE ); CDeviceConfigurationData *data = ( CDeviceConfigurationData * ) model->GetChild( MC_DEVICECONFIGURATIONDATA ); if( device->GetDeviceConfig( data ) == false ) { ::wxMessageBox( _( "Failed to read configuration." ), wxT( "Winter" ), wxICON_HAND, ( CWinterFrame * ) CAccessor::Access( AID_FRAME ) ); return; } CMacAddressData *mac_data = ( CMacAddressData * ) model->GetChild( MC_MACADDRESSDATA ); if( device->GetMacAddress( mac_data ) == false ) { ::wxMessageBox( _( "Failed to read MAC address." ), wxT( "Winter" ), wxICON_HAND, ( CWinterFrame * ) CAccessor::Access( AID_FRAME ) ); return; } TransferToControls( ); return;}bool CMonitorPage::OnPageChanging( ){ mInChangeMode = false; return true;}int CMonitorPage::TestControlValues( ){ return 0;}int CMonitorPage::TransferToControls( CWinterModel *model ){ if( model == NULL ) { model = ( CWinterModel * ) CAccessor::Access( AID_CURRENTMODEL ); } CDeviceConfigurationData *device_data = ( CDeviceConfigurationData * ) model->GetChild( MC_DEVICECONFIGURATIONDATA ); CMacAddressData *mac_data = ( CMacAddressData * ) model->GetChild( MC_MACADDRESSDATA ); CWinterStringsProvider *sp = ( CWinterStringsProvider * ) CAccessor::Access( AID_STRINGSPROVIDER );//int.roaming ( ( CAutoChoice * ) FindWindow( ID_CH_INROAMING ) )->SetStringSelection( sp->RoamingStrings[ ( int ) device_data->GetInternationalRoaming( ) ] ); update_channel_list( );//channel ( ( CAutoChoice * ) FindWindow( ID_CH_CHANNEL ) )->SetStringSelection( wxString::Format( _( "%d" ), ( int ) device_data->GetChannel( ) ) );//radio ( ( CAutoChoice * ) FindWindow( ID_CH_RADIOONOFF ) )->SetStringSelection( sp->RadioStrings[ ( int ) device_data->GetRadioIsOn( ) ] );//oper mode ( ( CAutoChoice * ) FindWindow( ID_CH_OPERATINGMODE ) )->SetSelection( ( int ) device_data->GetOperatingMode( ) );//transmit rate ( ( CAutoChoice * ) FindWindow( ID_CH_TRANSMITRATE ) )->SetSelection( ( int ) device_data->GetTxRate( ) );// SSID CHistoryCombo *text = ( ( CHistoryCombo * ) FindWindow( ID_CB_ESSID ) ); UCHAR *ssid = new UCHAR[ 33 ]; memcpy( ssid, device_data->GetSSID( ), device_data->GetSSIDLength( ) ); ssid[ device_data->GetSSIDLength( ) ] = 0; text->SetValueEx( wxString::Format( wxT( "%s" ), ssid ) ); delete ssid;// Mac address wxTextCtrl *mac_text = ( wxTextCtrl * ) FindWindow( ID_TX_MACADDRESS ); mac_text->Clear( ); UCHAR *mac_address = mac_data->GetMacAddress( ); for( int c = 0; c < MAC_LENGTH - 1; c++ ) { mac_text->AppendText( wxString::Format( wxT( "%02X:" ), mac_address[ c ] ) ); } mac_text->AppendText( wxString::Format( wxT( "%02X" ), mac_address[ MAC_LENGTH - 1 ] ) );//Get Station State DisplayMessages( device_data->GetStationState( ) );//LinkQuality// debug://::wxLogDebug( wxT( "Received link quality = %d" ), device_data->GetLinkQuality( ) ); ( ( wxGauge * ) FindWindow( ID_GG_LINKQUALITY ) )->SetValue( ( int ) device_data->GetLinkQuality( ) ); return 0;}int CMonitorPage::TransferToModel( CWinterModel *model ){ if( model == NULL ) { model = ( CWinterModel * ) CAccessor::Access( AID_CURRENTMODEL ); } CDeviceConfigurationData *device_data = ( CDeviceConfigurationData * ) model->GetChild( MC_DEVICECONFIGURATIONDATA ); CWinterStringsProvider *sp = ( CWinterStringsProvider * ) CAccessor::Access( AID_STRINGSPROVIDER );//ssid UCHAR *ssid = new UCHAR[ MAX_SSID_LENGTH + 1 ]; memset( ssid, 0, MAX_SSID_LENGTH + 1 ); wxString tx_ssid = ( ( CHistoryCombo * ) FindWindow( ID_CB_ESSID ) )->GetValue( ); strcpy( ( char * ) ssid, tx_ssid.c_str( ) ); device_data->SetSSID( ssid ); device_data->SetSSIDLength( tx_ssid.Len( ) ); delete ssid;//channel int channel = atoi( ( ( CAutoChoice * ) FindWindow( ID_CH_CHANNEL ) )->GetStringSelection( ).c_str( ) ); device_data->SetChannel( channel );//radio device_data->SetRadioIsOn( sp->RadioStrings.Index( ( ( CAutoChoice * ) FindWindow( ID_CH_RADIOONOFF ) )->GetStringSelection( ) ) );//int.roaming device_data->SetInternationalRoaming( sp->RoamingStrings.Index( ( ( CAutoChoice * ) FindWindow( ID_CH_INROAMING ) )->GetStringSelection( ) ) );//oper mode device_data->SetOperatingMode( sp->OperModeStrings.Index( ( ( CAutoChoice * ) FindWindow( ID_CH_OPERATINGMODE ) )->GetStringSelection( ) ) );//Transmit rate device_data->SetTxRate( sp->TransmitRateStrings.Index( ( ( CAutoChoice * ) FindWindow( ID_CH_TRANSMITRATE ) )->GetStringSelection( ) ) ); return 0;}void CMonitorPage::DisplayErrorMessages( UCHAR stationstate ){ wxTextCtrl *info = ( wxTextCtrl * ) FindWindowById( ID_TX_STATUS_INFO ); switch( stationstate ) { case 1: //C80211_MGMT_SC_Unspecified: info->SetValue( _( "Unspecified error in Management Frame..." ) ); break; case 10: //C80211_MGMT_SC_SupportCapabilities: info->SetValue( _( "Support Capabilities error in Association Request..." ) ); break; case 11: //C80211_MGMT_SC_ReassDenied: info->SetValue( _( "Re-Association Denied" ) ); break; case 12: //C80211_MGMT_SC_AssDenied: info->SetValue( _( "Association Denied" ) ); break; case 13: //C80211_MGMT_SC_AuthAlgNotSupported: info->SetValue( _( "Authentication Algorithm not supported..." ) ); break; case 14: //C80211_MGMT_SC_AuthTransSeqNumError: info->SetValue( _( "Bad Authentication transaction sequence number..." ) ); break; case 15: //C80211_MGMT_SC_AuthRejectChallenge: info->SetValue( _( "Authentication challenge text rejection..." ) ); break; case 16: //C80211_MGMT_SC_AuthRejectTimeout: info->SetValue( _( "Authentication Timeout..." ) ); break; case 17: //C80211_MGMT_SC_AssDeniedHandleAP: info->SetValue( _( "Access Point can not handle any more stations..." ) ); break; case 18: //C80211_MGMT_SC_AssDeniedBSSRate: ( ( wxTextCtrl * )FindWindowById( ID_TX_STATUS_INFO ) )->SetValue( _( "Association Denied (Supported Rates mismatch)..." ) ); break; default: info->SetValue( _( "Failed to co-operate with the selected Access Point" ) ); }}void CMonitorPage::OnStationStateChanged( int old_state, int new_state ){ TransferToControls( ); return;}void CMonitorPage::DisplayMessages( UCHAR stationstate ){ CWinterModel *model = ( CWinterModel * ) CAccessor::Access( AID_CURRENTMODEL ); CDeviceConfigurationData *device_data = ( CDeviceConfigurationData * ) model->GetChild( MC_DEVICECONFIGURATIONDATA ); wxTextCtrl *info = ( wxTextCtrl * )FindWindowById( ID_TX_STATUS_INFO ); CWinterStringsProvider *sp = ( CWinterStringsProvider * ) CAccessor::Access( AID_STRINGSPROVIDER ); switch( stationstate ) { case 0x00: info->SetValue( _( "Initializing" ) ); break; case 0x01: info->SetValue( _( "Scanning" ) ); break; case 0x02: info->SetValue( _( "Joining" ) ); break; case 0x03: info->SetValue( _( "Authenticating" ) ); break; case 0x04: info->SetValue( _( "Associating" ) ); break; case 0x05: if( ( ( CAutoChoice * ) FindWindowById( ID_CH_OPERATINGMODE ) )->GetStringSelection( ) == sp->OperModeStrings[ 1 ] ) { info->SetValue( _( "Associated" ) ); } else { info->SetValue( _( "Ready" ) ); } info->AppendText( _( " - BSSID: " ) ); // TODO : Replace this 5 with BSSID_LENGTH - 1 for( int c = 0; c < 5; c++ ) { info->AppendText( wxString::Format( wxT( "%02X:" ), device_data->GetBSSID( )[ c ] ) ); } info->AppendText( wxString::Format( wxT( "%02X" ), device_data->GetBSSID( )[ 5 ] ) ); break; case 0x06: info->SetValue( _( "Station Out of Range" ) ); break; case 0x07: info->SetValue( _( "Disassociating" ) ); break; case 0x08: info->SetValue( _( "Disauthenticating" ) ); break; case 0x09: info->SetValue( _( "Reassociating" ) ); break; case 0x0a: info->SetValue( _( "Forced Joining" ) ); break; case 0x0b: info->SetValue( _( "ReConfiguring" ) ); break; case 0x0c: info->SetValue( _( "FW_Upgrade" ) ); break; case 0x0d: info->SetValue( _( "Force Joining Failure" ) ); break; case 0x0e: info->SetValue( _( "Resetting" ) ); break; case 0x0f: info->SetValue( _( "Reset Pending" ) ); break; case 0x13: info->SetValue( _( "Radio OFF" ) ); break; case 0xf0: info->SetValue( _( "No card Present" ) ); break; case 0xf1: if( device_data->GetMgmtErrorCode( ) == 0xa0 ) { info->SetValue( _( "Enable Encryption to Join this BSS" ) ); break; } else if( device_data->GetMgmtErrorCode( ) == 0xa1 ) { info->SetValue( _ ( "Disable Encryption to Join this BSS" ) ); break; } else { DisplayErrorMessages( ( UCHAR )device_data->GetStationState ( ) ); } break; case 0xfd: info->SetValue( _( "Failed to Find SSID. Check your Settings." ) ); break; default: info->SetValue( wxString::Format( _( "Unknown station state code : 0x%02X" ), stationstate ) ); } return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -