blob: 585c0a1d84740a51a5752079cf24aa8df5fa3c34 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 - 2017 ACIN, Profactor GmbH
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Alois Zoitl, Ingo Hegny, Gerhard Ebenhofer - initial API and implementation and/or initial documentation
* Alois Zoitl - cleaned up main, inserted new architecture initilasation api
*******************************************************************************/
#include "../forte_architecture.h"
#include "../devlog.h"
#include "../../stdfblib/ita/RMT_DEV.h"
#include <stdio.h>
#include <signal.h>
//this keeps away a lot of rtti and exception handling stuff
extern "C" void __cxa_pure_virtual(void){
//TODO maybe add some reporting here
//Although we should never get here
//if we are here something very very bad has happened e.g., stack overflow or other memory corruption
}
RMT_DEV *poDev = 0;
void endForte(int pa_nSig){
(void) pa_nSig;
if(0 != poDev){
poDev->changeFBExecutionState(cg_nMGM_CMD_Kill);
}
}
/*!\brief Creates the Device-Object
* \param pa_acMGRID A string containing IP and Port like [IP]:[Port]
*/
void createDev(const char *pa_acMGRID){
signal(SIGINT, endForte);
signal(SIGTERM, endForte);
poDev = new RMT_DEV;
#ifdef FORTE_FBTESTS
CFBTestsManager::getInstance().runAllTests();
#endif
poDev->setMGR_ID(pa_acMGRID);
poDev->startDevice();
DEVLOG_INFO("FORTE is up and running\n");
poDev->MGR.joinResourceThread();
DEVLOG_INFO("FORTE finished\n");
delete poDev;
}
/*!\brief Lists the help for FORTE
*
*/
void listHelp(){
printf("\nUsage of FORTE:\n");
printf(" -h\t lists this help.\n");
printf("\n");
printf(" -c\t sets the destination for the connection.\n");
printf(" \t Usage: forte -c <IP>:<Port>");
printf("\n");
}
int main(int argc, char *arg[]){
if(CForteArchitecture::initialize()){
if(argc <= 1){ //! Default Value (localhost:61499)
createDev("localhost:61499");
}
else{
if(strcmp("-c", arg[1]) == 0){ //! sets the destination for the connection
createDev(arg[2]);
}
else{ //! Lists the help for FORTE
listHelp();
}
}
CForteArchitecture::deinitialize();
}else{
DEVLOG_ERROR("Architecture could not be initialized\n");
}
return 0;
}