fsfw/devicehandlers/CommunicationMessage.h
Robin.Mueller d0e8eb386c renamed system context to call context
to avoid conflicts with ISIS library, I don't want to fiddle with
it if we don't have source code
2020-03-02 01:00:17 +01:00

83 lines
2.2 KiB
C++

/**
* @file CommunicationMessage.h
*
* @date 28.02.2020
*/
#ifndef FRAMEWORK_DEVICEHANDLERS_COMMUNICATIONMESSAGE_H_
#define FRAMEWORK_DEVICEHANDLERS_COMMUNICATIONMESSAGE_H_
#include <framework/ipc/MessageQueueMessage.h>
#include <framework/storagemanager/StorageManagerIF.h>
/**
* @brief Used to pass communication information between tasks
*
* @details
* Can be used to pass information like data pointers and
* data sizes between communication tasks
* like the Device Handler Comm Interfaces and Polling Tasks.
*
* Can also be used to exchange actual data if its not too large
* (e.g. Sensor values).
*
*/
class CommunicationMessage: public MessageQueueMessage {
public:
enum communicationStatus {
SEND_DATA,
PROCESS_DATA,
FAULTY,
};
//Add other messageIDs here if necessary.
static const uint8_t COMMUNICATION_MESSAGE_SIZE = HEADER_SIZE + 4 * sizeof(uint32_t);
CommunicationMessage();
/**
* Send requests with pointer to the data to be sent and send data length
* @param address Target Address
* @param sendData
* @param length
*/
void setSendRequest(uint32_t address, const uint8_t * sendData, uint32_t length);
/**
* Data message with data stored in IPC store
* @param address
* @param length
* @param storeId
*/
void setDataMessage(uint32_t address, uint32_t length, store_address_t * storeId);
/**
* Data message with data stored in actual message.
* 4 byte datafield is intialized with 0.
* Set data with specific setter functions.
*/
void setDataMessage(uint32_t address, uint32_t length);
private:
void setCommunicationStatus(communicationStatus status);
void setAddress(uint32_t address);
void setSendData(const uint8_t * sendData);
void setDataLen(uint32_t length);
/** For low size data, maximum of 4 bytes can be sent */
void setDataByte1(uint8_t byte1);
void setDataByte2(uint8_t byte2);
void setDataByte3(uint8_t byte3);
void setDataByte4(uint8_t byte4);
void setDataUINT16_1(uint16_t data1);
void setDataUINT16_2(uint16_t data2);
void setData(uint32_t data);
virtual ~CommunicationMessage();
};
#endif /* FRAMEWORK_DEVICEHANDLERS_COMMUNICATIONMESSAGE_H_ */