From 1795e65f9aea71ef035b09ad155eb23ffb81dace Mon Sep 17 00:00:00 2001 From: Magnus Danielson Date: Sun, 28 May 2017 17:15:06 +0200 Subject: [PATCH 01/42] Fixed uninitiated warnings --- gpssim.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gpssim.c b/gpssim.c index f24eb76..5916511 100644 --- a/gpssim.c +++ b/gpssim.c @@ -1943,6 +1943,14 @@ int main(int argc, char *argv[]) } } + gmax.sec = 0; + gmax.week = 0; + tmax.sec = 0; + tmax.mm = 0; + tmax.hh = 0; + tmax.d = 0; + tmax.m = 0; + tmax.y = 0; for (sv=0; sv Date: Wed, 16 Aug 2017 08:52:36 +0900 Subject: [PATCH 02/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 52b8699..14b0af6 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The sampling rate of the user motion has to be 10Hz. The user is also able to assign a static location directly through the command line. The user specifies the GPS satellite constellation through a GPS broadcast -ephemeris file. The daily GPS broadcast ephemers file (brdc) is a merge of the +ephemeris file. The daily GPS broadcast ephemeris file (brdc) is a merge of the individual site navigation files into one. The archive for the daily file is: [ftp://cddis.gsfc.nasa.gov/gnss/data/daily/](ftp://cddis.gsfc.nasa.gov/gnss/data/daily/) From b0c2b5500c96b347ec7756508db0f041e7af44b7 Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Mon, 30 Oct 2017 13:55:32 +0100 Subject: [PATCH 03/42] Output file size is limited to 2GB on some 32-bit systems (Raspbian Stretch for example) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4f6933f..5b01636 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ all: gps-sdr-sim SHELL=/bin/bash CC=gcc -CFLAGS=-O3 -Wall +CFLAGS=-O3 -Wall -D_FILE_OFFSET_BITS=64 LDFLAGS=-lm gps-sdr-sim: gpssim.o From 6c88f8a1a996df7d899a39ed664600ce410fe37b Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Mon, 30 Oct 2017 14:00:26 +0100 Subject: [PATCH 04/42] Allow to use stdout as output file. --- README.md | 2 +- gpssim.c | 79 +++++++++++++++++++++++++++++-------------------------- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 14b0af6..b80e960 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Options: -t Scenario start time YYYY/MM/DD,hh:mm:ss -T Overwrite TOC and TOE to scenario start time -d Duration [sec] (dynamic mode max: 300 static mode max: 86400) - -o I/Q sampling data file (default: gpssim.bin) + -o I/Q sampling data file (default: gpssim.bin ; use - for stdout) -s Sampling frequency [Hz] (default: 2600000) -b I/Q data format [1/8/16] (default: 16) -i Disable ionospheric delay for spacecraft scenario diff --git a/gpssim.c b/gpssim.c index 5916511..827cd55 100644 --- a/gpssim.c +++ b/gpssim.c @@ -1512,7 +1512,7 @@ int generateNavMsg(gpstime_t g, channel_t *chan, int init) // Sanity check if (((chan->dwrd[1])&(0x1FFFFUL<<13)) != ((tow&0x1FFFFUL)<<13)) { - printf("\nWARNING: Invalid TOW in subframe 5.\n"); + fprintf(stderr, "\nWARNING: Invalid TOW in subframe 5.\n"); return(0); } */ @@ -1646,7 +1646,7 @@ int allocateChannel(channel_t *chan, ephem_t *eph, ionoutc_t ionoutc, gpstime_t void usage(void) { - printf("Usage: gps-sdr-sim [options]\n" + fprintf(stderr, "Usage: gps-sdr-sim [options]\n" "Options:\n" " -e RINEX navigation file for GPS ephemerides (required)\n" " -u User motion file (dynamic mode)\n" @@ -1779,7 +1779,7 @@ int main(int argc, char *argv[]) samp_freq = atof(optarg); if (samp_freq<1.0e6) { - printf("ERROR: Invalid sampling frequency.\n"); + fprintf(stderr, "ERROR: Invalid sampling frequency.\n"); exit(1); } break; @@ -1787,7 +1787,7 @@ int main(int argc, char *argv[]) data_format = atoi(optarg); if (data_format!=SC01 && data_format!=SC08 && data_format!=SC16) { - printf("ERROR: Invalid I/Q data format.\n"); + fprintf(stderr, "ERROR: Invalid I/Q data format.\n"); exit(1); } break; @@ -1817,7 +1817,7 @@ int main(int argc, char *argv[]) if (t0.y<=1980 || t0.m<1 || t0.m>12 || t0.d<1 || t0.d>31 || t0.hh<0 || t0.hh>23 || t0.mm<0 || t0.mm>59 || t0.sec<0.0 || t0.sec>=60.0) { - printf("ERROR: Invalid date and time.\n"); + fprintf(stderr, "ERROR: Invalid date and time.\n"); exit(1); } t0.sec = floor(t0.sec); @@ -1843,7 +1843,7 @@ int main(int argc, char *argv[]) if (navfile[0]==0) { - printf("ERROR: GPS ephemeris file is not specified.\n"); + fprintf(stderr, "ERROR: GPS ephemeris file is not specified.\n"); exit(1); } @@ -1858,7 +1858,7 @@ int main(int argc, char *argv[]) if (duration<0.0 || (duration>((double)USER_MOTION_SIZE)/10.0 && !staticLocationMode) || (duration>STATIC_MAX_DURATION && staticLocationMode)) { - printf("ERROR: Invalid duration.\n"); + fprintf(stderr, "ERROR: Invalid duration.\n"); exit(1); } iduration = (int)(duration*10.0 + 0.5); @@ -1884,12 +1884,12 @@ int main(int argc, char *argv[]) if (numd==-1) { - printf("ERROR: Failed to open user motion / NMEA GGA file.\n"); + fprintf(stderr, "ERROR: Failed to open user motion / NMEA GGA file.\n"); exit(1); } else if (numd==0) { - printf("ERROR: Failed to read user motion / NMEA GGA data.\n"); + fprintf(stderr, "ERROR: Failed to read user motion / NMEA GGA data.\n"); exit(1); } @@ -1901,14 +1901,14 @@ int main(int argc, char *argv[]) { // Static geodetic coordinates input mode: "-l" // Added by scateu@gmail.com - printf("Using static location mode.\n"); + fprintf(stderr, "Using static location mode.\n"); llh2xyz(llh,xyz[0]); // Convert llh to xyz numd = iduration; } /* - printf("xyz = %11.1f, %11.1f, %11.1f\n", xyz[0][0], xyz[0][1], xyz[0][2]); - printf("llh = %11.6f, %11.6f, %11.1f\n", llh[0]*R2D, llh[1]*R2D, llh[2]); + fprintf(stderr, "xyz = %11.1f, %11.1f, %11.1f\n", xyz[0][0], xyz[0][1], xyz[0][2]); + fprintf(stderr, "llh = %11.6f, %11.6f, %11.1f\n", llh[0]*R2D, llh[1]*R2D, llh[2]); */ //////////////////////////////////////////////////////////// // Read ephemeris @@ -1918,19 +1918,19 @@ int main(int argc, char *argv[]) if (neph==0) { - printf("ERROR: No ephemeris available.\n"); + fprintf(stderr, "ERROR: No ephemeris available.\n"); exit(1); } if ((verb==TRUE)&&(ionoutc.vflg==TRUE)) { - printf(" %12.3e %12.3e %12.3e %12.3e\n", + fprintf(stderr, " %12.3e %12.3e %12.3e %12.3e\n", ionoutc.alpha0, ionoutc.alpha1, ionoutc.alpha2, ionoutc.alpha3); - printf(" %12.3e %12.3e %12.3e %12.3e\n", + fprintf(stderr, " %12.3e %12.3e %12.3e %12.3e\n", ionoutc.beta0, ionoutc.beta1, ionoutc.beta2, ionoutc.beta3); - printf(" %19.11e %19.11e %9d %9d\n", + fprintf(stderr, " %19.11e %19.11e %9d %9d\n", ionoutc.A0, ionoutc.A1, ionoutc.tot, ionoutc.wnt); - printf("%6d\n", ionoutc.dtls); + fprintf(stderr, "%6d\n", ionoutc.dtls); } for (sv=0; sv0) - printf("%02d %6.1f %5.1f %11.1f %5.1f\n", chan[i].prn, + fprintf(stderr, "%02d %6.1f %5.1f %11.1f %5.1f\n", chan[i].prn, chan[i].azel[0]*R2D, chan[i].azel[1]*R2D, chan[i].rho0.d, chan[i].rho0.iono_delay); } @@ -2205,7 +2210,7 @@ int main(int argc, char *argv[]) chan[i].iword++; /* if (chan[i].iword>=N_DWRD) - printf("\nWARNING: Subframe word buffer overflow.\n"); + fprintf(stderr, "\nWARNING: Subframe word buffer overflow.\n"); */ } @@ -2302,11 +2307,11 @@ int main(int argc, char *argv[]) // Show ditails about simulated channels if (verb==TRUE) { - printf("\n"); + fprintf(stderr, "\n"); for (i=0; i0) - printf("%02d %6.1f %5.1f %11.1f %5.1f\n", chan[i].prn, + fprintf(stderr, "%02d %6.1f %5.1f %11.1f %5.1f\n", chan[i].prn, chan[i].azel[0]*R2D, chan[i].azel[1]*R2D, chan[i].rho0.d, chan[i].rho0.iono_delay); } } @@ -2316,13 +2321,13 @@ int main(int argc, char *argv[]) grx = incGpsTime(grx, 0.1); // Update time counter - printf("\rTime into run = %4.1f", subGpsTime(grx, g0)); + fprintf(stderr, "\rTime into run = %4.1f", subGpsTime(grx, g0)); fflush(stdout); } tend = clock(); - printf("\nDone!\n"); + fprintf(stderr, "\nDone!\n"); // Free I/Q buffer free(iq_buff); @@ -2331,7 +2336,7 @@ int main(int argc, char *argv[]) fclose(fp); // Process time - printf("Process time = %.1f [sec]\n", (double)(tend-tstart)/CLOCKS_PER_SEC); + fprintf(stderr, "Process time = %.1f [sec]\n", (double)(tend-tstart)/CLOCKS_PER_SEC); return(0); } From 0f78b6ddcd0b31a0e0b9a7cdee5dd6032a181cdf Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Mon, 30 Oct 2017 14:30:05 +0100 Subject: [PATCH 05/42] Add an SDR player for LimeSDR. --- player/Makefile | 5 + player/limeplayer.c | 340 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 345 insertions(+) create mode 100644 player/Makefile create mode 100644 player/limeplayer.c diff --git a/player/Makefile b/player/Makefile new file mode 100644 index 0000000..52220d5 --- /dev/null +++ b/player/Makefile @@ -0,0 +1,5 @@ +CC=gcc -g -Wall + +limeplayer: limeplayer.c + $(CC) -o limeplayer limeplayer.c -lLimeSuite + diff --git a/player/limeplayer.c b/player/limeplayer.c new file mode 100644 index 0000000..9ea323a --- /dev/null +++ b/player/limeplayer.c @@ -0,0 +1,340 @@ +#define _CRT_SECURE_NO_DEPRECATE + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define EXIT_CODE_NO_DEVICE (-1) +#define EXIT_CODE_LMS_OPEN (-1) + +#define TX_FREQUENCY 1575420000.0 +#define TX_SAMPLERATE 2500000.0 +#define TX_BANDWIDTH 5000000.0 +#define DEFAULT_ANTENNA 1 // antenna with BW [30MHz .. 2000MHz] + +int main(int argc, char *const argv[]){ + int device_count = LMS_GetDeviceList(NULL); + if(device_count < 1){ + return(EXIT_CODE_NO_DEVICE); + } + lms_info_str_t *device_list = malloc(sizeof(lms_info_str_t) * device_count); + device_count = LMS_GetDeviceList(device_list); + + int i = 0; + while(i < device_count){ + // printf("device[%d/%d]=%s" "\n", i + 1, device_count, device_list[i]); + i++; + } + + double gain = 1.0; + int antenna = DEFAULT_ANTENNA; + int channel = 0; + int index = 0; + int bits = 16; + double sampleRate = TX_SAMPLERATE; + + while (1) { + int option_index = 0; + static struct option long_options[] = { + {"gain", required_argument, 0, 'g' }, + {"channel", required_argument, 0, 'c' }, + {"antenna", required_argument, 0, 'a' }, + {"index", required_argument, 0, 'i'}, + {"bits", required_argument, 0, 'b'}, + {"samplerate", required_argument, 0, 's'}, + {0, 0, 0, 0 } + }; + + int c = getopt_long(argc, argv, "g:c:a:i:s:b:", long_options, &option_index); + if (c == -1) + break; + + switch (c) { + case 0: + #if 1 + fprintf(stderr, "option %s", long_options[option_index].name); + if (optarg) + fprintf(stderr, " with arg %s", optarg); + fprintf(stderr, "\n"); + #endif + + break; + + case 'a': + antenna = strtol(optarg, NULL, 0); + break; + case 'b': + bits = strtol(optarg, NULL, 0); + break; + case 'c': + channel = strtol(optarg, NULL, 0); + break; + case 'g': + gain = strtod(optarg, NULL); + break; + case 'i': + index = strtol(optarg, NULL, 0); + break; + case 's': + sampleRate = strtod(optarg, NULL); + break; + } + } + // Use correct values + // Use existing device + if(index < 0){ + index = 0; + } + if(index >= device_count){ + index = 0; + } + printf("Using device index %d [%s]" "\n", index, device_list[index]); + + // Normalized gain shall be in [0.0 .. 1.0] + if(gain < 0.0){ + gain = 0.0; + } + if(gain > 1.0){ + gain = 1.0; + } + printf("Using normalized gain %lf" "\n", gain); + + + lms_device_t *device = NULL; + + if(LMS_Open(&device, device_list[index], NULL)){ + return(EXIT_CODE_LMS_OPEN); + } + + int lmsReset = LMS_Reset(device); + if(lmsReset){ + printf("lmsReset %d(%s)" "\n", lmsReset, LMS_GetLastErrorMessage()); + } + int lmsInit = LMS_Init(device); + if(lmsInit){ + printf("lmsInit %d(%s)" "\n", lmsInit, LMS_GetLastErrorMessage()); + } + + int channel_count = LMS_GetNumChannels(device, LMS_CH_TX); + // printf("Tx channel count %d" "\n", channel_count); + if(channel < 0){ + channel = 0; + } + if(channel >= channel_count){ + channel = 0; + } + printf("Using channel %d" "\n", channel); + + int antenna_count = LMS_GetAntennaList(device, LMS_CH_TX, channel, NULL); + // printf("TX%d Channel has %d antenna(ae)" "\n", channel, antenna_count); + lms_name_t antenna_name[antenna_count]; + if(antenna_count > 0){ + int i = 0; + lms_range_t antenna_bw[antenna_count]; + LMS_GetAntennaList(device, LMS_CH_TX, channel, antenna_name); + for(i = 0 ; i < antenna_count ; i++){ + LMS_GetAntennaBW(device, LMS_CH_TX, channel, i, antenna_bw + i); + // printf("Channel %d, antenna [%s] has BW [%lf .. %lf] (step %lf)" "\n", channel, antenna_name[i], antenna_bw[i].min, antenna_bw[i].max, antenna_bw[i].step); + } + } + if(antenna < 0){ + antenna = DEFAULT_ANTENNA; + } + if(antenna >= antenna_count){ + antenna = DEFAULT_ANTENNA; + } + // LMS_SetAntenna(device, LMS_CH_TX, channel, antenna); // SetLOFrequency should take care of selecting the proper antenna + + LMS_SetNormalizedGain(device, LMS_CH_TX, channel, gain); + // Disable all other channels + LMS_EnableChannel(device, LMS_CH_TX, 1 - channel, false); + LMS_EnableChannel(device, LMS_CH_RX, 0, false); + LMS_EnableChannel(device, LMS_CH_RX, 1, false); + // Enable our Tx channel + LMS_EnableChannel(device, LMS_CH_TX, channel, true); + + int setLOFrequency = LMS_SetLOFrequency(device, LMS_CH_TX, channel, TX_FREQUENCY); + if(setLOFrequency){ + printf("setLOFrequency(%lf)=%d(%s)" "\n", TX_FREQUENCY, setLOFrequency, LMS_GetLastErrorMessage()); + } + +#ifdef __USE_LPF__ + lms_range_t LPFBWRange; + LMS_GetLPFBWRange(device, LMS_CH_TX, &LPFBWRange); + // printf("TX%d LPFBW [%lf .. %lf] (step %lf)" "\n", channel, LPFBWRange.min, LPFBWRange.max, LPFBWRange.step); + double LPFBW = TX_BANDWIDTH; + if(LPFBW < LPFBWRange.min){ + LPFBW = LPFBWRange.min; + } + if(LPFBW > LPFBWRange.max){ + LPFBW = LPFBWRange.min; + } + int setLPFBW = LMS_SetLPFBW(device, LMS_CH_TX, channel, LPFBW); + if(setLPFBW){ + printf("setLPFBW(%lf)=%d(%s)" "\n", LPFBW, setLPFBW, LMS_GetLastErrorMessage()); + } + int enableLPF = LMS_SetLPF(device, LMS_CH_TX, channel, true); + if(enableLPF){ + printf("enableLPF=%d(%s)" "\n", enableLPF, LMS_GetLastErrorMessage()); + } +#endif + + lms_range_t sampleRateRange; + int getSampleRateRange = LMS_GetSampleRateRange(device, LMS_CH_TX, &sampleRateRange); + if(getSampleRateRange){ + printf("getSampleRateRange=%d(%s)" "\n", getSampleRateRange, LMS_GetLastErrorMessage()); + }else{ + // printf("sampleRateRange [%lf MHz.. %lf MHz] (step=%lf Hz)" "\n", sampleRateRange.min / 1e6, sampleRateRange.max / 1e6, sampleRateRange.step); + } + + printf("Set sample rate to %lf ..." "\n", sampleRate); + int setSampleRate = LMS_SetSampleRate(device, sampleRate, 0); + if(setSampleRate){ + printf("setSampleRate=%d(%s)" "\n", setSampleRate, LMS_GetLastErrorMessage()); + } + double actualHostSampleRate = 0.0; + double actualRFSampleRate = 0.0; + int getSampleRate = LMS_GetSampleRate(device, LMS_CH_TX, channel, &actualHostSampleRate, &actualRFSampleRate); + if(getSampleRate){ + printf("getSampleRate=%d(%s)" "\n", getSampleRate, LMS_GetLastErrorMessage()); + }else{ + printf("actualRate %lf (Host) / %lf (RF)" "\n", actualHostSampleRate, actualRFSampleRate); + } + + printf("Calibrating ..." "\n"); + int calibrate = LMS_Calibrate(device, LMS_CH_TX, channel, TX_BANDWIDTH, 0); + if(calibrate){ + printf("calibrate=%d(%s)" "\n", calibrate, LMS_GetLastErrorMessage()); + } + + printf("Setup TX stream ..." "\n"); + lms_stream_t tx_stream = {.channel = channel, .fifoSize = 1024*1024, .throughputVsLatency = 0.5, .isTx = true, .dataFmt = LMS_FMT_I12}; + int setupStream = LMS_SetupStream(device, &tx_stream); + if(setupStream){ + printf("setupStream=%d(%s)" "\n", setupStream, LMS_GetLastErrorMessage()); + } + + struct s16iq_sample_s { + signed short int i; + signed short int q; + }; + + int nSamples = (int)sampleRate / 100; + struct s16iq_sample_s *sampleBuffer = (struct s16iq_sample_s*)malloc(sizeof(struct s16iq_sample_s) * nSamples); + + LMS_StartStream(&tx_stream); + + int loop = 0; + if((12 == bits) || (16 == bits)){ + // File contains interleaved 16-bit IQ values, either with only 12-bit data, or with 16-bit data + while(fread(sampleBuffer, sizeof(struct s16iq_sample_s), nSamples, stdin)){ + loop++; + if(0 == (loop % 100)){ + struct timeval tv; + gettimeofday(&tv, NULL); + printf("gettimeofday()=> %ld:%06ld ; ", tv.tv_sec, tv.tv_usec); + lms_stream_status_t status; + LMS_GetStreamStatus(&tx_stream, &status); //Obtain TX stream stats + printf("TX rate:%lf MB/s" "\n", status.linkRate / 1e6); + } + if(16 == bits){ + // Scale down to 12-bit + // Quick and dirty, so -1 (0xFFFF) to -15 (0xFFF1) scale down to -1 instead of 0 + int i; + while(i < nSamples){ + sampleBuffer[i].i >>= 4; + sampleBuffer[i].q >>= 4; + i++; + } + } + int sendStream = LMS_SendStream(&tx_stream, sampleBuffer, nSamples, NULL, 1000); + if(sendStream < 0){ + printf("sendStream %d(%s)" "\n", sendStream, LMS_GetLastErrorMessage()); + } + } + }else if(8 == bits){ + // File contains interleaved signed 8-bit IQ values + struct s8iq_sample_s { + signed char i; + signed char q; + }; + struct s8iq_sample_s *fileSamples = (struct s8iq_sample_s*)malloc(sizeof(struct s8iq_sample_s) * nSamples); + while(fread(fileSamples, sizeof(struct s8iq_sample_s), nSamples, stdin)){ + loop++; + if(0 == (loop % 100)){ + struct timeval tv; + gettimeofday(&tv, NULL); + printf("gettimeofday()=> %ld:%06ld ; ", tv.tv_sec, tv.tv_usec); + lms_stream_status_t status; + LMS_GetStreamStatus(&tx_stream, &status); //Obtain TX stream stats + printf("TX rate:%lf MB/s" "\n", status.linkRate / 1e6); + } + // Up-Scale to 12-bit + int i; + while(i < nSamples){ + sampleBuffer[i].i = (fileSamples[i].i << 4); + sampleBuffer[i].q = (fileSamples[i].q << 4); + i++; + } + int sendStream = LMS_SendStream(&tx_stream, sampleBuffer, nSamples, NULL, 1000); + if(sendStream < 0){ + printf("sendStream %d(%s)" "\n", sendStream, LMS_GetLastErrorMessage()); + } + } + free(fileSamples); + }else if(1 == bits){ + // File contains interleaved signed 1-bit IQ values + // Each byte is IQIQIQIQ + int16_t expand_lut[256][8]; + int i, j; + for (i=0; i<256; i++){ + for (j=0; j<8; j++){ + expand_lut[i][j] = ((i>>(7-j))&0x1)?1024:-1024; + } + } + // printf("sizeof(expand_lut[][])=%d, sizeof(expand_lut[0])=%d" "\n", sizeof(expand_lut), sizeof(expand_lut[0])); + int8_t *fileBuffer = (int8_t*)malloc(sizeof(int8_t) * nSamples); + while(fread(fileBuffer, sizeof(int8_t), nSamples / 4, stdin)){ + loop++; + if(0 == (loop % 100)){ + struct timeval tv; + gettimeofday(&tv, NULL); + printf("gettimeofday()=> %ld:%06ld ; ", tv.tv_sec, tv.tv_usec); + lms_stream_status_t status; + LMS_GetStreamStatus(&tx_stream, &status); //Obtain TX stream stats + printf("TX rate:%lf MB/s" "\n", status.linkRate / 1e6); + } + // Expand + int src = 0; + int dst = 0; + while(src < (nSamples / 4)){ + memcpy(sampleBuffer + dst, expand_lut + fileBuffer[src], sizeof(expand_lut[0])); + dst += 4; + src++; + } + int sendStream = LMS_SendStream(&tx_stream, sampleBuffer, nSamples, NULL, 1000); + if(sendStream < 0){ + printf("sendStream %d(%s)" "\n", sendStream, LMS_GetLastErrorMessage()); + } + } + free(fileBuffer); + } + + LMS_StopStream(&tx_stream); + LMS_DestroyStream(device, &tx_stream); + + free(sampleBuffer); + + LMS_EnableChannel(device, LMS_CH_TX, channel, false); + LMS_Close(device); + + return(0); +} + From 8791e24e1f78297762dca57dd2d862daa972061f Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Mon, 30 Oct 2017 18:28:08 +0100 Subject: [PATCH 06/42] Add Control-C handling Add inline help --- player/limeplayer.c | 81 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 10 deletions(-) diff --git a/player/limeplayer.c b/player/limeplayer.c index 9ea323a..b5f43a4 100644 --- a/player/limeplayer.c +++ b/player/limeplayer.c @@ -8,10 +8,12 @@ #include #include #include +#include #include -#define EXIT_CODE_NO_DEVICE (-1) +#define EXIT_CODE_CONTROL_C (-3) +#define EXIT_CODE_NO_DEVICE (-2) #define EXIT_CODE_LMS_OPEN (-1) #define TX_FREQUENCY 1575420000.0 @@ -19,7 +21,51 @@ #define TX_BANDWIDTH 5000000.0 #define DEFAULT_ANTENNA 1 // antenna with BW [30MHz .. 2000MHz] +#define STRINGIFY2(X) #X +#define STRINGIFY(X) STRINGIFY2(X) + +static int control_c_received = 0; + +static void control_c_handler (int sig, siginfo_t *siginfo, void *context){ + control_c_received = 1; +} + +static void print_usage(const char *progname){ + printf("Usage: %s [option] < file" "\n" + "\t" "-g or --gain with gain in [0.0 .. 1.0] set the so-called normalized RF gain in LimeSDR (default: 1.0 max RF power)" "\n" + "\t" "-c or --channel with channel either 0 or 1 (default: 0)" "\n" + "\t" "-a or --antenna with antenna in { 0, 1, 2 } (default:" STRINGIFY(DEFAULT_ANTENNA) ")" "\n" + "\t" "-i or --index select LimeSDR if multiple devices connected (default: 0)" "\n" + "\t" "-b or --bits select bit count in IQ sample in { 1, 8, 12, 16 }, (default: 16)" + "\t" "-s or --samplerate configure BB sample rate (default: " STRINGIFY(TX_SAMPLERATE) ")" "\n" + "\t" "-d --dynamic configure dynamic for the 1-bit mode (default: 2047, max 12-bit signed value supported by LimeSDR)" "\n" + "Example:" "\n" + "\t" "./limeplayer -s 1000000 -b 1 -d 1023 -g 0.1 < ../circle.1b.1M.bin" "\n", progname); + exit(0); +} + int main(int argc, char *const argv[]){ + struct sigaction control_c; + + memset(&control_c, 0, sizeof(control_c)); + control_c.sa_sigaction = &control_c_handler; + + /* The SA_SIGINFO flag tells sigaction() to use the sa_sigaction field, not sa_handler. */ + control_c.sa_flags = SA_SIGINFO; + + if (sigaction(SIGTERM, &control_c, NULL) < 0) { + perror ("sigaction"); + return(EXIT_CODE_CONTROL_C); + } + if (sigaction(SIGQUIT, &control_c, NULL) < 0) { + perror ("sigaction"); + return(EXIT_CODE_CONTROL_C); + } + if (sigaction(SIGINT, &control_c, NULL) < 0) { + perror ("sigaction"); + return(EXIT_CODE_CONTROL_C); + } + int device_count = LMS_GetDeviceList(NULL); if(device_count < 1){ return(EXIT_CODE_NO_DEVICE); @@ -34,11 +80,12 @@ int main(int argc, char *const argv[]){ } double gain = 1.0; - int antenna = DEFAULT_ANTENNA; - int channel = 0; - int index = 0; - int bits = 16; + int32_t antenna = DEFAULT_ANTENNA; + int32_t channel = 0; + int32_t index = 0; + int32_t bits = 16; double sampleRate = TX_SAMPLERATE; + int32_t dynamic = 2047; while (1) { int option_index = 0; @@ -49,10 +96,11 @@ int main(int argc, char *const argv[]){ {"index", required_argument, 0, 'i'}, {"bits", required_argument, 0, 'b'}, {"samplerate", required_argument, 0, 's'}, + {"dynamic", required_argument, 0, 'd'}, {0, 0, 0, 0 } }; - int c = getopt_long(argc, argv, "g:c:a:i:s:b:", long_options, &option_index); + int c = getopt_long(argc, argv, "g:c:a:i:s:b:d:", long_options, &option_index); if (c == -1) break; @@ -85,6 +133,15 @@ int main(int argc, char *const argv[]){ case 's': sampleRate = strtod(optarg, NULL); break; + case 'd': + dynamic = strtol(optarg, NULL, 0); + if(dynamic > 2047){ + dynamic = 2047; + } + break; + default: + print_usage(argv[0]); + break; } } // Use correct values @@ -234,7 +291,7 @@ int main(int argc, char *const argv[]){ int loop = 0; if((12 == bits) || (16 == bits)){ // File contains interleaved 16-bit IQ values, either with only 12-bit data, or with 16-bit data - while(fread(sampleBuffer, sizeof(struct s16iq_sample_s), nSamples, stdin)){ + while((0 == control_c_received) && fread(sampleBuffer, sizeof(struct s16iq_sample_s), nSamples, stdin)){ loop++; if(0 == (loop % 100)){ struct timeval tv; @@ -266,7 +323,7 @@ int main(int argc, char *const argv[]){ signed char q; }; struct s8iq_sample_s *fileSamples = (struct s8iq_sample_s*)malloc(sizeof(struct s8iq_sample_s) * nSamples); - while(fread(fileSamples, sizeof(struct s8iq_sample_s), nSamples, stdin)){ + while((0 == control_c_received) && fread(fileSamples, sizeof(struct s8iq_sample_s), nSamples, stdin)){ loop++; if(0 == (loop % 100)){ struct timeval tv; @@ -296,12 +353,13 @@ int main(int argc, char *const argv[]){ int i, j; for (i=0; i<256; i++){ for (j=0; j<8; j++){ - expand_lut[i][j] = ((i>>(7-j))&0x1)?1024:-1024; + expand_lut[i][j] = ((i>>(7-j))&0x1)?dynamic:-dynamic; } } + printf("1-bit mode: using dynamic=%d" "\n", dynamic); // printf("sizeof(expand_lut[][])=%d, sizeof(expand_lut[0])=%d" "\n", sizeof(expand_lut), sizeof(expand_lut[0])); int8_t *fileBuffer = (int8_t*)malloc(sizeof(int8_t) * nSamples); - while(fread(fileBuffer, sizeof(int8_t), nSamples / 4, stdin)){ + while((0 == control_c_received) && fread(fileBuffer, sizeof(int8_t), nSamples / 4, stdin)){ loop++; if(0 == (loop % 100)){ struct timeval tv; @@ -335,6 +393,9 @@ int main(int argc, char *const argv[]){ LMS_EnableChannel(device, LMS_CH_TX, channel, false); LMS_Close(device); + if(control_c_received){ + return(EXIT_CODE_CONTROL_C); + } return(0); } From 9c9cfcae6e5707b0fabe20772b7d317920e2a212 Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Mon, 30 Oct 2017 18:29:11 +0100 Subject: [PATCH 07/42] Typo in inline help (missing "\n" --- player/limeplayer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/limeplayer.c b/player/limeplayer.c index b5f43a4..e024b21 100644 --- a/player/limeplayer.c +++ b/player/limeplayer.c @@ -36,7 +36,7 @@ static void print_usage(const char *progname){ "\t" "-c or --channel with channel either 0 or 1 (default: 0)" "\n" "\t" "-a or --antenna with antenna in { 0, 1, 2 } (default:" STRINGIFY(DEFAULT_ANTENNA) ")" "\n" "\t" "-i or --index select LimeSDR if multiple devices connected (default: 0)" "\n" - "\t" "-b or --bits select bit count in IQ sample in { 1, 8, 12, 16 }, (default: 16)" + "\t" "-b or --bits select bit count in IQ sample in { 1, 8, 12, 16 }, (default: 16)" "\n" "\t" "-s or --samplerate configure BB sample rate (default: " STRINGIFY(TX_SAMPLERATE) ")" "\n" "\t" "-d --dynamic configure dynamic for the 1-bit mode (default: 2047, max 12-bit signed value supported by LimeSDR)" "\n" "Example:" "\n" From 3faf5ee027dbeded30a42ac5c1272f8e32e5d228 Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Mon, 30 Oct 2017 18:34:57 +0100 Subject: [PATCH 08/42] Add limeplayer example in README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index b80e960..c16a5d3 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,9 @@ For UHD supported devices (tested with USRP2 only): > gps-sdr-sim-uhd.py -t gpssim.bin -s 2500000 -x 0 ``` +For LimeSDR (in case of 1 Msps 1-bit file, to get full BaseBand dynamic and low RF power): + +> limeplayer -s 1000000 -b 1 -d 2047 -g 0.1 < ../circle.1b.1M.bin ### License From f0e92bcb3faee1269174fbc20845751aac03fec3 Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Tue, 31 Oct 2017 09:36:28 +0100 Subject: [PATCH 09/42] Corrected 8-bit mode (uninitialized variable not caught by -Wall !) in limeplayer --- player/limeplayer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/player/limeplayer.c b/player/limeplayer.c index e024b21..731dc37 100644 --- a/player/limeplayer.c +++ b/player/limeplayer.c @@ -334,7 +334,7 @@ int main(int argc, char *const argv[]){ printf("TX rate:%lf MB/s" "\n", status.linkRate / 1e6); } // Up-Scale to 12-bit - int i; + int i = 0; while(i < nSamples){ sampleBuffer[i].i = (fileSamples[i].i << 4); sampleBuffer[i].q = (fileSamples[i].q << 4); From 724fd8cbc76972a0ee2e6452bc8b79dc3ae9d4c0 Mon Sep 17 00:00:00 2001 From: Arnaud ZANETTI Date: Tue, 31 Oct 2017 14:01:53 +0100 Subject: [PATCH 10/42] Fix another initialized variable ; the reason why -Wall didn't catch it was the -g flag ; with -O2 flag initialized variables raise warnings. --- player/Makefile | 2 +- player/limeplayer.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/player/Makefile b/player/Makefile index 52220d5..ab1ba11 100644 --- a/player/Makefile +++ b/player/Makefile @@ -1,4 +1,4 @@ -CC=gcc -g -Wall +CC=gcc -O2 -Wall limeplayer: limeplayer.c $(CC) -o limeplayer limeplayer.c -lLimeSuite diff --git a/player/limeplayer.c b/player/limeplayer.c index 731dc37..73046fe 100644 --- a/player/limeplayer.c +++ b/player/limeplayer.c @@ -304,7 +304,7 @@ int main(int argc, char *const argv[]){ if(16 == bits){ // Scale down to 12-bit // Quick and dirty, so -1 (0xFFFF) to -15 (0xFFF1) scale down to -1 instead of 0 - int i; + int i = 0; while(i < nSamples){ sampleBuffer[i].i >>= 4; sampleBuffer[i].q >>= 4; From e467402a87e9f61d74c75b4af32260049ec6cc70 Mon Sep 17 00:00:00 2001 From: OSQZSS Date: Sat, 2 Dec 2017 11:29:04 +0900 Subject: [PATCH 11/42] Float carrier phase for RTK simulation --- gpssim.c | 28 ++++++++++++++++++++++------ gpssim.h | 6 ++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/gpssim.c b/gpssim.c index 5916511..6d0bb22 100644 --- a/gpssim.c +++ b/gpssim.c @@ -1618,9 +1618,12 @@ int allocateChannel(channel_t *chan, ephem_t *eph, ionoutc_t ionoutc, gpstime_t r_ref = rho.range; phase_ini = (2.0*r_ref - r_xyz)/LAMBDA_L1; +#ifdef FLOAT_CARR_PHASE + chan[i].carr_phase = phase_ini - floor(phase_ini); +#else phase_ini -= floor(phase_ini); - chan[i].carr_phase = (unsigned int)(512 * 65536.0 * phase_ini); - + chan[i].carr_phase = (unsigned int)(512.0 * 65536.0 * phase_ini); +#endif // Done. break; } @@ -2153,8 +2156,9 @@ int main(int argc, char *argv[]) // Update code phase and data bit counters computeCodePhase(&chan[i], rho, 0.1); - chan[i].carr_phasestep = (int)(512 * 65536.0 * chan[i].f_carr * delt); - +#ifndef FLOAT_CARR_PHASE + chan[i].carr_phasestep = (int)round(512.0 * 65536.0 * chan[i].f_carr * delt); +#endif // Path loss path_loss = 20200000.0/rho.d; @@ -2176,8 +2180,11 @@ int main(int argc, char *argv[]) { if (chan[i].prn>0) { - iTable = (chan[i].carr_phase >> 16) & 511; - +#ifdef FLOAT_CARR_PHASE + iTable = (int)floor(chan[i].carr_phase*512.0); +#else + iTable = (chan[i].carr_phase >> 16) & 0x1ff; // 9-bit index +#endif ip = chan[i].dataBit * chan[i].codeCA * cosTable512[iTable] * gain[i]; qp = chan[i].dataBit * chan[i].codeCA * sinTable512[iTable] * gain[i]; @@ -2218,7 +2225,16 @@ int main(int argc, char *argv[]) chan[i].codeCA = chan[i].ca[(int)chan[i].code_phase]*2-1; // Update carrier phase +#ifdef FLOAT_CARR_PHASE + chan[i].carr_phase += chan[i].f_carr * delt; + + if (chan[i].carr_phase >= 1.0) + chan[i].carr_phase -= 1.0; + else if (chan[i].carr_phase<0.0) + chan[i].carr_phase += 1.0; +#else chan[i].carr_phase += chan[i].carr_phasestep; +#endif } } diff --git a/gpssim.h b/gpssim.h index 5cad835..4bf7ce3 100644 --- a/gpssim.h +++ b/gpssim.h @@ -1,6 +1,8 @@ #ifndef GPSSIM_H #define GPSSIM_H +#define FLOAT_CARR_PHASE // For RKT simulation. Higher computational load, but smoother carrier phase. + #define TRUE (1) #define FALSE (0) @@ -159,8 +161,12 @@ typedef struct int ca[CA_SEQ_LEN]; /*< C/A Sequence */ double f_carr; /*< Carrier frequency */ double f_code; /*< Code frequency */ +#ifdef FLOAT_CARR_PHASE + double carr_phase; +#else unsigned int carr_phase; /*< Carrier phase */ int carr_phasestep; /*< Carrier phasestep */ +#endif double code_phase; /*< Code phase */ gpstime_t g0; /*!< GPS time at start */ unsigned long sbf[5][N_DWRD_SBF]; /*!< current subframe */ From d8478dc5d5831c09a9eb46f19577d637253178ca Mon Sep 17 00:00:00 2001 From: OSQZSS Date: Sun, 7 Jan 2018 13:13:30 +0900 Subject: [PATCH 12/42] Windows port of ingenico-zanetti's limeplayer --- player/limeplayer_win/getopt.c | 110 ++++++++ player/limeplayer_win/getopt.h | 9 + player/limeplayer_win/limeplayer.c | 409 +++++++++++++++++++++++++++++ 3 files changed, 528 insertions(+) create mode 100644 player/limeplayer_win/getopt.c create mode 100644 player/limeplayer_win/getopt.h create mode 100644 player/limeplayer_win/limeplayer.c diff --git a/player/limeplayer_win/getopt.c b/player/limeplayer_win/getopt.c new file mode 100644 index 0000000..dab5fd8 --- /dev/null +++ b/player/limeplayer_win/getopt.c @@ -0,0 +1,110 @@ +/* +* Copyright (c) 1987, 1993, 1994 +* The Regents of the University of California. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* 3. All advertising materials mentioning features or use of this software +* must display the following acknowledgement: +* This product includes software developed by the University of +* California, Berkeley and its contributors. +* 4. Neither the name of the University nor the names of its contributors +* may be used to endorse or promote products derived from this software +* without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +* SUCH DAMAGE. +*/ + +#include "getopt.h" +#include +#include + +int opterr = 1, /* if error message should be printed */ + optind = 1, /* index into parent argv vector */ + optopt, /* character checked for validity */ + optreset; /* reset getopt */ +char *optarg; /* argument associated with option */ + +#define BADCH (int)'?' +#define BADARG (int)':' +#define EMSG "" + +/* + * getopt -- + * Parse argc/argv argument vector. + * + * Note: Unlike GNU getopt(), after a non-option argument, all further + * arguments are considered also non-options. This is similar to + * the way non-GNU Unix systems work. + */ +int getopt(int nargc, char * const nargv[], const char *ostr) +{ + static char *place = EMSG; /* option letter processing */ + const char *oli; /* option letter list index */ + + if (optreset || !*place) { /* update scanning pointer */ + optreset = 0; + if (optind >= nargc || *(place = nargv[optind]) != '-') { + place = EMSG; + return (-1); + } + if (place[1] && *++place == '-') { /* found "--" */ + ++optind; + place = EMSG; + return (-1); + } + } /* option letter okay? */ + if ((optopt = (int)*place++) == (int)':' || + !(oli = strchr(ostr, optopt))) { + /* + * if the user didn't specify '-' as an option, + * assume it means -1. + */ + if (optopt == (int)'-') + return (-1); + if (!*place) + ++optind; + if (opterr && *ostr != ':') + (void)printf("illegal option -- %c\n", optopt); + return (BADCH); + } + if (*++oli != ':') { /* don't need argument */ + optarg = NULL; + if (!*place) + ++optind; + } + else { /* need an argument */ + if (*place) /* no white space */ + optarg = place; + else if (nargc <= ++optind) { /* no arg */ + place = EMSG; + if (*ostr == ':') + return (BADARG); + if (opterr) + (void)printf("option requires an argument -- %c\n", optopt); + return (BADCH); + } + else /* white space */ + optarg = nargv[optind]; + place = EMSG; + ++optind; + } + return (optopt); /* dump back option letter */ +} + \ No newline at end of file diff --git a/player/limeplayer_win/getopt.h b/player/limeplayer_win/getopt.h new file mode 100644 index 0000000..5978e22 --- /dev/null +++ b/player/limeplayer_win/getopt.h @@ -0,0 +1,9 @@ +#ifndef GETOPT_H +#define GETOPT_H + +extern char *optarg; +extern int optind; + +int getopt(int nargc, char * const nargv[], const char *ostr) ; + +#endif diff --git a/player/limeplayer_win/limeplayer.c b/player/limeplayer_win/limeplayer.c new file mode 100644 index 0000000..346a2f8 --- /dev/null +++ b/player/limeplayer_win/limeplayer.c @@ -0,0 +1,409 @@ +#define _CRT_SECURE_NO_WARNINGS + +#define WIN32_LEAN_AND_MEAN +#include +#include + +#include +#include +#include +#ifdef _WIN32 +#include "getopt.h" +#else +#include +#endif + +#include +// Configration Properties: +// C/C++ --> General --> Additional Include Directories: C:\Program Files\PothosSDR\include +// Linker --> General --> Additional Library Directories: C:\Program Files\PothosSDR\lib +// Linker --> Input --> Additional Dependencies: LimeSuite.lib + +#define EXIT_CODE_NO_DEVICE (-2) +#define EXIT_CODE_LMS_OPEN (-1) + +#define TX_FREQUENCY 1575420000.0 +#define TX_SAMPLERATE 2500000.0 +#define TX_BANDWIDTH 5000000.0 +#define DEFAULT_ANTENNA 1 // antenna with BW [30MHz .. 2000MHz] + +typedef struct timeval { + long tv_sec; + long tv_usec; +} timeval; + +int gettimeofday(struct timeval * tp, struct timezone * tzp) +{ + // Note: some broken versions only have 8 trailing zero's, the correct epoch has 9 trailing zero's + // This magic number is the number of 100 nanosecond intervals since January 1, 1601 (UTC) + // until 00:00:00 January 1, 1970 + static const uint64_t EPOCH = ((uint64_t)116444736000000000ULL); + + SYSTEMTIME system_time; + FILETIME file_time; + uint64_t time; + + GetSystemTime(&system_time); + SystemTimeToFileTime(&system_time, &file_time); + time = ((uint64_t)file_time.dwLowDateTime); + time += ((uint64_t)file_time.dwHighDateTime) << 32; + + tp->tv_sec = (long)((time - EPOCH) / 10000000L); + tp->tv_usec = (long)(system_time.wMilliseconds * 1000); + return 0; +} + +void usage(const char *progname) +{ + fprintf(stderr, "Usage: %s [options]\n" + " -f select IQ sample data file to transmit (required)\n" + " -g with gain in [0.0 .. 1.0] set the so-called normalized RF gain in LimeSDR (default: 1.0 max RF power)\n" + " -c with channel either 0 or 1 (default: 0)\n" + " -a with antenna in { 0, 1, 2 } (default: 1)\n" + " -i select LimeSDR if multiple devices connected (default: 0)\n" + " -b select bit count in IQ sample in { 1, 8, 12, 16 }, (default: 16)\n" + " -s configure baseband sample rate (default: 2500000.0)\n" + " -d configure dynamic for the 1-bit mode (default: 2047, max 12-bit signed value supported by LimeSDR)\n", + progname); + + return; +} + +int main(int argc, char *const argv[]) +{ + if (argc<3) { + usage(argv[0]); + exit(1); + } + + int device_count = LMS_GetDeviceList(NULL); + + if (device_count < 1) + { + fprintf(stderr, "ERROR: No device was found.\n"); + return(EXIT_CODE_NO_DEVICE); + } + + lms_info_str_t *device_list = malloc(sizeof(lms_info_str_t) * device_count); + device_count = LMS_GetDeviceList(device_list); + + int i = 0; + while (i < device_count) + { + printf("device[%d/%d]=%s" "\n", i + 1, device_count, device_list[i]); + i++; + } + + double gain = 1.0; + int32_t antenna = DEFAULT_ANTENNA; + int32_t channel = 0; + int32_t index = 0; + int32_t bits = 16; + double sampleRate = TX_SAMPLERATE; + int32_t dynamic = 2047; + + int result; + char txfile[128]; + + txfile[0] = 0; // Empty TX file name + + while ((result = getopt(argc, argv, "f:g:c:a:i:b:s:d:")) != -1) + { + switch (result) + { + case 'f': + strcpy(txfile, optarg); + break; + case 'a': + antenna = strtol(optarg, NULL, 0); + break; + case 'b': + bits = strtol(optarg, NULL, 0); + break; + case 'c': + channel = strtol(optarg, NULL, 0); + break; + case 'g': + gain = strtod(optarg, NULL); + break; + case 'i': + index = strtol(optarg, NULL, 0); + break; + case 's': + sampleRate = strtod(optarg, NULL); + break; + case 'd': + dynamic = strtol(optarg, NULL, 0); + if (dynamic > 2047) + dynamic = 2047; + break; + case '?': + usage(argv[0]); + exit(1); + default: + break; + } + } + + // Open TX file. + FILE *fp; + + if (txfile[0] == 0) + { + printf("ERROR: I/Q sampling data file is not specified.\n"); + exit(1); + } + + fp = fopen(txfile, "rb"); + + if (fp == NULL) { + fprintf(stderr, "ERROR: Failed to open TX file: %s\n", argv[1]); + exit(1); + } + + // Use existing device + if (index < 0) + index = 0; + + if (index >= device_count) + index = 0; + + printf("Using device index %d [%s]" "\n", index, device_list[index]); + + // Normalized gain shall be in [0.0 .. 1.0] + if (gain < 0.0) + gain = 0.0; + if (gain > 1.0) + gain = 1.0; + + printf("Using normalized gain %lf" "\n", gain); + + // Open device and initialize. + lms_device_t *device = NULL; + + if (LMS_Open(&device, device_list[index], NULL)) + return(EXIT_CODE_LMS_OPEN); + + int lmsReset = LMS_Reset(device); + if (lmsReset) + printf("lmsReset %d(%s)" "\n", lmsReset, LMS_GetLastErrorMessage()); + + int lmsInit = LMS_Init(device); + if (lmsInit) + printf("lmsInit %d(%s)" "\n", lmsInit, LMS_GetLastErrorMessage()); + + // Select channel. + int channel_count = LMS_GetNumChannels(device, LMS_CH_TX); + // printf("Tx channel count %d" "\n", channel_count); + if (channel < 0) + channel = 0; + if (channel >= channel_count) + channel = 0; + + printf("Using channel %d" "\n", channel); + + // Select antenna. + int antenna_count = LMS_GetAntennaList(device, LMS_CH_TX, channel, NULL); + printf("TX%d Channel has %d antenna(ae)" "\n", channel, antenna_count); + + lms_name_t *antenna_name = malloc(sizeof(lms_name_t) * antenna_count); + + if (antenna_count > 0) + { + int i = 0; + lms_range_t *antenna_bw = malloc(sizeof(lms_range_t) * antenna_count); + LMS_GetAntennaList(device, LMS_CH_TX, channel, antenna_name); + for (i = 0; i < antenna_count; i++) + { + LMS_GetAntennaBW(device, LMS_CH_TX, channel, i, antenna_bw + i); + printf("Channel %d, antenna [%s] has BW [%lf .. %lf] (step %lf)" "\n", channel, antenna_name[i], antenna_bw[i].min, antenna_bw[i].max, antenna_bw[i].step); + } + } + + if (antenna < 0) + antenna = DEFAULT_ANTENNA; + if (antenna >= antenna_count) + antenna = DEFAULT_ANTENNA; + // LMS_SetAntenna(device, LMS_CH_TX, channel, antenna); // SetLOFrequency should take care of selecting the proper antenna + + LMS_SetNormalizedGain(device, LMS_CH_TX, channel, gain); + // Disable all other channels + LMS_EnableChannel(device, LMS_CH_TX, 1 - channel, false); + LMS_EnableChannel(device, LMS_CH_RX, 0, false); + LMS_EnableChannel(device, LMS_CH_RX, 1, false); + // Enable our Tx channel + LMS_EnableChannel(device, LMS_CH_TX, channel, true); + + int setLOFrequency = LMS_SetLOFrequency(device, LMS_CH_TX, channel, TX_FREQUENCY); + if (setLOFrequency) + printf("setLOFrequency(%lf)=%d(%s)" "\n", TX_FREQUENCY, setLOFrequency, LMS_GetLastErrorMessage()); + + // Set sample rate. + lms_range_t sampleRateRange; + int getSampleRateRange = LMS_GetSampleRateRange(device, LMS_CH_TX, &sampleRateRange); + if (getSampleRateRange) + printf("getSampleRateRange=%d(%s)" "\n", getSampleRateRange, LMS_GetLastErrorMessage()); + else + { + printf("sampleRateRange [%lf MHz.. %lf MHz] (step=%lf Hz)" "\n", sampleRateRange.min / 1e6, sampleRateRange.max / 1e6, sampleRateRange.step); + } + + printf("Set sample rate to %lf ..." "\n", sampleRate); + int setSampleRate = LMS_SetSampleRate(device, sampleRate, 0); + if (setSampleRate) + printf("setSampleRate=%d(%s)" "\n", setSampleRate, LMS_GetLastErrorMessage()); + + double actualHostSampleRate = 0.0; + double actualRFSampleRate = 0.0; + int getSampleRate = LMS_GetSampleRate(device, LMS_CH_TX, channel, &actualHostSampleRate, &actualRFSampleRate); + if (getSampleRate) + printf("getSampleRate=%d(%s)" "\n", getSampleRate, LMS_GetLastErrorMessage()); + else + printf("actualRate %lf (Host) / %lf (RF)" "\n", actualHostSampleRate, actualRFSampleRate); + + printf("Calibrating ..." "\n"); + int calibrate = LMS_Calibrate(device, LMS_CH_TX, channel, TX_BANDWIDTH, 0); + if (calibrate) + printf("calibrate=%d(%s)" "\n", calibrate, LMS_GetLastErrorMessage()); + + printf("Setup TX stream ..." "\n"); + lms_stream_t tx_stream = { .channel = channel,.fifoSize = 1024 * 1024,.throughputVsLatency = 0.5,.isTx = true,.dataFmt = LMS_FMT_I12 }; + int setupStream = LMS_SetupStream(device, &tx_stream); + if (setupStream) + printf("setupStream=%d(%s)" "\n", setupStream, LMS_GetLastErrorMessage()); + + struct s16iq_sample_s { + signed short int i; + signed short int q; + }; + + int nSamples = (int)sampleRate / 100; + struct s16iq_sample_s *sampleBuffer = (struct s16iq_sample_s*)malloc(sizeof(struct s16iq_sample_s) * nSamples); + + LMS_StartStream(&tx_stream); + + int loop = 0; + if ((12 == bits) || (16 == bits)) + { + // File contains interleaved 16-bit IQ values, either with only 12-bit data, or with 16-bit data + while (fread(sampleBuffer, sizeof(struct s16iq_sample_s), nSamples, fp)) + { + loop++; + if (0 == (loop % 100)) + { + struct timeval tv; + gettimeofday(&tv, NULL); + printf("gettimeofday()=> %ld:%06ld ; ", tv.tv_sec, tv.tv_usec); + lms_stream_status_t status; + LMS_GetStreamStatus(&tx_stream, &status); //Obtain TX stream stats + printf("TX rate:%lf MB/s" "\n", status.linkRate / 1e6); + } + if (16 == bits) + { + // Scale down to 12-bit + // Quick and dirty, so -1 (0xFFFF) to -15 (0xFFF1) scale down to -1 instead of 0 + int i = 0; + while (i < nSamples) { + sampleBuffer[i].i >>= 4; + sampleBuffer[i].q >>= 4; + i++; + } + } + int sendStream = LMS_SendStream(&tx_stream, sampleBuffer, nSamples, NULL, 1000); + if (sendStream < 0) + printf("sendStream %d(%s)" "\n", sendStream, LMS_GetLastErrorMessage()); + } + } + else if (8 == bits) + { + // File contains interleaved signed 8-bit IQ values + struct s8iq_sample_s { + signed char i; + signed char q; + }; + struct s8iq_sample_s *fileSamples = (struct s8iq_sample_s*)malloc(sizeof(struct s8iq_sample_s) * nSamples); + while (fread(fileSamples, sizeof(struct s8iq_sample_s), nSamples, fp)) + { + loop++; + if (0 == (loop % 100)) + { + struct timeval tv; + gettimeofday(&tv, NULL); + printf("gettimeofday()=> %ld:%06ld ; ", tv.tv_sec, tv.tv_usec); + lms_stream_status_t status; + LMS_GetStreamStatus(&tx_stream, &status); //Obtain TX stream stats + printf("TX rate:%lf MB/s" "\n", status.linkRate / 1e6); + } + // Up-Scale to 12-bit + int i = 0; + while (i < nSamples) + { + sampleBuffer[i].i = (fileSamples[i].i << 4); + sampleBuffer[i].q = (fileSamples[i].q << 4); + i++; + } + int sendStream = LMS_SendStream(&tx_stream, sampleBuffer, nSamples, NULL, 1000); + if (sendStream < 0) + printf("sendStream %d(%s)" "\n", sendStream, LMS_GetLastErrorMessage()); + } + free(fileSamples); + } + else if (1 == bits) + { + // File contains interleaved signed 1-bit IQ values + // Each byte is IQIQIQIQ + int16_t expand_lut[256][8]; + int i, j; + for (i = 0; i<256; i++) + { + for (j = 0; j<8; j++) + expand_lut[i][j] = ((i >> (7 - j)) & 0x1) ? dynamic : -dynamic; + } + printf("1-bit mode: using dynamic=%d" "\n", dynamic); + // printf("sizeof(expand_lut[][])=%d, sizeof(expand_lut[0])=%d" "\n", sizeof(expand_lut), sizeof(expand_lut[0])); + int8_t *fileBuffer = (int8_t*)malloc(sizeof(int8_t) * nSamples); + while (fread(fileBuffer, sizeof(int8_t), nSamples / 4, fp)) + { + loop++; + if (0 == (loop % 100)) + { + struct timeval tv; + gettimeofday(&tv, NULL); + printf("gettimeofday()=> %ld:%06ld ; ", tv.tv_sec, tv.tv_usec); + lms_stream_status_t status; + LMS_GetStreamStatus(&tx_stream, &status); //Obtain TX stream stats + printf("TX rate:%lf MB/s" "\n", status.linkRate / 1e6); + } + // Expand + int src = 0; + int dst = 0; + while (src < (nSamples / 4)) + { + memcpy(sampleBuffer + dst, expand_lut + fileBuffer[src], sizeof(expand_lut[0])); + dst += 4; + src++; + } + int sendStream = LMS_SendStream(&tx_stream, sampleBuffer, nSamples, NULL, 1000); + if (sendStream < 0) + printf("sendStream %d(%s)" "\n", sendStream, LMS_GetLastErrorMessage()); + } + free(fileBuffer); + } + + LMS_StopStream(&tx_stream); + LMS_DestroyStream(device, &tx_stream); + + free(sampleBuffer); + + printf("Closing device...\n"); + LMS_EnableChannel(device, LMS_CH_TX, channel, false); + LMS_Close(device); + + // Close TX file + fclose(fp); + + printf("Done.\n"); + + return(0); +} + From 11afca23b072f1d04a08b21a08e36fcb9142a693 Mon Sep 17 00:00:00 2001 From: OSQZSS Date: Sun, 7 Jan 2018 13:16:59 +0900 Subject: [PATCH 13/42] Default TX antenna port --- player/limeplayer_win/Default_TX_Antenna.jpg | Bin 0 -> 160456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 player/limeplayer_win/Default_TX_Antenna.jpg diff --git a/player/limeplayer_win/Default_TX_Antenna.jpg b/player/limeplayer_win/Default_TX_Antenna.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db7863694b320219b4ebe68eb4f0f1ccbf974efb GIT binary patch literal 160456 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 I$p7B{AGFssApigX literal 0 HcmV?d00001 From b7eaedc2eb136772bfc863882d0502eddbced2f2 Mon Sep 17 00:00:00 2001 From: OSQZSS Date: Sun, 7 Jan 2018 14:03:32 +0900 Subject: [PATCH 14/42] Windows port of ingenico-zanetti's limeplayer --- player/limeplayer_win/limeplayer.png | Bin 0 -> 24753 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 player/limeplayer_win/limeplayer.png diff --git a/player/limeplayer_win/limeplayer.png b/player/limeplayer_win/limeplayer.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a1ba29f3959570a2e72b44f39dae754b5748e5 GIT binary patch literal 24753 zcmb4qbzD@@+U^)gDxruVAp)XwhXSL3q;$y;LpKZ|4Kt{Og3=)^B{>XILn9z94oFE$ zcgGMj%-wj-ch324{qCKAV6R?lujhH+^}K7p*Hl-$PR2k60)eh8E6HnvKv&E`pvxeV z%Rox-*L^k+=pIN}{+X^%+Gb;86jNvQ$|zeG3!-)MShF+t^G4c&n@j)eOK%ll6WuXW zX}e_KR`!Uv=eymfM>Pu^AI@^SRA{?ji`WxK`MrO|ChNia^JDk-Z}bwbHB1}HHk+p} ztJaF^kEWYht~zLJ7FFpZAtsGpo}Sq5)ssbF03eXr&aME(c2iS*HT}h7KRICsHzNa? zxOVZha>HHz;%^zN;?;}4cmJ=CsZk-@rVXc2%H>VCne$~K%Zn2CEzs(ZQv9_D7&#qLx8)N``_Qu!rWRL9i4{yPt$2!;NjlJ#$qogrv{%) zrN6HYt`_fzezCB&IL6Zm>g*~uuc`C#_3|3bBID}Wr8j)aG1^{RL%$Pju0}lpHlWk^ z3H%sdrfz6w4su12gT7rVCoLiom6R6F@^(1L}*7GLJ7b>(_mo<>1HQCOi#Nw;%*Zh zf6$V?nd!|e73jCzhW5^Y z8jg4CJE2!me(3LF?mlN{{8%vFYT|maoSM(h!QuKS3fer~5O}-<16pcx-R;bufr$ZW zz+2o|%tAvO% zEe8D4Qi#1i%FICg!A}7SZyAJ7Ds2-!(C2vAfHG`m=0=-$SAApCWh5Q-YkHECj(x*lmgz`Qa43?T^Oc@_HG>X9YL#!9x@-q|m zfYGs(rlcCIF7*zCMi(b({5(IJ+L@a9>B6T5;}?L}bouNqEOhrqaH6l7PI)MW0e*-bzh5g=`Vpg^9Rz?XIOq2`SuWed*4%F>sscZQ}sVX5Je^qJ7LKCUNx6MPc?qnTO?d{yK`$a zW%-q>N4?kMV|RHhq=JyLh>3#nu@Z2{OAKpAb*uB4;w+^;Q#isBVkvJZmD>UgW_Ce+ z?3+m$Et+YnY1XqeWytU(;Cx)%icdBpOvr5xBqqxOgC(&dfc z;5u$Ddq?f_Q>uMWI;LKAitR0TdUTm}! zRO);pif#tJ*O}T04R}J)Mi-Sya1*6yChU#T{S=*=;OH^zo0vf)C-H6vobQ}dwh2&7 zw5E1YHu>%11~d#bz=T&m=Yzw87{uvp1*(}j1E?La2kh?r8OpYu?tE;s|M|k;Z1Ev9VkB@Q)_@;&GtV}U`zQw;b&EyEgM3d-hYVT!g=syH;zb#JPoE!c@rM;OaD zXv++ntpLx|uJ%kKHDnqIOHswME$L4*ngj8#?t~UcaAr!;i;3$SU$luE+=hZ1g(