Skip to content
This repository was archived by the owner on Apr 24, 2019. It is now read-only.

Commit 456f0f7

Browse files
authored
Merge pull request #116 from ARMmbed/merge_memory_opt_to_master
Merge memory opt to master
2 parents d6a4ece + 858d9f6 commit 456f0f7

File tree

20 files changed

+1192
-3663
lines changed

20 files changed

+1192
-3663
lines changed

nsdl-c/sn_nsdl_lib.h

Lines changed: 76 additions & 171 deletions
Large diffs are not rendered by default.

source/libCoap/src/include/sn_coap_header_internal.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ typedef struct sn_nsdl_transmit_ {
6464

6565
uint16_t packet_len;
6666
uint8_t *packet_ptr;
67-
uint8_t *uri_path_ptr;
68-
uint8_t uri_path_len;
6967
} sn_nsdl_transmit_s;
7068

7169
/* * * * * * * * * * * * * * * * * * * * * * */

source/libCoap/src/sn_coap_builder.c

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -175,21 +175,16 @@ uint16_t sn_coap_builder_calc_needed_packet_data_size_2(sn_coap_hdr_s *src_coap_
175175
returned_byte_count += src_coap_msg_ptr->token_len;
176176
}
177177
/* URI PATH - Repeatable option. Length of one option is 0-255 */
178-
/* Do not add uri-path for notification message.
179-
* Uri-path is needed for cancelling observation with RESET message */
180-
if (!src_coap_msg_ptr->options_list_ptr ||
181-
(src_coap_msg_ptr->options_list_ptr &&
182-
COAP_OBSERVE_NONE == src_coap_msg_ptr->options_list_ptr->observe)) {
183-
if (src_coap_msg_ptr->uri_path_ptr != NULL) {
184-
repeatable_option_size = sn_coap_builder_options_calc_option_size(src_coap_msg_ptr->uri_path_len,
185-
src_coap_msg_ptr->uri_path_ptr, COAP_OPTION_URI_PATH);
186-
if (repeatable_option_size) {
187-
returned_byte_count += repeatable_option_size;
188-
} else {
189-
return 0;
190-
}
178+
if (src_coap_msg_ptr->uri_path_ptr != NULL) {
179+
repeatable_option_size = sn_coap_builder_options_calc_option_size(src_coap_msg_ptr->uri_path_len,
180+
src_coap_msg_ptr->uri_path_ptr, COAP_OPTION_URI_PATH);
181+
if (repeatable_option_size) {
182+
returned_byte_count += repeatable_option_size;
183+
} else {
184+
return 0;
191185
}
192186
}
187+
193188
uint16_t tempInt = 0;
194189
/* CONTENT FORMAT - An integer option, up to 2 bytes */
195190
if (src_coap_msg_ptr->content_format != COAP_CT_NONE) {
@@ -575,13 +570,8 @@ static int8_t sn_coap_builder_options_build(uint8_t **dst_packet_data_pptr, sn_c
575570
&src_coap_msg_ptr->options_list_ptr->location_path_len, COAP_OPTION_LOCATION_PATH, &previous_option_number);
576571
}
577572
/* * * * Build Uri-Path option * * * */
578-
/* Do not add uri-path for notification message.
579-
* Uri-path is needed for cancelling observation with RESET message */
580-
if (!src_coap_msg_ptr->options_list_ptr ||
581-
(src_coap_msg_ptr->options_list_ptr &&
582-
COAP_OBSERVE_NONE == src_coap_msg_ptr->options_list_ptr->observe))
583-
sn_coap_builder_options_build_add_multiple_option(dst_packet_data_pptr, &src_coap_msg_ptr->uri_path_ptr,
584-
&src_coap_msg_ptr->uri_path_len, COAP_OPTION_URI_PATH, &previous_option_number);
573+
sn_coap_builder_options_build_add_multiple_option(dst_packet_data_pptr, &src_coap_msg_ptr->uri_path_ptr,
574+
&src_coap_msg_ptr->uri_path_len, COAP_OPTION_URI_PATH, &previous_option_number);
585575

586576
/* * * * Build Content-Type option * * * */
587577
if (src_coap_msg_ptr->content_format != COAP_CT_NONE) {

source/libCoap/src/sn_coap_protocol.c

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ static int8_t sn_coap_convert_block_size(uint16_t block_size);
6868
static sn_coap_hdr_s *sn_coap_protocol_copy_header(struct coap_s *handle, sn_coap_hdr_s *source_header_ptr);
6969
#endif
7070
#if ENABLE_RESENDINGS
71-
static void sn_coap_protocol_linked_list_send_msg_store(struct coap_s *handle, sn_nsdl_addr_s *dst_addr_ptr, uint16_t send_packet_data_len, uint8_t *send_packet_data_ptr, uint32_t sending_time, void *param, uint8_t *uri_path_ptr, uint8_t uri_path_len);
71+
static void sn_coap_protocol_linked_list_send_msg_store(struct coap_s *handle, sn_nsdl_addr_s *dst_addr_ptr, uint16_t send_packet_data_len, uint8_t *send_packet_data_ptr, uint32_t sending_time, void *param);
7272
static sn_nsdl_transmit_s *sn_coap_protocol_linked_list_send_msg_search(struct coap_s *handle,sn_nsdl_addr_s *src_addr_ptr, uint16_t msg_id);
7373
static void sn_coap_protocol_linked_list_send_msg_remove(struct coap_s *handle, sn_nsdl_addr_s *src_addr_ptr, uint16_t msg_id);
7474
static coap_send_msg_s *sn_coap_protocol_allocate_mem_for_msg(struct coap_s *handle, sn_nsdl_addr_s *dst_addr_ptr, uint16_t packet_data_len);
@@ -314,10 +314,6 @@ void sn_coap_protocol_clear_retransmission_buffer(struct coap_s *handle)
314314
handle->sn_coap_protocol_free(tmp->send_msg_ptr->packet_ptr);
315315
tmp->send_msg_ptr->packet_ptr = 0;
316316
}
317-
if (tmp->send_msg_ptr->uri_path_ptr) {
318-
handle->sn_coap_protocol_free(tmp->send_msg_ptr->uri_path_ptr);
319-
tmp->send_msg_ptr->uri_path_ptr = 0;
320-
}
321317
handle->sn_coap_protocol_free(tmp->send_msg_ptr);
322318
tmp->send_msg_ptr = 0;
323319
}
@@ -448,7 +444,7 @@ int16_t sn_coap_protocol_build(struct coap_s *handle, sn_nsdl_addr_s *dst_addr_p
448444
/* Store message to Linked list for resending purposes */
449445
sn_coap_protocol_linked_list_send_msg_store(handle, dst_addr_ptr, byte_count_built, dst_packet_data_ptr,
450446
handle->system_time + (uint32_t)(handle->sn_coap_resending_intervall * RESPONSE_RANDOM_FACTOR),
451-
param, src_coap_msg_ptr->uri_path_ptr, src_coap_msg_ptr->uri_path_len);
447+
param);
452448
}
453449

