mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			Merge pull request #9654 from anttiylitokola/mbed-coap-to-4.7.4
Update mbed-coap to version 4.7.4pull/9741/head
						commit
						a3500a3040
					
				| 
						 | 
				
			
			@ -1,5 +0,0 @@
 | 
			
		|||
# need unity.h:
 | 
			
		||||
unittest/*
 | 
			
		||||
test/*
 | 
			
		||||
doxygen/*
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,15 @@
 | 
			
		|||
# Change Log
 | 
			
		||||
 | 
			
		||||
## [v4.7.4](https://github.com/ARMmbed/mbed-coap/releases/tag/v4.7.4) 
 | 
			
		||||
 | 
			
		||||
- Remove dependency to yotta tool
 | 
			
		||||
- Do not remove stored (GET) blockwise message when EMPTY ACK received
 | 
			
		||||
    When non piggybacked response mode is used original GET request must not be removed from the stored message list.
 | 
			
		||||
    Message is needed for building the next (GET) blockwise message.
 | 
			
		||||
- Move definitions to sn_config.h
 | 
			
		||||
 | 
			
		||||
-[Full Changelog](https://github.com/ARMmbed/mbed-coap/compare/v4.7.3...v4.7.4)
 | 
			
		||||
 | 
			
		||||
## [v4.7.3](https://github.com/ARMmbed/mbed-coap/releases/tag/v4.7.3) 
 | 
			
		||||
 | 
			
		||||
- Do not store EMPTY response to blockwise list
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,28 @@ TESTDIRS := $(UNITTESTS:%=build-%)
 | 
			
		|||
CLEANTESTDIRS := $(UNITTESTS:%=clean-%)
 | 
			
		||||
COVERAGEFILE := ./lcov/coverage.info
 | 
			
		||||
 | 
			
		||||
TEST_MODULES = ./test_modules
 | 
			
		||||
TEST_MODULE_MBED_TRACE = $(TEST_MODULES)/mbed-trace
 | 
			
		||||
TEST_MODULE_NANOSTACK = $(TEST_MODULES)/nanostack-libservice
 | 
			
		||||
TEST_MODULE_RANDLIB = $(TEST_MODULES)/mbed-client-randlib
 | 
			
		||||
 | 
			
		||||
.PHONY: clone
 | 
			
		||||
clone:
 | 
			
		||||
	if [ ! -d $(TEST_MODULES) ]; \
 | 
			
		||||
		then mkdir $(TEST_MODULES); \
 | 
			
		||||
	fi;
 | 
			
		||||
 | 
			
		||||
	if [ ! -d $(TEST_MODULE_MBED_TRACE) ]; \
 | 
			
		||||
		then git clone --depth 1 git@github.com:ARMmbed/mbed-trace.git $(TEST_MODULE_MBED_TRACE); \
 | 
			
		||||
	fi;
 | 
			
		||||
 | 
			
		||||
	if [ ! -d $(TEST_MODULE_NANOSTACK) ]; \
 | 
			
		||||
		then git clone --depth 1 git@github.com:ARMmbed/nanostack-libservice.git $(TEST_MODULE_NANOSTACK); \
 | 
			
		||||
	fi;
 | 
			
		||||
 | 
			
		||||
	if [ ! -d $(TEST_MODULE_RANDLIB) ]; \
 | 
			
		||||
		then git clone --depth 1 git@github.com:ARMmbed/mbed-client-randlib.git $(TEST_MODULE_RANDLIB); \
 | 
			
		||||
	fi;
 | 
			
		||||
.PHONY: test
 | 
			
		||||
test: $(TESTDIRS)
 | 
			
		||||
	@rm -rf ./lcov
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +49,7 @@ test: $(TESTDIRS)
 | 
			
		|||
	@rm -f lcov/index.xml
 | 
			
		||||
	@find ./ -name '*.gcno' | xargs cp --backup=numbered -t ./coverage/
 | 
			
		||||
	@find ./ -name '*.gcda' | xargs cp --backup=numbered -t ./coverage/
 | 
			
		||||
	@gcovr --object-directory ./coverage  --exclude-unreachable-branches -e '.*/builds/.*' -e '.*/test/.*' -e '.*/yotta_modules/.*' -e '.*/stubs/.*' -e '.*/mbed-coap/.*' -x -o ./lcov/gcovr.xml
 | 
			
		||||
	@gcovr --object-directory ./coverage  --exclude-unreachable-branches -e '.*/builds/.*' -e '.*/test/.*' -e '.*/stubs/.*' -e '.*/mbed-coap/.*' -x -o ./lcov/gcovr.xml
 | 
			
		||||
	@lcov -d test/. -c -o $(COVERAGEFILE)
 | 
			
		||||
	@lcov -q -r $(COVERAGEFILE) "/usr*" -o $(COVERAGEFILE)
 | 
			
		||||
	@lcov -q -r $(COVERAGEFILE) "/test*" -o $(COVERAGEFILE)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,10 @@
 | 
			
		|||
