Esempio n. 1
0
void MainClientWindow::on_button_send_clicked()
{
    IRCData::MessageData *message = new IRCData::MessageData();
    message->channelName = GetCurrentChannel()->GetChannelData()->name;
    message->content = ui->lineEdit_message->text();
    message->username = user->username;

    ui->lineEdit_message->setText("");

    connection->SendMessage(message);
}
CFrameCursorPos CFrameEditorModel::GetCurrentPos() const {
	return {GetCurrentFrame(), GetCurrentChannel()};
}
Esempio n. 3
0
int _tmain(int argc, _TCHAR* argv[])
{
	SetConsoleTitle(_T("WlanHelper for Npcap ") _T(WINPCAP_VER_STRING) _T(" (http://npcap.org)"));
	vector<tstring> strArgs;
	for (int i = 0; i < argc; i++)
	{
		strArgs.push_back(argv[i]);
	}
	
	if (argc == 1)
	{
		_tprintf(STR_COMMAND_USAGE);
		return -1;
	}
	else if (argc == 2)
	{
		if (strArgs[1] ==_T("-h") || strArgs[1] == _T("--help"))
		{
			_tprintf(STR_COMMAND_USAGE);
			return -1;
		}
		else if (strArgs[1] == _T("-i"))
		{
			_tprintf(_T("WlanHelper [Interactive Mode]:\n****************************************************\n"));
			return MainInteractive();
		}
		else
		{
			_tprintf(STR_INVALID_PARAMETER);
			return -1;
		}
	}
	else if (argc == 3)
	{
		if (strArgs[2] == _T("mode"))
		{
			tstring strMode;
			if (GetCurrentOperationMode(getGuidFromAdapterName_Wrapper(strArgs[1]), strMode))
			{
				_tprintf(_T("%s\n"), strMode.c_str());
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("modes"))
		{
			tstring strModes;
			if (GetOperationModeCapability(getGuidFromAdapterName_Wrapper(strArgs[1]), strModes))
			{
				_tprintf(_T("%s\n"), strModes.c_str());
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("modes-monitor"))
		{
			tstring strModes;
			if (IsMonitorModeSupported(getGuidFromAdapterName_Wrapper(strArgs[1])))
			{
				_tprintf(_T("%d\n"), TRUE);
				return 0;
			}
			else
			{
				_tprintf(_T("%d\n"), FALSE);
				return 0;
			}
		}
		else if (strArgs[2] == _T("channel"))
		{
			ULONG ulChannel;
			if (GetCurrentChannel(getGuidFromAdapterName_Wrapper(strArgs[1]), ulChannel))
			{
				_tprintf(_T("%u\n"), ulChannel);
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("freq"))
		{
			ULONG ulFrequency;
			if (GetCurrentFrequency(getGuidFromAdapterName_Wrapper(strArgs[1]), ulFrequency))
			{
				_tprintf(_T("%u\n"), ulFrequency);
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("modus"))
		{
			vector<tstring> nstrPhyTypes;
			if (GetSupportedPhyTypes(getGuidFromAdapterName_Wrapper(strArgs[1]), nstrPhyTypes))
			{
				_tprintf(_T("%s\n"), printArray(nstrPhyTypes).c_str());
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("modus2"))
		{
			vector<tstring> nstrPhyList;
			if (GetDesiredPhyList(getGuidFromAdapterName_Wrapper(strArgs[1]), nstrPhyList))
			{
				_tprintf(_T("%s\n"), printArray(nstrPhyList).c_str());
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("modu"))
		{
			tstring ulPhyID;
			if (GetCurrentPhyID(getGuidFromAdapterName_Wrapper(strArgs[1]), ulPhyID))
			{
				_tprintf(_T("%s\n"), ulPhyID.c_str());
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else
		{
			_tprintf(STR_INVALID_PARAMETER);
			return -1;
		}
	}
	else if (argc == 4)
	{
		if (strArgs[2] == _T("mode"))
		{
			if (SetWlanOperationMode(getGuidFromAdapterName_Wrapper(strArgs[1]), strArgs[3]))
			{
				_tprintf(_T("Success\n"));
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("channel"))
		{
			int ulChannel = _ttoi(strArgs[3].c_str());
			if (SetCurrentChannel(getGuidFromAdapterName_Wrapper(strArgs[1]), ulChannel))
			{
				_tprintf(_T("Success\n"));
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("freq"))
		{
			int ulFrequency = _ttoi(strArgs[3].c_str());
			if (SetCurrentFrequency(getGuidFromAdapterName_Wrapper(strArgs[1]), ulFrequency))
			{
				_tprintf(_T("Success\n"));
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else if (strArgs[2] == _T("modu"))
		{
			if (SetCurrentPhyID(getGuidFromAdapterName_Wrapper(strArgs[1]), strArgs[3]))
			{
				_tprintf(_T("Success\n"));
				return 0;
			}
			else
			{
				_tprintf(_T("Failure\n"));
				return -1;
			}
		}
		else
		{
			_tprintf(STR_INVALID_PARAMETER);
			return -1;
		}
	}
	else
	{
		_tprintf(_T("Error: too many parameters.\n"));
		return -1;
	}

	return 0;
}
//main function, here main PCIE thread runs
int main(int argc, char** argv)
{
    int DragonDevHandle; //handle for opening PCIE device file
    dragon_buffer buf;
    size_t buf_count = DRAGON_BUFFER_COUNT;
    unsigned char* user_bufs[DRAGON_BUFFER_COUNT];
    unsigned long dtStart, dtEnd;
    unsigned int i, j, k, m, n;
    uint8_t *tmp_buf;
    int switcherState = -1;

    unsigned long FrameCounter=0; //count input frames; when it reaches FrameCount - new output data is ready

    bool Output_ChannelReadSelector=false; //used to switch output buffers (double-buffering)
    OUTPUT_BUFFER_TYPE *Output[2]; //double output buffers
    OUTPUT_BUFFER_TYPE *Output_Write; //pointers to part of output buffer to be filled in PCIE thread

    //start TCPIP server thread
    pthread_t SocketThreadHandle;
    pthread_create(&SocketThreadHandle, NULL, SocketThread, NULL);

    //allocate memory for output buffers, assign pointers to parts of double-buffers
    Output[0] = (OUTPUT_BUFFER_TYPE*)malloc(OUTPUT_BUFFER_SIZE_BYTES);
    Output[1] = (OUTPUT_BUFFER_TYPE*)malloc(OUTPUT_BUFFER_SIZE_BYTES);
    memset(Output[0], 0, OUTPUT_BUFFER_SIZE_BYTES);
    memset(Output[1], 0, OUTPUT_BUFFER_SIZE_BYTES);
    Output_Read=Output[Output_ChannelReadSelector];
    Output_Write=Output[!Output_ChannelReadSelector];

    signal(SIGINT, ExitHandler);

    //open PCIE device
    DragonDevHandle = open(DRAGON_DEV_FILENAME, O_RDWR);

    if(DragonDevHandle<0)
    {
        puts("Failed to open PCIE device!\n");
        return -1;
    }

    ioctl(DragonDevHandle, DRAGON_SET_ACTIVITY, 0);

    uint32_t dID=0;
    ioctl(DragonDevHandle, DRAGON_GET_ID, &dID);
    printf("Dragon ID: %u\n", dID);

    dragon_params p;
    ioctl(DragonDevHandle, DRAGON_QUERY_PARAMS, &p);
    p.adc_type=0; // 0 for 8-bit, 1 for 12-bit
    p.board_type=0; // 0 for red KNJN, 1 for new green
    p.channel=ActiveChannel;
    p.channel_auto=0;
    p.frames_per_buffer=(DRAGON_MAX_DATA_IN_BUFFER/FrameLength);
    p.frame_length=FrameLength;
    p.half_shift=0;
    p.switch_period=FrameCount;
    p.sync_offset=0;
    p.sync_width=127;
    p.dac_data=PcieDacData;
    ioctl(DragonDevHandle, DRAGON_SET_PARAMS, &p);

    printf("frames per buffer: %d\n", p.frames_per_buffer);

    if (!ioctl(DragonDevHandle, DRAGON_REQUEST_BUFFERS, &buf_count) )
    {
        printf("buf_count = %ld\n", buf_count);
    }
    else
    {
        printf("DRAGON_REQUEST_BUFFERS error\n");
        return -1;
    }

    ioctl(DragonDevHandle, DRAGON_SET_ACTIVITY, 1);

    for (i = 0; i < buf_count; ++i)
    {
        buf.idx = i;

        if (ioctl(DragonDevHandle, DRAGON_QUERY_BUFFER, &buf) )
        {
            printf("DRAGON_QUERY_BUFFER %d error\n", i);
            return -1;
        }

        user_bufs[i] = (unsigned char*)mmap(NULL, buf.len,
                                            PROT_READ | PROT_WRITE,
                                            MAP_SHARED, DragonDevHandle,
                                            buf.offset);

        if (!user_bufs[i])
        {
            printf("mmap buffer %d error\n", i);
            return -1;
        }


        if (ioctl(DragonDevHandle, DRAGON_QBUF, &buf) )
        {
            printf("DRAGON_QBUF error\n");
            return -1;
        }
    }

 
  
    fd_set fds;
    FD_ZERO(&fds);
    FD_SET(DragonDevHandle, &fds);

    dtStart = GetTickCount();
    int count = 0;

    for (;!ExitFlag;)
    {
        select(DragonDevHandle + 1, &fds, NULL, NULL, NULL);

        //Dequeue buffer

        if (ioctl(DragonDevHandle, DRAGON_DQBUF, &buf) )
        {
            printf("DRAGON_DQBUF error\n");
            continue;
        }

        tmp_buf=user_bufs[buf.idx];

        if (switcherState == -1)
        {
            switcherState = GetSwitcherState(buf, user_bufs);
        }

        int switcherStateCurrent = GetSwitcherState(buf, user_bufs);

        if (switcherState != switcherStateCurrent)
        {
            std::unique_lock<std::mutex> lock(gWaitMutex);
            printf("Polarization collected frame count = %ld\n", FrameCounter);
            CollectedFramesCount = FrameCounter;
            FrameCounter=0;
            switcherState = switcherStateCurrent;


            Output_ChannelReadSelector=!Output_ChannelReadSelector;
            Output_Read=Output[Output_ChannelReadSelector];
            Output_Write=Output[!Output_ChannelReadSelector];
            LastOutputDataChannel = GetCurrentChannel(buf, user_bufs);
            NewDataReady=true;         // indicate TCPIP thread that new data is ready

            //clear write-buffer
            memset(Output_Write, 0, OUTPUT_BUFFER_SIZE_BYTES);
            if (    FrameLength  !=  FrameLengthToSet ||
                    FrameCount   !=  FrameCountToSet  ||
                    PcieDacData  !=  PcieDacDataToSet ||
                    ActiveChannel != ActiveChannelToSet
                    )
            {
                FrameLength  =  FrameLengthToSet;
                FrameCount   =  FrameCountToSet;
                PcieDacData  =  PcieDacDataToSet;
                ActiveChannel = ActiveChannelToSet;

                ioctl(DragonDevHandle, DRAGON_SET_ACTIVITY, 0);

                p.frames_per_buffer=(DRAGON_MAX_DATA_IN_BUFFER/FrameLength);
                p.frame_length=FrameLength;
                p.switch_period=FrameCount;
                p.dac_data=PcieDacData;
                p.channel=ActiveChannel;
                printf("Active Channel: %d\n", ActiveChannel);

                ioctl(DragonDevHandle, DRAGON_SET_PARAMS, &p);

                ioctl(DragonDevHandle, DRAGON_SET_ACTIVITY, 1);
            }

            gWaitCondition.notify_one();
        }


        for(i=0; i<p.frames_per_buffer; i++)
        {
            m=0;
            for(j=0; j<p.frame_length/DRAGON_DATA_PER_PACKET; j++)
            {
                n=i*(p.frame_length*DRAGON_PACKET_SIZE_BYTES/DRAGON_DATA_PER_PACKET)+j*DRAGON_PACKET_SIZE_BYTES+4;
                if(p.adc_type==0) //8-bit
                    for(k=4; k<DRAGON_PACKET_SIZE_BYTES-4; k++)
                        Output_Write[m++] += tmp_buf[n++];
                else if(p.adc_type==1) //12-bit
                {
                    for(k=4; k<DRAGON_PACKET_SIZE_BYTES-4; k+=8)
                    {
                        // aa-ab-bb-cc-cd-dd-ee-e_
                        Output_Write[m++] += (tmp_buf[n]<<4)|(tmp_buf[n+1]>>4);
                        Output_Write[m++] += ((15&tmp_buf[n+1])<<8)|tmp_buf[n+2];
                        Output_Write[m++] += (tmp_buf[n+3]<<4)|(tmp_buf[n+4]>>4);
                        Output_Write[m++] += ((15&tmp_buf[n+4])<<8)|(tmp_buf[n+5]);
                        Output_Write[m++] += (tmp_buf[n+6]<<4)|(tmp_buf[n+7]>>4);
                        n+=8;
                    }
                }
            }
        }


        FrameCounter+=p.frames_per_buffer;

        //Queue buffer
        if (ioctl(DragonDevHandle, DRAGON_QBUF, &buf) )
        {
            printf("DRAGON_QBUF error\n");
            return -1;
        }

        ++count;
        if (count % LOOPS_COUNT == 0)
        {
            dtEnd = GetTickCount();
            double  FPS = 1000*LOOPS_COUNT / (double)(dtEnd - dtStart);
            count = 0;
            dtStart = dtEnd;
            printf("FPS = %lf\n", FPS);
        }
    }

    close(DragonDevHandle);
    printf("Dragon closed\n");

    return 0;
}