Skip to content

Commit 3d4d326

Browse files
authored
Merge pull request #14565 from artokin/nanostack_release_13_0_0_for_5_15_branch
[mbed-os-5.15] Nanostack release v13.0.0
2 parents 7f25b2c + d361b7b commit 3d4d326

File tree

111 files changed

+3206
-1061
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+3206
-1061
lines changed

components/802.15.4_RF/atmel-rf-driver/source/NanostackRfPhyAT86RF215.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ static void rf_handle_cca_ed_done(void)
619619
backup_time = 0;
620620
}
621621
rf_backup_timer_start(0, backup_time + PACKET_PROCESSING_TIME);
622-
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL, 0, 0);
622+
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL_RX, 0, 0);
623623
return;
624624
}
625625
if ((cca_enabled == true) && (((int8_t) rf_read_rf_register(RF_EDV, rf_module) > cca_threshold))) {
@@ -997,7 +997,7 @@ static void rf_backup_timer_interrupt(void)
997997
}
998998
if ((rf_state == RF_CSMA_STARTED) || (rf_state == RF_CSMA_WHILE_RX)) {
999999
TEST_CSMA_DONE
1000-
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL, 0, 0);
1000+
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL_RX, 0, 0);
10011001
}
10021002
TEST_TX_DONE
10031003
TEST_RX_DONE