#ifndef SN_CONFIG_H
 | 
			
		||||
#define SN_CONFIG_H
 | 
			
		||||
 | 
			
		||||
#ifdef MBED_CLIENT_USER_CONFIG_FILE
 | 
			
		||||
#include MBED_CLIENT_USER_CONFIG_FILE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* \brief Configuration options (set of defines and values)
 | 
			
		||||
*
 | 
			
		||||
| 
						 | 
				
			
			@ -30,9 +34,15 @@
 | 
			
		|||
 * \brief For Message duplication detection
 | 
			
		||||
 * Init value for the maximum count of messages to be stored for duplication detection
 | 
			
		||||
 * Setting of this value to 0 will disable duplication check, also reduce use of ROM memory
 | 
			
		||||
 * Default is set to 1.
 | 
			
		||||
 * Default is set to 0.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_DUPLICATION_MAX_MSGS_COUNT   /* 1 */
 | 
			
		||||
#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT              0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
| 
						 | 
				
			
			@ -42,7 +52,13 @@
 | 
			
		|||
 * also reduce use of ROM memory.
 | 
			
		||||
 * Note: This define is common for both received and sent Blockwise messages
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE   /* 0 */ // < Must be 2^x and x is at least 4. Suitable values: 0, 16, 32, 64, 128, 256, 512 and 1024
 | 
			
		||||
#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE              0  /**< Must be 2^x and x is at least 4. Suitable values: 0, 16, 32, 64, 128, 256, 512 and 1024 */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_DISABLE_RESENDINGS
 | 
			
		||||
| 
						 | 
				
			
			@ -50,21 +66,33 @@
 | 
			
		|||
 * when using CoAP with TCP transport for example. By default resendings are
 | 
			
		||||
 * enabled. Set to 1 to disable.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_DISABLE_RESENDINGS          /* 0 */ // < Default re-sending are not disabled. Set to 1 to disable re-sendings
 | 
			
		||||
#ifdef SN_COAP_DISABLE_RESENDINGS
 | 
			
		||||
#define ENABLE_RESENDINGS                               0   /** Disable resendings **/
 | 
			
		||||
#else
 | 
			
		||||
#define ENABLE_RESENDINGS                               1   /**< Enable / Disable resending from library in building */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
 * \brief Sets the number of messages stored
 | 
			
		||||
 * in the resending queue. Default is 2
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_RESENDING_QUEUE_SIZE_MSGS    /* 2  */ // < Default re-sending queue size - defines how many messages can be stored. Setting this to 0 disables feature
 | 
			
		||||
#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS               2   /**< Default re-sending queue size - defines how many messages can be stored. Setting this to 0 disables feature */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def DEFAULT_RESPONSE_TIMEOUT
 | 
			
		||||
 * \brief Sets the CoAP re-send interval in seconds.
 | 
			
		||||
 * By default is 10 seconds.
 | 
			
		||||
 */
 | 
			
		||||
#undef DEFAULT_RESPONSE_TIMEOUT
 | 
			
		||||
#ifndef DEFAULT_RESPONSE_TIMEOUT
 | 
			
		||||
#define DEFAULT_RESPONSE_TIMEOUT                        10  /**< Default re-sending timeout as seconds */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +100,13 @@
 | 
			
		|||
 * Setting this to 0 disables this feature.
 | 
			
		||||
 * By default, this feature is disabled.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_RESENDING_QUEUE_SIZE_BYTES   /* 0  */ // Default re-sending queue size - defines size of the re-sending buffer. Setting this to 0 disables feature
 | 
			
		||||
