Hi everyone,
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");
if (!pOut)
{
printf("Cannot create output file.\n");
return -1;
}
BB11ATxFrameMod(&Dot11ATxVector, &Packet);
fwrite(Packet.pReserved, Packet.Reserved3, 1, pOut);
fclose(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.
HRESULT hr;
PVOID SampleBuffer = NULL;
ULONG SampleBufferSize = 0;
ULONG TxID = 0;
hr = SoraURadioMapModBuffer( TARGET_RADIO, &SampleBuffer, &SampleBufferSize);
ULONG SigLength = PrepareSamples(pArgs->pcOutFileName, (char*)SampleBuffer, SampleBufferSize);
ALIGN_WITH_RCB_BUFFER(SigLength);
hr = SoraURadioParallelTxResAlloc(TARGET_RADIO, SigLength, 0/*for tx*/, &TxID);
hr = SoraURadioTx(TARGET_RADIO, TxID);
hr = SoraURadioTxResRelease(TARGET_RADIO, TxID);
if (SampleBuffer)
{
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.
Thank you.