giovedì 21 aprile 2011 01:32
Recently I made real time 802.11a frame transmission and reception applications in UMX.
I modified source code of UMXSample and demod11. In my implementation, reception function works well. But in packet transmission, it is difficult to know the way transmit my own signal through SORA RCB. In SORA SDK1.1 source, I can make an 802.11a frame signal using TestMod11A() function, but the generated signal is stored in a file rather than delivered to SORA RCB. Therefore, in order to transmit my own signal, I first make my own signal using TestMod11A() function and saves it in a temporary file, and transmit it using source codes in TxRoutine() function in UMX_sample.cpp. Though I succeed to transmit my own signal using this method, I want to know the way to directly send the generated signal to SORA RCB without signal storing process. I tried a few ways to deliver the pointer of the generated signal to SORA TX resource allocation functions (e.g., SoraURadioMapModBuffer()), but it all failed. Does anybody know the way to resolve this problem?
For your information, I attached the source codes that I use when I transmit my signal.
FILE* pOut = NULL;
pOut = fopen(pArgs->pcOutFileName, "w+b");
printf("Cannot create output file.\n");
fwrite(Packet.pReserved, Packet.Reserved3, 1, pOut);
//The above is the process that generate 802.11a signal and store it in a file.
//The below is the process that loads the stored signal and transmits it through SORA.
PVOID SampleBuffer = NULL;
ULONG SampleBufferSize = 0;
ULONG TxID = 0;
hr = SoraURadioMapModBuffer( TARGET_RADIO, &SampleBuffer, &SampleBufferSize);
ULONG SigLength = PrepareSamples(pArgs->pcOutFileName, (char*)SampleBuffer, SampleBufferSize);
hr = SoraURadioParallelTxResAlloc(TARGET_RADIO, SigLength, 0/*for tx*/, &TxID);
hr = SoraURadioTx(TARGET_RADIO, TxID);
hr = SoraURadioTxResRelease(TARGET_RADIO, TxID);
hr = SoraURadioUnmapModBuffer(TARGET_RADIO, (PVOID)SampleBuffer);
printf("unmap mod buffer ret: %08x\n", hr);
In the above function, I want to remove the process that stores Packet struct to a file and load it to SampleBuffer.
Tutte le risposte
martedì 10 maggio 2011 03:26Proprietario
I am a bit confused. Can't you just copy the modulated frame signal to the modbuffer and send?
For example, your PrepareSamples function can just call BB11ATxFrameMod (you may not call it directly and need to modify BB11ATxFrameMod to fill samples in the modbuffer).