Exemple #1
0
BOOL DisconnectNIA(void) {
	UINT ui;
	UINT ret;
	UINT i;
	write_logfile("Disconnecting NIA");
	ret=GetRegisteredRawInputDevices(NULL,&ui,sizeof(RAWINPUTDEVICE));			// get size
	if (ret<=sizeof(Rid))														// if okay, get structures
		GetRegisteredRawInputDevices(Rid, &ui, sizeof(RAWINPUTDEVICE));

	if(ret!=(UINT)-1){
		for (i=0; i<ui; i++) {
			Rid[i].dwFlags = RIDEV_REMOVE;		// this should disable the HID device
			Rid[i].hwndTarget = NULL ;
//			RawInputDeviceList[i].hDevice = NULL;

			if (RegisterRawInputDevices(Rid, 1, sizeof(RAWINPUTDEVICE)) == FALSE)
				report_error("Could not close NIA");
		}
	}
	ret=GetRegisteredRawInputDevices(Rid, &ui, sizeof(RAWINPUTDEVICE));
	if (ret !=0)
		write_logfile("Could not disconnect NIA");

	return TRUE;
}
Exemple #2
0
void write_spacelog(dbref executor, dbref object, const char *fmt)
{
	switch (LOG_TYPE) {
		case 1: write_logfile(executor, object, fmt); break;
		case 2: write_logchannel(executor, object, fmt); break;
		case 3: write_logfile(executor, object, fmt);
				write_logchannel(executor, object, fmt);
				break;
		default: write_logfile(executor, object, fmt); break;
	}
}
Exemple #3
0
/**
 * do_main - The main loop.
 *
 * @fd: Receiver socket's file descriptor.
 *
 * Returns nothing.
 */
static void do_main(const int fd)
{
	static char buf[65536];
	struct sockaddr_in addr;
	while (1) {
		struct pollfd pfd = { fd, POLLIN, 0 };
		socklen_t size = sizeof(addr);
		int i;
		time_t now;
		/* Don't wait forever if checking for timeout. */
		for (i = 0; i < num_clients; i++)
			if (clients[i].avail)
				break;
		/* Flush log file and wait for data. */
		// fflush(log_fp);
		poll(&pfd, 1, i < num_clients ? 1000 : -1);
		now = time(NULL);
		/* Check for timeout. */
		for (i = 0; i < num_clients; i++)
			if (clients[i].avail &&
			    now - clients[i].stamp >= wait_timeout)
				write_logfile(&clients[i], 1);
		/* Don't receive forever in order to check for timeout. */
		while (now == time(NULL)) {
			struct client *ptr;
			char *tmp;
			int len = recvfrom(fd, buf, sizeof(buf), MSG_DONTWAIT,
					   (struct sockaddr *) &addr, &size);
			if (len <= 0 || size != sizeof(addr))
				break;
			ptr = find_client(&addr);
			if (!ptr)
				continue;
			/* Save current time if receiving the first byte. */
			if (!ptr->avail)
				ptr->stamp = now;
			/* Append data to the line. */
			tmp = realloc(ptr->buffer, round_up(ptr->avail + len));
			if (!tmp)
				flush_all_and_abort();
			memmove(tmp + ptr->avail, buf, len);
			ptr->avail += len;
			ptr->buffer = tmp;
			/* Write if at least one line completed. */
			if (memchr(buf, '\n', len))
				write_logfile(ptr, 0);
			/* Write if the line is too long. */
			if (ptr->avail >= wbuf_size)
				write_logfile(ptr, 1);
		}
		drop_memory_usage();
	}
}
Exemple #4
0
BOOL load_settings(void)
{
   
    HANDLE hFile;
	int t,x,c,f;
	char settingsfilename[256],midipname[256],tempname[256];

	strcpy(settingsfilename,GLOBAL.resourcepath);
	strcat(settingsfilename,"brainbay.cfg");

	write_logfile("load setting from: %s",settingsfilename);
    hFile = CreateFile(settingsfilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if(hFile == INVALID_HANDLE_VALUE) return FALSE;


	load_next_config_buffer(hFile);
	load_property("samplingrate",P_INT,&PACKETSPERSECOND);
	//load_property("com-port",P_INT,&TTY.PORT);
	//load_property("baudrate",P_INT,&TTY.BAUDRATE);
	//load_property("devicetype",P_INT,&TTY.devicetype);
	load_property("dialoginterval",P_INT,&GLOBAL.dialog_interval);
	load_property("drawinterval",P_INT,&GLOBAL.draw_interval);
	load_property("startup",P_INT,&GLOBAL.startup);
	load_property("autorun",P_INT,&GLOBAL.autorun);
	load_property("configfile",P_STRING,GLOBAL.configfile);
	load_property("use_cvcapture",P_INT,&GLOBAL.use_cv_capture);


	load_property("midiports",P_INT,&x);
	for (c=0;c<GLOBAL.midiports;c++) midiOutClose(MIDIPORTS[c].midiout);
	for (t=1;t<=x;t++)
	{
		sprintf(midipname,"midiport%d",t);
		load_property(midipname,P_STRING,tempname);
		f=0;
		for (c=0;c<GLOBAL.midiports;c++)
		{
			if (!strcmp(tempname,MIDIPORTS[c].portname))
			{
				write_logfile("open midi port: %s", tempname);
				midi_open_port(&(MIDIPORTS[c].midiout),c);
				f=1;
			}
		}
		if (!f) {strcat (tempname," not found"); report_error (tempname); }
	}

	CloseHandle(hFile);	
	return(TRUE);
	
}
Exemple #5
0
DWORD WINAPI ReaderProc(LPVOID lpv)
{
    DWORD 	   dwRead;          // bytes actually read
    DWORD      dwBytesTransferred;           // result from WaitForSingleObject
    struct _COMSTAT status;
    unsigned long   etat;
	//

    while (!fThreadDone) 
	{

		// Wait for an event to occur for the port.
  	    //	WaitCommEvent (TTY.COMDEV, &dwCommModemStatus, 0);

		// Re-specify the set of events to be monitored for the port.
	    //	SetCommMask (TTY.COMDEV, EV_RXCHAR | EV_CTS | EV_DSR | EV_RING);
        if ((TTY.CONNECTED) && (!GLOBAL.loading))
		{
          dwBytesTransferred = 0;
          if (ClearCommError(TTY.COMDEV, &etat, &status))
            dwBytesTransferred = status.cbInQue;
   
		  if (dwBytesTransferred) 
	  	  {
 				dwRead=0;
				// Read the data from the serial port.
				ReadFile (TTY.COMDEV, TTY.readBuf, dwBytesTransferred, &dwRead, 0);
				// Display the data read.
				if ((dwRead)&&(!TTY.read_pause)) ParseLocalInput((int)dwRead);
		  }  else Sleep (1);
		}
	}
	write_logfile("COMPORT closed");    
    return 1;
}
Exemple #6
0
HANDLE create_captfile(LPCTSTR lpFName)
{
    HANDLE hTemp;
	DWORD dwWritten;
	int t;

	CAPTFILEHEADERStruct  header;
	if (TTY.devicetype>1) 
	{ report_error("Can only create ModuarEEG P2 or P3 Archive Files."); return(INVALID_HANDLE_VALUE); }

	for(t=0;t<sizeof(header);t++)  * (((char *)&header)+t) = ' ';
	append_newline(header.description,sizeof(header.description));

	write_logfile("create capture file: %s",(char *)lpFName);

    hTemp=CreateFile(lpFName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0,NULL);
	if (hTemp==INVALID_HANDLE_VALUE)
          { report_error("CreateFile"); return (INVALID_HANDLE_VALUE); }

	strcpy(header.description, "BrainBay Archive File\r\n");
	strcpy(header.filetype, captfiletypes[CAPTFILE.filetype]);
	append_newline(header.filetype,sizeof(header.filetype));

	strcpy(header.devicetype, devicetypes[TTY.devicetype]);
	append_newline(header.devicetype,sizeof(header.devicetype));

	
    if (!WriteFile(hTemp,&header,sizeof(header), &dwWritten, NULL))  report_error("Could not write to Archive");
	
	CAPTFILE.start=TIMING.packetcounter;
	CAPTFILE.file_action=FILE_WRITING;
	GLOBAL.actcolumn=0;
	return hTemp;
}
Exemple #7
0
EMOTIVOBJ::EMOTIVOBJ(int num) : BASE_CL()	//constructor
{
	inports = 0;
	outports = MAX_CHANNELS;	//Emotiv Epoc Channels

	/*outports are entiteled according to the international 10-20 location system*/
	strcpy(out_ports[0].out_name, "AF3");
	strcpy(out_ports[1].out_name, "F7");
	strcpy(out_ports[2].out_name, "F3");
	strcpy(out_ports[3].out_name, "FC5");
	strcpy(out_ports[4].out_name, "T7");
	strcpy(out_ports[5].out_name, "P7");
	strcpy(out_ports[6].out_name, "O1");
	strcpy(out_ports[7].out_name, "O2");
	strcpy(out_ports[8].out_name, "P8");
	strcpy(out_ports[9].out_name, "T8");
	strcpy(out_ports[10].out_name, "FC6");
	strcpy(out_ports[11].out_name, "F4");
	strcpy(out_ports[12].out_name, "F8");
	strcpy(out_ports[13].out_name, "AF4");

	/* Init protocol driver library */
	if ((drv_lib=InitEmotivEDKLib(GLOBAL.emotivpath))==NULL)
	{
		std::cout << "trying to load Emotiv EDK dlls from " << GLOBAL.emotivpath << "\n";
		write_logfile("trying to load Emotiv EDK dlls from %s", GLOBAL.emotivpath);
		report_error("could not load Emotiv EDK dlls\n Emotiv EPOC cannot be used. Please check Path to Emotiv SDK in Application Settings...");
	}

	filehandle = INVALID_HANDLE_VALUE;
	filemode = 0;
	gEMOTIV=this;
}
Exemple #8
0
	void NEUROBITOBJ::load_devctx(void)
	{
		char szFileName[256];
		char *extension;

		strcpy(szFileName,GLOBAL.configfile);
		if (extension = strstr(szFileName, ".con"))
			strcpy(extension,".nb");
		else strcat(szFileName,".nb");

		write_logfile("loading Neurobit device context from %s",szFileName);

		GLOBAL.neurobit_available=0;
		if (DevCtx>=0) NdCloseDevContext(DevCtx);
		DevCtx=ReadCfgFile(szFileName);
		if (DevCtx<0) {
			report_error ("Could not load Neurobit Config File - using default configuration");
			DevCtx=NdOpenDevContext(device);
		}
		strcpy(device,NdGetDevName());
		GLOBAL.neurobit_available=1;

		InvalidateRect(hDlg,NULL,FALSE);
		update_channelinfo();
		SetDlgItemText(hDlg,IDC_NB_DEVICECOMBO,device);
	}
Exemple #9
0
void GlobalCleanup()
{
	int t;

	stop_timer();
	for (t=0;t<GLOBAL.objects;t++) objects[t]->session_stop();
	
	while (GLOBAL.objects>0)   free_object(0);
	
	BreakDownCommPort();
	// for (t=0;t<GLOBAL.objects;t++) free_object(0);

    CloseHandle(TTY.ThreadExitEvent);
	for (t=0;t<GLOBAL.midiports;t++)
  	  if (MIDIPORTS[t].midiout) midiOutClose(MIDIPORTS[t].midiout);

	if (CAPTFILE.filehandle!=0) CloseHandle(CAPTFILE.filehandle);

	SDLNet_Quit();
	SDL_Quit();

	DeleteObject(DRAW.brush_blue);
	DeleteObject(DRAW.pen_blue);
	DeleteObject(DRAW.pen_white);
	write_logfile("BrainBay normal shutdown.");

    return;
}
Exemple #10
0
HANDLE create_edf_file(EDFHEADERStruct * from, CHANNELStruct * fromchn, char * filename)
{
	HANDLE temp;
	char fname[256];
	DWORD dwWritten;
	EDFHEADER_PHYSICALStruct file_header;
	char chnbuf[18000];
	
	*filename=0;
	strcpy(fname,GLOBAL.resourcepath); 
	strcat(fname,"ARCHIVES\\*.edf");
	if (!open_file_dlg(ghWndMain,fname, FT_EDF, OPEN_SAVE)) return (INVALID_HANDLE_VALUE);

	write_logfile("create edf file: %s",fname);

	temp= CreateFile(fname, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
	if (temp==INVALID_HANDLE_VALUE) return (temp);

	edfheader_to_physical(from, &file_header);
	edfchannels_to_physical(fromchn, chnbuf, from->channels);

	WriteFile(temp,&file_header,256, &dwWritten,NULL);
	if (dwWritten!=256) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); }

	WriteFile(temp,chnbuf,256*from->channels, &dwWritten,NULL);
	if (dwWritten!=(DWORD)256*from->channels) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); }

	strcpy(filename,fname);
	return(temp);
}
Exemple #11
0
	void NEUROBITOBJ::save_devctx(void)
	{
		char szFileName[256];
		char *extension;

		strcpy(szFileName,GLOBAL.configfile);
		if (extension = strstr(szFileName, ".con"))
			strcpy(extension,".nb");
		else strcat(szFileName,".nb");

		if (DevCtx>=0)
		{
	  		 write_logfile("saving Neurobit device context to %s",szFileName);
			 if (!WriteCfgFile(DevCtx,szFileName))
				report_error("Could not save Neurobit Config File");
		} else write_logfile("ERROR: No Neurobit Device Context to save ");
	}
