Skip to content
Snippets Groups Projects
main.cpp 6.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • kongr45gpen's avatar
    kongr45gpen committed
    #include <iostream>
    
    Grigoris Pavlakis's avatar
    Grigoris Pavlakis committed
    #include "Helpers/CRCHelper.hpp"
    
    #include "Helpers/TimeHelper.hpp"
    
    #include "Services/TestService.hpp"
    
    #include "Services/ParameterService.hpp"
    
    #include "Services/RequestVerificationService.hpp"
    
    #include "Services/MemoryManagementService.hpp"
    
    athatheo's avatar
    athatheo committed
    #include "Services/EventReportService.hpp"
    
    kongr45gpen's avatar
    kongr45gpen committed
    #include "Message.hpp"
    
    #include "MessageParser.hpp"
    
    #include "Services/MemoryManagementService.hpp"
    
    kongr45gpen's avatar
    kongr45gpen committed
    #include "ErrorHandler.hpp"
    
    kongr45gpen's avatar
    kongr45gpen committed
    
    int main() {
    
    kongr45gpen's avatar
    kongr45gpen committed
    	Message packet = Message(0, 0, Message::TC, 1);
    
    kongr45gpen's avatar
    kongr45gpen committed
    
    
    kongr45gpen's avatar
    kongr45gpen committed
    	packet.appendString(5, "hello");
    	packet.appendBits(15, 0x28a8);
    	packet.appendBits(1, 1);
    
    	packet.appendSint32(-123456789);
    
    kongr45gpen's avatar
    kongr45gpen committed
    
    
    kongr45gpen's avatar
    kongr45gpen committed
    	std::cout << "Hello, World!" << std::endl;
    	std::cout << std::hex << packet.data << std::endl; // packet data must be 'helloQQ'
    
    	char string[6];
    	packet.readString(string, 5);
    
    Grigoris Pavlakis's avatar
    Grigoris Pavlakis committed
    	std::cout << "Word: " << string << " " << packet.readBits(15) << packet.readBits(1)
    	          << std::endl;
    
    	std::cout << packet.readFloat() << " " << std::dec << packet.readSint32() << std::endl;
    
    
    	// ST[17] test
    	TestService testService;
    	Message receivedPacket = Message(17, 1, Message::TC, 1);
    	testService.areYouAlive(receivedPacket);
    
    kongr45gpen's avatar
    kongr45gpen committed
    	receivedPacket = Message(17, 3, Message::TC, 1);
    
    kongr45gpen's avatar
    kongr45gpen committed
    	testService.onBoardConnection(receivedPacket);
    
    	ParameterService paramService;
    
    	Message sentPacket = Message(20, 1, Message::TC, 1);  //application id is a dummy number (1)
    
    	sentPacket.appendUint16(2);  //number of contained IDs
    	sentPacket.appendUint16(0);  //first ID
    	sentPacket.appendUint16(1);  //second ID
    
    	paramService.reportParameterIds(sentPacket);
    
    Grigoris Pavlakis's avatar
    Grigoris Pavlakis committed
    
    
    	Message sentPacket2 = Message(20, 3, Message::TC, 1);  //application id is a dummy number (1)
    	sentPacket2.appendUint16(2);  //number of contained IDs
    	sentPacket2.appendUint16(0);  //first parameter ID
    	sentPacket2.appendUint32(63238);  //settings for first parameter
    	sentPacket2.appendUint16(1);  //2nd parameter ID
    	sentPacket2.appendUint32(45823);  //settings for 2nd parameter
    
    	paramService.setParameterIds(sentPacket2);
    
    	paramService.reportParameterIds(sentPacket);
    
    	// ST[06] testing
    
    	char anotherStr[8] = "Fgthred";
    	char yetAnotherStr[2] = "F";
    
    	char *pStr = static_cast<char *>(malloc(4));
    	*pStr = 'T';
    	*(pStr + 1) = 'G';
    	*(pStr + 2) = '\0';
    
    	MemoryManagementService memMangService;
    
    	Message rcvPack = Message(6, 5, Message::TC, 1);
    
    Dimitrios Stoupis's avatar
    Dimitrios Stoupis committed
    	rcvPack.appendEnum8(MemoryManagementService::MemoryID::RAM); // Memory ID
    
    	rcvPack.appendUint16(3); // Iteration count
    
    	rcvPack.appendUint64(reinterpret_cast<uint64_t >(string)); // Start address
    
    	rcvPack.appendUint16(sizeof(string) / sizeof(string[0])); // Data read length
    
    
    	rcvPack.appendUint64(reinterpret_cast<uint64_t >(anotherStr));
    
    	rcvPack.appendUint16(sizeof(anotherStr) / sizeof(anotherStr[0]));
    
    
    	rcvPack.appendUint64(reinterpret_cast<uint64_t >(yetAnotherStr));
    
    	rcvPack.appendUint16(sizeof(yetAnotherStr) / sizeof(yetAnotherStr[0]));
    
    	memMangService.rawDataMemorySubservice.dumpRawData(rcvPack);
    
    	rcvPack = Message(6, 2, Message::TC, 1);
    
    	uint8_t data[2] = {'h', 'R'};
    	rcvPack.appendEnum8(MemoryManagementService::MemoryID::RAM); // Memory ID
    	rcvPack.appendUint16(2); // Iteration count
    	rcvPack.appendUint64(reinterpret_cast<uint64_t >(pStr)); // Start address
    	rcvPack.appendOctetString(2, data);
    	rcvPack.appendUint64(reinterpret_cast<uint64_t >(pStr + 1)); // Start address
    	rcvPack.appendOctetString(1, data);
    	memMangService.rawDataMemorySubservice.loadRawData(rcvPack);
    
    	// ST[01] test
    
    	RequestVerificationService reqVerifService;
    
    thodkatz's avatar
    thodkatz committed
    
    
    	Message receivedMessage = Message(1, 1, Message::TC, 3);
    	reqVerifService.successAcceptanceVerification(receivedMessage);
    
    	receivedMessage = Message(1, 2, Message::TC, 3);
    	reqVerifService.failAcceptanceVerification(receivedMessage);
    
    	receivedMessage = Message(1, 7, Message::TC, 3);
    	reqVerifService.successExecutionVerification(receivedMessage);
    
    	receivedMessage = Message(1, 8, Message::TC, 3);
    	reqVerifService.failExecutionVerification(receivedMessage);
    
    	receivedMessage = Message(1, 10, Message::TC, 3);
    	reqVerifService.failRoutingVerification(receivedMessage);
    
    athatheo's avatar
    athatheo committed
    	// ST[05] test [works]
    	const unsigned char eventReportData[12] = "Hello World";
    	EventReportService eventReportService;
    	eventReportService.informativeEventReport(EventReportService::InformativeUnknownEvent,
    	                                          eventReportData, 11);
    	eventReportService.lowSeverityAnomalyReport(EventReportService::LowSeverityUnknownEvent,
    	                                            eventReportData, 11);
    	eventReportService.mediumSeverityAnomalyReport(EventReportService::MediumSeverityUnknownEvent,
    	                                               eventReportData, 11);
    	eventReportService.highSeverityAnomalyReport(EventReportService::HighSeverityUnknownEvent,
    	                                             eventReportData, 11);
    
    
    	// MessageParser class test
    	std::cout << "\n";
    
    	// ST[17] test
    	Message message = Message(17, 1, Message::TC, 1);
    	MessageParser messageParser;
    	messageParser.execute(message);
    	message = Message(17, 3, Message::TC, 1);
    	message.appendUint16(7);
    	messageParser.execute(message);
    
    	// ST[01] test
    
    	message = Message(1, 1, Message::TC, 3);
    
    	messageParser.execute(message);
    
    	message = Message(1, 2, Message::TC, 3);
    
    	messageParser.execute(message);
    
    	message = Message(1, 7, Message::TC, 3);
    
    	messageParser.execute(message);
    
    	message = Message(1, 8, Message::TC, 3);
    
    	messageParser.execute(message);
    
    	message = Message(1, 10, Message::TC, 3);
    
    	messageParser.execute(message);
    
    
    kongr45gpen's avatar
    kongr45gpen committed
    	// ErrorHandler test
    	std::cout << std::flush;
    	std::cerr << std::flush;
    	ErrorHandler::reportError(receivedPacket, ErrorHandler::MessageTooShort);
    	ErrorHandler::reportInternalError(ErrorHandler::MessageTooLarge);
    	Message errorMessage(0, 0, Message::TC, 1);
    	errorMessage.appendBits(2, 7);
    	errorMessage.appendByte(15);
    
    
    	// TimeHelper test
    	Message receive = Message(9, 2, Message::TC, 1); // random values
    	TimeHelper::implementCUCTimeFormat(60, receive);
    	for (int i = 0; i < 5; i++)
    		std::cout << static_cast<int>(receive.data[i]) << " ";
    
    kongr45gpen's avatar
    kongr45gpen committed
    	return 0;
    
    Grigoris Pavlakis's avatar
    Grigoris Pavlakis committed
    }