components/802.15.4_RF/stm-s2lp-rf-driver/source/NanostackRfPhys2lp.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,11 @@ static void rf_cca_timer_interrupt(void)
848848
rf_flush_tx_fifo();
849849
tx_finnish_time = rf_get_timestamp();
850850
if (device_driver.phy_tx_done_cb) {
851-
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL, 0, 0);
851+
if (rf_state == RF_RX_STARTED) {
852+
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL_RX, 0, 0);
853+
} else {
854+
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL, 0, 0);
855+
}
852856
}
853857
} else {
854858
if (status == PHY_RESTART_CSMA) {
@@ -1143,7 +1147,7 @@ static void rf_irq_task_process_irq(void)
11431147
tx_finnish_time = rf_get_timestamp();
11441148
rf_update_tx_active_time();
11451149
TEST_TX_DONE
1146-
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL, 1, 0);
1150+
device_driver.phy_tx_done_cb(rf_radio_driver_id, mac_tx_handle, PHY_LINK_CCA_FAIL_RX, 1, 0);
11471151
rf_send_command(S2LP_CMD_SABORT);
11481152
rf_poll_state_change(S2LP_STATE_READY);
11491153
rf_send_command(S2LP_CMD_FLUSHTXFIFO);

features/frameworks/mbed-client-randlib/test/mbed-client-randlib/unittest/randlib/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2015 ARM. All rights reserved.
2+
* Copyright (c) 2015 ARM Limited. All rights reserved.
33
*/
44

55
#include "CppUTest/CommandLineTestRunner.h"

features/frameworks/mbed-client-randlib/test/mbed-client-randlib/unittest/randlib/randlibtest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2016 ARM. All rights reserved.
2+
* Copyright (c) 2016 ARM Limited. All rights reserved.
33
*/
44
#include "CppUTest/TestHarness.h"
55
#include "test_randlib.h"

features/frameworks/mbed-client-randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2016 ARM. All rights reserved.
2+
* Copyright (c) 2016 ARM Limited. All rights reserved.
33
*/
44
#include "test_randlib.h"
55
#include <string.h>

features/frameworks/mbed-client-randlib/test/mbed-client-randlib/unittest/randlib/test_randlib.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2016 ARM. All rights reserved.
2+
* Copyright (c) 2016 ARM Limited. All rights reserved.
33
*/
44
#ifndef TEST_RANDLIB_H
55
#define TEST_RANDLIB_H

features/frameworks/mbed-client-randlib/test/mbed-client-randlib/unittest/stubs/open_stub.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
/*
2+
* Copyright (c) 2016 ARM Limited. All rights reserved.
3+
*/
14
#include <stdbool.h>
25
#include <sys/types.h>
36
#include <sys/stat.h>

features/frameworks/mbed-client-randlib/test/mbed-client-randlib/unittest/stubs/random_stub.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2016, ARM Limited, All Rights Reserved
2+
* Copyright (c) 2016 ARM Limited. All rights reserved.
33
*/
44

55
#include "ns_types.h"

features/frameworks/nanostack-libservice/mbed-client-libservice/ns_nvm_helper.h

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
// ----------------------------------------------------------------------------
2-
// Copyright 2016-2017 ARM Ltd.
3-
//
4-
// SPDX-License-Identifier: Apache-2.0
5-
//
6-
// Licensed under the Apache License, Version 2.0 (the "License");
7-
// you may not use this file except in compliance with the License.
8-
// You may obtain a copy of the License at
9-
//
10-
// http://www.apache.org/licenses/LICENSE-2.0
11-
//
12-
// Unless required by applicable law or agreed to in writing, software
13-
// distributed under the License is distributed on an "AS IS" BASIS,
14-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15-
// See the License for the specific language governing permissions and
16-
// limitations under the License.
17-
// ----------------------------------------------------------------------------
1+
/*
2+
* Copyright (c) 2016-2017 ARM Limited. All rights reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
* Licensed under the Apache License, Version 2.0 (the License); you may
5+
* not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
1816

1917
/**
2018
* NanoStack NVM helper functions to read, write and delete key-value pairs to platform NVM.

features/frameworks/nanostack-libservice/source/nvmHelper/ns_nvm_helper.c

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
1-
// ----------------------------------------------------------------------------
2-
// Copyright 2016-2017 ARM Ltd.
3-
//
4-
// SPDX-License-Identifier: Apache-2.0
5-
//
6-
// Licensed under the Apache License, Version 2.0 (the "License");
7-
// you may not use this file except in compliance with the License.
8-
// You may obtain a copy of the License at
9-
//
10-
// http://www.apache.org/licenses/LICENSE-2.0
11-
//
12-
// Unless required by applicable law or agreed to in writing, software
13-
// distributed under the License is distributed on an "AS IS" BASIS,
14-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15-
// See the License for the specific language governing permissions and
16-
// limitations under the License.
17-
// ----------------------------------------------------------------------------
1+
/*
2+
* Copyright (c) 2016-2017 ARM Limited. All rights reserved.
3+
* SPDX-License-Identifier: Apache-2.0
4+
* Licensed under the Apache License, Version 2.0 (the License); you may
5+
* not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
12+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
1816

1917
#include <string.h>
2018
#include <ns_types.h>

features/nanostack/sal-stack-nanostack/nanostack/dhcp_service_api.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,15 @@ uint16_t dhcp_service_init(int8_t interface_id, dhcp_instance_type_e instance_ty
142142
*/
143143
void dhcp_service_relay_instance_enable(uint16_t instance, uint8_t *server_address);
144144

145+
/**
146+
* \brief Enable DHCPv6 Relay Agent to add interface ID option to relay frame. Default is disabled.
147+
*
148+
*
149+
* \param instance The instance ID of the registered server.
150+
* \param enable true add interface option
151+
*/
152+
void dhcp_service_relay_interface_id_option_enable(uint16_t instance, bool enable);
153+
145154
/**
146155
* \brief Get DHCPv6 Relay Agent address pointer.
147156
*

features/nanostack/sal-stack-nanostack/nanostack/fhss_api.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ typedef struct fhss_callback fhss_callback_t;
4949
typedef enum {
5050
FHSS_UNSYNCHRONIZED,
5151
FHSS_SYNCHRONIZED,
52+
FHSS_EXPEDITED_FORWARDING
5253
} fhss_states;
5354

5455
/**

features/nanostack/sal-stack-nanostack/nanostack/fhss_ws_extension.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,27 @@ extern int ns_fhss_set_neighbor_info_fp(const fhss_api_t *fhss_api, fhss_get_nei
118118
*/
119119
extern int ns_fhss_ws_set_hop_count(const fhss_api_t *fhss_api, const uint8_t hop_count);
120120

121+
/**
122+
* @brief WS TX allowance levels.
123+
*/
124+
typedef enum {
125+
/** Allow transmitting only on TX slots. */
126+
WS_TX_SLOT,
127+
/** Allow transmitting only on TX and RX slots. */
128+
WS_TX_AND_RX_SLOT,
129+
/** Allow transmitting always. Also unicast on broadcast channel. */
130+
WS_TX_ALWAYS
131+
} fhss_ws_tx_allow_level;
132+
133+
/**
134+
* @brief Set node unicast TX allowance level. Allows device to use the unicast and broadcast channel for unicast transmission as described by fhss_ws_tx_allow_level.
135+
* @param fhss_api FHSS instance.
136+
* @param global_level Level of TX allowance in normal mode.
137+
* @param ef_level Level of TX allowance in expedited forwarding mode.
138+
* @return 0 on success, -1 on fail.
139+
*/
140+
extern int ns_fhss_ws_set_tx_allowance_level(const fhss_api_t *fhss_api, const fhss_ws_tx_allow_level global_level, const fhss_ws_tx_allow_level ef_level);
141+
121142
#ifdef __cplusplus
122143
}
123144
#endif

