94 lines
2.1 KiB
C
94 lines
2.1 KiB
C
|
#ifndef FSFW_DATAPOOLLOCAL_LOCPOOLDEFINITIONS_H_
|
||
|
#define FSFW_DATAPOOLLOCAL_LOCPOOLDEFINITIONS_H_
|
||
|
|
||
|
#include <cstdint>
|
||
|
#include "../objectmanager/SystemObjectIF.h"
|
||
|
#include "../objectmanager/frameworkObjects.h"
|
||
|
|
||
|
/**
|
||
|
* @brief Type definition for local pool entries.
|
||
|
*/
|
||
|
using lp_id_t = uint32_t;
|
||
|
|
||
|
namespace localpool {
|
||
|
static constexpr uint32_t INVALID_LPID = -1;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Used as a unique identifier for data sets.
|
||
|
*/
|
||
|
union sid_t {
|
||
|
static constexpr uint64_t INVALID_SID = -1;
|
||
|
static constexpr uint32_t INVALID_OBJECT_ID = objects::NO_OBJECT;
|
||
|
static constexpr uint32_t INVALID_SET_ID = -1;
|
||
|
|
||
|
|
||
|
sid_t(): raw(INVALID_SID) {}
|
||
|
|
||
|
sid_t(object_id_t objectId, uint32_t setId):
|
||
|
objectId(objectId),
|
||
|
ownerSetId(setId) {}
|
||
|
|
||
|
struct {
|
||
|
object_id_t objectId ;
|
||
|
/**
|
||
|
* A generic 32 bit ID to identify unique HK packets for a single
|
||
|
* object. For example, the DeviceCommandId_t is used for
|
||
|
* DeviceHandlers
|
||
|
*/
|
||
|
uint32_t ownerSetId;
|
||
|
};
|
||
|
/**
|
||
|
* Alternative access to the raw value. This is also the size of the type.
|
||
|
*/
|
||
|
uint64_t raw;
|
||
|
|
||
|
bool notSet() const {
|
||
|
return raw == INVALID_SID;
|
||
|
}
|
||
|
|
||
|
bool operator==(const sid_t& other) const {
|
||
|
return raw == other.raw;
|
||
|
}
|
||
|
|
||
|
bool operator!=(const sid_t& other) const {
|
||
|
return not (raw == other.raw);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Used as a global unique identifier for local pool variables.
|
||
|
*/
|
||
|
union gp_id_t {
|
||
|
static constexpr uint64_t INVALID_GPID = -1;
|
||
|
static constexpr uint32_t INVALID_OBJECT_ID = objects::NO_OBJECT;
|
||
|
static constexpr uint32_t INVALID_LPID = localpool::INVALID_LPID;
|
||
|
|
||
|
gp_id_t(): raw(INVALID_GPID) {}
|
||
|
|
||
|
gp_id_t(object_id_t objectId, lp_id_t localPoolId):
|
||
|
objectId(objectId),
|
||
|
localPoolId(localPoolId) {}
|
||
|
|
||
|
struct {
|
||
|
object_id_t objectId;
|
||
|
lp_id_t localPoolId;
|
||
|
};
|
||
|
|
||
|
uint64_t raw;
|
||
|
|
||
|
bool notSet() const {
|
||
|
return raw == INVALID_GPID;
|
||
|
}
|
||
|
|
||
|
bool operator==(const sid_t& other) const {
|
||
|
return raw == other.raw;
|
||
|
}
|
||
|
|
||
|
bool operator!=(const sid_t& other) const {
|
||
|
return not (raw == other.raw);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#endif /* FSFW_DATAPOOLLOCAL_LOCPOOLDEFINITIONS_H_ */
|