Пример #1
0
/**
 * process_channel_scan()
 * ----------------------
 * run through channel scan, acquiring information about available
 * access points to monitor
 **/
void process_channel_scan(struct packet_info *packet)
{
  struct p802_11b_info *info = NULL;
  float signal_str = 0;
  
  if (packet->error_status)
    return;

  if (packet->driver_proto == AIRONET_MOD){
    signal_str = packet->driver_pkt->signal;
  }

  if (packet->mac_proto == p802_11){
    info = parse_p802_11b_hdr((wlan_hdr_t *)packet->mac_pkt);
  }
  else if (packet->mac_proto == hfa384x){
    signal_str = ((prism2_hdr_t *)packet->mac_pkt)->frame_descriptor.signal;
    info = parse_hfa384x_hdr((prism2_hdr_t *)packet->mac_pkt);
  }
  else if (packet->mac_proto == wlanngp2){
    signal_str = ((wlan_ng_hdr_t *)packet->mac_pkt)->signal.data;
    info = parse_wlanngp2_hdr((wlan_ng_hdr_t *)packet->mac_pkt);
  }
  else{
    return;
  }

  if (!info->status){
    return;
  }
  update_channel(info, signal_str);
}
Пример #2
0
void av::vrpn::Wiimote::setRumbleCB(const av::SFBool::SetValueEvent& event)
{
    const bool rumbling = (event.getValue());
    //  std::cout << "Rumbling: " << rumbling << std::endl;

    update_channel(RUMBLE_CHANNEL, rumbling);
}
Пример #3
0
bool av::vrpn::Wiimote::set_mode(const int mode, bool value)
{
    switch(mode)
    {
    case VRPN_WIIMOTE_CHANNEL_MODE_IR:
    case VRPN_WIIMOTE_CHANNEL_MODE_MOTION_SENSE:
        return update_channel(mode, value);
    default:
        return false;
    }
}
Пример #4
0
bool av::vrpn::Wiimote::setLeds(int leds, bool on)
{
    vrpn_int32 channel = 0;
    switch(leds)
    {
    case 1:
        channel = VRPN_WIIMOTE_CHANNEL_LED_1;
        break;
    case 2:
        channel = VRPN_WIIMOTE_CHANNEL_LED_2;
        break;
    case 3:
        channel = VRPN_WIIMOTE_CHANNEL_LED_3;
        break;
    case 4:
        channel = VRPN_WIIMOTE_CHANNEL_LED_4;
        break;
    default:
        return false;
    }
    std::cout << "LED: " << leds << " (channel=" << channel << ")\n";
    return update_channel(channel, on);
}
Пример #5
0
void __attribute__((interrupt, no_auto_psv)) _IC8Interrupt(void)
  {
  IFS1bits.IC8IF = 0;
  while(IC8CONbits.ICBNE)
    update_channel(channel_8, IC8BUF);
  }
Пример #6
0
void __attribute__((interrupt, no_auto_psv)) _IC2Interrupt(void)
  {
  IFS0bits.IC2IF = 0;
  while(IC2CONbits.ICBNE)
    update_channel(channel_2, IC2BUF);
  }