#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES              0   /**< Default re-sending queue size - defines size of the re-sending buffer. Setting this to 0 disables feature */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_INCOMING_MESSAGE_SIZE
 | 
			
		||||
| 
						 | 
				
			
			@ -83,7 +117,9 @@
 | 
			
		|||
 * available storage capability.
 | 
			
		||||
 * By default, maximum size is UINT16_MAX, 65535 bytes.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_INCOMING_MESSAGE_SIZE    /* UINT16_MAX */
 | 
			
		||||
#ifndef SN_COAP_MAX_INCOMING_MESSAGE_SIZE
 | 
			
		||||
#define SN_COAP_MAX_INCOMING_MESSAGE_SIZE               UINT16_MAX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
| 
						 | 
				
			
			@ -98,21 +134,27 @@
 | 
			
		|||
 * Note that value should be less than transport layer maximum fragment size.
 | 
			
		||||
 * Note that value has no effect if blockwise transfer is disabled.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE        /* 0 */
 | 
			
		||||
#ifndef SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#define SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE           0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_BLOCKWISE_ENABLED
 | 
			
		||||
 * \brief Enables the blockwise functionality in CoAP library also when blockwise payload
 | 
			
		||||
 * size is set to '0' in  SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_BLOCKWISE_ENABLED                    /* 0 */
 | 
			
		||||
#ifndef SN_COAP_BLOCKWISE_ENABLED
 | 
			
		||||
#define SN_COAP_BLOCKWISE_ENABLED                       0  /**< Enable blockwise */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_RESENDING_MAX_COUNT
 | 
			
		||||
 * \brief Defines how many times CoAP library tries to re-send the CoAP packet.
 | 
			
		||||
 * By default value is 3.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_RESENDING_MAX_COUNT                    /* 3 */
 | 
			
		||||
#ifndef SN_COAP_RESENDING_MAX_COUNT
 | 
			
		||||
#define SN_COAP_RESENDING_MAX_COUNT                     3
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_ALLOWED_RESENDING_COUNT
 | 
			
		||||
| 
						 | 
				
			
			@ -120,7 +162,9 @@
 | 
			
		|||
 * 'sn_coap_protocol_set_retransmission_parameters()' API.
 | 
			
		||||
 * By default value is 6.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_ALLOWED_RESENDING_COUNT            /* 6 */
 | 
			
		||||
#ifndef SN_COAP_MAX_ALLOWED_RESENDING_COUNT
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESENDING_COUNT             6   /**< Maximum allowed count of re-sending */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT
 | 
			
		||||
| 
						 | 
				
			
			@ -128,7 +172,9 @@
 | 
			
		|||
 * 'sn_coap_protocol_set_retransmission_parameters()' API.
 | 
			
		||||
 * By default value is 40.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT           /* 40 */
 | 
			
		||||
#ifndef SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT            40  /**< Maximum allowed re-sending timeout */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +182,9 @@
 | 
			
		|||
 * 'sn_coap_protocol_set_retransmission_buffer()' API.
 | 
			
		||||
 * By default value is 6.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS   /* 6 */
 | 
			
		||||
#ifndef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS    6   /**< Maximum allowed number of saved re-sending messages */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES
 | 
			
		||||
| 
						 | 
				
			
			@ -144,7 +192,9 @@
 | 
			
		|||
 * 'sn_coap_protocol_set_retransmission_buffer()' API.
 | 
			
		||||
 * By default value is 512.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES   /* 512 */
 | 
			
		||||
#ifndef SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES   512 /**< Maximum allowed size of re-sending buffer */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT
 | 
			
		||||
| 
						 | 
				
			
			@ -152,14 +202,18 @@
 | 
			
		|||
 * that can be set via 'sn_coap_protocol_set_duplicate_buffer_size' API.
 | 
			
		||||
 * By default value is 6.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT
 | 
			
		||||
#ifndef SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT   6
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED
 | 
			
		||||
 * \brief Maximum time in seconds howe long message is kept for duplicate detection.
 | 
			
		||||
 * By default 60 seconds.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED
 | 
			
		||||
#ifndef SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED
 | 
			
		||||
