From f991b0e35ad1bd3b999c70e68c518bae91bd36a6 Mon Sep 17 00:00:00 2001 From: Sylvain Miermont Date: Fri, 28 Mar 2014 16:58:48 +0100 Subject: v1.3.0 - Added TX power management. - Added full support for SX1301 reference board. - Changed build system with configuration for multiple chip/radio/band support. - SX125x bandwidth set to 1MHz by default (was 800 kHz). - Solved warnings with 64b integer printf when compiling on x86_64. - Renamed helper programs to reduce the concentrator vs. gateway confusion. --- loragw_spi_stress/LICENSE.TXT | 24 --- loragw_spi_stress/Makefile | 35 ---- loragw_spi_stress/README | 68 ------- loragw_spi_stress/obj/.gitkeep | 0 loragw_spi_stress/src/loragw_spi_stress.c | 291 ------------------------------ 5 files changed, 418 deletions(-) delete mode 100644 loragw_spi_stress/LICENSE.TXT delete mode 100644 loragw_spi_stress/Makefile delete mode 100644 loragw_spi_stress/README delete mode 100644 loragw_spi_stress/obj/.gitkeep delete mode 100644 loragw_spi_stress/src/loragw_spi_stress.c (limited to 'loragw_spi_stress') diff --git a/loragw_spi_stress/LICENSE.TXT b/loragw_spi_stress/LICENSE.TXT deleted file mode 100644 index ff287f3..0000000 --- a/loragw_spi_stress/LICENSE.TXT +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2013, SEMTECH S.A. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * 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. - * Neither the name of the Semtech corporation 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 COPYRIGHT HOLDERS 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 SEMTECH S.A. 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. diff --git a/loragw_spi_stress/Makefile b/loragw_spi_stress/Makefile deleted file mode 100644 index 4006dc3..0000000 --- a/loragw_spi_stress/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -### Application-specific constants - -APP_NAME=loragw_spi_stress - -### constant symbols -CROSS_COMPILE= -CC=gcc -CFLAGS=-O2 -Wall -Wextra -Iinc -C99FLAGS=-O2 -Wall -Wextra -std=c99 -Iinc -FLAG_AUX= - -### constants for Lora Gateway HAL library - -LGW_PATH=../libloragw -LGW_INC=-I$(LGW_PATH)/inc - -LGW_LNK=-lloragw -lrt -lmpsse -#LGW_LNK=-lloragw -lrt -# add libmpsse or not, depending on what option you compiled the libloragw with - -### general build targets - -all: $(APP_NAME) - -clean: - rm -f obj/*.o - rm -f $(APP_NAME) - -### main program compilation and assembly - -obj/$(APP_NAME).o: src/$(APP_NAME).c - $(CROSS_COMPILE)$(CC) -c $(C99FLAGS) -o obj/$(APP_NAME).o $(LGW_INC) src/$(APP_NAME).c $(FLAG_AUX) - -$(APP_NAME): $(LGW_PATH)/libloragw.a obj/$(APP_NAME).o - $(CROSS_COMPILE)$(CC) -o $(APP_NAME) obj/$(APP_NAME).o -L$(LGW_PATH) $(LGW_LNK) diff --git a/loragw_spi_stress/README b/loragw_spi_stress/README deleted file mode 100644 index 98c4f40..0000000 --- a/loragw_spi_stress/README +++ /dev/null @@ -1,68 +0,0 @@ - / _____) _ | | - ( (____ _____ ____ _| |_ _____ ____| |__ - \____ \| ___ | (_ _) ___ |/ ___) _ \ - _____) ) ____| | | || |_| ____( (___| | | | - (______/|_____)_|_|_| \__)_____)\____)_| |_| - ©2013 Semtech-Cycleo - -Lora Gateway SPI stress test -============================= - -1. Introduction ----------------- - -This software is used to check the reliability of the link between the host -platform (on which the program is run) and the Lora concentrator register file -that is the interface through which all interaction with the Lora concentrator -happens. - -2. Dependencies ----------------- - -This program only access the Lora gateway HAL library through its loragw_reg -"named registers" access sub-module. - -It was tested with v1.0.0 of the libloragw library, and should be compatible -with any later version of the library and the hardware, assuming the registers -used for the tests are still present. - -The registers used are: - * LGW_VERSION - * LGW_IMPLICIT_PAYLOAD_LENGHT - * LGW_FSK_REF_PATTERN_LSB - * LGW_RX_DATA_BUF_ADDR - * LGW_RX_DATA_BUF_DATA - -A data buffer accessible through the 2 registers above must be implemented. - -3. Usage ---------- - -The tests run forever or until an error is detected. -Press Ctrl+C to stop the application. - -When an error is detected, diagnosis information are displayed. Please refer to -the source code for more details on what is displayed for diagnosis. - -All tests use pseudo-random data generated by the rand() function. The random -generator is not seeded, and the same sequence of data will be use each time the -program is launched. - -Basically, some random data is written, read back and then compared to the -initial written data. Some "useless" read on others registers might be inserted -to be sure that the data read back is coming from the hardware, and not from the -internal buffer(s) of the software driver(s). - -Test 1 > R/W on a simple 8-bit register - -Test 2 > R/W on a simple 8-bit register with interstitial reads on VERSION - -Test 3 > R/W on a 32-bit register (short SPI bursts access) - -Test 4 > data buffer R/W (long SPI bursts access) - -4. Changelog -------------- - -2013-10-24, v1 -Initial version. diff --git a/loragw_spi_stress/obj/.gitkeep b/loragw_spi_stress/obj/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/loragw_spi_stress/src/loragw_spi_stress.c b/loragw_spi_stress/src/loragw_spi_stress.c deleted file mode 100644 index 2c9f2e2..0000000 --- a/loragw_spi_stress/src/loragw_spi_stress.c +++ /dev/null @@ -1,291 +0,0 @@ -/* - / _____) _ | | -( (____ _____ ____ _| |_ _____ ____| |__ - \____ \| ___ | (_ _) ___ |/ ___) _ \ - _____) ) ____| | | || |_| ____( (___| | | | -(______/|_____)_|_|_| \__)_____)\____)_| |_| - ©2013 Semtech-Cycleo - -Description: - SPI stress test - -License: Revised BSD License, see LICENSE.TXT file include in the project -Maintainer: Sylvain Miermont -*/ - - -/* -------------------------------------------------------------------------- */ -/* --- DEPENDANCIES --------------------------------------------------------- */ - -/* fix an issue between POSIX and C99 */ -#if __STDC_VERSION__ >= 199901L - #define _XOPEN_SOURCE 600 -#else - #define _XOPEN_SOURCE 500 -#endif - -#include /* C99 types */ -#include /* bool type */ -#include /* printf fprintf sprintf fopen fputs */ - -#include /* sigaction */ -#include /* getopt access */ -#include /* rand */ - -#include "loragw_reg.h" - -/* -------------------------------------------------------------------------- */ -/* --- PRIVATE MACROS ------------------------------------------------------- */ - -#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) -#define MSG(args...) fprintf(stderr, args) /* message that is destined to the user */ - -/* -------------------------------------------------------------------------- */ -/* --- PRIVATE CONSTANTS ---------------------------------------------------- */ - -#define VERS 103 -#define READS_WHEN_ERROR 16 /* number of times a read is repeated if there is a read error */ -#define BUFF_SIZE 1024 - -/* -------------------------------------------------------------------------- */ -/* --- PRIVATE VARIABLES (GLOBAL) ------------------------------------------- */ - -/* signal handling variables */ -struct sigaction sigact; /* SIGQUIT&SIGINT&SIGTERM signal handling */ -static int exit_sig = 0; /* 1 -> application terminates cleanly (shut down hardware, close open files, etc) */ -static int quit_sig = 0; /* 1 -> application terminates without shutting down the hardware */ - -/* -------------------------------------------------------------------------- */ -/* --- PRIVATE FUNCTIONS DECLARATION ---------------------------------------- */ - -static void sig_handler(int sigio); - -void usage (void); - -/* -------------------------------------------------------------------------- */ -/* --- PRIVATE FUNCTIONS DEFINITION ----------------------------------------- */ - -static void sig_handler(int sigio) { - if (sigio == SIGQUIT) { - quit_sig = 1;; - } else if ((sigio == SIGINT) || (sigio == SIGTERM)) { - exit_sig = 1; - } -} - -/* describe command line options */ -void usage(void) { - MSG( "Available options:\n"); - MSG( " -h print this help\n"); - MSG( " -t specify which test you want to run (1-4)\n"); -} - -/* -------------------------------------------------------------------------- */ -/* --- MAIN FUNCTION -------------------------------------------------------- */ - -int main(int argc, char **argv) -{ - int i; - int xi = 0; - - /* application option */ - int test_number = 1; - int cycle_number = 0; - int repeats_per_cycle = 1000; - bool error = false; - - /* in/out variables */ - int32_t test_value; - int32_t read_value; - int32_t rb1, rb2, rb3; /* interstitial readbacks, to flush buffers if needed */ - - /* data buffer */ - int32_t test_addr; - uint8_t test_buff[BUFF_SIZE]; - uint8_t read_buff[BUFF_SIZE]; - - /* parse command line options */ - while ((i = getopt (argc, argv, "ht:")) != -1) { - switch (i) { - case 'h': - usage(); - return EXIT_FAILURE; - break; - - case 't': - i = sscanf(optarg, "%i", &xi); - if ((i != 1) || (xi < 1) || (xi > 4)) { - MSG("ERROR: invalid test number\n"); - return EXIT_FAILURE; - } else { - test_number = xi; - } - break; - - default: - MSG("ERROR: argument parsing use -h option for help\n"); - usage(); - return EXIT_FAILURE; - } - } - MSG("INFO: Starting Lora concentrator SPI stress-test number %i\n", test_number); - - /* configure signal handling */ - sigemptyset(&sigact.sa_mask); - sigact.sa_flags = 0; - sigact.sa_handler = sig_handler; - sigaction(SIGQUIT, &sigact, NULL); - sigaction(SIGINT, &sigact, NULL); - sigaction(SIGTERM, &sigact, NULL); - - /* start SPI link */ - i = lgw_connect(); - if (i != LGW_REG_SUCCESS) { - MSG("ERROR: lgw_connect() did not return SUCCESS"); - return EXIT_FAILURE; - } - - if (test_number == 1) { - /* single 8b register R/W stress test */ - while ((quit_sig != 1) && (exit_sig != 1)) { - printf("Cycle %i > ", cycle_number); - for (i=0; i ", cycle_number); - for (i=0; i ", cycle_number); - for (i=0; i ", cycle_number); - test_addr = rand() & 0xFFFF; - lgw_reg_w(LGW_RX_DATA_BUF_ADDR, test_addr); /* write at random offset in memory */ - lgw_reg_wb(LGW_RX_DATA_BUF_DATA, test_buff, BUFF_SIZE); - lgw_reg_w(LGW_RX_DATA_BUF_ADDR, test_addr); /* go back to start of segment */ - lgw_reg_rb(LGW_RX_DATA_BUF_DATA, read_buff, BUFF_SIZE); - for (i=0; ((i