features/nanostack/sal-stack-nanostack/nanostack/mac_api.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,11 @@ typedef void mcps_data_request(const mac_api_t *api, const mcps_data_req_t *data
128128
* @param data MCPS-DATA.request specific values
129129
* @param ie_ext Information element list to MCPS-DATA.request
130130
* @param asynch_channel_list Optional channel list to asynch data request. Give NULL when normal data request.
131+
* @param priority Data request priority level
131132
*
132133
* Asynch data request is mac standard extension. asynch_channel_list include channel mask which channel message is requested to send.
133134
*/
134-
typedef void mcps_data_request_ext(const mac_api_t *api, const mcps_data_req_t *data, const mcps_data_req_ie_list_t *ie_ext, const struct channel_list_s *asynch_channel_list);
135+
typedef void mcps_data_request_ext(const mac_api_t *api, const mcps_data_req_t *data, const mcps_data_req_ie_list_t *ie_ext, const struct channel_list_s *asynch_channel_list, mac_data_priority_t priority);
135136

136137
/**
137138
* @brief mcps_purge_request MCPS_PURGE request call

features/nanostack/sal-stack-nanostack/nanostack/mac_mcps.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,5 +192,17 @@ typedef struct mcps_edfe_response_s {
192192
bool use_message_handle_to_discover: 1; /**< EDFE Data request message ID is valid at message_handle. */
193193
} mcps_edfe_response_t;
194194

195+
/**
196+
* @brief enum mac_data_priority_t Data request priority level
197+
*
198+
* Data request priority level may affect CCA process and MAC queue process
199+
*/
200+
typedef enum mac_data_priority_e {
201+
MAC_DATA_NORMAL_PRIORITY = 0, /**< Normal MCPS DATA REQ */
202+
MAC_DATA_MEDIUM_PRIORITY = 1, /**< Indirect Data which is polled */
203+
MAC_DATA_HIGH_PRIORITY = 2, /**< MAC command usually use this and beacon */
204+
MAC_DATA_EXPEDITE_FORWARD = 3 /**< Expedite forward level give highest priority */
205+
} mac_data_priority_t;
206+
195207

196208
#endif // MAC_MCPS_H