Exemple #12
0
/* Display message for an user */
void NdUserMsg(word dc, const char *msg)
{
	char s[128];
	int n;

	n = sprintf(s, "(%i) ", dc);
	strncpy(s+n, msg+(*msg=='!'), sizeof(s)-n);
	s[sizeof(s)-1] = '\0';
	
	if (*msg == '!') {
		SetDlgItemText(ghWndStatusbox,IDC_STATUS, s);
		write_logfile("Neurobit message: %s",s);
	} else {
		SetDlgItemText(ghWndStatusbox,IDC_STATUS, s);
		write_logfile("Neurobit message: %s",s);
	}
}
Exemple #13
0
	void NEUROBITOBJ::update_channelinfo(void)
	{
  	  	  NDGETVAL gv;
		  int chans,i;
		  float max_sr;

		  if (DevCtx<0) { 
			  write_logfile ("could not open Neurobit device context");
			  return;
		  }
  		  if (NdGetParam(ND_PAR_CHAN_NUM, 0, &gv) || (gv.type&~ND_T_LIST)!=ND_T_INT) 
			  return;

		  max_sr=0;
		  chans = gv.val.i;
		  outports = chans;

		  strcpy(out_ports[0].out_dim,"uV");
		  chncol[0]=CI_GREEN;
		  for (i=1; i<5; i++) chncol[i]=CI_GRAY;
	  	  for (i=0; i<chans; i++) {
			/* Update channel indicator field info */
			if (!NdGetParam(ND_PAR_CH_LABEL, i, &gv)) {
				 strcpy( out_ports[i].out_name,gv.val.t);
			}
			if (!NdGetParam(ND_PAR_CH_RANGE_MAX, i, &gv)) {
				out_ports[i].out_max = gv.val.f;
			}
			if (!NdGetParam(ND_PAR_CH_RANGE_MIN, i, &gv)) {
				out_ports[i].out_min = gv.val.f;
			}
			if (!NdGetParam(ND_PAR_CH_SR, i, &gv)) {
				if (gv.val.f>max_sr) max_sr=gv.val.f;
			}

			strcpy(out_ports[i].out_dim,NdParamInfo(ND_PAR_CH_RANGE_MAX, i)->unit);
/*
			if (!NdGetParam(ND_PAR_CH_FUNC, i, &gv)) {
				if (!strcmp(gv.val.t,"Voltage")) strcpy(out_ports[i].out_dim,"uV");
				if (!strcmp(gv.val.t,"Temperature")) strcpy(out_ports[i].out_dim,"Deg");
				if (!strcmp(gv.val.t,"Conductance")) strcpy(out_ports[i].out_dim,"uS");
				if (!strcmp(gv.val.t,"Resistance")) strcpy(out_ports[i].out_dim,"kOhm");

			}*/
			if (!NdGetParam(ND_PAR_CH_EN, i, &gv)) {
				if (gv.val.b) chncol[i+1]= CI_GREEN; else chncol[i+1]=CI_GRAY;
			}
		  }
         if (max_sr>0) update_samplingrate((int)max_sr);

		 dev_chans=0;
		 update_dimensions();
 	 	 reset_oscilloscopes();

		 InvalidateRect(ghWndMain,NULL,TRUE);
		 InvalidateRect(ghWndDesign,NULL,TRUE);
		 if (ghWndToolbox == hDlg) InvalidateRect(ghWndToolbox,NULL,FALSE);
	}
