Go to the documentation of this file.
5 #ifndef UAVCAN_PROTOCOL_DYNAMIC_NODE_ID_SERVER_CENTRALIZED_STORAGE_HPP_INCLUDED
6 #define UAVCAN_PROTOCOL_DYNAMIC_NODE_ID_SERVER_CENTRALIZED_STORAGE_HPP_INCLUDED
16 namespace dynamic_node_id_server
41 for (
uint8_t bit = 0; bit < 8; bit++)
43 mask[
byte * 8U + bit] = (array[byte] & (1U << bit)) != 0;
54 for (
uint8_t bit = 0; bit < 8; bit++)
56 if (mask[
byte * 8U + bit])
58 array[byte] =
static_cast<uint8_t>(array[byte] | (1U << bit));
90 return -ErrInvalidParam;
103 if (node_id_int != node_id.
get())
111 new_occupation_mask[node_id.
get()] =
true;
119 if (occupation_array !=
maskToArray(new_occupation_mask))
150 #endif // Include guard
OccupationMask occupation_mask_
EnableIf< sizeof((reinterpret_cast< const R * >0)) -> size()) &&sizeof((*(reinterpret_cast< const R * >(0)))[0])
static OccupationMaskArray maskToArray(const OccupationMask &mask)
BitSet< NodeID::Max+1 > OccupationMask
static OccupationMask maskFromArray(const OccupationMaskArray &array)
int setAndGetBack(const IStorageBackend::String &key, uint32_t &inout_value)
std::size_t count() const
int get(const IStorageBackend::String &key, uint32_t &out_value) const
bool isNodeIDOccupied(NodeID node_id) const
IStorageBackend & storage_
static IStorageBackend::String convertUniqueIDToHex(const UniqueID &key)
static IStorageBackend::String getOccupationMaskKey()
Storage(IStorageBackend &storage)
int add(const NodeID node_id, const UniqueID &unique_id)
protocol::dynamic_node_id::server::Entry::FieldTypes::unique_id UniqueID
Array< IntegerSpec< 8, SignednessUnsigned, CastModeSaturate >, ArrayModeStatic, BitLenToByteLen< NodeID::Max+1 >::Result > OccupationMaskArray
NodeID getNodeIDForUniqueID(const UniqueID &unique_id) const