Пример #7
0
LRESULT CALLBACK EdfReaderDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	EDF_READEROBJ * st;
	int x;
	static int actchn;
	char strfloat[21];

	
	st = (EDF_READEROBJ *) actobject;
    if ((st==NULL)||(st->type!=OB_EDF_READER)) return(FALSE);
 

	switch( message )
	{
		case WM_INITDIALOG:
				actchn=0;
				update_header(hDlg,&st->header);
				update_channelcombo(hDlg, st->channel, st->header.channels);
				update_channel(hDlg,st->channel,actchn);
				update_state(hDlg,st->state);

				sprintf(strfloat,"%.2f",(float)st->offset/(float)PACKETSPERSECOND);
				SetDlgItemText(hDlg,IDC_OFFSET,strfloat);

				if (st->edffile!=INVALID_HANDLE_VALUE)
				   SetDlgItemText(hDlg, IDC_EDFFILE, st->filename);
				else
					SetDlgItemText(hDlg, IDC_EDFFILE, "none");


				return TRUE;
	
		case WM_CLOSE: 
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			
		case WM_COMMAND:
			switch (LOWORD(wParam)) 
			{ 

			case IDC_SELECT:
			 
				 st->filename[0]=0;
				 if ((st->edffile=open_edf_file(&st->header,st->channel,st->filename))==INVALID_HANDLE_VALUE) st->state=0;
				 else if (st->header.channels==0) 
				 {
					SendMessage(hDlg,WM_COMMAND,IDC_CLOSE,0);
					report("EDF-File contained no channel inforamtion, file closed.");
					st->state=0;
				 }
				 else st->state=1;

				 update_state(hDlg,st->state);
				 if (!st->state) break;
				 st->calc_session_length();
				 get_session_length();
				 //set_session_pos(0);
				 st->session_pos(0);
				 st->packetcount=0;
				 st->sampos=0;

				 if (st->outports!=st->header.channels)
				 {
				   for (x=0;x<MAX_CONNECTS;x++)
				   {	
					st->out[x].from_port=-1;
					st->out[x].to_port=-1;
					st->out[x].to_object=-1;
				   }
				   for (x=0;x<MAX_PORTS;x++)
					st->out_ports[x].out_name[0]=0;
				 }
				 st->outports=st->header.channels;
				 st->height=CON_START+st->outports*CON_HEIGHT+5;

				 update_header(hDlg,&st->header);
				 update_channelcombo(hDlg, st->channel, st->header.channels);
				 update_channel(hDlg,st->channel,actchn);
				 st->get_captions();
				 update_dimensions();
			     SetDlgItemText(hDlg, IDC_EDFFILE, st->filename);
				 EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), TRUE);
				 EnableWindow(GetDlgItem(hDlg, IDC_SELECT), FALSE);
				 InvalidateRect(ghWndDesign,NULL,TRUE);
				 
				 break; 

			case IDC_CLOSE: 
					st->state=0;
					update_state(hDlg,st->state);
					SetDlgItemText(hDlg, IDC_EDFFILE, "none");
					add_to_listbox(hDlg,IDC_LIST, "file closed.");
					strcpy(st->filename,"none");
					if (st->edffile==INVALID_HANDLE_VALUE) break;
					CloseHandle(st->edffile);
					st->edffile=INVALID_HANDLE_VALUE;
				    get_session_length();
 				    InvalidateRect(ghWndDesign,NULL,TRUE);

					break;
			case IDC_APPLYOFFSET:
					GetDlgItemText(hDlg, IDC_OFFSET, strfloat, 20);
					st->offset = (int)((float)atof(strfloat) * (float) PACKETSPERSECOND);
					st->calc_session_length();
					get_session_length();
				 break;
			case IDC_CHANNELCOMBO:
					if (HIWORD(wParam)==CBN_SELCHANGE)
					{
						get_channel(hDlg, st->channel, actchn);
						actchn=SendMessage(GetDlgItem(hDlg, IDC_CHANNELCOMBO), CB_GETCURSEL , 0, 0);
						update_channel(hDlg, st->channel,actchn);
					}
				 break;

			}
			return TRUE;
		case WM_SIZE:
		case WM_MOVE:  update_toolbox_position(hDlg);
		break;
		return TRUE;
	}
    return FALSE;
} 
Пример #8
0
LRESULT CALLBACK TcpReceiveDlgHandler( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	TCP_RECEIVEOBJ * st;
	char writebuf[100],szdata[100];
	char readbuf[readbuflength];
	int result;
	static int actchn;

	st = (TCP_RECEIVEOBJ *) actobject;
    if ((st==NULL)||(st->type!=OB_TCP_RECEIVER)) return(FALSE);
 

	switch( message )
	{
		case WM_INITDIALOG:
				SetDlgItemText(hDlg, IDC_HOST, st->host);
			    EnableWindow(GetDlgItem(hDlg, IDC_SELECTCOMBO), FALSE);
				actchn=0;
				update_header(hDlg,&st->header);
				update_channelcombo(hDlg, st->channel, st->header.channels);
				update_channel(hDlg,st->channel,actchn);

				if (st->sock) 
				{	
					char actsession[30];

					EnableWindow(GetDlgItem(hDlg, IDC_CONNECT), FALSE);

					if (st->watching)
					{
						add_to_listbox(hDlg,IDC_LIST, "Watching Values from Server.");
						EnableWindow(GetDlgItem(hDlg, IDC_WATCH), FALSE);
						EnableWindow(GetDlgItem(hDlg, IDC_STOP), TRUE);
						EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE);
					}
					else
					{
						add_to_listbox(hDlg,IDC_LIST, "Socket connected.");
						if (st->streamnum>=0)  EnableWindow(GetDlgItem(hDlg, IDC_WATCH), TRUE);
						else { EnableWindow(GetDlgItem(hDlg, IDC_WATCH), FALSE);
						EnableWindow(GetDlgItem(hDlg, IDC_SELECTCOMBO), TRUE); }
						EnableWindow(GetDlgItem(hDlg, IDC_STOP), FALSE);
						EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), TRUE);
						get_connections(hDlg,st);
					}
					if (st->streamnum>=0)
					{	sprintf(actsession,"%d:EEG",st->streamnum);
						SetDlgItemText(hDlg, IDC_SELECTCOMBO, actsession);
					}
				}
				else
				{	
					add_to_listbox(hDlg,IDC_LIST, "No Socket connected.");
					EnableWindow(GetDlgItem(hDlg, IDC_CONNECT), TRUE);
					EnableWindow(GetDlgItem(hDlg, IDC_WATCH), FALSE);
					EnableWindow(GetDlgItem(hDlg, IDC_STOP), FALSE);
					EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE);
				}

				return TRUE;
	
		case WM_CLOSE: 
				EndDialog(hDlg, LOWORD(wParam));
				return TRUE;
			
		case WM_COMMAND:
			switch (LOWORD(wParam)) 
			{ 
			case IDC_CONNECT:
				GetDlgItemText(hDlg, IDC_HOST, st->host, sizeof(st->host));
				if ((strlen(st->host)<8)||(!st->connect())) 
				{ 
					add_to_listbox(hDlg,IDC_LIST, "Could not connect to Server"); 
					break;
				}

				SendDlgItemMessage(hDlg,IDC_LIST, LB_ADDSTRING, 0, (LPARAM) "Socket connection successful.");
				strcpy(writebuf,"display\n");
				result = SDLNet_TCP_Send(st->sock, writebuf, strlen(writebuf));
				add_to_listbox(hDlg,IDC_LIST, "sending:DISPLAY");
	 			st->read_tcp(readbuf, readbuflength);
				strncpy(szdata,readbuf,6);szdata[6]=0;
				if (strcmp(szdata,"200 OK")) { add_to_listbox(hDlg,IDC_LIST,"Could not select Display-mode"); break;}
				add_to_listbox(hDlg,IDC_LIST, "OK");

				if (!st->sock) { add_to_listbox(hDlg,IDC_LIST,"Socket not connected"); break;}


				if (!get_connections(hDlg,st))
				 { 
					add_to_listbox(hDlg,IDC_LIST, "No Sessions available.");
					st->reset();
					InvalidateRect(ghWndMain,NULL,TRUE);
				    break;
				 }
				EnableWindow(GetDlgItem(hDlg, IDC_CONNECT), FALSE);
				EnableWindow(GetDlgItem(hDlg, IDC_STOP), FALSE);
				EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), TRUE);

				break; 

			case IDC_SELECTCOMBO:
				 if (HIWORD(wParam)!=CBN_SELCHANGE) break;
  				 if (!st->sock) 
				 { 
					add_to_listbox(hDlg,IDC_LIST, "No Channels available."); 
				    st->streamnum=-1;
				    st->out[0].from_port=-1;
					st->outports=0;
				    break;
				 }
				 
				 st->streamnum=SendDlgItemMessage(hDlg,IDC_SELECTCOMBO,CB_GETITEMDATA, 
								(WPARAM) SendDlgItemMessage(hDlg,IDC_SELECTCOMBO, CB_GETCURSEL , 0, 0), 0);
				 st->clear_buffer();
				 // SELECT SESSION
				 sprintf(writebuf,"getheader %d\n",st->streamnum);
	
				 result = SDLNet_TCP_Send(st->sock, writebuf, strlen(writebuf));
				 add_to_listbox(hDlg,IDC_LIST, "sending:GETHEADER");

				 st->read_tcp(readbuf, sizeof(readbuf)-1);
				 strncpy(szdata,readbuf,6); szdata[6]=0;
				 if (strcmp(szdata,"200 OK")) {   add_to_listbox(hDlg,IDC_LIST,"Could not get EDF-header.");break;}

				 add_to_listbox(hDlg,IDC_LIST, "OK");
				 strcpy(st->edfheader,readbuf+8);