Exemple #14
0
int midi_open_port(HMIDIOUT * midiout, int portnum)
{
	if (midiout) midiOutClose(* midiout);
	if (midiOutOpen(midiout,portnum-1,0,0,CALLBACK_NULL)==MMSYSERR_NOERROR) 
	   return TRUE;

	write_logfile("could not open midi port"); 
	return FALSE;
}
Exemple #15
0
/**
 * flush_all_and_abort - Clean up upon out of memory.
 *
 * This function does not return.
 */
static void flush_all_and_abort(void)
{
	int i;
	for (i = 0; i < num_clients; i++)
		if (clients[i].avail) {
			write_logfile(&clients[i], 1);
			free(clients[i].buffer);
	        fprintf(clients[i].log_fp, "[aborted due to memory allocation failure]\n");
	        fflush(clients[i].log_fp);
		}
	exit(1);
}
Exemple #16
0
DWORD WINAPI WriterProc(LPVOID lpv)
{
    DWORD dwWritten;


    while (!fThreadDone) 
	{
        if ((TTY.CONNECTED)&&(TTY.amount_to_write>0)&&(!TTY.writing))
		{
			    WriteFile(TTY.COMDEV, TTY.writeBuf, TTY.amount_to_write, &dwWritten, 0); 
				TTY.amount_to_write=0;
		} else Sleep (10);
	}
	write_logfile("COMPORT closed");    
    return 1;
}
Exemple #17
0
/*-----------------------------------------------------------------------------

FUNCTION: WaitForThreads(DWORD)

PURPOSE: Waits a specified time for the worker threads to exit

PARAMETERS:
    dwTimeout - milliseconds to wait until timeout

RETURN:
    WAIT_OBJECT_0 - successful wait, threads are not running
    WAIT_TIMEOUT  - at least one thread is still running
    WAIT_FAILED   - failure in WaitForMultipleObjects

----------------------------------------------------------------------------*/
DWORD WaitForThreads(DWORD dwTimeout)
{	
    HANDLE hThreads[2];
    DWORD  dwRes;

    hThreads[0] = TTY.READERTHREAD;
//	hThreads[1] = TTY.WRITERTHREAD;
	
    
    //
    // set thread exit event here
    //
    SetEvent(TTY.ThreadExitEvent);
    write_logfile("COMPORT waitforthreads");

    dwRes = WaitForMultipleObjects(1, hThreads, TRUE, dwTimeout);
    switch(dwRes)
    {

        case WAIT_OBJECT_0:
        case WAIT_OBJECT_0 + 1: 
            dwRes = WAIT_OBJECT_0;
            break;

        case WAIT_TIMEOUT:
            
            if (WaitForSingleObject(TTY.READERTHREAD, 0) == WAIT_TIMEOUT)
                report_error("Reader Thread didn't exit");

            // if (WaitForSingleObject(TTY.WRITERTHREAD, 0) == WAIT_TIMEOUT)
            //    report_error("Writer Thread didn't exit");

	
	    default:
            report_error("WaitForTheads: unknown exit error");
            break;
    }

    //
    // reset thread exit event here
    //
    ResetEvent(TTY.ThreadExitEvent);

    return dwRes;
}
Exemple #18
0
void open_captfile(LPCTSTR lpFName)
{
	DWORD dwRead;

	CAPTFILEHEADERStruct  header;

	CAPTFILE.offset=0;

	write_logfile("create capture file: %s: ", (char *)lpFName);
	CAPTFILE.filehandle = CreateFile(lpFName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if (CAPTFILE.filehandle!=INVALID_HANDLE_VALUE)
	{
		if(!ReadFile(CAPTFILE.filehandle, &header , sizeof(header), &dwRead, NULL)) 
		{ 
			report_error("Could not read from Archive File");
			CAPTFILE.filehandle=INVALID_HANDLE_VALUE;
			return;
		}
		if (strstr(header.description,"BrainBay Archive File")!=NULL)
		{
			if (!strcmp(header.filetype, captfiletypes[FILE_TEXTMODE])) CAPTFILE.filetype=FILE_TEXTMODE; 
			if (!strcmp(header.filetype, captfiletypes[FILE_INTMODE])) CAPTFILE.filetype=FILE_INTMODE;
	
			if (!strcmp(header.devicetype, devicetypes[DEV_MODEEG_P2])) TTY.devicetype=DEV_MODEEG_P2; 		 
			if (!strcmp(header.devicetype, devicetypes[DEV_MODEEG_P3])) TTY.devicetype=DEV_MODEEG_P3;
			
		}
		else 
		{
			// TTY.devicetype=DEV_RAW;
			CAPTFILE.filetype=FILE_INTMODE;
		}
		update_devicetype();
		CAPTFILE.file_action=FILE_READING;

	}
	else
	{  
		strcat(CAPTFILE.filename,": Archive not found.");
		report(CAPTFILE.filename);
		strcpy(CAPTFILE.filename,"none");
	}
	get_session_length();
}
Exemple #19
0
DWORD WINAPI WriterProc(LPVOID lpv)
{
    DWORD dwWritten;

    while (!fThreadDone) 
	{
        if ((TTY.CONNECTED)&&(TTY.amount_to_write>0))
		{
			if ( WaitForSingleObject( TTY.writeMutex, INFINITE ) == WAIT_OBJECT_0 )
			{
			    WriteFile(TTY.COMDEV, TTY.writeBuf, TTY.amount_to_write, &dwWritten, 0); 
				TTY.amount_to_write=0;
				ReleaseMutex( TTY.writeMutex );
			}
		} else Sleep (10);
	}
	write_logfile("COMPORT closed");    
    return 1;
}
Exemple #20
0
void write_logchannel(dbref executor, dbref object, const char *fmt)
{
	CHAN *c;
	struct tm *ttm;
	char timebuf[18];
	char unp1[BUFFER_LEN], unp2[BUFFER_LEN];

	c = NULL;
	ttm = localtime(&mudtime);
	strftime(timebuf, sizeof timebuf, "[%m/%d %H:%M:%S]", ttm);
	strcpy(unp1, quick_space_unparse(executor));
	strcpy(unp2, quick_space_unparse(object));
	
	if (find_channel(LOG_CHANNEL, &c, GOD) == CMATCH_NONE) {
		write_logfile(executor, object, fmt);
	} else {
		do_cemit(GOD, LOG_CHANNEL, tprintf("%s SPACE: %s %s %s", timebuf, unp1, unp2, fmt), 0);
	}
}
Exemple #21
0
BOOL save_settings(void)
{
   
    HANDLE hFile;
	int t,x;
	char settingsfilename[256],midipname[256];

	strcpy(settingsfilename,GLOBAL.resourcepath);
	strcat(settingsfilename,"brainbay.cfg");

	write_logfile("saving program settings.");

    hFile = CreateFile(settingsfilename, GENERIC_WRITE, 0, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if(hFile == INVALID_HANDLE_VALUE) return FALSE;

	save_property(hFile,"samplingrate",P_INT,&PACKETSPERSECOND);
	//save_property(hFile,"com-port",P_INT,&TTY.PORT);
	//save_property(hFile,"baudrate",P_INT,&TTY.BAUDRATE);
	//save_property(hFile,"devicetype",P_INT,&TTY.devicetype);
	save_property(hFile,"dialoginterval",P_INT,&GLOBAL.dialog_interval);
	save_property(hFile,"drawinterval",P_INT,&GLOBAL.draw_interval);
	save_property(hFile,"startup",P_INT,&GLOBAL.startup);
	save_property(hFile,"autorun",P_INT,&GLOBAL.autorun);
	save_property(hFile,"configfile",P_STRING,GLOBAL.configfile);
	save_property(hFile,"use_cvcapture",P_INT,&GLOBAL.use_cv_capture);

	x=0;
	for (t=0;t<GLOBAL.midiports;t++)
		if (MIDIPORTS[t].midiout)
		{
			x++;
			sprintf(midipname,"midiport%d",x);
			save_property(hFile,midipname,P_STRING,MIDIPORTS[t].portname);
		}
	save_property(hFile,"midiports",P_INT,&x);
	CloseHandle(hFile);	
	return(TRUE);
	
}
Exemple #22
0
HANDLE open_edf_file(EDFHEADERStruct * to, CHANNELStruct * tochn,  char * filename)
{
	char readbuf[8192];
	int t,channels;
	HANDLE temp;
	char fname[256],szdata[300];
	DWORD dwRead;


	if (!(filename[0]))
	{
		strcpy(fname,GLOBAL.resourcepath); 
		strcat(fname,"ARCHIVES\\*.edf");
		if (!open_file_dlg(ghWndMain,fname, FT_EDF, OPEN_LOAD)) return (INVALID_HANDLE_VALUE);
	}
	else strcpy(fname,filename);
	
	write_logfile("open edf file: %s",fname);
	temp= CreateFile(fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
	if (temp==INVALID_HANDLE_VALUE) return (temp);
	ReadFile(temp,readbuf,256, &dwRead,NULL);
	if (dwRead!=256) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); }

	copy_string(readbuf,252,256,szdata);
	sscanf(szdata,"%d",&channels);

	for (t=0;t<channels;t++)
	{

		ReadFile(temp,readbuf+256+256*t,256, &dwRead,NULL);
		if (dwRead!=256) { CloseHandle(temp); return(INVALID_HANDLE_VALUE); }
	}

	parse_edf_header(to, tochn, readbuf);
	//if (filename) 
	strcpy(filename,fname);
	return(temp);
}
Exemple #23
0
static void _log_write(const char *pfx, const char *msg)
{
	char buf[1024];
	char tbuf[64];
	int len;
	int old_errno = errno;

	render_time(tbuf, sizeof(tbuf));
	len = snprintf(buf, sizeof(buf), "%s %u %s %s\n",
			tbuf, (unsigned)getpid(), pfx, msg);

	if (cf_logfile[0])
		write_logfile(buf, len);

	if (cf_syslog)
		write_syslog(pfx, msg);

	if (!cf_quiet)
		fprintf(stderr, "%s", buf);

	if (old_errno != errno)
		errno = old_errno;
}
Exemple #24
0
/*-----------------------------------------------------------------------------

FUNCTION: SetupCommPort( int Port )

PURPOSE: Setup Communication Port with our settings

-----------------------------------------------------------------------------*/
BOOL SetupCommPort(int port)
{
    DWORD dwReadStatId;
    DWORD dwWriteStatId;
	int sav_port,sav_pause;
    DCB dcb = {0};
	char PORTNAME[10];

	if (!port) return(false);

	sav_port=TTY.PORT;
	sav_pause=TTY.read_pause;
    TTY.read_pause=1;
    
	BreakDownCommPort();

	TTY.PORT = port ;

	// set tty structure for the specified port
	
	sprintf(PORTNAME,"\\\\.\\COM%d",port);
	PACKET.readstate=0;
	PACKET.number=0;
	PACKET.old_number=0;
	PACKET.info=0;

    // open communication port handle
//    TTY.COMDEV = CreateFile( PORTNAME,GENERIC_READ | GENERIC_WRITE, 
//                  0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,0);

    TTY.COMDEV = CreateFile( PORTNAME,GENERIC_READ | GENERIC_WRITE, 
                  0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

    if (TTY.COMDEV == INVALID_HANDLE_VALUE) goto failed;
    
    if (!GetCommState(TTY.COMDEV, &dcb))      // get current DCB settings
	{ report_error("GetCommState");goto failed; }

   
    // update DCB rate, byte size, parity, and stop bits size
   
	dcb.DCBlength = sizeof(dcb);
    dcb.BaudRate = TTY.BAUDRATE;
    dcb.ByteSize = 8;
    
	dcb.Parity   = NOPARITY;
    dcb.StopBits = ONESTOPBIT;
	dcb.EvtChar = '\0';

   
    // update flow control settings
   
    dcb.fDtrControl     =  DTR_CONTROL_ENABLE;
    dcb.fRtsControl     =  RTS_CONTROL_ENABLE;

	if (TTY.FLOW_CONTROL)
	{
      dcb.fOutxCtsFlow    = TRUE;
      dcb.fOutxDsrFlow    = TRUE;
	}
	else
	{
      dcb.fOutxCtsFlow    = FALSE;
      dcb.fOutxDsrFlow    = FALSE;
	}

    dcb.fDsrSensitivity = FALSE;;
    dcb.fOutX           = FALSE;
    dcb.fInX            = FALSE;
    dcb.fTXContinueOnXoff = FALSE;
    dcb.XonChar         = 0;
    dcb.XoffChar        = 0;
    dcb.XonLim          = 0;
    dcb.XoffLim         = 0;
    dcb.fParity = FALSE; //TRUE;

    if (!SetCommState(TTY.COMDEV, &dcb))     // set new state
	{ report_error("SetCommState failed"); goto failed;}
	
	// set comm buffer sizes
    if (!SetupComm(TTY.COMDEV, 1024, 1024))
	{  report_error("SetupComm failed");goto failed;}

    if (!EscapeCommFunction(TTY.COMDEV, SETDTR))        // raise DTR
	{  report_error("EscapeCommFunction failed");goto failed;}

	  SetCommMask (TTY.COMDEV, EV_RXCHAR | EV_CTS | EV_DSR | EV_RLSD | EV_RING);

      
    // start the reader and writer threads

	fThreadDone = FALSE;

    TTY.READERTHREAD =  
		CreateThread( NULL, 1000, (LPTHREAD_START_ROUTINE) ReaderProc, 0, 0, &dwReadStatId);
    if (TTY.READERTHREAD == NULL)
	{ report_error("CreateThread failed"); goto failed;}

	TTY.WRITERTHREAD =
		CreateThread( NULL, 1000, (LPTHREAD_START_ROUTINE) WriterProc, 0, 0, &dwWriteStatId);
    if (TTY.WRITERTHREAD == NULL)
	{ report_error("CreateWriterThread failed"); goto failed;}

	write_logfile("COMPORT opened: %s", PORTNAME);
	TTY.amount_to_write=0;	
	TTY.read_pause=sav_pause;

    return TRUE;

failed:
		{  
			char sztemp[100];
 	        write_logfile("COMPORT open failed");
		
			sprintf(sztemp, "The Port COM%d is not available. Please select another Com-Port.",TTY.PORT);
			report_error(sztemp);
		
			TTY.read_pause=sav_pause;
			TTY.PORT=sav_port;
			TTY.COMDEV=INVALID_HANDLE_VALUE;
			TTY.CONNECTED=FALSE;
			TTY.amount_to_write=0;
			return FALSE;
		}
}
Exemple #25
0
int check_OS(void) 
{ 
   OSVERSIONINFOEX InfoStruct; 
   int bOSVERSIONINFOEX; 
   string temp="";
   int osid=0;

   write_logfile ("checking OS version");
   ZeroMemory(&InfoStruct,sizeof(OSVERSIONINFOEX)); 
   InfoStruct.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); 

   if(!(bOSVERSIONINFOEX = GetVersionEx((OSVERSIONINFO*)&InfoStruct))) 
   { 
      InfoStruct.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 
      if(!GetVersionEx((OSVERSIONINFO*)&InfoStruct)) 
         return -1; 
   } 

   if(InfoStruct.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) 
   { 
      if(InfoStruct.dwMajorVersion == 4 && InfoStruct.dwMinorVersion == 0) 
      { 
         temp += "Windows 95 "; 
         if(InfoStruct.szCSDVersion[1] == 'C' || InfoStruct.szCSDVersion[1] == 'A') 
            temp += "OSR2"; 
      } 
      else if(InfoStruct.dwMajorVersion == 4 && InfoStruct.dwMinorVersion == 10) 
      { 
         temp += "Windows 98 "; 
         if(InfoStruct.szCSDVersion[1] == 'A') 
            temp += "SE"; 
      } 
      else if(InfoStruct.dwMajorVersion == 4 && InfoStruct.dwMinorVersion == 90) 
      { 
         temp += "Windows Me"; 
      } 
   } 
   else if(InfoStruct.dwPlatformId == VER_PLATFORM_WIN32s) 
   { 
      temp += "Microsoft Win32s"; 
   } 
   else if(InfoStruct.dwPlatformId == VER_PLATFORM_WIN32_NT) 
   { 
      if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 2) 
         temp += "Windows Server 2003 family"; 
      else if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 1) 
         temp += "Windows XP "; 
      else if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 0) 
         temp += "Windows 2000 "; 
      else if(InfoStruct.dwMajorVersion <= 4) 
         temp += "Windows NT "; 
      else if(InfoStruct.dwMajorVersion == 6) 
      { 
         if( InfoStruct.dwMinorVersion == 0 )
         {
            if( InfoStruct.wProductType == VER_NT_WORKSTATION )
                temp +="Windows Vista ";
            else temp +="Windows Server 2008 ";
         }

         if ( InfoStruct.dwMinorVersion == 1 )
         {
            if( InfoStruct.wProductType == VER_NT_WORKSTATION )
			{    temp += "Windows 7 "; osid=1; }
            else temp +="Windows Server 2008 R2 ";
         }
      } 
      if(bOSVERSIONINFOEX) 
      { 
         if(InfoStruct.wProductType == VER_NT_WORKSTATION) 
         { 
            if(InfoStruct.dwMajorVersion == 4) 
               temp += "Workstation 4.0 "; 
            else if(InfoStruct.wSuiteMask & VER_SUITE_PERSONAL) 
               temp += "Home Edition "; 
            else temp += "Professional "; 
         } 
      } 
      else if(InfoStruct.wProductType == VER_NT_SERVER) 
      { 
         if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 2) 
         { 
            if(InfoStruct.wSuiteMask & VER_SUITE_DATACENTER) 
               temp += "Datacenter Edition "; 
            else if(InfoStruct.wSuiteMask & VER_SUITE_ENTERPRISE) 
               temp += "Enterprise Edition "; 
            else if(InfoStruct.wSuiteMask & VER_SUITE_BLADE) 
               temp += "Web Edition"; 
            else 
               temp += "stan**** Edition "; 
         } 
         else if(InfoStruct.dwMajorVersion == 5 && InfoStruct.dwMinorVersion == 0) 
         { 
            if(InfoStruct.wSuiteMask & VER_SUITE_DATACENTER) 
               temp += "Datacenter Server "; 
            else if(InfoStruct.wSuiteMask & VER_SUITE_ENTERPRISE) 
               temp += "Advanced Server "; 
            else 
               temp += "Server "; 
         } 
         else 
         { 
            if(InfoStruct.wSuiteMask & VER_SUITE_ENTERPRISE) 
               temp += "Server 4.0, Enterprise Edition "; 
            else 
               temp += "Server 4.0 "; 
         } 
      } 
   } 
   write_logfile ("OS version: %s",(char *)temp.data());
   return osid; 
} 
Exemple #26
0
BOOL save_configfile(LPCTSTR pszFileName)
{
   
    HANDLE hFile;
	int t;
	int act_type;

	write_logfile("saving design configuration: %s",(char *)pszFileName);
 
    hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if(hFile != INVALID_HANDLE_VALUE)
    {

		if (!IsWindow(ghWndToolbox)) 
			GLOBAL.showtoolbox=-1;

		strcpy(GLOBAL.configfile,pszFileName);
		save_settings();
		save_property(hFile,"objects",P_INT,&GLOBAL.objects);
		save_property(hFile,"main-top",P_INT,&GLOBAL.top);
		save_property(hFile,"main-left",P_INT,&GLOBAL.left);
		save_property(hFile,"main-right",P_INT,&GLOBAL.right);
		save_property(hFile,"main-bottom",P_INT,&GLOBAL.bottom);
		save_property(hFile,"anim-top",P_INT,&GLOBAL.anim_top);
		save_property(hFile,"anim-left",P_INT,&GLOBAL.anim_left);
		save_property(hFile,"anim-right",P_INT,&GLOBAL.anim_right);
		save_property(hFile,"anim-bottom",P_INT,&GLOBAL.anim_bottom);
		save_property(hFile,"design-top",P_INT,&GLOBAL.design_top);
		save_property(hFile,"design-left",P_INT,&GLOBAL.design_left);
		save_property(hFile,"design-right",P_INT,&GLOBAL.design_right);
		save_property(hFile,"design-bottom",P_INT,&GLOBAL.design_bottom);
		save_property(hFile,"tool-top",P_INT,&GLOBAL.tool_top);
		save_property(hFile,"tool-left",P_INT,&GLOBAL.tool_left);
		save_property(hFile,"tool-right",P_INT,&GLOBAL.tool_right);
		save_property(hFile,"tool-bottom",P_INT,&GLOBAL.tool_bottom);
		save_property(hFile,"showdesign",P_INT,&GLOBAL.showdesign);
		save_property(hFile,"showtoolbox",P_INT,&GLOBAL.showtoolbox);
		save_property(hFile,"autorun",P_INT,&GLOBAL.autorun);
		save_property(hFile,"minimized",P_INT,&GLOBAL.minimized);


		save_property(hFile,"comport",P_INT,&TTY.PORT);
		save_property(hFile,"bidirect",P_INT,&TTY.BIDIRECT);
		save_property(hFile,"connected",P_INT,&TTY.CONNECTED);
		save_property(hFile,"devicetype",P_INT,&TTY.devicetype);
		save_property(hFile,"samplingtype",P_INT,&TTY.samplingrate);
		save_property(hFile,"baudtype",P_INT,&TTY.BAUDRATE);
		save_property(hFile,"flow_control",P_INT,&TTY.FLOW_CONTROL);

		save_property(hFile,"captfilename",P_STRING,CAPTFILE.filename);
		save_property(hFile,"captfiletype",P_INT,&CAPTFILE.filetype);
		save_property(hFile,"captfileoffset",P_INT,&CAPTFILE.offset);
		save_property(hFile,"dialoginterval",P_INT,&GLOBAL.dialog_interval);
		save_property(hFile,"drawinterval",P_INT,&GLOBAL.draw_interval);
		save_property(hFile,"samplingrate",P_INT,&PACKETSPERSECOND);
	
		save_property(hFile,"end Object",P_END,NULL);

		for (t=0;t<GLOBAL.objects;t++)
		{  act_type=objects[t]->type;
		   save_property(hFile,"next Object",P_INT,&act_type);
		   objects[t]->save(hFile);
		   store_links(hFile,objects[t]);
		   save_property(hFile,"end Object",P_END,NULL);
		}

		CloseHandle(hFile);
		return TRUE;
    }
	return FALSE;    
	
}
Exemple #27
0
BOOL load_configfile(LPCTSTR pszFileName)
{

    HANDLE hFile;
	int t, act_samplingrate=DEF_PACKETSPERSECOND; 
	int act_type,num_objects, save_toolbox, save_connected, try_connect;
	const char * d_name;
	char new_name[256],szdata[20];

	write_logfile("loading design configuration: %s",(char *)pszFileName);

    hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
    if(hFile != INVALID_HANDLE_VALUE)
    {
		GLOBAL.loading=1;
		d_name=pszFileName;
		while (strstr(d_name,"\\")) d_name=strstr(d_name,"\\")+1;
		strcpy(new_name,"BrainBay - ");strcat(new_name,d_name);
	    SetWindowText(ghWndMain,new_name);
		strcpy(GLOBAL.configfile,pszFileName);
		save_settings();
		save_toolbox=-1;

		save_connected=TTY.CONNECTED;
		SendMessage(ghWndStatusbox,WM_COMMAND, IDC_STOPSESSION,0);
		
		//TTY.read_pause=1;
		close_captfile();

		if (ghWndAnimation!=NULL) SendMessage(ghWndAnimation,WM_CLOSE,0,0);
		ghWndAnimation=NULL;

		close_toolbox();actobject=NULL;
		//InvalidateRect(ghWndMain, NULL, TRUE);

		while (GLOBAL.objects>0)
		    free_object(0);

		GLOBAL.run_exception=0;
		GLOBAL.minimized=FALSE;

	     load_next_config_buffer(hFile);
		 load_property("objects",P_INT,&GLOBAL.objects);
		 load_property("main-top",P_INT,&GLOBAL.top);
		 load_property("main-left",P_INT,&GLOBAL.left);
		 load_property("main-right",P_INT,&GLOBAL.right);
		 load_property("main-bottom",P_INT,&GLOBAL.bottom);
		 load_property("anim-top",P_INT,&GLOBAL.anim_top);
		 load_property("anim-left",P_INT,&GLOBAL.anim_left);
		 load_property("anim-right",P_INT,&GLOBAL.anim_right);
		 load_property("anim-bottom",P_INT,&GLOBAL.anim_bottom);
		 load_property("design-top",P_INT,&GLOBAL.design_top);
		 load_property("design-left",P_INT,&GLOBAL.design_left);
		 load_property("design-right",P_INT,&GLOBAL.design_right);
		 load_property("design-bottom",P_INT,&GLOBAL.design_bottom);
		 load_property("tool-top",P_INT,&GLOBAL.tool_top);
		 load_property("tool-left",P_INT,&GLOBAL.tool_left);
		 load_property("tool-right",P_INT,&GLOBAL.tool_right);
		 load_property("tool-bottom",P_INT,&GLOBAL.tool_bottom);
		 load_property("showdesign",P_INT,&GLOBAL.showdesign);
		 load_property("hidestatus",P_INT,&GLOBAL.hidestatus);
		 load_property("showtoolbox",P_INT,&GLOBAL.showtoolbox);
		 load_property("autorun",P_INT,&GLOBAL.autorun);
		 load_property("minimized",P_INT,&GLOBAL.minimized);
		 save_toolbox=GLOBAL.showtoolbox;


		 TTY.PORT=0;try_connect=0;
		 load_property("comport",P_INT,&TTY.PORT);		 
		 load_property("connected",P_INT,&try_connect);	 
		 load_property("bidirect",P_INT,&TTY.BIDIRECT);
		 load_property("devicetype",P_INT,&TTY.devicetype);
		 load_property("samplingtype",P_INT,&TTY.samplingrate);
		 load_property("baudtype",P_INT,&TTY.BAUDRATE);
		 load_property("flow_control",P_INT,&TTY.FLOW_CONTROL);

		 if (save_connected) { update_p21state(); save_connected=TTY.CONNECTED; }
		 BreakDownCommPort();  
		 if (try_connect) { TTY.CONNECTED=SetupCommPort(TTY.PORT); update_p21state(); }
		
		 load_property("captfilename",P_STRING,CAPTFILE.filename);
		 load_property("captfiletype",P_INT,&CAPTFILE.filetype);
		 load_property("captfileoffset",P_INT,&CAPTFILE.offset);
	 	 load_property("dialoginterval",P_INT,&GLOBAL.dialog_interval);
		 load_property("drawinterval",P_INT,&GLOBAL.draw_interval);
		 load_property("samplingrate",P_INT,&act_samplingrate);
		 PACKETSPERSECOND=act_samplingrate;

		 MoveWindow(ghWndMain,GLOBAL.left,GLOBAL.top,GLOBAL.right-GLOBAL.left,GLOBAL.bottom-GLOBAL.top,TRUE);
		 MoveWindow(ghWndDesign,GLOBAL.design_left,GLOBAL.design_top,GLOBAL.design_right-GLOBAL.design_left,GLOBAL.design_bottom-GLOBAL.design_top,TRUE);
		 if (!GLOBAL.showdesign)
		 {  
			 ShowWindow(ghWndDesign, FALSE); 
			 SetDlgItemText(ghWndStatusbox,IDC_DESIGN,"Show Design"); 
		 }
		 else 
		 {
			 ShowWindow(ghWndDesign,TRUE);
		     SetWindowPos(ghWndDesign,0,0,0,0,0,SWP_DRAWFRAME|SWP_NOMOVE|SWP_NOSIZE);
			 SetDlgItemText(ghWndStatusbox,IDC_DESIGN,"Hide Design"); 
		 }
		 if (!GLOBAL.hidestatus)
		 	 ShowWindow(ghWndStatusbox, TRUE); 
		 else	 ShowWindow(ghWndStatusbox,FALSE);
		     
		 num_objects=GLOBAL.objects;
		 GLOBAL.objects=0;
   		 for (t=0;t<num_objects;t++)
		 {
			act_type=load_next_config_buffer(hFile);
			if (act_type>=0)
			{	
				create_object(act_type);
				if (actobject != NULL )
				{
					actobject->load(hFile);
					link_object(actobject);
				}
				else critical_error("Could not load all objects, quitting ...\ndelete brainbay.cfg to prevent this at program startup ... ");

			}
		 }
		 CloseHandle(hFile);
		 for (t=0;t<num_objects;t++) objects[t]->update_inports();
		 update_dimensions();

		 CAPTFILE.filehandle=INVALID_HANDLE_VALUE;
		 CAPTFILE.do_read=0;
		 if (strcmp(CAPTFILE.filename,"none"))
		 {
			 char st[150];
			 reduce_filepath(st,CAPTFILE.filename);
			 strcpy(CAPTFILE.filename,GLOBAL.resourcepath);
			 strcat(CAPTFILE.filename,"ARCHIVES\\");
			 strcat(CAPTFILE.filename,st);			 
			 open_captfile(CAPTFILE.filename);
		 }

		 init_system_time();
		 reset_oscilloscopes();
		 PACKET.readstate=0;
		 ShowWindow( ghWndMain, TRUE ); UpdateWindow( ghWndMain ); 

 		 update_samplingrate(act_samplingrate);
		 update_devicetype();
		 get_session_length();


		 SetDlgItemInt(ghWndStatusbox,IDC_SAMPLINGRATE,act_samplingrate,0);
		 SetDlgItemText(ghWndStatusbox,IDC_STATUS,"Configuration loaded");
		 SetDlgItemText(ghWndStatusbox,IDC_TIME,"0.0");
		 SetDlgItemText(ghWndStatusbox,IDC_JUMPPOS,"0.0");
		 sprintf(szdata, "%.1f", (float)GLOBAL.session_length/(float)PACKETSPERSECOND);
		 SetDlgItemText(ghWndStatusbox,IDC_SESSLEN,szdata);
 		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETPOS,TRUE,(LONG)0);
		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELEND,TRUE,(LONG)0);
		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELSTART,TRUE,(LONG)0);

		 SetWindowPos(ghWndMain,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		 InvalidateRect(ghWndMain,NULL,TRUE);
 		 InvalidateRect(ghWndDesign,NULL,TRUE);

		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELSTART,TRUE,0);
		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETSELEND,TRUE,1000);
		 SendMessage(GetDlgItem(ghWndStatusbox,IDC_SESSIONPOS),TBM_SETPOS,TRUE,(LONG)(0));
		 if (GLOBAL.minimized) ShowWindow(ghWndMain, SW_MINIMIZE);

		 GLOBAL.loading=0;
		 if ((GLOBAL.autorun) && (!GLOBAL.run_exception)) SendMessage(ghWndStatusbox,WM_COMMAND, IDC_RUNSESSION,0);
  	    
		 if (save_toolbox!=-1)
		 {
			GLOBAL.showtoolbox=save_toolbox;
			actobject=objects[GLOBAL.showtoolbox];
			actobject->make_dialog();
		 } 
		 
		write_logfile("load successful");
		return TRUE;
		 
    }
	write_logfile("could not load design configuration file.");
	return FALSE;    	
}
Exemple #28
0
void create_object(int type)
{
	int i;

	close_toolbox();
	write_logfile("creating object: %s",objnames[type]);


	switch(type) 
	{ 
		case OB_EEG:		 actobject=new EEGOBJ(GLOBAL.objects); 
							 deviceobject=actobject;
							 actobject->object_size=sizeof(EEGOBJ);break;
		case OB_MIDI:		 actobject=new MIDIOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(MIDIOBJ);break;
		case OB_OSCI:		 actobject=new OSCIOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(OSCIOBJ);break;
		case OB_FFT:		 actobject=new FFTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FFTOBJ);break;
		case OB_THRESHOLD:	 actobject=new THRESHOLDOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(THRESHOLDOBJ);break;
		case OB_FILTER:		 actobject=new FILTEROBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(FILTEROBJ);break;
		case OB_MAGNITUDE:	 actobject=new MAGNITUDEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MAGNITUDEOBJ);break;
		case OB_PARTICLE:	 actobject=new PARTICLEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(PARTICLEOBJ);break;
		case OB_TRANSLATE:	 actobject=new TRANSLATEOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(TRANSLATEOBJ);break;
		case OB_SIGNAL:		 actobject=new SIGNALOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(SIGNALOBJ);break;
		case OB_AND:		 actobject=new ANDOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(ANDOBJ);break;
		case OB_OR:			 actobject=new OROBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(OROBJ);break;
		case OB_NOT:		 actobject=new NOTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(NOTOBJ);break;
		case OB_WAV:		 actobject=new WAVOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(WAVOBJ);break;
		case OB_TCP_RECEIVER:actobject=new TCP_RECEIVEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(TCP_RECEIVEOBJ);break;
		case OB_DOKU:        actobject=new DOKUOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DOKUOBJ);break;
		case OB_EVAL:		 actobject=new EVALOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(EVALOBJ);break;
		case OB_AVI:		 actobject=new AVIOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(AVIOBJ);break;
		case OB_AVERAGE:	 actobject=new AVERAGEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(AVERAGEOBJ);break;
		case OB_CORR:		 actobject=new CORRELATIONOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(CORRELATIONOBJ);break;
		case OB_EDF_READER:	 actobject=new EDF_READEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(EDF_READEROBJ);break;
		case OB_EDF_WRITER:	 actobject=new EDF_WRITEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(EDF_WRITEROBJ);break;
		case OB_TCP_SENDER:	 actobject=new TCP_SENDEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(TCP_SENDEROBJ);break;
		case OB_COMPARE:	 actobject=new COMPAREOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(COMPAREOBJ);break;
		case OB_BALLGAME:	 actobject=new BALLGAMEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(BALLGAMEOBJ);break;
		case OB_MIXER4:		 actobject=new MIXER4OBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MIXER4OBJ);break;
		case OB_MOUSE:		 actobject=new MOUSEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MOUSEOBJ);break;
		case OB_ERPDETECT:   actobject=new ERPDETECTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(ERPDETECTOBJ);break;
		case OB_COM_WRITER:  actobject=new COM_WRITEROBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(COM_WRITEROBJ);break;
		case OB_CAM:		 actobject=new CAMOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(CAMOBJ);break;
		case OB_INTEGRATE:	 actobject=new INTEGRATEOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(INTEGRATEOBJ);break;
		case OB_DEBOUNCE:	 actobject=new DEBOUNCEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DEBOUNCEOBJ);break;
		case OB_SAMPLE_HOLD: actobject=new SAMPLE_HOLDOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(SAMPLE_HOLDOBJ);break;
		case OB_CONSTANT:    actobject=new CONSTANTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(CONSTANTOBJ);break;
        case OB_MATLAB: 	 actobject=new MATLABOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MATLABOBJ);break;
        case OB_COUNTER: 	 actobject=new COUNTEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(COUNTEROBJ);break;