454450
#endif /* ENABLE_RESENDINGS */
@@ -703,15 +699,6 @@ sn_coap_hdr_s *sn_coap_protocol_parse(struct coap_s *handle, sn_nsdl_addr_s *src
703699
removed_msg_ptr = sn_coap_protocol_linked_list_send_msg_search(handle, src_addr_ptr, returned_dst_coap_msg_ptr->msg_id);
704700

705701
if (removed_msg_ptr != NULL) {
706-
if (returned_dst_coap_msg_ptr->msg_type == COAP_MSG_TYPE_RESET) {
707-
if(removed_msg_ptr->uri_path_len) {
708-
returned_dst_coap_msg_ptr->uri_path_ptr = handle->sn_coap_protocol_malloc(removed_msg_ptr->uri_path_len);
709-
if (returned_dst_coap_msg_ptr->uri_path_ptr != NULL) {
710-
memcpy(returned_dst_coap_msg_ptr->uri_path_ptr, removed_msg_ptr->uri_path_ptr, removed_msg_ptr->uri_path_len);
711-
returned_dst_coap_msg_ptr->uri_path_len = removed_msg_ptr->uri_path_len;
712-
}
713-
}
714-
}
715702
/* Remove resending message from active message resending Linked list */
716703
sn_coap_protocol_linked_list_send_msg_remove(handle, src_addr_ptr, returned_dst_coap_msg_ptr->msg_id);
717704
}
@@ -814,7 +801,7 @@ int8_t sn_coap_protocol_exec(struct coap_s *handle, uint32_t current_time)
814801
*****************************************************************************/
815802

816803
static void sn_coap_protocol_linked_list_send_msg_store(struct coap_s *handle, sn_nsdl_addr_s *dst_addr_ptr, uint16_t send_packet_data_len,
817-
uint8_t *send_packet_data_ptr, uint32_t sending_time, void *param, uint8_t *uri_path_ptr, uint8_t uri_path_len)
804+
uint8_t *send_packet_data_ptr, uint32_t sending_time, void *param)
818805
{
819806

820807
coap_send_msg_s *stored_msg_ptr = NULL;
@@ -862,16 +849,6 @@ static void sn_coap_protocol_linked_list_send_msg_store(struct coap_s *handle, s
862849
stored_msg_ptr->coap = handle;
863850
stored_msg_ptr->param = param;
864851

865-
if (uri_path_len) {
866-
stored_msg_ptr->send_msg_ptr->uri_path_ptr = handle->sn_coap_protocol_malloc(uri_path_len);
867-
if (stored_msg_ptr->send_msg_ptr->uri_path_ptr == NULL){
868-
return;
869-
}
870-
stored_msg_ptr->send_msg_ptr->uri_path_len = uri_path_len;
871-
memcpy(stored_msg_ptr->send_msg_ptr->uri_path_ptr, uri_path_ptr, uri_path_len);
872-
}
873-
874-
875852
/* Storing Resending message to Linked list */
876853
ns_list_add_to_end(&handle->linked_list_resent_msgs, stored_msg_ptr);
877854
++handle->count_resent_msgs;
@@ -1448,11 +1425,6 @@ static void sn_coap_protocol_release_allocated_send_msg_mem(struct coap_s *handl
14481425
freed_send_msg_ptr->send_msg_ptr->packet_ptr = 0;
14491426
}
14501427

1451-
if (freed_send_msg_ptr->send_msg_ptr->uri_path_ptr != NULL) {
1452-
handle->sn_coap_protocol_free(freed_send_msg_ptr->send_msg_ptr->uri_path_ptr);
1453-
freed_send_msg_ptr->send_msg_ptr->uri_path_ptr = 0;
1454-
}
1455-
14561428
handle->sn_coap_protocol_free(freed_send_msg_ptr->send_msg_ptr);
14571429
freed_send_msg_ptr->send_msg_ptr = 0;
14581430
}
@@ -1878,7 +1850,7 @@ static sn_coap_hdr_s *sn_coap_handle_blockwise_message(struct coap_s *handle, sn
18781850
sn_coap_protocol_linked_list_send_msg_store(handle, src_addr_ptr,
18791851
dst_packed_data_needed_mem,
18801852
dst_ack_packet_data_ptr,
1881-
handle->system_time + (uint32_t)(handle->sn_coap_resending_intervall * RESPONSE_RANDOM_FACTOR), param, NULL, 0);
1853+
handle->system_time + (uint32_t)(handle->sn_coap_resending_intervall * RESPONSE_RANDOM_FACTOR), param);
18821854
#endif
18831855
handle->sn_coap_protocol_free(dst_ack_packet_data_ptr);
18841856
dst_ack_packet_data_ptr = 0;

source/libNsdl/src/include/sn_grs.h

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ typedef struct sn_grs_version_ {
4646
uint8_t build;
4747
} sn_grs_version_s;
4848

49-
typedef NS_LIST_HEAD(sn_nsdl_resource_info_s, link) resource_list_t;
49+
typedef NS_LIST_HEAD(sn_nsdl_dynamic_resource_parameters_s, link) resource_list_t;
5050

5151
struct grs_s {
5252
struct coap_s *coap;
@@ -73,7 +73,6 @@ struct nsdl_s {
7373
uint16_t oma_bs_port; /* Bootstrap port */
7474
uint8_t oma_bs_address_len; /* Bootstrap address length */
7575
unsigned int sn_nsdl_endpoint_registered:1;
76-
bool handle_bootstrap_msg:1;
7776

7877
struct grs_s *grs;
7978
uint8_t *oma_bs_address_ptr; /* Bootstrap address pointer. If null, no bootstrap in use */
@@ -111,21 +110,35 @@ struct nsdl_s {
111110
*
112111
*/
113112
extern struct grs_s *sn_grs_init(uint8_t (*sn_grs_tx_callback_ptr)(struct nsdl_s *, sn_nsdl_capab_e , uint8_t *, uint16_t,
114-
sn_nsdl_addr_s *), int8_t (*sn_grs_rx_callback_ptr)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *), void *(*sn_grs_alloc)(uint16_t), void (*sn_grs_free)(void *));
115-
116-
extern const sn_nsdl_resource_info_s *sn_grs_get_first_resource(struct grs_s *handle);
117-
extern const sn_nsdl_resource_info_s *sn_grs_get_next_resource(struct grs_s *handle, const sn_nsdl_resource_info_s *sn_grs_current_resource);
118-
extern int8_t sn_grs_process_coap(struct nsdl_s *handle, sn_coap_hdr_s *coap_packet_ptr, sn_nsdl_addr_s *src);
119-
extern sn_nsdl_resource_info_s *sn_grs_search_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path, uint8_t search_method);
120-
extern int8_t sn_grs_destroy(struct grs_s *handle);
121-
extern sn_grs_resource_list_s *sn_grs_list_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path);
122-
extern void sn_grs_free_resource_list(struct grs_s *handle, sn_grs_resource_list_s *list);
123-
extern int8_t sn_grs_update_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res);
124-
extern int8_t sn_grs_send_coap_message(struct nsdl_s *handle, sn_nsdl_addr_s *address_ptr, sn_coap_hdr_s *coap_hdr_ptr);
125-
extern int8_t sn_grs_create_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res);
126-
extern int8_t sn_grs_put_resource(struct grs_s *handle, sn_nsdl_resource_info_s *res);
127-
extern int8_t sn_grs_delete_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path);
128-
extern void sn_grs_mark_resources_as_registered(struct nsdl_s *handle);
113+
sn_nsdl_addr_s *),
114+
int8_t (*sn_grs_rx_callback_ptr)(struct nsdl_s *, sn_coap_hdr_s *, sn_nsdl_addr_s *),
115+
void *(*sn_grs_alloc)(uint16_t),
116+
void (*sn_grs_free)(void *));
117+
118+
extern sn_nsdl_dynamic_resource_parameters_s *sn_grs_get_first_resource(struct grs_s *handle);
119+
extern sn_nsdl_dynamic_resource_parameters_s *sn_grs_get_next_resource(struct grs_s *handle,
120+
const sn_nsdl_dynamic_resource_parameters_s *sn_grs_current_resource);
121+
extern int8_t sn_grs_process_coap(struct nsdl_s *handle,
122+
sn_coap_hdr_s *coap_packet_ptr,
123+
sn_nsdl_addr_s *src);
124+
extern sn_nsdl_dynamic_resource_parameters_s *sn_grs_search_resource(struct grs_s *handle,
125+
uint16_t pathlen,
126+
uint8_t *path,
127+
uint8_t search_method);
128+
extern int8_t sn_grs_destroy(struct grs_s *handle);
129+
extern sn_grs_resource_list_s *sn_grs_list_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path);
130+
extern void sn_grs_free_resource_list(struct grs_s *handle, sn_grs_resource_list_s *list);
131+
extern int8_t sn_grs_send_coap_message(struct nsdl_s *handle,
132+
sn_nsdl_addr_s *address_ptr,
133+
sn_coap_hdr_s *coap_hdr_ptr);
134+
extern int8_t sn_grs_put_resource(struct grs_s *handle, sn_nsdl_dynamic_resource_parameters_s *res);
135+
extern int8_t sn_grs_pop_resource(struct grs_s *handle, sn_nsdl_dynamic_resource_parameters_s *res);
136+
extern int8_t sn_grs_delete_resource(struct grs_s *handle, uint16_t pathlen, uint8_t *path);
137+
extern void sn_grs_mark_resources_as_registered(struct nsdl_s *handle);
138+
#ifndef MEMORY_OPTIMIZED_API
139+
extern int8_t sn_grs_create_resource(struct grs_s *handle, sn_nsdl_dynamic_resource_parameters_s *res);
140+
extern int8_t sn_grs_update_resource(struct grs_s *handle, sn_nsdl_dynamic_resource_parameters_s *res);
141+
#endif
129142

130143
#ifdef __cplusplus
131144
}

0 commit comments

Comments
 (0)