#define SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED    60 /** RESPONSE_TIMEOUT * RESPONSE_RANDOM_FACTOR * (2 ^ MAX_RETRANSMIT - 1) + the expected maximum round trip time **/
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
| 
						 | 
				
			
			@ -167,17 +221,25 @@
 | 
			
		|||
 * Longer time will increase the memory consumption in lossy networks.
 | 
			
		||||
 * By default 60 seconds.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED      60 /**< Maximum time in seconds of data (messages and payload) to be stored for blockwising */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * \def SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE
 | 
			
		||||
 * \brief Maximum size of blockwise message that can be received.
 | 
			
		||||
 * By default 65535 bytes.
 | 
			
		||||
 */
 | 
			
		||||
#undef SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE
 | 
			
		||||
#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE
 | 
			
		||||
#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef MBED_CLIENT_USER_CONFIG_FILE
 | 
			
		||||
#include MBED_CLIENT_USER_CONFIG_FILE
 | 
			
		||||
#ifndef SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE
 | 
			
		||||
#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE     UINT16_MAX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // SN_CONFIG_H
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,7 +17,6 @@ echo
 | 
			
		|||
echo "Build mbed-coap C unit tests"
 | 
			
		||||
echo
 | 
			
		||||
 | 
			
		||||
yt target x86-linux-native
 | 
			
		||||
yt up
 | 
			
		||||
make -f Makefile.test clone
 | 
			
		||||
make -f Makefile.test test
 | 
			
		||||
