Testing with configured fixed-size types (#3409)

* Testing with configured fixed-size types

* Linux fixes

* Final settings

* Removing FwNativeIntType
This commit is contained in:
M Starch 2025-03-28 11:11:13 -07:00 committed by GitHub
parent c7828f504d
commit 2dcd21902d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
29 changed files with 130 additions and 92 deletions

View File

@ -148,7 +148,7 @@ SocketIpStatus IpSocket::send(const SocketDescriptor& socketDescriptor, const U8
else if (sent == -1) { else if (sent == -1) {
return SOCK_SEND_ERROR; return SOCK_SEND_ERROR;
} }
FW_ASSERT(sent > 0, sent); FW_ASSERT(sent > 0, static_cast<FwAssertArgType>(sent));
total += static_cast<U32>(sent); total += static_cast<U32>(sent);
} }
// Failed to retry enough to send all data // Failed to retry enough to send all data

View File

@ -67,7 +67,7 @@ SocketIpStatus UdpSocket::configure(const char* const hostname, const U16 port,
SocketIpStatus UdpSocket::configureSend(const char* const hostname, const U16 port, const U32 timeout_seconds, const U32 timeout_microseconds) { SocketIpStatus UdpSocket::configureSend(const char* const hostname, const U16 port, const U32 timeout_seconds, const U32 timeout_microseconds) {
//Timeout is for the send, so configure send will work with the base class //Timeout is for the send, so configure send will work with the base class
FW_ASSERT(port != 0, port); // Send cannot be on port 0 FW_ASSERT(port != 0, static_cast<FwAssertArgType>(port)); // Send cannot be on port 0
FW_ASSERT(hostname != nullptr); FW_ASSERT(hostname != nullptr);
return this->IpSocket::configure(hostname, port, timeout_seconds, timeout_microseconds); return this->IpSocket::configure(hostname, port, timeout_seconds, timeout_microseconds);
} }
@ -112,7 +112,7 @@ SocketIpStatus UdpSocket::bind(const PlatformIntType fd) {
return SOCK_FAILED_TO_READ_BACK_PORT; return SOCK_FAILED_TO_READ_BACK_PORT;
} }
FW_ASSERT(sizeof(this->m_state->m_addr_recv) == sizeof(address), sizeof(this->m_state->m_addr_recv), sizeof(address)); FW_ASSERT(sizeof(this->m_state->m_addr_recv) == sizeof(address), static_cast<FwAssertArgType>(sizeof(this->m_state->m_addr_recv)), static_cast<FwAssertArgType>(sizeof(address)));
memcpy(&this->m_state->m_addr_recv, &address, sizeof(this->m_state->m_addr_recv)); memcpy(&this->m_state->m_addr_recv, &address, sizeof(this->m_state->m_addr_recv));
return SOCK_SUCCESS; return SOCK_SUCCESS;
@ -152,8 +152,8 @@ SocketIpStatus UdpSocket::openProtocol(SocketDescriptor& socketDescriptor) {
::close(socketFd); ::close(socketFd);
return status; return status;
} }
FW_ASSERT(sizeof(this->m_state->m_addr_send) == sizeof(address), sizeof(this->m_state->m_addr_send), FW_ASSERT(sizeof(this->m_state->m_addr_send) == sizeof(address), static_cast<FwAssertArgType>(sizeof(this->m_state->m_addr_send)),
sizeof(address)); static_cast<FwAssertArgType>(sizeof(address)));
memcpy(&this->m_state->m_addr_send, &address, sizeof(this->m_state->m_addr_send)); memcpy(&this->m_state->m_addr_send, &address, sizeof(this->m_state->m_addr_send));
} }
@ -184,9 +184,9 @@ SocketIpStatus UdpSocket::openProtocol(SocketDescriptor& socketDescriptor) {
} }
// Neither configuration method was called // Neither configuration method was called
else { else {
FW_ASSERT(port > 0 || recv_port > 0, port, recv_port); FW_ASSERT(port > 0 || recv_port > 0, static_cast<FwAssertArgType>(port), static_cast<FwAssertArgType>(recv_port));
} }
FW_ASSERT(status == SOCK_SUCCESS, status); FW_ASSERT(status == SOCK_SUCCESS, static_cast<FwAssertArgType>(status));
socketDescriptor.fd = socketFd; socketDescriptor.fd = socketFd;
return status; return status;
} }

View File

@ -21,7 +21,7 @@ namespace Fw {
} }
void InputPortBase::setPortNum(FwIndexType portNum) { void InputPortBase::setPortNum(FwIndexType portNum) {
FW_ASSERT(portNum >= 0,portNum); FW_ASSERT(portNum >= 0, static_cast<FwAssertArgType>(portNum));
this->m_portNum = portNum; this->m_portNum = portNum;
} }

View File

