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

Commit 3d2ef05

Browse files
Antti Yli-TokolaTeroJaasko
authored andcommitted
Move access parameter to dynamic struct
1 parent e21287d commit 3d2ef05

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

nsdl-c/sn_nsdl_lib.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@ typedef struct sn_nsdl_static_resource_parameters_ {
144144
uint8_t *resource; /**< NULL if dynamic resource */
145145
int16_t pathlen; /**< Address */ // Check type
146146
uint16_t resourcelen; /**< 0 if dynamic resource, resource information in static resource */
147-
uint8_t access:4; /**< Allowed operation mode, GET, PUT, etc */
148147
bool external_memory_block:1; /**< 0 means block messages are handled inside this library,
149148
otherwise block messages are passed to application */
150149
uint8_t mode:2; /**< STATIC etc.. */
@@ -166,6 +165,9 @@ typedef struct sn_nsdl_resource_parameters_ {
166165
#endif
167166
ns_list_link_t link;
168167
uint16_t coap_content_type; /**< CoAP content type */
168+
uint8_t access:4; /**< Allowed operation mode, GET, PUT, etc,
169+
TODO! This should be in static struct but current
170+
mbed-client implementation requires this to be changed at runtime */
169171
uint8_t registered:2; /**< Is resource registered or not */
170172
bool publish_uri:1; /**< 1 if resource to be published to server */
171173
bool free_on_delete:1; /**< 1 if struct is dynamic allocted --> to be freed */

source/libNsdl/src/sn_grs.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ extern int8_t sn_grs_update_resource(struct grs_s *handle, sn_nsdl_dynamic_resou
321321
}
322322

323323
/* Update access rights and callback address */
324-
resource_temp->static_resource_parameters->access = res->static_resource_parameters->access;
324+
resource_temp->access = res->access;
325325
resource_temp->sn_grs_dyn_res_callback = res->sn_grs_dyn_res_callback;
326326

327327
/* TODO: resource_parameters_ptr not copied */
@@ -398,6 +398,7 @@ static int8_t sn_grs_add_resource_to_list(struct grs_s *handle, sn_nsdl_dynamic_
398398
resource_copy_ptr->free_on_delete = resource_ptr->free_on_delete;
399399
resource_copy_ptr->coap_content_type = resource_ptr->coap_content_type;
400400
resource_copy_ptr->observable = resource_ptr->observable;
401+
resource_copy_ptr->access = resource_ptr->access;
401402
/* If resource parameters exists, copy them */
402403
if (resource_ptr->static_resource_parameters) {
403404
resource_copy_ptr->static_resource_parameters = handle->sn_grs_alloc(sizeof(sn_nsdl_static_resource_parameters_s));
@@ -411,8 +412,6 @@ static int8_t sn_grs_add_resource_to_list(struct grs_s *handle, sn_nsdl_dynamic_
411412
resource_ptr->static_resource_parameters->mode;
412413
resource_copy_ptr->static_resource_parameters->external_memory_block =
413414
resource_ptr->static_resource_parameters->external_memory_block;
414-
resource_copy_ptr->static_resource_parameters->access =
415-
resource_ptr->static_resource_parameters->access;
416415
resource_copy_ptr->static_resource_parameters->free_on_delete =
417416
resource_ptr->static_resource_parameters->free_on_delete;
418417

@@ -566,11 +565,10 @@ extern int8_t sn_grs_process_coap(struct nsdl_s *nsdl_handle, sn_coap_hdr_s *coa
566565
/* If dynamic resource, go to callback */
567566
if (resource_temp_ptr->static_resource_parameters->mode == SN_GRS_DYNAMIC) {
568567
/* Check accesses */
569-
if (((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) && !(resource_temp_ptr->static_resource_parameters->access & SN_GRS_GET_ALLOWED)) ||
570-
((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_POST) && !(resource_temp_ptr->static_resource_parameters->access & SN_GRS_POST_ALLOWED)) ||
571-
((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) && !(resource_temp_ptr->static_resource_parameters->access & SN_GRS_PUT_ALLOWED)) ||
572-
((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_DELETE) && !(resource_temp_ptr->static_resource_parameters->access & SN_GRS_DELETE_ALLOWED))) {
573-
568+
if (((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_GET) && !(resource_temp_ptr->access & SN_GRS_GET_ALLOWED)) ||
569+
((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_POST) && !(resource_temp_ptr->access & SN_GRS_POST_ALLOWED)) ||
570+
((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_PUT) && !(resource_temp_ptr->access & SN_GRS_PUT_ALLOWED)) ||
571+
((coap_packet_ptr->msg_code == COAP_MSG_CODE_REQUEST_DELETE) && !(resource_temp_ptr->access & SN_GRS_DELETE_ALLOWED))) {
574572
status = COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED;
575573
} else {
576574
/* Do not call null pointer.. */
@@ -589,7 +587,7 @@ extern int8_t sn_grs_process_coap(struct nsdl_s *nsdl_handle, sn_coap_hdr_s *coa
589587
/* Static resource handling */
590588
switch (coap_packet_ptr->msg_code) {
591589
case COAP_MSG_CODE_REQUEST_GET:
592-
if (resource_temp_ptr->static_resource_parameters->access & SN_GRS_GET_ALLOWED) {
590+
if (resource_temp_ptr->access & SN_GRS_GET_ALLOWED) {
593591
status = COAP_MSG_CODE_RESPONSE_CONTENT;
594592
static_get_request = true;
595593
} else {

0 commit comments

Comments
 (0)