#make -f Makefile.test test clean
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,118 +34,13 @@ extern "C" {
 | 
			
		|||
 | 
			
		||||
struct sn_coap_hdr_;
 | 
			
		||||
 | 
			
		||||
/* * * * * * * * * * * */
 | 
			
		||||
/* * * * DEFINES * * * */
 | 
			
		||||
/* * * * * * * * * * * */
 | 
			
		||||
 | 
			
		||||
/* * For Message resending * */
 | 
			
		||||
#ifdef SN_COAP_DISABLE_RESENDINGS
 | 
			
		||||
#define ENABLE_RESENDINGS                               0 /* Disable resendings */
 | 
			
		||||
#else
 | 
			
		||||
#define ENABLE_RESENDINGS                               1   /**< Enable / Disable resending from library in building */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SN_COAP_RESENDING_MAX_COUNT                     3   /**< Default number of re-sendings  */
 | 
			
		||||
 | 
			
		||||
#ifdef YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_RESENDING_QUEUE_SIZE_MSGS
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_MSGS               2   /**< Default re-sending queue size - defines how many messages can be stored. Setting this to 0 disables feature */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES YOTTA_CFG_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES MBED_CONF_MBED_CLIENT_SN_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_RESENDING_QUEUE_SIZE_BYTES
 | 
			
		||||
#define SN_COAP_RESENDING_QUEUE_SIZE_BYTES              0   /**< Default re-sending queue size - defines size of the re-sending buffer. Setting this to 0 disables feature */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define DEFAULT_RESPONSE_TIMEOUT                        10  /**< Default re-sending timeout as seconds */
 | 
			
		||||
 | 
			
		||||
/* These parameters sets maximum values application can set with API */
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESENDING_COUNT             6   /**< Maximum allowed count of re-sending */
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_MSGS    6   /**< Maximum allowed number of saved re-sending messages */
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESENDING_BUFF_SIZE_BYTES   512 /**< Maximum allowed size of re-sending buffer */
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_RESPONSE_TIMEOUT            40  /**< Maximum allowed re-sending timeout */
 | 
			
		||||
 | 
			
		||||
#define RESPONSE_RANDOM_FACTOR                          1.5   /**< Resending random factor, value is specified in IETF CoAP specification */
 | 
			
		||||
 | 
			
		||||
/* * For Message duplication detecting * */
 | 
			
		||||
 | 
			
		||||
/* Init value for the maximum count of messages to be stored for duplication detection          */
 | 
			
		||||
/* Setting of this value to 0 will disable duplication check, also reduce use of ROM memory     */
 | 
			
		||||
#ifdef YOTTA_CFG_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT YOTTA_CFG_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Keep the old flag to maintain backward compatibility
 | 
			
		||||
#ifndef SN_COAP_DUPLICATION_MAX_MSGS_COUNT
 | 
			
		||||
#define SN_COAP_DUPLICATION_MAX_MSGS_COUNT              0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* Maximum allowed number of saved messages for duplicate searching */
 | 
			
		||||
#define SN_COAP_MAX_ALLOWED_DUPLICATION_MESSAGE_COUNT   6
 | 
			
		||||
 | 
			
		||||
/* Maximum time in seconds of messages to be stored for duplication detection */
 | 
			
		||||
#define SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED    60 /* RESPONSE_TIMEOUT * RESPONSE_RANDOM_FACTOR * (2 ^ MAX_RETRANSMIT - 1) + the expected maximum round trip time */
 | 
			
		||||
 | 
			
		||||
/* * For Message blockwising * */
 | 
			
		||||
 | 
			
		||||
/* Init value for the maximum payload size to be sent and received at one blockwise message                         */
 | 
			
		||||
/* Setting of this value to 0 will disable this feature, and also reduce use of ROM memory                          */
 | 
			
		||||
/* Note: This define is common for both received and sent Blockwise messages                                        */
 | 
			
		||||
 | 
			
		||||
#ifdef YOTTA_CFG_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE YOTTA_CFG_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_BLOCKWISE_ENABLED
 | 
			
		||||
#define SN_COAP_BLOCKWISE_ENABLED                   0  /**< Enable blockwise */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#define SN_COAP_MAX_BLOCKWISE_PAYLOAD_SIZE          0  /**< Must be 2^x and x is at least 4. Suitable values: 0, 16, 32, 64, 128, 256, 512 and 1024 */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE
 | 
			
		||||
#define SN_COAP_MAX_NONBLOCKWISE_PAYLOAD_SIZE       0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED MBED_CONF_MBED_CLIENT_SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED
 | 
			
		||||
#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED      60 /**< Maximum time in seconds of data (messages and payload) to be stored for blockwising */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef YOTTA_CFG_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE
 | 
			
		||||
#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE YOTTA_CFG_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE
 | 
			
		||||
#elif defined MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE
 | 
			
		||||
#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE MBED_CONF_MBED_CLIENT_SN_COAP_MAX_INCOMING_MESSAGE_SIZE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE
 | 
			
		||||
#define SN_COAP_MAX_INCOMING_BLOCK_MESSAGE_SIZE UINT16_MAX
 | 
			
		||||
#endif
 | 
			
		||||
#define RESPONSE_RANDOM_FACTOR                      1.5   /**< Resending random factor, value is specified in IETF CoAP specification */
 | 
			
		||||
 | 
			
		||||
/* * For Option handling * */
 | 
			
		||||
#define COAP_OPTION_MAX_AGE_DEFAULT                 60 /**< Default value of Max-Age if option not present */
 | 
			
		||||
#define COAP_OPTION_URI_PORT_NONE                   (-1) /**< Internal value to represent no Uri-Port option */
 | 
			
		||||
#define COAP_OPTION_BLOCK_NONE                      (-1) /**< Internal value to represent no Block1/2 option */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int8_t prepare_blockwise_message(struct coap_s *handle, struct sn_coap_hdr_ *coap_hdr_ptr);
 | 
			
		||||
 | 
			
		||||
/* Structure which is stored to Linked list for message sending purposes */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -738,7 +738,10 @@ sn_coap_hdr_s *sn_coap_protocol_parse(struct coap_s *handle, sn_nsdl_addr_s *src
 | 
			
		|||
            (returned_dst_coap_msg_ptr->options_list_ptr->block1 != COAP_OPTION_BLOCK_NONE ||
 | 
			
		||||
             returned_dst_coap_msg_ptr->options_list_ptr->block2 != COAP_OPTION_BLOCK_NONE)) {
 | 
			
		||||
        returned_dst_coap_msg_ptr = sn_coap_handle_blockwise_message(handle, src_addr_ptr, returned_dst_coap_msg_ptr, param);
 | 
			
		||||
    } else {
 | 
			
		||||
    } else if (returned_dst_coap_msg_ptr->msg_code != COAP_MSG_CODE_EMPTY) {
 | 
			
		||||
        // Do not clean stored blockwise message when empty ack is received.
 | 
			
		||||
        // Stored message is mandatory when building a next (GET) blockwise message.
 | 
			
		||||
        // This will happen when non piggybacked response mode is selected.
 | 
			
		||||
        /* Get ... */
 | 
			
		||||
        coap_blockwise_msg_s *stored_blockwise_msg_temp_ptr = NULL;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue