Merge branch 'development' into mueller/dhb-docs
This commit is contained in:
commit
918783774f
@ -143,6 +143,9 @@ def handle_tests_type(args, build_dir_list: list):
|
||||
if which("valgrind") is None:
|
||||
print("Please install valgrind first")
|
||||
sys.exit(1)
|
||||
if os.path.split(os.getcwd())[1] != UNITTEST_FOLDER_NAME:
|
||||
# If we are in a different directory we try to switch into it but
|
||||
# this might fail
|
||||
os.chdir(UNITTEST_FOLDER_NAME)
|
||||
os.system("valgrind --leak-check=full ./fsfw-tests")
|
||||
os.chdir("..")
|
||||
|
@ -116,8 +116,8 @@ uint16_t CRC::crc16ccitt(uint8_t const input[], uint32_t length, uint16_t starti
|
||||
// for (int i=0; i<16 ;i++)
|
||||
// {
|
||||
// if (xor_out[i] == true)
|
||||
// crc_value = crc_value + pow(2,(15 -i)); // reverse CrC result before Final
|
||||
//XOR
|
||||
// crc_value = crc_value + pow(2,(15 -i)); // reverse CrC result before
|
||||
//Final XOR
|
||||
// }
|
||||
//
|
||||
// crc_value = 0;// for debug mode
|
||||
|
@ -65,8 +65,8 @@ class PeriodicPosixTask : public PosixThread, public PeriodicTaskIF {
|
||||
/**
|
||||
* @brief The function containing the actual functionality of the task.
|
||||
* @details The method sets and starts
|
||||
* the task's period, then enters a loop that is repeated indefinitely. Within the loop,
|
||||
* all performOperation methods of the added objects are called. Afterwards the task will be
|
||||
* the task's period, then enters a loop that is repeated indefinitely. Within the
|
||||
* loop, all performOperation methods of the added objects are called. Afterwards the task will be
|
||||
* blocked until the next period. On missing the deadline, the deadlineMissedFunction is executed.
|
||||
*/
|
||||
virtual void taskFunctionality(void);
|
||||
|
@ -13,8 +13,8 @@ class ExecutableObjectIF;
|
||||
* @brief This class represents a specialized task for periodic activities of multiple objects.
|
||||
*
|
||||
* @details MultiObjectTask is an extension to ObjectTask in the way that it is able to execute
|
||||
* multiple objects that implement the ExecutableObjectIF interface. The objects must
|
||||
* be added prior to starting the task.
|
||||
* multiple objects that implement the ExecutableObjectIF interface. The objects
|
||||
* must be added prior to starting the task.
|
||||
* @author baetz
|
||||
* @ingroup task_handling
|
||||
*/
|
||||
|
@ -25,8 +25,8 @@ class RTEMSTaskBase {
|
||||
* all other attributes are set with default values.
|
||||
* @param priority Sets the priority of a task. Values range from a low 0 to a high 99.
|
||||
* @param stack_size The stack size reserved by the operating system for the task.
|
||||
* @param nam The name of the Task, as a null-terminated String. Currently max 4 chars
|
||||
* supported (excluding Null-terminator), rest will be truncated
|
||||
* @param nam The name of the Task, as a null-terminated String. Currently max 4
|
||||
* chars supported (excluding Null-terminator), rest will be truncated
|
||||
*/
|
||||
RTEMSTaskBase(rtems_task_priority priority, size_t stack_size, const char *name);
|
||||
/**
|
||||
|
@ -51,9 +51,9 @@ class RMAP : public HasReturnvaluesIF {
|
||||
// MAKE_RETURN_CODE(0xE4); //the data that was to be sent was too long for the hw to handle (write
|
||||
// command) or the expected len was bigger than maximal expected len (read command) command was
|
||||
// not sent
|
||||
// replaced by DeviceCommunicationIF::NULLPOINTER static const ReturnValue_t COMMAND_NULLPOINTER
|
||||
// = MAKE_RETURN_CODE(0xE5); //datalen was != 0 but data was == NULL in write command, or
|
||||
// nullpointer in read command
|
||||
// replaced by DeviceCommunicationIF::NULLPOINTER static const ReturnValue_t
|
||||
// COMMAND_NULLPOINTER = MAKE_RETURN_CODE(0xE5); //datalen was != 0 but data was == NULL in write
|
||||
// command, or nullpointer in read command
|
||||
static const ReturnValue_t COMMAND_CHANNEL_DEACTIVATED =
|
||||
MAKE_RETURN_CODE(0xE6); // the channel has no port set
|
||||
static const ReturnValue_t COMMAND_PORT_OUT_OF_RANGE =
|
||||
@ -73,8 +73,8 @@ class RMAP : public HasReturnvaluesIF {
|
||||
static const ReturnValue_t REPLY_MISSMATCH = MAKE_RETURN_CODE(
|
||||
0xD3); // a read command was issued, but get_write_rply called, or other way round
|
||||
static const ReturnValue_t REPLY_TIMEOUT = MAKE_RETURN_CODE(0xD4); // timeout
|
||||
// replaced by DeviceCommunicationIF::NULLPOINTER static const ReturnValue_t REPLY_NULLPOINTER =
|
||||
// MAKE_RETURN_CODE(0xD5);//one of the arguments in a read reply was NULL return values for
|
||||
// replaced by DeviceCommunicationIF::NULLPOINTER static const ReturnValue_t REPLY_NULLPOINTER
|
||||
// = MAKE_RETURN_CODE(0xD5);//one of the arguments in a read reply was NULL return values for
|
||||
// get_reply
|
||||
static const ReturnValue_t REPLY_INTERFACE_BUSY =
|
||||
MAKE_RETURN_CODE(0xC0); // Interface is busy (transmission buffer still being processed)
|
||||
@ -169,8 +169,8 @@ class RMAP : public HasReturnvaluesIF {
|
||||
* @param buffer the data to write
|
||||
* @param length length of data
|
||||
* @return
|
||||
* - @c COMMAND_NULLPOINTER datalen was != 0 but data was == NULL in write
|
||||
* command
|
||||
* - @c COMMAND_NULLPOINTER datalen was != 0 but data was == NULL in
|
||||
* write command
|
||||
* - return codes of RMAPChannelIF::sendCommand()
|
||||
*/
|
||||
static ReturnValue_t sendWriteCommand(RMAPCookie *cookie, const uint8_t *buffer, size_t length);
|
||||
@ -205,8 +205,8 @@ class RMAP : public HasReturnvaluesIF {
|
||||
* @param cookie to cookie to read from
|
||||
* @param expLength the expected maximum length of the reply
|
||||
* @return
|
||||
* - @c COMMAND_NULLPOINTER datalen was != 0 but data was == NULL in write
|
||||
* command, or nullpointer in read command
|
||||
* - @c COMMAND_NULLPOINTER datalen was != 0 but data was == NULL in
|
||||
* write command, or nullpointer in read command
|
||||
* - return codes of RMAPChannelIF::sendCommand()
|
||||
*/
|
||||
static ReturnValue_t sendReadCommand(RMAPCookie *cookie, uint32_t expLength);
|
||||
|
@ -73,16 +73,16 @@ class RMAPChannelIF {
|
||||
* @param datalen length of data
|
||||
* @return
|
||||
* - @c RETURN_OK
|
||||
* - @c COMMAND_NO_DESCRIPTORS_AVAILABLE no descriptors available for sending command;
|
||||
* command was not sent
|
||||
* - @c COMMAND_BUFFER_FULL no receiver buffer available for expected len; command
|
||||
* was not sent
|
||||
* - @c COMMAND_TOO_BIG the data that was to be sent was too long for the hw to
|
||||
* handle (write command) or the expected len was bigger than maximal expected len (read command)
|
||||
* - @c COMMAND_NO_DESCRIPTORS_AVAILABLE no descriptors available for sending
|
||||
* command; command was not sent
|
||||
* - @c COMMAND_BUFFER_FULL no receiver buffer available for expected len;
|
||||
* command was not sent
|
||||
* - @c COMMAND_TOO_BIG the data that was to be sent was too long for the hw
|
||||
* to handle (write command) or the expected len was bigger than maximal expected len (read
|
||||
* command) command was not sent
|
||||
* - @c COMMAND_CHANNEL_DEACTIVATED the channel has no port set
|
||||
* - @c NOT_SUPPORTED if you dont feel like implementing
|
||||
* something...
|
||||
* - @c NOT_SUPPORTED if you dont feel like
|
||||
* implementing something...
|
||||
*/
|
||||
virtual ReturnValue_t sendCommand(RMAPCookie *cookie, uint8_t instruction, const uint8_t *data,
|
||||
size_t datalen) = 0;
|
||||
@ -97,8 +97,8 @@ class RMAPChannelIF {
|
||||
* - @c REPLY_NO_REPLY no reply was received
|
||||
* - @c REPLY_NOT_SENT command was not sent, implies no reply
|
||||
* - @c REPLY_NOT_YET_SENT command is still waiting to be sent
|
||||
* - @c WRITE_REPLY_INTERFACE_BUSY Interface is busy (transmission buffer still being
|
||||
* processed)
|
||||
* - @c WRITE_REPLY_INTERFACE_BUSY Interface is busy (transmission buffer still
|
||||
* being processed)
|
||||
* - @c WRITE_REPLY_TRANSMISSION_ERROR Interface encountered errors during last
|
||||
* operation, data could not be processed. (transmission error)
|
||||
* - @c WRITE_REPLY_INVALID_DATA Invalid data (amount / value)
|
||||
|
@ -32,8 +32,8 @@ static const uint8_t RMAP_COMMAND_READ = ((1 << RMAP_COMMAND_BIT) | (1 << RMAP_C
|
||||
static const uint8_t RMAP_REPLY_WRITE =
|
||||
((1 << RMAP_COMMAND_BIT_WRITE) | (1 << RMAP_COMMAND_BIT_REPLY));
|
||||
static const uint8_t RMAP_REPLY_READ = ((1 << RMAP_COMMAND_BIT_REPLY));
|
||||
//#define RMAP_COMMAND_WRITE ((1<<RMAP_COMMAND_BIT) | (1<<RMAP_COMMAND_BIT_WRITE) |
|
||||
//(1<<RMAP_COMMAND_BIT_REPLY)) #define RMAP_COMMAND_WRITE_VERIFY ((1<<RMAP_COMMAND_BIT) |
|
||||
//#define RMAP_COMMAND_WRITE ((1<<RMAP_COMMAND_BIT) | (1<<RMAP_COMMAND_BIT_WRITE)
|
||||
//| (1<<RMAP_COMMAND_BIT_REPLY)) #define RMAP_COMMAND_WRITE_VERIFY ((1<<RMAP_COMMAND_BIT) |
|
||||
//(1<<RMAP_COMMAND_BIT_WRITE) | (1<<RMAP_COMMAND_BIT_REPLY) | (1<<RMAP_COMMAND_BIT_VERIFY)) #define
|
||||
// RMAP_COMMAND_READ ((1<<RMAP_COMMAND_BIT) | (1<<RMAP_COMMAND_BIT_REPLY))
|
||||
|
||||
|
@ -45,7 +45,7 @@ TEST_CASE("Command Executor", "[cmd-exec]") {
|
||||
result = cmdExecutor.check(bytesHaveBeenRead);
|
||||
REQUIRE(result != CommandExecutor::COMMAND_ERROR);
|
||||
usleep(500);
|
||||
REQUIRE(limitIdx < 5);
|
||||
REQUIRE(limitIdx < 500);
|
||||
}
|
||||
|
||||
limitIdx = 0;
|
||||
@ -71,8 +71,9 @@ TEST_CASE("Command Executor", "[cmd-exec]") {
|
||||
limitIdx++;
|
||||
result = cmdExecutor.check(bytesHaveBeenRead);
|
||||
REQUIRE(result != CommandExecutor::COMMAND_ERROR);
|
||||
// This ensures that the tests do not block indefinitely
|
||||
usleep(500);
|
||||
REQUIRE(limitIdx < 20);
|
||||
REQUIRE(limitIdx < 500);
|
||||
}
|
||||
limitIdx = 0;
|
||||
CHECK(bytesHaveBeenRead == true);
|
||||
@ -89,7 +90,7 @@ TEST_CASE("Command Executor", "[cmd-exec]") {
|
||||
std::string allTheReply(reinterpret_cast<char*>(largerReadBuffer));
|
||||
// I am just going to assume that this string is the same across ping implementations
|
||||
// of different Linux systems
|
||||
REQUIRE(allTheReply.find("localhost ping statistics") != std::string::npos);
|
||||
REQUIRE(allTheReply.find("PING localhost") != std::string::npos);
|
||||
|
||||
// Now check failing command
|
||||
result = cmdExecutor.load("false", false, false);
|
||||
@ -101,8 +102,9 @@ TEST_CASE("Command Executor", "[cmd-exec]") {
|
||||
limitIdx++;
|
||||
result = cmdExecutor.check(bytesHaveBeenRead);
|
||||
REQUIRE(result != CommandExecutor::COMMAND_ERROR);
|
||||
// This ensures that the tests do not block indefinitely
|
||||
usleep(500);
|
||||
REQUIRE(limitIdx < 20);
|
||||
REQUIRE(limitIdx < 500);
|
||||
}
|
||||
REQUIRE(result == HasReturnvaluesIF::RETURN_FAILED);
|
||||
REQUIRE(cmdExecutor.getLastError() == 1);
|
||||
|
Loading…
Reference in New Issue
Block a user