From 843324934e0ef26ce02096b071c13299cd376a53 Mon Sep 17 00:00:00 2001 From: Thomas Watson Date: Mon, 5 Aug 2024 11:04:32 -0500 Subject: [PATCH] AP_DroneCAN: DNA_Server: make lower level database tasks private All the higher level database operations need to be locked for the whole duration of the operation, so nobody should be using the lower-level tasks or raw read/write functions. We can also remove the locks from them. The database can now safely be used by multiple servers. --- libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.cpp | 2 -- libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.h | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.cpp b/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.cpp index acf07859450b85..97f9cd62ec0158 100644 --- a/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.cpp +++ b/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.cpp @@ -81,7 +81,6 @@ void AP_DroneCAN_DNA_Server::Database::readNodeData(NodeData &data, uint8_t node return; } - WITH_SEMAPHORE(sem); storage.read_block(&data, NODEDATA_LOC(node_id), sizeof(struct NodeData)); } @@ -92,7 +91,6 @@ void AP_DroneCAN_DNA_Server::Database::writeNodeData(const NodeData &data, uint8 return; } - WITH_SEMAPHORE(sem); storage.write_block(NODEDATA_LOC(node_id), &data, sizeof(struct NodeData)); } diff --git a/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.h b/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.h index 13fef2ea6f5c92..26d33968cb163d 100644 --- a/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.h +++ b/libraries/AP_DroneCAN/AP_DroneCAN_DNA_Server.h @@ -46,6 +46,7 @@ class AP_DroneCAN_DNA_Server // handle the allocation message. returns the new node ID. uint8_t handleAllocation(uint8_t node_id, const uint8_t unique_id[]); + private: //Generates 6Byte long hash from the specified unique_id void getHash(NodeData &node_data, const uint8_t unique_id[], uint8_t size) const; @@ -61,7 +62,6 @@ class AP_DroneCAN_DNA_Server //Finds next available free Node, starting from preferred NodeID uint8_t findFreeNodeID(uint8_t preferred); - private: //Look in the storage and check if there's a valid Server Record there bool isValidNodeDataAvailable(uint8_t node_id);