//				 report(st->edfheader);

				 EnableWindow(GetDlgItem(hDlg, IDC_SELECTCOMBO), FALSE);
				 st->syncloss=0;
				 add_to_listbox(hDlg,IDC_LIST, "Parsing Header");
				 parse_edf_header(&st->header,st->channel, st->edfheader);


 				 add_to_listbox(hDlg,IDC_LIST, "clear OK");
				 st->outports=st->header.channels;
				 st->height=CON_START+st->outports*CON_HEIGHT+5;
				 st->get_captions();
				update_header(hDlg,&st->header);
				update_channelcombo(hDlg, st->channel, st->header.channels);
				update_channel(hDlg,st->channel,actchn);
 				 add_to_listbox(hDlg,IDC_LIST, "OK");
				 EnableWindow(GetDlgItem(hDlg, IDC_WATCH), TRUE);
				 InvalidateRect(ghWndDesign,NULL,TRUE);
				 break; 

			case IDC_WATCH:
				if ((st->outports>0)&&(st->sock))
				{
					add_to_listbox(hDlg,IDC_LIST, "sending:WATCH");
					st->clear_buffer();
					st->syncloss=0;
					result=st->start_watching();
					if (result!=200) { add_to_listbox(hDlg,IDC_LIST,"Could not enter Watch-Mode"); break;}
					add_to_listbox(hDlg,IDC_LIST, "OK");
					EnableWindow(GetDlgItem(hDlg, IDC_WATCH), FALSE);
					EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE);
  //				    EnableWindow(GetDlgItem(hDlg, IDC_SELECTCOMBO), FALSE);
					EnableWindow(GetDlgItem(hDlg, IDC_STOP), TRUE);
					if (!GLOBAL.running) start_timer();
					 
				} else add_to_listbox(hDlg,IDC_LIST, "No Channels available.");
				break; 
			case IDC_EMPTY:
					st->bufstart=st->bufend;
					add_to_listbox(hDlg,IDC_LIST, "buffer cleared.");
					break; 
			case IDC_STOP:
					add_to_listbox(hDlg,IDC_LIST, "sending:UNWATCH");
					st->unwatch();
					EnableWindow(GetDlgItem(hDlg, IDC_WATCH), TRUE);
					EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), TRUE);
					EnableWindow(GetDlgItem(hDlg, IDC_STOP), FALSE);