features/nanostack/sal-stack-nanostack/nanostack/mlme.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ typedef enum {
264264
macAutoRequestKeyIndex = 0x7b, /*<The index of the key used for automatic data*/
265265
macDefaultKeySource = 0x7c, /*<Default key source*/
266266
//NON standard extension
267+
macRequestRestart = 0xf1, /*< Configure failed packet data request restart */
267268
macEdfeForceStop = 0xf2, /*< Use this command for Data wait timeout at LLC: Mac stop Edfe session data wait and enable normal FHSS mode */
268269
macSetDataWhitening = 0xf3, /*< Enable or disable data whitening, boolean true for enable, false for disable */
269270
macCCAThresholdStart = 0xf4, /*< Start automatic CCA threshold */
@@ -517,4 +518,16 @@ typedef struct mlme_multi_csma_ca_s {
517518
uint16_t multi_cca_interval; /**< Length of the additional CSMA-CA period(s) in microseconds */
518519
} mlme_multi_csma_ca_param_t;
519520

521+
/**
522+
* @brief struct mlme_request_restart_config_s Set failed packet request restart configuration
523+
*
524+
* Non standard extension to restart data request after failed CCA or TX attempts
525+
*/
526+
typedef struct mlme_request_restart_config_s {
527+
uint8_t cca_failure_restart_max; /**< Max number of restarts after CCA failure */
528+
uint8_t tx_failure_restart_max; /**< Max number of restarts after TX failure */
529+
uint16_t blacklist_min_ms; /**< Blacklist min, which is doubled by every restart */
530+
uint16_t blacklist_max_ms; /**< Blacklist max, largest allowed blacklist time */
531+
} mlme_request_restart_config_t;
532+
520533
#endif /* MLME_H_ */

features/nanostack/sal-stack-nanostack/nanostack/platform/arm_hal_phy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ typedef enum {
5050
PHY_LINK_TX_SUCCESS, /**< MAC TX complete. MAC will a make decision to enter wait ACK or TX done state. */
5151
PHY_LINK_TX_FAIL, /**< Link TX process fail. */
5252
PHY_LINK_CCA_FAIL, /**< RF link CCA process fail. */
53+
PHY_LINK_CCA_FAIL_RX, /**< RF link CCA process failed because of packet reception. */
5354
PHY_LINK_CCA_OK, /**< RF link CCA process ok. */
5455
PHY_LINK_CCA_PREPARE, /**< Prepare for CCA after CSMA-CA: changes to CCA channel and gives permission to TX. See PHY_LINK_CCA_PREPARE status definitions for return values */
5556
} phy_link_tx_status_e;

features/nanostack/sal-stack-nanostack/nanostack/socket_api.h

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,41 @@ extern "C" {
138138
* After the successful state change, data can be sent using socket_send().
139139
* The connection can be shut down in either direction with socket_shutdown() function - shutting down write signals end-of-data to the peer.
140140
*
141+
*
141142
* \section socket-udpicmp How to use UDP and RAW socket:
142143
*
143144
* A UDP socket is ready to receive and send data immediately after a successful call of socket_open() and a NET_READY event is received.
144145
* Data can be transmitted with the socket_sendto() function. An ICMP socket works with same function call.
146+
*
147+
* \section socket-trafficpriority How to set socket message priority to improve Quality of Service (QoS):
148+
*
149+
* IPv6 header has a field traffic class that contains a 6-bit Differentiated Services Code Point (DSCP) field that is used for packet
150+
* classification. By default the packet class level is set to 0 NS_DSCP_DEFAULT.
151+
*
152+
* Recommend QoS levels:
153+
*
154+
* | Level |Description |
155+
* | :--------------: | :-------------------------------------------------------------------------------------------------: |
156+
* | NS_DSCP_DEFAULT | Default level for normal data usage |
157+
* | NS_DSCP_AF11 | Higher Application data service for prioritize packet forwarding. |
158+
* | NS_DSCP_EF | Expedited Forwarding (EF) for short messages. Allows low loss, low delay, and low jitter services. |
159+
* | | This is meant for very important messages like alerts. EF packet length should be kept in |
160+
* | | minimum. This should not be used for any other purpose as it will block other network traffic |
161+
* | NS_DSCP_CS6 | Network protocol message Priority. Application should not use this. |
162+
*
163+
* High priority messages can be set to use higher than default class by using socket_setsockopt() and
164+
* socket_option_traffic_class_dsc_set() helper.
165+
*
166+
* Example to send a message using Expedited Forwarding class:
167+
*
168+
* //Set EF class to high priority messages
169+
* int16_t traffic_class = socket_option_traffic_class_dsc_set(NS_DSCP_EF);
170+
* socket_setsockopt(socket_id, SOCKET_IPPROTO_IPV6, SOCKET_IPV6_TCLASS, &traffic_class, sizeof traffic_class);
171+
*
172+
* //Set traffic class back to default
173+
* traffic_class = socket_option_traffic_class_dsc_set(NS_DSCP_DEFAULT);
174+
* socket_setsockopt(socket_id, SOCKET_IPPROTO_IPV6, SOCKET_IPV6_TCLASS, &traffic_class, sizeof traffic_class);
175+
*
145176
*/
146177

147178
#include "ns_address.h"
@@ -250,6 +281,24 @@ typedef struct ns_in6_pktinfo {
250281
int8_t ipi6_ifindex; /**< send/recv interface index */
251282
} ns_in6_pktinfo_t;
252283

284+
/** \name Socket DSCP (Differentiated Services Code Point) QoS level examples.
285+
* \anchor MSG_QOS_LEVELS
286+
*/
287+
///@{
288+
/** Standard priority and it is socket default */
289+
#define NS_DSCP_DEFAULT 0
290+
/** Application high priority service: Stack priorities these messages over the default priority messages */
291+
#define NS_DSCP_AF11 10
292+
/** Expedited Forwarding (EF) QoS level enable high priority state: low loss, low delay, and low jitter services */
293+
#define NS_DSCP_EF 46
294+
/** Network protocol traffic allocated QoS level stack may internally use that */
295+
#define NS_DSCP_CS6 48
296+
///@}
297+
298+
/** Helper Traffic class Differentiated Services Code for QoS 0-63. 0 is default which define Lowest Priority
299+
*
300+
* */
301+
#define socket_option_traffic_class_dsc_set(x) (uint8_t)((x & 63) << 2)
253302

254303
/** \name Alignment macros for control message headers
255304
* \anchor CMSG_ALIGN_FLAGS

features/nanostack/sal-stack-nanostack/nanostack/ws_bbr_api.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ int ws_bbr_start(int8_t interface_id, int8_t backbone_interface_id);
9999
#define BBR_REQUIRE_DAO_REFRESH 0x0000 /**< Deprecated DAO Refresh is now the default functionality*/
100100
#define BBR_PERIODIC_VERSION_INC 0x0010 /**< Increment PAN version number Periodically*/
101101
#define BBR_GUA_SLAAC 0x0020 /**< in Global prefix use SLAAC address generation to reduce traffic during bootstrap */
102+
#define BBR_DHCP_ANONYMOUS 0x0040 /**< Generate anonymous addresses from DHCP server */
102103

103104
/**
104105
* Configure border router features.
@@ -108,6 +109,9 @@ int ws_bbr_start(int8_t interface_id, int8_t backbone_interface_id);
108109
* BBR_ULA_C Configure Mesh local ULA prefix with SLAAC address
109110
* BBR_GUA_ROUTE Add more specific route for GUA
110111
* BBR_BB_WAIT Start Wi-SUN network only when backbone is ready
112+
* BBR_DHCP_ANONYMOUS if true give anonymous address (16 bit suffix) to
113+
* optimize data in RF interface (saves 12 bytes per hop)
114+
* or false to reduce RAM usage in Border router as assigned address list is not needed (40 bytes per device).
111115
*
112116
* By default Wi-SUN network is started and is treated as separate interface even if backbone is not available.
113117
*

0 commit comments

Comments
 (0)