From 2ddfd9e22b89bd05cb78da95147f1283331eb583 Mon Sep 17 00:00:00 2001
From: Matthias Ringwald <matthias@ringwald.ch>
Date: Fri, 27 Mar 2020 21:53:42 +0100
Subject: [PATCH] mesh: remove mesh_access_pdu_t getters

---
 src/mesh/mesh_access.c          |  5 ++--
 src/mesh/mesh_upper_transport.c | 45 +++++++--------------------------
 src/mesh/mesh_upper_transport.h |  4 ---
 test/mesh/mesh_message_test.cpp | 10 +++++---
 4 files changed, 18 insertions(+), 46 deletions(-)

diff --git a/src/mesh/mesh_access.c b/src/mesh/mesh_access.c
index 82b7d6913..9343b12bc 100644
--- a/src/mesh/mesh_access.c
+++ b/src/mesh/mesh_access.c
@@ -536,8 +536,9 @@ uint16_t mesh_pdu_src(mesh_pdu_t * pdu){
 
 uint16_t mesh_pdu_dst(mesh_pdu_t * pdu){
     switch (pdu->pdu_type){
-        case MESH_PDU_TYPE_ACCESS:
-            return mesh_access_dst((mesh_access_pdu_t *) pdu);
+        case MESH_PDU_TYPE_ACCESS: {
+            return ((mesh_access_pdu_t *) pdu)->dst;
+        }
         case MESH_PDU_TYPE_TRANSPORT:
             return mesh_transport_dst((mesh_transport_pdu_t*) pdu);
         case MESH_PDU_TYPE_NETWORK:
diff --git a/src/mesh/mesh_upper_transport.c b/src/mesh/mesh_upper_transport.c
index ec37a4527..681a07d58 100644
--- a/src/mesh/mesh_upper_transport.c
+++ b/src/mesh/mesh_upper_transport.c
@@ -167,34 +167,6 @@ static void mesh_transport_key_and_virtual_address_iterator_next(mesh_transport_
 
 // UPPER TRANSPORT
 
-uint16_t mesh_access_dst(mesh_access_pdu_t * access_pdu){
-    return access_pdu->dst;
-}
-
-uint16_t mesh_access_ctl(mesh_access_pdu_t * access_pdu){
-    return access_pdu->ctl_ttl >> 7;
-}
-
-uint32_t mesh_access_seq(mesh_access_pdu_t * access_pdu){
-    return access_pdu->seq;
-}
-
-void mesh_access_set_ivi_nid(mesh_access_pdu_t * access_pdu, uint8_t ivi_nid){
-    access_pdu->ivi_nid = ivi_nid;
-}
-void mesh_access_set_ctl_ttl(mesh_access_pdu_t * access_pdu, uint8_t ctl_ttl){
-    access_pdu->ctl_ttl = ctl_ttl;
-}
-void mesh_access_set_seq(mesh_access_pdu_t * access_pdu, uint32_t seq){
-    access_pdu->seq = seq;
-}
-void mesh_access_set_src(mesh_access_pdu_t * access_pdu, uint16_t src){
-    access_pdu->src = src;
-}
-void mesh_access_set_dest(mesh_access_pdu_t * access_pdu, uint16_t dst){
-    access_pdu->dst = dst;
-}
-
 static void mesh_segmented_pdu_flatten(btstack_linked_list_t * segments, uint8_t segment_len, uint8_t * buffer) {
     // assemble payload
     btstack_linked_list_iterator_t it;
@@ -375,7 +347,7 @@ static void transport_segmented_setup_device_nonce(uint8_t * nonce, const mesh_p
 
 static void mesh_upper_transport_process_access_message_done(mesh_access_pdu_t *access_pdu){
     crypto_active = 0;
-    btstack_assert(mesh_access_ctl(access_pdu) == 0);
+    btstack_assert((access_pdu->ctl_ttl & 0x80) == 0);
     mesh_lower_transport_message_processed_by_higher_layer(incoming_access_encrypted);
     incoming_access_encrypted = NULL;
     incoming_access_decrypted = NULL;
@@ -408,7 +380,7 @@ static void mesh_upper_transport_validate_access_message_ccm(void * arg){
         incoming_access_decrypted->len -= incoming_access_decrypted->transmic_len;
 
         // if virtual address, update dst to pseudo_dst
-        if (mesh_network_address_virtual(mesh_access_dst(incoming_access_decrypted))){
+        if (mesh_network_address_virtual(incoming_access_decrypted->dst)){
             incoming_access_decrypted->dst = mesh_transport_key_it.address->pseudo_dst;
         }
 
@@ -487,7 +459,7 @@ static void mesh_upper_transport_validate_access_message(void){
     // decrypt ccm
     crypto_active = 1;
     uint16_t aad_len  = 0;
-    if (mesh_network_address_virtual(mesh_access_dst(incoming_access_decrypted))){
+    if (mesh_network_address_virtual(incoming_access_decrypted->dst)){
         aad_len  = 16;
     }
     btstack_crypto_ccm_init(&ccm, message_key->key, application_nonce, upper_transport_pdu_len, aad_len, incoming_access_decrypted->transmic_len);
@@ -511,7 +483,7 @@ static void mesh_upper_transport_process_access_message(void){
     printf("AKF: %u\n",   akf);
     printf("AID: %02x\n", aid);
 
-    mesh_transport_key_and_virtual_address_iterator_init(&mesh_transport_key_it, mesh_access_dst(incoming_access_decrypted),
+    mesh_transport_key_and_virtual_address_iterator_init(&mesh_transport_key_it, incoming_access_decrypted->dst,
                                                          incoming_access_decrypted->netkey_index, akf, aid);
     mesh_upper_transport_validate_access_message();
 }
@@ -1140,10 +1112,11 @@ static uint8_t mesh_upper_transport_setup_segmented_access_pdu_header(mesh_acces
     access_pdu->netkey_index = netkey_index;
     access_pdu->appkey_index = appkey_index;
     access_pdu->akf_aid_control = akf_aid;
-    mesh_access_set_ivi_nid(access_pdu, network_key->nid | ((mesh_get_iv_index_for_tx() & 1) << 7));
-    mesh_access_set_src(access_pdu, src);
-    mesh_access_set_dest(access_pdu, dest);
-    mesh_access_set_ctl_ttl(access_pdu, ttl);
+    uint8_t iviNid = network_key->nid | ((mesh_get_iv_index_for_tx() & 1) << 7);
+    access_pdu->ivi_nid = iviNid;
+    access_pdu->src = src;
+    access_pdu->dst = dest;
+    access_pdu->ctl_ttl = ttl;
     return 0;
 }
 
diff --git a/src/mesh/mesh_upper_transport.h b/src/mesh/mesh_upper_transport.h
index 0e3dc9bd5..74f563b6b 100644
--- a/src/mesh/mesh_upper_transport.h
+++ b/src/mesh/mesh_upper_transport.h
@@ -81,10 +81,6 @@ void mesh_upper_transport_pdu_free(mesh_pdu_t * pdu);
 void mesh_upper_transport_dump(void);
 void mesh_upper_transport_reset(void);
 
-// tmp
-uint16_t mesh_access_dst(mesh_access_pdu_t * access_pdu);
-uint16_t mesh_access_ctl(mesh_access_pdu_t * access_pdu);
-
 #ifdef __cplusplus
 } /* end of extern "C" */
 #endif
diff --git a/test/mesh/mesh_message_test.cpp b/test/mesh/mesh_message_test.cpp
index f0e18343a..bfe06e8c4 100644
--- a/test/mesh/mesh_message_test.cpp
+++ b/test/mesh/mesh_message_test.cpp
@@ -109,8 +109,9 @@ uint16_t mesh_pdu_dst(mesh_pdu_t * pdu){
         case MESH_PDU_TYPE_NETWORK:
         case MESH_PDU_TYPE_UPPER_UNSEGMENTED_CONTROL:
             return mesh_network_dst((mesh_network_pdu_t *) pdu);
-        case MESH_PDU_TYPE_ACCESS:
-            return mesh_access_dst((mesh_access_pdu_t *) pdu);
+        case MESH_PDU_TYPE_ACCESS: {
+            return ((mesh_access_pdu_t *) pdu)->dst;
+        }
         case MESH_PDU_TYPE_UPPER_SEGMENTED_ACCESS:
         case MESH_PDU_TYPE_UPPER_UNSEGMENTED_ACCESS:
             return ((mesh_upper_transport_pdu_t *) pdu)->dst;
@@ -124,8 +125,9 @@ uint16_t mesh_pdu_ctl(mesh_pdu_t * pdu){
         case MESH_PDU_TYPE_NETWORK:
         case MESH_PDU_TYPE_UPPER_UNSEGMENTED_CONTROL:
             return mesh_network_control((mesh_network_pdu_t *) pdu);
-        case MESH_PDU_TYPE_ACCESS:
-            return mesh_access_ctl((mesh_access_pdu_t *) pdu);
+        case MESH_PDU_TYPE_ACCESS: {
+            return ((mesh_access_pdu_t *) pdu)->ctl_ttl >> 7;
+        }
         default:
             btstack_assert(false);
             return 0;