diff --git a/software/libcariboulite/src/at86rf215/build/CMakeFiles/at86rf215.dir/C.includecache b/software/libcariboulite/src/at86rf215/build/CMakeFiles/at86rf215.dir/C.includecache index d9e2d2f..2d79720 100644 --- a/software/libcariboulite/src/at86rf215/build/CMakeFiles/at86rf215.dir/C.includecache +++ b/software/libcariboulite/src/at86rf215/build/CMakeFiles/at86rf215.dir/C.includecache @@ -88,32 +88,6 @@ at86rf215_common.h at86rf215_radio.h /home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_radio.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_baseband.c -stdint.h -- -math.h -- -string.h -- -stdbool.h -- -stdio.h -- -zf_log/zf_log.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/zf_log/zf_log.h -io_utils/io_utils.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/io_utils/io_utils.h -io_utils/io_utils_spi.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/io_utils/io_utils_spi.h -at86rf215_radio.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_radio.h -at86rf215_baseband.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_baseband.h -at86rf215_regs.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_regs.h - -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_baseband.h - /home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_common.h stdio.h - @@ -134,36 +108,6 @@ io_utils/io_utils_spi.h at86rf215_regs.h /home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_regs.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_events.c -stdio.h -- -zf_log/zf_log.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/zf_log/zf_log.h -at86rf215_common.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_common.h - -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_radio.c -stdint.h -- -math.h -- -string.h -- -stdbool.h -- -stdio.h -- -zf_log/zf_log.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/zf_log/zf_log.h -io_utils/io_utils.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/io_utils/io_utils.h -io_utils/io_utils_spi.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/io_utils/io_utils_spi.h -at86rf215_radio.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_radio.h -at86rf215_regs.h -/home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_regs.h - /home/pi/projects/cariboulite/software/libcariboulite/src/at86rf215/at86rf215_radio.h stdio.h - diff --git a/software/libcariboulite/src/at86rf215/build/test_at86rf215 b/software/libcariboulite/src/at86rf215/build/test_at86rf215 index 598b709..33e0602 100755 Binary files a/software/libcariboulite/src/at86rf215/build/test_at86rf215 and b/software/libcariboulite/src/at86rf215/build/test_at86rf215 differ diff --git a/software/libcariboulite/src/at86rf215/test_at86rf215.c b/software/libcariboulite/src/at86rf215/test_at86rf215.c index ee2376c..0a6b8dc 100644 --- a/software/libcariboulite/src/at86rf215/test_at86rf215.c +++ b/software/libcariboulite/src/at86rf215/test_at86rf215.c @@ -167,7 +167,7 @@ int test_at86rf215_continues_iq_loopback (at86rf215_st* dev, at86rf215_rf_channe #define TEST_VERSIONS 1 #define TEST_FREQ_SWEEP 0 #define TEST_IQ_RX_WIND 1 -#define TEST_IQ_RX_WIND_RAD 1 +#define TEST_IQ_RX_WIND_RAD 0 #define TEST_IQ_LB_WIND 0 // ----------------------------------------------------------------------------------------- diff --git a/software/libcariboulite/src/caribou_smi/build/test_caribou_smi b/software/libcariboulite/src/caribou_smi/build/test_caribou_smi index dc29765..86a7d4c 100755 Binary files a/software/libcariboulite/src/caribou_smi/build/test_caribou_smi and b/software/libcariboulite/src/caribou_smi/build/test_caribou_smi differ diff --git a/software/libcariboulite/src/caribou_smi/caribou_smi.c b/software/libcariboulite/src/caribou_smi/caribou_smi.c index c44addd..96853e1 100644 --- a/software/libcariboulite/src/caribou_smi/caribou_smi.c +++ b/software/libcariboulite/src/caribou_smi/caribou_smi.c @@ -123,7 +123,7 @@ int caribou_smi_timeout_read(caribou_smi_st* dev, int timeout_num_millisec) { fd_set set; - struct timeval timeout; + struct timeval timeout = {0}; int rv; // set the address @@ -147,17 +147,37 @@ int caribou_smi_timeout_read(caribou_smi_st* dev, return -1; } - FD_ZERO(&set); // clear the set - FD_SET(dev->filedesc, &set); // add our file descriptor to the set + FD_ZERO(&set); // clear the set mask + FD_SET(dev->filedesc, &set); // add our file descriptor to the set - and only it int num_sec = timeout_num_millisec / 1000; timeout.tv_sec = num_sec; timeout.tv_usec = (timeout_num_millisec - num_sec*1000) * 1000; +again: rv = select(dev->filedesc + 1, &set, NULL, NULL, &timeout); if(rv == -1) { - ZF_LOGE("smi fd select error"); + int error = errno; + switch(error) + { + case EBADF: // An invalid file descriptor was given in one of the sets. + // (Perhaps a file descriptor that was already closed, or one on which an error has occurred.) + ZF_LOGE("SMI filedesc select error - invalid file descriptor in one of the sets"); + break; + case EINTR: // A signal was caught. + ZF_LOGD("SMI filedesc select error - caught an interrupting signal"); + goto again; + break; + case EINVAL: // nfds is negative or the value contained within timeout is invalid. + ZF_LOGE("SMI filedesc select error - nfds is negative or invalid timeout"); + break; + case ENOMEM: // unable to allocate memory for internal tables. + ZF_LOGE("SMI filedesc select error - internal tables allocation failed"); + break; + default: break; + }; + return -1; } else if(rv == 0) @@ -165,8 +185,11 @@ int caribou_smi_timeout_read(caribou_smi_st* dev, ZF_LOGD("smi fd timeout"); return 0; } - - return read(dev->filedesc, buffer, size_of_buf); + else if (FD_ISSET(dev->filedesc, &set)) + { + return read(dev->filedesc, buffer, size_of_buf); + } + return -1; } //========================================================================= @@ -301,7 +324,7 @@ void* caribou_smi_thread(void *arg) } //ZF_LOGD("3"); - int ret = caribou_smi_timeout_read(dev, st->addr, (char*)st->current_smi_buffer, st->batch_length, 10); + int ret = caribou_smi_timeout_read(dev, st->addr, (char*)st->current_smi_buffer, st->batch_length, 100); if (ret < 0) { ZF_LOGE("caribou_smi_timeout_read failed"); diff --git a/software/libcariboulite/src/caribou_smi/test_caribou_smi.c b/software/libcariboulite/src/caribou_smi/test_caribou_smi.c index d9c4db1..930ba24 100644 --- a/software/libcariboulite/src/caribou_smi/test_caribou_smi.c +++ b/software/libcariboulite/src/caribou_smi/test_caribou_smi.c @@ -136,7 +136,7 @@ void caribou_smi_error_event( void *ctx, caribou_smi_channel_en ch, caribou_smi_ ZF_LOGD("Error (from %s) occured in channel %d, err# %d (%s)\n", (char*)ctx, ch, err, caribou_smi_get_error_string(err)); } -#if 1 +#if 0 caribou_smi_address_en address = caribou_smi_address_read_2400; caribou_smi_channel_en channel = caribou_smi_channel_2400; #else