#ifndef MINGW
        case OB_SKINDIALOG:  actobject=new SKINDIALOGOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(SKINDIALOGOBJ);break;
#endif
        case OB_FILE_WRITER: actobject=new FILE_WRITEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FILE_WRITEROBJ);break;
        case OB_DEVIATION:   actobject=new DEVIATIONOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DEVIATIONOBJ);break;
		case OB_MCIPLAYER:   actobject=new MCIOBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(MCIOBJ);break;
		case OB_KEYSTRIKE:   actobject=new KEYSTRIKEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(KEYSTRIKEOBJ);break;
		case OB_PEAKDETECT:  actobject=new PEAKDETECTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(PEAKDETECTOBJ);break;
		case OB_SPELLER:	 actobject=new SPELLEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(SPELLEROBJ);break;
		case OB_MARTINI:	 actobject=new MARTINIOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MARTINIOBJ);break;
		case OB_FILE_READER: actobject=new FILE_READEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FILE_READEROBJ);break;
		case OB_PORT_IO:	 actobject=new PORTOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(PORTOBJ);break;
		case OB_ARRAY3600:   actobject=new ARRAY3600OBJ(GLOBAL.objects);
							 actobject->object_size=sizeof(ARRAY3600OBJ);break;
		case OB_COMREADER:   actobject=new COMREADEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(COMREADEROBJ);break;
		case OB_NEUROBIT:      actobject=new NEUROBITOBJ(GLOBAL.objects); 
							 deviceobject=actobject;
							 actobject->object_size=sizeof(NEUROBITOBJ);break;
		case OB_MIN:		 actobject=new MINOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MINOBJ);break;
		case OB_MAX:         actobject=new MAXOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(MAXOBJ);break;
		case OB_ROUND:      actobject=new ROUNDOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(ROUNDOBJ);break;
		case OB_DIFFERENTIATE:      actobject=new DIFFERENTIATEOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DIFFERENTIATEOBJ);break;
		case OB_DELAY:      actobject=new DELAYOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DELAYOBJ);break;
		case OB_LIMITER:      actobject=new LIMITEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(LIMITEROBJ);break;
		case OB_EMOTIV:		 actobject=new EMOTIVOBJ(GLOBAL.objects);
							 deviceobject=actobject;
							 actobject->object_size=sizeof(EMOTIVOBJ);break;
		case OB_FLOATVECTOR: actobject=new FLOATVECTOROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(FLOATVECTOROBJ);break;
		case OB_VECTORFLOAT: actobject=new VECTORFLOATOBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(VECTORFLOATOBJ);break;
		case OB_DISPLAYVECTOR: actobject=new DISPLAYVECTOROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(DISPLAYVECTOROBJ);break;
		case OB_BUFFER: actobject=new BUFFEROBJ(GLOBAL.objects); 
							 actobject->object_size=sizeof(BUFFEROBJ);break;

	}
	if (actobject)
	{
		actobject->type = type;
		actobject->xPos=50; actobject->yPos=40;
		i=actobject->inports;
        if (i<actobject->outports) i=actobject->outports;
		if (!actobject->width) actobject->width=55; 
		if (!actobject->height) actobject->height=CON_START+i*CON_HEIGHT+5;
		if (!actobject->tag[0]) strcpy(actobject->tag,objnames[type]);

		for (i=0;i<MAX_CONNECTS;i++)
		{ 
		   actobject->out[i].from_object=GLOBAL.objects; actobject->out[i].from_port=-1;
		   actobject->out[i].to_object=-1; actobject->out[i].to_port=-1; 
		   strcpy(actobject->out[i].dimension,"uV");
		   actobject->out[i].min=-250;actobject->out[i].max=250;
		}
		objects[GLOBAL.objects]=actobject;
		GLOBAL.objects++;
        if (!GLOBAL.loading)
		{
			actobject->make_dialog();
//			InvalidateRect(ghWndMain,NULL,TRUE);
			InvalidateRect(ghWndDesign,NULL,TRUE);

		}
		if (actobject->displayWnd)   SetForegroundWindow(actobject->displayWnd);

	}
}
Exemple #29
0
void GlobalInitialize()
{
    InitCommonControls(); 

/*	if(SDL_WasInit(SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_INIT_VIDEO) == 0)
	{
		if (SDL_InitSubSystem(SDL_INIT_AUDIO | SDL_INIT_TIMER | SDL_VIDEO) < 0)
			report_error("Couldn't init SDL");
	}
*/
		
	if(SDL_Init(SDL_INIT_EVERYTHING)<0) 
        report_error("Couldn't init SDL");
	
   if (!Sound_Init()) report_error("Couldn't init SDL_Sound");


	if(SDLNet_Init()<0)	report_error("Couldn't init SDL_Net");

	GLOBAL.os_version=check_OS();


    TTY.ThreadExitEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    if (TTY.ThreadExitEvent == NULL)
        report_error("CreateEvent (Thread exit event)");       

	init_devicetype();
	TTY.COMDEV=INVALID_HANDLE_VALUE;
	TTY.CONNECTED=FALSE;
	TTY.read_pause=TRUE;
	TTY.amount_to_write=0;
	TTY.writeMutex=	CreateMutex( NULL, FALSE, NULL ); 

	TTY.FLOW_CONTROL=0;

	PACKET.readstate=0;
	PACKET.info=0;
	PACKET.requestedinfo=0;

	GLOBAL.objects=0;	actobject=NULL; actconnect=NULL;
	GLOBAL.tool_left=400;GLOBAL.tool_top=100;
	GLOBAL.tool_right=800;GLOBAL.tool_bottom=400;
	GLOBAL.anim_left=20;GLOBAL.anim_right=420;
	GLOBAL.anim_top=350;GLOBAL.anim_bottom=700;
	GLOBAL.design_left=20;GLOBAL.design_right=500;
	GLOBAL.design_top=20;GLOBAL.design_bottom=400;
	GLOBAL.startup=0; GLOBAL.autorun=0; GLOBAL.configfile[0]=0;
	GLOBAL.syncloss=0;
	GLOBAL.dialog_interval=DIALOG_UPDATETIME;
	GLOBAL.draw_interval=DRAW_UPDATETIME;
	GLOBAL.neurobit_available=0;
	GLOBAL.emotiv_available=0;
	GLOBAL.use_cv_capture=0;
	strcpy(GLOBAL.emotivpath,"C:\\Program Files (x86)\\Emotiv Development Kit_v1.0.0.3-PREMIUM");

	GLOBAL.loading=false;
	GLOBAL.read_tcp=0;
	GLOBAL.packet_parsed=0;
	GLOBAL.actcolumn=0;
	GLOBAL.running=false;
	GLOBAL.showdesign=TRUE;
	GLOBAL.showtoolbox=-1;
	GLOBAL.session_length=0;
	GLOBAL.session_start=0;
	GLOBAL.session_end=0;
	GLOBAL.session_loop =0 ;
	GLOBAL.session_sliding=0;

	GLOBAL.main_maximized=0;
	GLOBAL.minimized=0;
	GLOBAL.run_exception=0;
	GLOBAL.fly=0;

	GLOBAL.P3ALC1=12;
	GLOBAL.P3ALC2=12;

	TIMING.timerid=0;

	CAPTFILE.filetype=FILE_INTMODE;
	CAPTFILE.filehandle=INVALID_HANDLE_VALUE;
	CAPTFILE.file_action=0;
	CAPTFILE.do_read=0;
	CAPTFILE.do_write=0;
	CAPTFILE.length=0;
	CAPTFILE.start=0;
	strcpy(CAPTFILE.filename,"none");

	ghWndAnimation=NULL;
    ghWndToolbox=NULL;
    ghWndSettings=NULL;
    ghWndDesign=NULL;
	copy_object=NULL;

	init_draw();
	init_midi();

	load_settings();
	
	TIMING.timerid=0;
	TIMING.pause_timer=0;
	init_system_time();

	write_logfile("application init successful.");
    return ;
}
Exemple #30
0
BOOL ARRAY3600OBJ::SetupComPort(int port)
{	
	connected=FALSE;
	int sav_port;
    DCB dcb = {0};
	char PORTNAME[10];

	sav_port=comport;
    BreakDownComPort();
	comport= port ;

	// set tty structure for the specified port	
	if (!port) goto failed;
	sprintf(PORTNAME,"\\\\.\\COM%d",port);
    comdev = CreateFile( PORTNAME,GENERIC_READ | GENERIC_WRITE, 
                  0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

    if (comdev == INVALID_HANDLE_VALUE) goto failed;  
    if (!GetCommState(comdev, &dcb))      // get current DCB settings
	{ report_error("GetCommState");goto failed; }

    // update DCB rate, byte size, parity, and stop bits size
	dcb.DCBlength = sizeof(dcb);
	dcb.BaudRate = baudrate;
    dcb.ByteSize = 8;
	dcb.Parity   = NOPARITY;
    dcb.StopBits = ONESTOPBIT;
	dcb.EvtChar = '\0';
    // update flow control settings
    dcb.fDtrControl     =  DTR_CONTROL_ENABLE;
    dcb.fRtsControl     =  RTS_CONTROL_ENABLE;
    dcb.fOutxCtsFlow    = FALSE;
    dcb.fOutxDsrFlow    = FALSE;
    dcb.fDsrSensitivity = FALSE;;
    dcb.fOutX           = FALSE;
    dcb.fInX            = FALSE;
    dcb.fTXContinueOnXoff = FALSE;
    dcb.XonChar         = 0;
    dcb.XoffChar        = 0;
    dcb.XonLim          = 0;
    dcb.XoffLim         = 0;
    dcb.fParity = FALSE; //TRUE;
    if (!SetCommState(comdev, &dcb))     // set new state
	{ report_error("SetCommState failed"); goto failed;}
    if (!SetupComm(comdev, 1024, 1024))  // set comm buffer sizes
	{  report_error("SetupComm failed");goto failed;}
    if (!EscapeCommFunction(comdev, SETDTR))        // raise DTR
	{  report_error("EscapeCommFunction failed");goto failed;}
	SetCommMask (comdev, EV_RXCHAR | EV_CTS | EV_DSR | EV_RLSD | EV_RING);

	return(TRUE);

failed:
		{  
			char sztemp[100];
			sprintf(sztemp, "The Port COM%d is not available. Please select another Com-Port.",port);
 	        write_logfile("COMPORT %d open failed.",port);		
			report_error(sztemp);		
			comport=sav_port;
			comdev=INVALID_HANDLE_VALUE;
			connected=FALSE;
			return FALSE;
		}

}