//  				    EnableWindow(GetDlgItem(hDlg, IDC_SELECTCOMBO), TRUE);
					break; 

			case IDC_CLOSE: 
					add_to_listbox(hDlg,IDC_LIST, "sending:CLOSE");
					st->reset();
					EnableWindow(GetDlgItem(hDlg, IDC_CONNECT), TRUE);
//  				    EnableWindow(GetDlgItem(hDlg, IDC_SELECTCOMBO), FALSE);
					EnableWindow(GetDlgItem(hDlg, IDC_WATCH), FALSE);
					EnableWindow(GetDlgItem(hDlg, IDC_CLOSE), FALSE);
 				    InvalidateRect(ghWndDesign,NULL,TRUE);
					break;
			case IDC_CHANNELCOMBO:
					if (HIWORD(wParam)==CBN_SELCHANGE)
					{
						get_channel(hDlg, st->channel, actchn);
						actchn=SendMessage(GetDlgItem(hDlg, IDC_CHANNELCOMBO), CB_GETCURSEL , 0, 0);
						update_channel(hDlg, st->channel,actchn);
					}
				 break;

			}
			return TRUE;
		case WM_SIZE:
		case WM_MOVE:  update_toolbox_position(hDlg);
		break;
		return TRUE;
	}
    return FALSE;
}