@ -196,10 +196,10 @@ namespace Fw {
) )
{ {
#if FW_USE_TIME_BASE #if FW_USE_TIME_BASE
FW_ASSERT(a.getTimeBase() == b.getTimeBase(), a.getTimeBase(), b.getTimeBase() ); FW_ASSERT(a.getTimeBase() == b.getTimeBase(), static_cast<FwAssertArgType>(a.getTimeBase()), static_cast<FwAssertArgType>(b.getTimeBase()) );
#endif #endif
#if FW_USE_TIME_CONTEXT #if FW_USE_TIME_CONTEXT
FW_ASSERT(a.getContext() == b.getContext(), a.getContext(), b.getContext() ); FW_ASSERT(a.getContext() == b.getContext(), static_cast<FwAssertArgType>(a.getContext()), static_cast<FwAssertArgType>(b.getContext()) );
#endif #endif
U32 seconds = a.getSeconds() + b.getSeconds(); U32 seconds = a.getSeconds() + b.getSeconds();
U32 uSeconds = a.getUSeconds() + b.getUSeconds(); U32 uSeconds = a.getUSeconds() + b.getUSeconds();
@ -219,10 +219,10 @@ namespace Fw {
) )
{ {
#if FW_USE_TIME_BASE #if FW_USE_TIME_BASE
FW_ASSERT(minuend.getTimeBase() == subtrahend.getTimeBase(), minuend.getTimeBase(), subtrahend.getTimeBase()); FW_ASSERT(minuend.getTimeBase() == subtrahend.getTimeBase(), static_cast<FwAssertArgType>(minuend.getTimeBase()), static_cast<FwAssertArgType>(subtrahend.getTimeBase()));
#endif #endif
#if FW_USE_TIME_CONTEXT #if FW_USE_TIME_CONTEXT
FW_ASSERT(minuend.getContext() == subtrahend.getContext(), minuend.getContext(), subtrahend.getContext()); FW_ASSERT(minuend.getContext() == subtrahend.getContext(), static_cast<FwAssertArgType>(minuend.getContext()), static_cast<FwAssertArgType>(subtrahend.getContext()));
#endif #endif
// Assert minuend is greater than subtrahend // Assert minuend is greater than subtrahend
FW_ASSERT(minuend >= subtrahend); FW_ASSERT(minuend >= subtrahend);

View File

@ -24,7 +24,7 @@ namespace Fw {
this->m_numEntries = 0; this->m_numEntries = 0;
// make sure packet type is correct before serializing. It should // make sure packet type is correct before serializing. It should
// never be anything but FW_PACKET_TELEM, so assert. // never be anything but FW_PACKET_TELEM, so assert.
FW_ASSERT(FW_PACKET_TELEM == this->m_type,this->m_type); FW_ASSERT(FW_PACKET_TELEM == this->m_type, static_cast<FwAssertArgType>(this->m_type));
// serialize descriptor // serialize descriptor
// The function serializeBase inherited from ComPacket converts this->m_type // The function serializeBase inherited from ComPacket converts this->m_type
// to type FwPacketDescriptorType and serializes the result into this->m_tlmBuffer. // to type FwPacketDescriptorType and serializes the result into this->m_tlmBuffer.

View File

@ -88,7 +88,9 @@ TEST(Nominal, PushPop) {
printf("Testing pop...\n"); printf("Testing pop...\n");
//heap.print(); //heap.print();
for(FwQueuePriorityType ii = DEPTH-1; ii >= 0; --ii) { for(FwSizeType i = 0; i < DEPTH; i++) {
ASSERT_TRUE(DEPTH - 1 >= i);
FwSizeType ii = DEPTH - 1 - i;
ret = heap.pop(value, id); ret = heap.pop(value, id);
ASSERT_TRUE(ret); ASSERT_TRUE(ret);
ASSERT_EQ(id, static_cast<FwSizeType>(ii)); ASSERT_EQ(id, static_cast<FwSizeType>(ii));
@ -104,8 +106,8 @@ TEST(Nominal, PushPop) {
printf("Passed.\n"); printf("Passed.\n");
printf("Testing random...\n"); printf("Testing random...\n");
FwQueuePriorityType values[DEPTH] = {56, 0, 500, 57, 5}; FwQueuePriorityType values[DEPTH] = {56, 0, 127, 57, 5};
FwSizeType sorted[DEPTH] = {500, 57, 56, 5, 0}; FwSizeType sorted[DEPTH] = {127, 57, 56, 5, 0};
//heap.print(); //heap.print();
// Push values on in random order: // Push values on in random order:
for(FwSizeType ii = 0; ii < DEPTH; ++ii) { for(FwSizeType ii = 0; ii < DEPTH; ++ii) {
@ -188,9 +190,9 @@ TEST(Nominal, PushPop) {
// for things of the same priority and in priority // for things of the same priority and in priority
// order for things of different priorities. // order for things of different priorities.
FwQueuePriorityType pries[DEPTH] = {1, 7, 100, 1, 7}; FwQueuePriorityType pries[DEPTH] = {1, 7, 100, 1, 7};
FwQueuePriorityType data2[DEPTH] = {4, 22, 99, 12344, 33}; FwQueuePriorityType data2[DEPTH] = {4, 22, 99, 127, 33};
FwQueuePriorityType orderedPries[DEPTH] = {100, 7, 7, 1, 1}; FwQueuePriorityType orderedPries[DEPTH] = {100, 7, 7, 1, 1};
FwSizeType ordered[DEPTH] = {99, 22, 33, 4, 12344}; FwSizeType ordered[DEPTH] = {99, 22, 33, 4, 127};
// Push values on in random order: // Push values on in random order:
for(FwSizeType ii = 0; ii < DEPTH; ++ii) { for(FwSizeType ii = 0; ii < DEPTH; ++ii) {
// Push next value in the list: // Push next value in the list:

View File

@ -13,7 +13,7 @@ namespace Mutex {
PosixConditionVariable::PosixConditionVariable() { PosixConditionVariable::PosixConditionVariable() {
PlatformIntType status = pthread_cond_init(&this->m_handle.m_condition, nullptr); PlatformIntType status = pthread_cond_init(&this->m_handle.m_condition, nullptr);
FW_ASSERT(status == 0, status); // If this fails, something horrible happened. FW_ASSERT(status == 0, static_cast<FwAssertArgType>(status)); // If this fails, something horrible happened.
} }
PosixConditionVariable::~PosixConditionVariable() { PosixConditionVariable::~PosixConditionVariable() {
(void)pthread_cond_destroy(&this->m_handle.m_condition); (void)pthread_cond_destroy(&this->m_handle.m_condition);

View File

@ -15,7 +15,7 @@
static void testTaskRoutine(void* pointer) { static void testTaskRoutine(void* pointer) {
Os::Test::Mutex::Tester* tester = reinterpret_cast<Os::Test::Mutex::Tester*>(pointer); Os::Test::Mutex::Tester* tester = reinterpret_cast<Os::Test::Mutex::Tester*>(pointer);
for (FwIndexType i = 0; i < 100000; i++) { for (FwSizeType i = 0; i < 100000; i++) {
tester->m_mutex.lock(); tester->m_mutex.lock();
tester->m_state = Os::Test::Mutex::Tester::MutexState::LOCKED; tester->m_state = Os::Test::Mutex::Tester::MutexState::LOCKED;
@ -51,7 +51,7 @@ TEST_F(FunctionalityTester, PosixMutexDataProtection) {
Os::Test::Mutex::Tester::ProtectDataCheck protect_data_rule; Os::Test::Mutex::Tester::ProtectDataCheck protect_data_rule;
for (FwIndexType i = 0; i < 100000; i++) { for (FwSizeType i = 0; i < 100000; i++) {
protect_data_rule.apply(*tester); protect_data_rule.apply(*tester);
} }

View File

@ -41,7 +41,7 @@ QueueInterface::Status Queue ::create(const Fw::StringBase& name, FwSizeType dep
QueueInterface::Status Queue::send(const U8* buffer, QueueInterface::Status Queue::send(const U8* buffer,
FwSizeType size, FwSizeType size,
PlatformIntType priority, FwQueuePriorityType priority,
QueueInterface::BlockingType blockType) { QueueInterface::BlockingType blockType) {
FW_ASSERT(&this->m_delegate == reinterpret_cast<QueueInterface*>(&this->m_handle_storage[0])); FW_ASSERT(&this->m_delegate == reinterpret_cast<QueueInterface*>(&this->m_handle_storage[0]));
FW_ASSERT(buffer != nullptr); FW_ASSERT(buffer != nullptr);
@ -60,7 +60,7 @@ QueueInterface::Status Queue::receive(U8* destination,
FwSizeType capacity, FwSizeType capacity,
QueueInterface::BlockingType blockType, QueueInterface::BlockingType blockType,
FwSizeType& actualSize, FwSizeType& actualSize,
PlatformIntType& priority) { FwQueuePriorityType& priority) {
FW_ASSERT(&this->m_delegate == reinterpret_cast<QueueInterface*>(&this->m_handle_storage[0])); FW_ASSERT(&this->m_delegate == reinterpret_cast<QueueInterface*>(&this->m_handle_storage[0]));
FW_ASSERT(destination != nullptr); FW_ASSERT(destination != nullptr);
// Check if initialized // Check if initialized
@ -90,14 +90,14 @@ QueueHandle* Queue::getHandle(){
} }
QueueInterface::Status Queue::send(const Fw::SerializeBufferBase& message, QueueInterface::Status Queue::send(const Fw::SerializeBufferBase& message,
PlatformIntType priority, FwQueuePriorityType priority,
QueueInterface::BlockingType blockType) { QueueInterface::BlockingType blockType) {
return this->send(message.getBuffAddr(), message.getBuffLength(), priority, blockType); return this->send(message.getBuffAddr(), message.getBuffLength(), priority, blockType);
} }
QueueInterface::Status Queue::receive(Fw::SerializeBufferBase& destination, QueueInterface::Status Queue::receive(Fw::SerializeBufferBase& destination,
QueueInterface::BlockingType blockType, QueueInterface::BlockingType blockType,
PlatformIntType& priority) { FwQueuePriorityType& priority) {
FwSizeType actualSize = 0; FwSizeType actualSize = 0;
destination.resetSer(); // Reset the buffer destination.resetSer(); // Reset the buffer
QueueInterface::Status status = QueueInterface::Status status =

View File

@ -11,6 +11,7 @@ namespace Queue {
namespace Test { namespace Test {
StaticData StaticData::data; StaticData StaticData::data;
U64 InjectableStlQueueHandle::Message::order_counter = 0;
InjectableStlQueueHandle::InjectableStlQueueHandle() : InjectableStlQueueHandle::InjectableStlQueueHandle() :
// Creates the necessary handle on the heap to keep the handle size small // Creates the necessary handle on the heap to keep the handle size small
@ -63,6 +64,7 @@ QueueInterface::Status InjectableStlQueue::send(const U8* buffer, FwSizeType siz
(void) std::memcpy(message.data, buffer, static_cast<size_t>(size)); (void) std::memcpy(message.data, buffer, static_cast<size_t>(size));
message.priority = priority; message.priority = priority;
message.size = size; message.size = size;
message.order = InjectableStlQueueHandle::Message::order_counter++;
this->m_handle.m_storage.push(message); this->m_handle.m_storage.push(message);
this->m_handle.m_high_water = FW_MAX(this->m_handle.m_high_water, this->m_handle.m_storage.size()); this->m_handle.m_high_water = FW_MAX(this->m_handle.m_high_water, this->m_handle.m_storage.size());
return QueueInterface::Status::OP_OK; return QueueInterface::Status::OP_OK;

View File

@ -4,7 +4,8 @@
#include "Os/Queue.hpp" #include "Os/Queue.hpp"
#include <queue> #include <queue>
#include <deque> #include <deque>
#include <cassert>
#include <limits>
namespace Os { namespace Os {
namespace Stub { namespace Stub {
@ -62,10 +63,19 @@ struct InjectableStlQueueHandle : public QueueHandle {
U8 data[STUB_QUEUE_TEST_MESSAGE_MAX_SIZE]; U8 data[STUB_QUEUE_TEST_MESSAGE_MAX_SIZE];
FwQueuePriorityType priority; FwQueuePriorityType priority;
FwSizeType size; FwSizeType size;
U64 order;
static U64 order_counter;
//! \brief comparison utility for messages //! \brief comparison utility for messages
struct LessMessage { struct LessMessage {
bool operator()(const Message& a, const Message& b) { bool operator()(const Message& a, const Message& b) {
return std::greater<FwQueuePriorityType>()(a.priority, b.priority); // Compare priority for unequal priority
if (a.priority != b.priority) {
return std::greater<FwQueuePriorityType>()(a.priority, b.priority);
}
// Cannot have like ordered items
assert(a.order != b.order);
// Compare received order for unequal received orders
return a.order > b.order;
} }
}; };
}; };

View File

@ -50,7 +50,7 @@ struct Tester {
std::vector<TestDirectory> m_test_dirs; std::vector<TestDirectory> m_test_dirs;
std::vector<TestFile> m_test_files; std::vector<TestFile> m_test_files;
FwIndexType m_counter; //!< Counter for generating unique file/directory names U64 m_counter; //!< Counter for generating unique file/directory names
// --------------------------------------------------------------- // ---------------------------------------------------------------
// Functions to manipulate the state of the Tester w.r.t filesystem // Functions to manipulate the state of the Tester w.r.t filesystem
@ -84,9 +84,11 @@ struct Tester {
// Helper functions for testing // Helper functions for testing
// ---------------------------------------------------------------- // ----------------------------------------------------------------
std::string get_new_filename() { std::string get_new_filename() {
assert(m_counter != std::numeric_limits<U64>::max());
return "test_file_" + std::to_string(m_counter++); return "test_file_" + std::to_string(m_counter++);
} }
std::string get_new_dirname() { std::string get_new_dirname() {
assert(m_counter != std::numeric_limits<U64>::max());
return "test_dir_" + std::to_string(m_counter++); return "test_dir_" + std::to_string(m_counter++);
} }
TestFile& get_random_file() { TestFile& get_random_file() {

View File

@ -15,6 +15,7 @@ namespace Os {
namespace Test { namespace Test {
namespace Queue { namespace Queue {
FwSizeType Tester::QueueState::queues = 0; FwSizeType Tester::QueueState::queues = 0;
U64 Tester::QueueMessage::order_counter = 0;
PriorityCompare const Tester::QueueMessageComparer::HELPER = PriorityCompare(); PriorityCompare const Tester::QueueMessageComparer::HELPER = PriorityCompare();
@ -38,6 +39,10 @@ Os::QueueInterface::Status Tester::shadow_send(const U8* buffer,
QueueMessage qm; QueueMessage qm;
qm.priority = priority; qm.priority = priority;
qm.size = size; qm.size = size;
qm.order = QueueMessage::order_counter++;
// Overflow imminent, fail now!
assert(QueueMessage::order_counter != std::numeric_limits<U64>::max());
std::memcpy(qm.data, buffer, static_cast<size_t>(size)); std::memcpy(qm.data, buffer, static_cast<size_t>(size));
if (size > this->shadow.messageSize) { if (size > this->shadow.messageSize) {
return QueueInterface::Status::SIZE_MISMATCH; return QueueInterface::Status::SIZE_MISMATCH;
@ -113,7 +118,7 @@ TEST(InterfaceUninitialized, SendPointer) {
Os::Queue queue; Os::Queue queue;
Fw::String name = "My queue"; Fw::String name = "My queue";
const FwSizeType messageSize = 200; const FwSizeType messageSize = 200;
const FwQueuePriorityType priority = 300; const FwQueuePriorityType priority = 127;
U8 buffer[messageSize]; U8 buffer[messageSize];
Os::QueueInterface::Status status = Os::QueueInterface::Status status =
@ -125,7 +130,7 @@ TEST(InterfaceUninitialized, SendBuffer) {
Os::Queue queue; Os::Queue queue;
Fw::String name = "My queue"; Fw::String name = "My queue";
const FwSizeType messageSize = 200; const FwSizeType messageSize = 200;
const FwQueuePriorityType priority = 300; const FwQueuePriorityType priority = 127;
U8 storage[messageSize]; U8 storage[messageSize];
Fw::ExternalSerializeBuffer buffer(storage, sizeof storage); Fw::ExternalSerializeBuffer buffer(storage, sizeof storage);
@ -173,7 +178,7 @@ TEST(InterfaceInvalid, SendPointerNull) {
Os::Queue queue; Os::Queue queue;
Fw::String name = "My queue"; Fw::String name = "My queue";
const FwSizeType messageSize = 200; const FwSizeType messageSize = 200;
const FwQueuePriorityType priority = 300; const FwQueuePriorityType priority = 127;
ASSERT_DEATH_IF_SUPPORTED(queue.send(nullptr, messageSize, priority, Os::QueueInterface::BlockingType::BLOCKING), ASSERT_DEATH_IF_SUPPORTED(queue.send(nullptr, messageSize, priority, Os::QueueInterface::BlockingType::BLOCKING),
"Assert:.*Queue\\.cpp"); "Assert:.*Queue\\.cpp");
} }
@ -182,7 +187,7 @@ TEST(InterfaceInvalid, SendInvalidEnum) {
Os::Queue queue; Os::Queue queue;
Fw::String name = "My queue"; Fw::String name = "My queue";
const FwSizeType messageSize = 200; const FwSizeType messageSize = 200;
const FwQueuePriorityType priority = 300; const FwQueuePriorityType priority = 127;
Os::QueueInterface::BlockingType blockingType = Os::QueueInterface::BlockingType blockingType =
static_cast<Os::QueueInterface::BlockingType>(Os::QueueInterface::BlockingType::BLOCKING + 1); static_cast<Os::QueueInterface::BlockingType>(Os::QueueInterface::BlockingType::BLOCKING + 1);
ASSERT_DEATH_IF_SUPPORTED(queue.send(nullptr, messageSize, priority, blockingType), "Assert:.*Queue\\.cpp"); ASSERT_DEATH_IF_SUPPORTED(queue.send(nullptr, messageSize, priority, blockingType), "Assert:.*Queue\\.cpp");

View File

@ -6,6 +6,7 @@
#include "CommonTests.hpp" #include "CommonTests.hpp"
#include "Fw/Types/String.hpp" #include "Fw/Types/String.hpp"
struct PickedMessage { struct PickedMessage {
FwSizeType size; FwSizeType size;
FwQueuePriorityType priority; FwQueuePriorityType priority;
@ -17,7 +18,8 @@ PickedMessage pick_message(FwSizeType max_size) {
PickedMessage message; PickedMessage message;
message.size = STest::Random::lowerUpper(1, max_size); message.size = STest::Random::lowerUpper(1, max_size);
message.priority = STest::Random::lowerUpper(0, std::numeric_limits<U32>::max()); // Force priority to be in a smaller range to produce more same-priority messages
message.priority = STest::Random::lowerUpper(0, std::numeric_limits<I8>::max());
message.sent = new U8[message.size]; message.sent = new U8[message.size];
for (FwSizeType i = 0; i < message.size; i++) { for (FwSizeType i = 0; i < message.size; i++) {

View File

@ -33,6 +33,8 @@ struct Tester {
U8 data[QUEUE_MESSAGE_SIZE_UPPER_BOUND]; U8 data[QUEUE_MESSAGE_SIZE_UPPER_BOUND];
FwQueuePriorityType priority = 0; FwQueuePriorityType priority = 0;
FwSizeType size = 0; FwSizeType size = 0;
U64 order = 0;
static U64 order_counter;
}; };
struct ReceiveMessage { struct ReceiveMessage {
@ -42,7 +44,16 @@ struct Tester {
}; };
struct QueueMessageComparer { struct QueueMessageComparer {
bool operator()(const QueueMessage& a, const QueueMessage& b) { return HELPER(a.priority, b.priority); } bool operator()(const QueueMessage& a, const QueueMessage& b){
// Compare priority for unequal priority
if (a.priority != b.priority) {
return HELPER(a.priority, b.priority);
}
// Cannot have like ordered items
assert(a.order != b.order);
// Compare received order for unequal received orders
return a.order > b.order;
}
private: private:
static const PriorityCompare HELPER; static const PriorityCompare HELPER;

View File

@ -32,10 +32,12 @@ namespace Svc {
void ActiveRateGroup::configure(U32 contexts[], FwIndexType numContexts) { void ActiveRateGroup::configure(U32 contexts[], FwIndexType numContexts) {
FW_ASSERT(contexts); FW_ASSERT(contexts);
FW_ASSERT(numContexts == this->getNum_RateGroupMemberOut_OutputPorts(),numContexts,this->getNum_RateGroupMemberOut_OutputPorts()); FW_ASSERT(numContexts == this->getNum_RateGroupMemberOut_OutputPorts(),
static_cast<FwAssertArgType>(numContexts),
static_cast<FwAssertArgType>(this->getNum_RateGroupMemberOut_OutputPorts()));
FW_ASSERT(FW_NUM_ARRAY_ELEMENTS(this->m_contexts) == this->getNum_RateGroupMemberOut_OutputPorts(), FW_ASSERT(FW_NUM_ARRAY_ELEMENTS(this->m_contexts) == this->getNum_RateGroupMemberOut_OutputPorts(),
FW_NUM_ARRAY_ELEMENTS(this->m_contexts), static_cast<FwAssertArgType>(FW_NUM_ARRAY_ELEMENTS(this->m_contexts)),
this->getNum_RateGroupMemberOut_OutputPorts()); static_cast<FwAssertArgType>(this->getNum_RateGroupMemberOut_OutputPorts()));
this->m_numContexts = numContexts; this->m_numContexts = numContexts;
// copy context values // copy context values

View File

@ -62,7 +62,7 @@ namespace Svc {
this->m_maxSize = maxFileSize; this->m_maxSize = maxFileSize;
this->m_sizeOfSize = sizeOfSize; this->m_sizeOfSize = sizeOfSize;
FW_ASSERT(sizeOfSize <= sizeof(FwSizeType), sizeOfSize); FW_ASSERT(sizeOfSize <= sizeof(FwSizeType), static_cast<FwAssertArgType>(sizeOfSize));
FW_ASSERT(m_maxSize > sizeOfSize, static_cast<FwAssertArgType>(m_maxSize)); FW_ASSERT(m_maxSize > sizeOfSize, static_cast<FwAssertArgType>(m_maxSize));
} }

View File

@ -32,7 +32,7 @@ void BufferRepeater ::configure(BufferRepeater::BufferRepeaterFailureOption allo
bool BufferRepeater ::check_allocation(FwIndexType index, bool BufferRepeater ::check_allocation(FwIndexType index,
const Fw::Buffer& new_allocation, const Fw::Buffer& new_allocation,
const Fw::Buffer& incoming_buffer) { const Fw::Buffer& incoming_buffer) {
FW_ASSERT(index < NUM_PORTOUT_OUTPUT_PORTS, index); FW_ASSERT(index < NUM_PORTOUT_OUTPUT_PORTS, static_cast<FwAssertArgType>(index));
bool is_valid = (new_allocation.getData() != nullptr) && (new_allocation.getSize() >= incoming_buffer.getSize()); bool is_valid = (new_allocation.getData() != nullptr) && (new_allocation.getSize() >= incoming_buffer.getSize());
// Respond to invalid buffer allocation // Respond to invalid buffer allocation

View File

@ -105,7 +105,7 @@ void ComQueue::configure(QueueConfigurationTable queueConfig,
// Get current queue's allocation size and safety check the values // Get current queue's allocation size and safety check the values
FwSizeType allocationSize = this->m_prioritizedList[i].depth * this->m_prioritizedList[i].msgSize; FwSizeType allocationSize = this->m_prioritizedList[i].depth * this->m_prioritizedList[i].msgSize;
FW_ASSERT(this->m_prioritizedList[i].index < static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_queues)), FW_ASSERT(this->m_prioritizedList[i].index < static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(this->m_queues)),
this->m_prioritizedList[i].index); static_cast<FwAssertArgType>(this->m_prioritizedList[i].index));
FW_ASSERT( FW_ASSERT(
(allocationSize + allocationOffset) <= totalAllocation, (allocationSize + allocationOffset) <= totalAllocation,
static_cast<FwAssertArgType>(allocationSize), static_cast<FwAssertArgType>(allocationSize),
@ -132,14 +132,15 @@ void ComQueue::configure(QueueConfigurationTable queueConfig,
void ComQueue::comQueueIn_handler(const FwIndexType portNum, Fw::ComBuffer& data, U32 context) { void ComQueue::comQueueIn_handler(const FwIndexType portNum, Fw::ComBuffer& data, U32 context) {
// Ensure that the port number of comQueueIn is consistent with the expectation // Ensure that the port number of comQueueIn is consistent with the expectation
FW_ASSERT(portNum >= 0 && portNum < COM_PORT_COUNT, portNum); FW_ASSERT(portNum >= 0 && portNum < COM_PORT_COUNT, static_cast<FwAssertArgType>(portNum));
(void)this->enqueue(portNum, QueueType::COM_QUEUE, reinterpret_cast<const U8*>(&data), sizeof(Fw::ComBuffer)); (void)this->enqueue(portNum, QueueType::COM_QUEUE, reinterpret_cast<const U8*>(&data), sizeof(Fw::ComBuffer));
} }
void ComQueue::buffQueueIn_handler(const FwIndexType portNum, Fw::Buffer& fwBuffer) { void ComQueue::buffQueueIn_handler(const FwIndexType portNum, Fw::Buffer& fwBuffer) {
const FwIndexType queueNum = portNum + COM_PORT_COUNT; FW_ASSERT(std::numeric_limits<FwIndexType>::max() - COM_PORT_COUNT > portNum);
const FwIndexType queueNum = static_cast<FwIndexType>(portNum + COM_PORT_COUNT);
// Ensure that the port number of buffQueueIn is consistent with the expectation // Ensure that the port number of buffQueueIn is consistent with the expectation
FW_ASSERT(portNum >= 0 && portNum < BUFFER_PORT_COUNT, portNum); FW_ASSERT(portNum >= 0 && portNum < BUFFER_PORT_COUNT, static_cast<FwAssertArgType>(portNum));
FW_ASSERT(queueNum < TOTAL_PORT_COUNT); FW_ASSERT(queueNum < TOTAL_PORT_COUNT);
bool status = bool status =
this->enqueue(queueNum, QueueType::BUFFER_QUEUE, reinterpret_cast<const U8*>(&fwBuffer), sizeof(Fw::Buffer)); this->enqueue(queueNum, QueueType::BUFFER_QUEUE, reinterpret_cast<const U8*>(&fwBuffer), sizeof(Fw::Buffer));
@ -156,7 +157,7 @@ void ComQueue::comStatusIn_handler(const FwIndexType portNum, Fw::Success& condi
this->m_state = READY; this->m_state = READY;
this->processQueue(); this->processQueue();
// A message may or may not be sent. Thus, READY or WAITING are acceptable final states. // A message may or may not be sent. Thus, READY or WAITING are acceptable final states.
FW_ASSERT((this->m_state == WAITING || this->m_state == READY), this->m_state); FW_ASSERT((this->m_state == WAITING || this->m_state == READY), static_cast<FwAssertArgType>(this->m_state));
} else { } else {
this->m_state = WAITING; this->m_state = WAITING;
} }
@ -164,7 +165,7 @@ void ComQueue::comStatusIn_handler(const FwIndexType portNum, Fw::Success& condi
// Both READY and unknown states should not be possible at this point. To receive a status message we must be // Both READY and unknown states should not be possible at this point. To receive a status message we must be
// one of the WAITING or RETRY states. // one of the WAITING or RETRY states.
default: default:
FW_ASSERT(0, this->m_state); FW_ASSERT(0, static_cast<FwAssertArgType>(this->m_state));
break; break;
} }
} }
@ -192,7 +193,7 @@ void ComQueue::run_handler(const FwIndexType portNum, U32 context) {
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
void ComQueue::buffQueueIn_overflowHook(FwIndexType portNum, Fw::Buffer& fwBuffer) { void ComQueue::buffQueueIn_overflowHook(FwIndexType portNum, Fw::Buffer& fwBuffer) {
FW_ASSERT(portNum >= 0 && portNum < BUFFER_PORT_COUNT, portNum); FW_ASSERT(portNum >= 0 && portNum < BUFFER_PORT_COUNT, static_cast<FwAssertArgType>(portNum));
this->deallocate_out(portNum, fwBuffer); this->deallocate_out(portNum, fwBuffer);
} }
@ -204,13 +205,15 @@ bool ComQueue::enqueue(const FwIndexType queueNum, QueueType queueType, const U8
// Enqueue the given message onto the matching queue. When no space is available then emit the queue overflow event, // Enqueue the given message onto the matching queue. When no space is available then emit the queue overflow event,
// set the appropriate throttle, and move on. Will assert if passed a message for a depth 0 queue. // set the appropriate throttle, and move on. Will assert if passed a message for a depth 0 queue.
const FwSizeType expectedSize = (queueType == QueueType::COM_QUEUE) ? sizeof(Fw::ComBuffer) : sizeof(Fw::Buffer); const FwSizeType expectedSize = (queueType == QueueType::COM_QUEUE) ? sizeof(Fw::ComBuffer) : sizeof(Fw::Buffer);
const FwIndexType portNum = queueNum - ((queueType == QueueType::COM_QUEUE) ? 0 : COM_PORT_COUNT); FW_ASSERT((queueType == QueueType::COM_QUEUE) || (queueNum >= COM_PORT_COUNT),
static_cast<FwAssertArgType>(queueType), static_cast<FwAssertArgType>(queueNum));
const FwIndexType portNum = static_cast<FwIndexType>(queueNum - ((queueType == QueueType::COM_QUEUE) ? 0 : COM_PORT_COUNT));
bool rvStatus = true; bool rvStatus = true;
FW_ASSERT( FW_ASSERT(
expectedSize == size, expectedSize == size,
static_cast<FwAssertArgType>(size), static_cast<FwAssertArgType>(size),
static_cast<FwAssertArgType>(expectedSize)); static_cast<FwAssertArgType>(expectedSize));
FW_ASSERT(portNum >= 0, portNum); FW_ASSERT(portNum >= 0, static_cast<FwAssertArgType>(portNum));
Fw::SerializeStatus status = this->m_queues[queueNum].enqueue(data, size); Fw::SerializeStatus status = this->m_queues[queueNum].enqueue(data, size);
if (status == Fw::FW_SERIALIZE_NO_ROOM_LEFT) { if (status == Fw::FW_SERIALIZE_NO_ROOM_LEFT) {
if (!this->m_throttle[queueNum]) { if (!this->m_throttle[queueNum]) {

View File

@ -14,7 +14,8 @@
#include <new> // placement new #include <new> // placement new
namespace Svc { namespace Svc {
static_assert(DP_MAX_DIRECTORIES > 0, "Configuration DP_MAX_DIRECTORIES must be positive");
static_assert(DP_MAX_FILES > 0, "Configuration DP_MAX_FILES must be positive");
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// Component construction and destruction // Component construction and destruction
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
@ -321,7 +322,7 @@ namespace Svc {
void DpCatalog::appendFileState(const DpStateEntry& entry) { void DpCatalog::appendFileState(const DpStateEntry& entry) {
FW_ASSERT(this->m_stateFileData); FW_ASSERT(this->m_stateFileData);
FW_ASSERT(entry.dir < static_cast<FwIndexType>(this->m_numDirectories), FW_ASSERT(entry.dir < static_cast<FwIndexType>(this->m_numDirectories),
entry.dir, static_cast<FwAssertArgType>(entry.dir),
static_cast<FwAssertArgType>(this->m_numDirectories) static_cast<FwAssertArgType>(this->m_numDirectories)
); );
@ -459,7 +460,7 @@ namespace Svc {
static_cast<FwAssertArgType>(this->m_numDpSlots - totalFiles)); static_cast<FwAssertArgType>(this->m_numDpSlots - totalFiles));
// extract metadata for each file // extract metadata for each file
for (FwNativeUIntType file = 0; file < filesRead; file++) { for (FwSizeType file = 0; file < filesRead; file++) {
// only consider files with the DP extension // only consider files with the DP extension

View File

@ -204,7 +204,7 @@ namespace Svc {
size = dataSize; size = dataSize;
stat = dpFile.write(dpData,size); stat = dpFile.write(dpData,size);
if (stat != Os::File::Status::OP_OK) { if (stat != Os::File::Status::OP_OK) {
printf("Error writing DP file data %s: status: %" PRI_FwNativeIntType "\n",fileName.toChar(),stat); printf("Error writing DP file data %s: status: %" PRI_FwEnumStoreType "\n",fileName.toChar(),static_cast<FwEnumStoreType>(stat));
return; return;
} }
if (static_cast<FwSizeType>(size) != dataSize) { if (static_cast<FwSizeType>(size) != dataSize) {

View File

@ -61,7 +61,7 @@ namespace Svc {
static_cast<FwSizeType>(fileQueueDepth), static_cast<FwSizeType>(fileQueueDepth),
static_cast<FwSizeType>(sizeof(struct FileEntry)) static_cast<FwSizeType>(sizeof(struct FileEntry))
); );
FW_ASSERT(stat == Os::Queue::OP_OK, stat); FW_ASSERT(stat == Os::Queue::OP_OK, static_cast<FwAssertArgType>(stat));
} }
void FileDownlink :: void FileDownlink ::
@ -191,7 +191,8 @@ namespace Svc {
return; return;
} }
//Non-ignored buffers cannot be returned in "DOWNLINK" and "IDLE" state. Only in "WAIT", "CANCEL" state. //Non-ignored buffers cannot be returned in "DOWNLINK" and "IDLE" state. Only in "WAIT", "CANCEL" state.
FW_ASSERT(this->m_mode.get() == Mode::WAIT || this->m_mode.get() == Mode::CANCEL, this->m_mode.get()); FW_ASSERT(this->m_mode.get() == Mode::WAIT || this->m_mode.get() == Mode::CANCEL,
static_cast<FwAssertArgType>(this->m_mode.get()));
//If the last packet has been sent (and is returning now) then finish the file //If the last packet has been sent (and is returning now) then finish the file
if (this->m_lastCompletedType == Fw::FilePacket::T_END || if (this->m_lastCompletedType == Fw::FilePacket::T_END ||
this->m_lastCompletedType == Fw::FilePacket::T_CANCEL) { this->m_lastCompletedType == Fw::FilePacket::T_CANCEL) {
@ -494,8 +495,9 @@ namespace Svc {
void FileDownlink :: void FileDownlink ::
downlinkPacket() downlinkPacket()
{ {
FW_ASSERT(this->m_lastCompletedType != Fw::FilePacket::T_NONE, this->m_lastCompletedType); FW_ASSERT(this->m_lastCompletedType != Fw::FilePacket::T_NONE, static_cast<FwAssertArgType>(this->m_lastCompletedType));
FW_ASSERT(this->m_mode.get() == Mode::CANCEL || this->m_mode.get() == Mode::DOWNLINK, this->m_mode.get()); FW_ASSERT(this->m_mode.get() == Mode::CANCEL || this->m_mode.get() == Mode::DOWNLINK,
static_cast<FwAssertArgType>(this->m_mode.get()));
//If canceled mode and currently downlinking data then send a cancel packet //If canceled mode and currently downlinking data then send a cancel packet
if (this->m_mode.get() == Mode::CANCEL && this->m_lastCompletedType == Fw::FilePacket::T_START) { if (this->m_mode.get() == Mode::CANCEL && this->m_lastCompletedType == Fw::FilePacket::T_START) {
this->sendCancelPacket(); this->sendCancelPacket();
@ -540,7 +542,7 @@ namespace Svc {
getBuffer(Fw::Buffer& buffer, PacketType type) getBuffer(Fw::Buffer& buffer, PacketType type)
{ {
//Check type is correct //Check type is correct
FW_ASSERT(type < COUNT_PACKET_TYPE && type >= 0, type); FW_ASSERT(type < COUNT_PACKET_TYPE && type >= 0, static_cast<FwAssertArgType>(type));
// Wrap the buffer around our indexed memory. // Wrap the buffer around our indexed memory.
buffer.setData(this->m_memoryStore[type]); buffer.setData(this->m_memoryStore[type]);
buffer.setSize(FILEDOWNLINK_INTERNAL_BUFFER_SIZE); buffer.setSize(FILEDOWNLINK_INTERNAL_BUFFER_SIZE);

View File

@ -16,8 +16,8 @@ constexpr U32 CIRCULAR_BUFFER_TEST_SIZE = 2048;
//! \note The frame is generated with random data of random size //! \note The frame is generated with random data of random size
//! \return The size of the generated frame //! \return The size of the generated frame
FwSizeType generate_random_fprime_frame(Types::CircularBuffer& circular_buffer) { FwSizeType generate_random_fprime_frame(Types::CircularBuffer& circular_buffer) {
constexpr FwIndexType FRAME_HEADER_SIZE = 8; constexpr FwSizeType FRAME_HEADER_SIZE = 8;
constexpr FwIndexType FRAME_FOOTER_SIZE = 4; constexpr FwSizeType FRAME_FOOTER_SIZE = 4;
// Generate random packet size (1-1024 bytes; because 0 would trigger undefined behavior warnings) // Generate random packet size (1-1024 bytes; because 0 would trigger undefined behavior warnings)
// 1024 is max length as per FrameAccumulator/FrameDetector/FprimeFrameDetector @ LengthToken::MaximumLength // 1024 is max length as per FrameAccumulator/FrameDetector/FprimeFrameDetector @ LengthToken::MaximumLength
U32 packet_size = STest::Random::lowerUpper(1, 1024); U32 packet_size = STest::Random::lowerUpper(1, 1024);
@ -46,15 +46,15 @@ FwSizeType generate_random_fprime_frame(Types::CircularBuffer& circular_buffer)
FwSizeType fprime_frame_size = FRAME_HEADER_SIZE + packet_size + FRAME_FOOTER_SIZE; FwSizeType fprime_frame_size = FRAME_HEADER_SIZE + packet_size + FRAME_FOOTER_SIZE;
U8 fprime_frame[fprime_frame_size]; U8 fprime_frame[fprime_frame_size];
// Copy header, packet_data, and CRC into the full frame // Copy header, packet_data, and CRC into the full frame
for (FwIndexType i = 0; i < static_cast<FwIndexType>(FRAME_HEADER_SIZE); i++) { for (FwSizeType i = 0; i < static_cast<FwSizeType>(FRAME_HEADER_SIZE); i++) {
fprime_frame[i] = frame_header[i]; fprime_frame[i] = frame_header[i];
} }
for (FwIndexType i = 0; i < static_cast<FwIndexType>(packet_size); i++) { for (FwSizeType i = 0; i < static_cast<FwSizeType>(packet_size); i++) {
fprime_frame[i + FRAME_HEADER_SIZE] = packet_data[i]; fprime_frame[i + FRAME_HEADER_SIZE] = packet_data[i];
} }
for (FwIndexType i = 0; i < static_cast<FwIndexType>(FRAME_FOOTER_SIZE); i++) { for (FwSizeType i = 0; i < static_cast<FwSizeType>(FRAME_FOOTER_SIZE); i++) {
// crc is a U32; unpack into 4 bytes (shift by 24->-16->8->0 bits, mask with 0xFF) // crc is a U32; unpack into 4 bytes (shift by 24->-16->8->0 bits, mask with 0xFF)
fprime_frame[i + FRAME_HEADER_SIZE + static_cast<FwIndexType>(packet_size)] = fprime_frame[i + FRAME_HEADER_SIZE + static_cast<FwSizeType>(packet_size)] =
static_cast<U8>((crc_result.asBigEndianU32() >> (8 * (3 - i))) & 0xFF); static_cast<U8>((crc_result.asBigEndianU32() >> (8 * (3 - i))) & 0xFF);
} }
// Serialize frame into circular buffer // Serialize frame into circular buffer
@ -62,7 +62,7 @@ FwSizeType generate_random_fprime_frame(Types::CircularBuffer& circular_buffer)
// Uncomment for debugging // Uncomment for debugging
// printf("Serialized %llu bytes:\n", fprime_frame_size); // printf("Serialized %llu bytes:\n", fprime_frame_size);
// for (FwIndexType i = 0; i < static_cast<FwIndexType>(fprime_frame_size); i++) { // for (FwSizeType i = 0; i < static_cast<FwSizeType>(fprime_frame_size); i++) {
// printf("%02X ", fprime_frame[i]); // printf("%02X ", fprime_frame[i]);
// } // }
return fprime_frame_size; return fprime_frame_size;

View File

@ -25,10 +25,12 @@ PassiveRateGroup::~PassiveRateGroup() {}
void PassiveRateGroup::configure(U32 contexts[], FwIndexType numContexts) { void PassiveRateGroup::configure(U32 contexts[], FwIndexType numContexts) {
FW_ASSERT(contexts); FW_ASSERT(contexts);
FW_ASSERT(numContexts == this->getNum_RateGroupMemberOut_OutputPorts(),numContexts,this->getNum_RateGroupMemberOut_OutputPorts()); FW_ASSERT(numContexts == this->getNum_RateGroupMemberOut_OutputPorts(),
static_cast<FwAssertArgType>(numContexts),
static_cast<FwAssertArgType>(this->getNum_RateGroupMemberOut_OutputPorts()));
FW_ASSERT(FW_NUM_ARRAY_ELEMENTS(this->m_contexts) == this->getNum_RateGroupMemberOut_OutputPorts(), FW_ASSERT(FW_NUM_ARRAY_ELEMENTS(this->m_contexts) == this->getNum_RateGroupMemberOut_OutputPorts(),
FW_NUM_ARRAY_ELEMENTS(this->m_contexts), static_cast<FwAssertArgType>(FW_NUM_ARRAY_ELEMENTS(this->m_contexts)),
this->getNum_RateGroupMemberOut_OutputPorts()); static_cast<FwAssertArgType>(this->getNum_RateGroupMemberOut_OutputPorts()));
this->m_numContexts = numContexts; this->m_numContexts = numContexts;
// copy context values // copy context values

View File

@ -33,11 +33,11 @@ void SeqDispatcher::runSequence(FwIndexType sequencerIdx,
// this function is only designed for internal usage // this function is only designed for internal usage
// we can guarantee it cannot be called with input that would fail // we can guarantee it cannot be called with input that would fail
FW_ASSERT(sequencerIdx >= 0 && sequencerIdx < SeqDispatcherSequencerPorts, FW_ASSERT(sequencerIdx >= 0 && sequencerIdx < SeqDispatcherSequencerPorts,
sequencerIdx); static_cast<FwAssertArgType>(sequencerIdx));
FW_ASSERT(this->isConnected_seqRunOut_OutputPort(sequencerIdx)); FW_ASSERT(this->isConnected_seqRunOut_OutputPort(sequencerIdx));
FW_ASSERT(this->m_entryTable[sequencerIdx].state == FW_ASSERT(this->m_entryTable[sequencerIdx].state ==
SeqDispatcher_CmdSequencerState::AVAILABLE, SeqDispatcher_CmdSequencerState::AVAILABLE,
this->m_entryTable[sequencerIdx].state); static_cast<FwAssertArgType>(this->m_entryTable[sequencerIdx].state));
if (block == Fw::Wait::NO_WAIT) { if (block == Fw::Wait::NO_WAIT) {
this->m_entryTable[sequencerIdx].state = this->m_entryTable[sequencerIdx].state =
@ -61,7 +61,8 @@ void SeqDispatcher::seqStartIn_handler(
FwIndexType portNum, //!< The port number FwIndexType portNum, //!< The port number
const Fw::StringBase& fileName //!< The sequence file name const Fw::StringBase& fileName //!< The sequence file name
) { ) {
FW_ASSERT(portNum >= 0 && portNum < SeqDispatcherSequencerPorts, portNum); FW_ASSERT(portNum >= 0 && portNum < SeqDispatcherSequencerPorts,
static_cast<FwAssertArgType>(portNum));
if (this->m_entryTable[portNum].state == if (this->m_entryTable[portNum].state ==
SeqDispatcher_CmdSequencerState::RUNNING_SEQUENCE_BLOCK || SeqDispatcher_CmdSequencerState::RUNNING_SEQUENCE_BLOCK ||
this->m_entryTable[portNum].state == this->m_entryTable[portNum].state ==
@ -96,7 +97,8 @@ void SeqDispatcher::seqDoneIn_handler(
U32 cmdSeq, //!< Command Sequence U32 cmdSeq, //!< Command Sequence
const Fw::CmdResponse& response //!< The command response argument const Fw::CmdResponse& response //!< The command response argument
) { ) {
FW_ASSERT(portNum >= 0 && portNum < SeqDispatcherSequencerPorts, portNum); FW_ASSERT(portNum >= 0 && portNum < SeqDispatcherSequencerPorts,
static_cast<FwAssertArgType>(portNum));
if (this->m_entryTable[portNum].state != if (this->m_entryTable[portNum].state !=
SeqDispatcher_CmdSequencerState::RUNNING_SEQUENCE_BLOCK && SeqDispatcher_CmdSequencerState::RUNNING_SEQUENCE_BLOCK &&
this->m_entryTable[portNum].state != this->m_entryTable[portNum].state !=

View File

@ -38,7 +38,7 @@ StaticMemoryComponentImpl ::~StaticMemoryComponentImpl() {}
void StaticMemoryComponentImpl ::bufferDeallocate_handler(const FwIndexType portNum, Fw::Buffer& fwBuffer) { void StaticMemoryComponentImpl ::bufferDeallocate_handler(const FwIndexType portNum, Fw::Buffer& fwBuffer) {
FW_ASSERT(portNum < static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(m_static_memory))); FW_ASSERT(portNum < static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(m_static_memory)));
FW_ASSERT(m_allocated[portNum], portNum); // It is also an error to deallocate before returning FW_ASSERT(m_allocated[portNum], static_cast<FwAssertArgType>(portNum)); // It is also an error to deallocate before returning
// Check the memory returned is within the region // Check the memory returned is within the region
FW_ASSERT(fwBuffer.getData() >= m_static_memory[portNum]); FW_ASSERT(fwBuffer.getData() >= m_static_memory[portNum]);
FW_ASSERT( FW_ASSERT(
@ -51,7 +51,7 @@ void StaticMemoryComponentImpl ::bufferDeallocate_handler(const FwIndexType port
Fw::Buffer StaticMemoryComponentImpl ::bufferAllocate_handler(const FwIndexType portNum, Fw::Buffer::SizeType size) { Fw::Buffer StaticMemoryComponentImpl ::bufferAllocate_handler(const FwIndexType portNum, Fw::Buffer::SizeType size) {
FW_ASSERT(portNum < static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(m_static_memory))); FW_ASSERT(portNum < static_cast<FwIndexType>(FW_NUM_ARRAY_ELEMENTS(m_static_memory)));
FW_ASSERT(size <= sizeof(m_static_memory[portNum])); // It is a topology error to ask for too much from this component FW_ASSERT(size <= sizeof(m_static_memory[portNum])); // It is a topology error to ask for too much from this component
FW_ASSERT(not m_allocated[portNum], portNum); // It is also an error to allocate again before returning FW_ASSERT(not m_allocated[portNum], static_cast<FwAssertArgType>(portNum)); // It is also an error to allocate again before returning
m_allocated[portNum] = true; m_allocated[portNum] = true;
Fw::Buffer buffer(m_static_memory[portNum], sizeof(m_static_memory[0])); Fw::Buffer buffer(m_static_memory[portNum], sizeof(m_static_memory[0]));
return buffer; return buffer;

View File

@ -48,23 +48,23 @@ typedef int PlatformIntType;
typedef unsigned int PlatformUIntType; typedef unsigned int PlatformUIntType;
#define PRI_PlatformUIntType "u" #define PRI_PlatformUIntType "u"
typedef PlatformIntType PlatformIndexType; typedef int16_t PlatformIndexType;
#define PRI_PlatformIndexType PRI_PlatformIntType #define PRI_PlatformIndexType PRIi16
typedef int64_t PlatformSignedSizeType; typedef int64_t PlatformSignedSizeType;
#define PRI_PlatformSignedSizeType PRId64 #define PRI_PlatformSignedSizeType PRIi64
typedef uint64_t PlatformSizeType; typedef uint64_t PlatformSizeType;
#define PRI_PlatformSizeType PRIu64 #define PRI_PlatformSizeType PRIu64
typedef PlatformIntType PlatformAssertArgType; typedef int32_t PlatformAssertArgType;
#define PRI_PlatformAssertArgType PRI_PlatformIntType #define PRI_PlatformAssertArgType PRIi32
typedef PlatformIntType PlatformTaskPriorityType; typedef uint8_t PlatformTaskPriorityType;
#define PRI_PlatformTaskPriorityType PRI_PlatformIntType #define PRI_PlatformTaskPriorityType PRIu8
typedef PlatformIntType PlatformQueuePriorityType; typedef uint8_t PlatformQueuePriorityType;
#define PRI_PlatformQueuePriorityType PRI_PlatformIntType #define PRI_PlatformQueuePriorityType PRIu8
// Linux/Darwin definitions for pointer have various sizes across platforms // Linux/Darwin definitions for pointer have various sizes across platforms
// and since these definitions need to be consistent we must ask the size. // and since these definitions need to be consistent we must ask the size.

View File

@ -13,8 +13,8 @@ namespace Svc {
// data products can be stored. The array passed // data products can be stored. The array passed
// to the initializer for DpCatalog cannot exceed // to the initializer for DpCatalog cannot exceed
// this size. // this size.
static const FwSizeType DP_MAX_DIRECTORIES = 2; static const FwIndexType DP_MAX_DIRECTORIES = 2;
static const FwSizeType DP_MAX_FILES = 1000; static const FwIndexType DP_MAX_FILES = 127;
} }
#endif /* SVC_DPCATALOG_CONFIG_HPP_ */ #endif /* SVC_DPCATALOG_CONFIG_HPP_ */

View File

@ -39,14 +39,6 @@ typedef PlatformSizeType FwSizeType;
typedef PlatformAssertArgType FwAssertArgType; typedef PlatformAssertArgType FwAssertArgType;
#define PRI_FwAssertArgType PRI_PlatformAssertArgType #define PRI_FwAssertArgType PRI_PlatformAssertArgType
// The type of a machine integer. Ordinarily this should be int.
typedef PlatformIntType FwNativeIntType;
#define PRI_FwNativeIntType PRI_PlatformIntType
// The type of a machine unsigned integer. Ordinarily this should be unsigned int.
typedef PlatformUIntType FwNativeUIntType;
#define PRI_FwNativeUIntType PRI_PlatformUIntType
// Task priority type // Task priority type
typedef PlatformTaskPriorityType FwTaskPriorityType; typedef PlatformTaskPriorityType FwTaskPriorityType;
#define PRI_FwTaskPriorityType PRI_PlatformTaskPriorityType #define PRI_FwTaskPriorityType PRI_PlatformTaskPriorityType