/******************************************************************************* | |
* Copyright (c) 2017 fortiss GmbH | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License 2.0 which is available at | |
* http://www.eclipse.org/legal/epl-2.0. | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Monika Wenger | |
* - initial API and implementation and/or initial documentation | |
*******************************************************************************/ | |
#ifndef SRC_STDFBLIB_ITA_FORTEBOOTFILELOADER_H_ | |
#define SRC_STDFBLIB_ITA_FORTEBOOTFILELOADER_H_ | |
#include <stdio.h> | |
#include <stdlib.h> | |
class CIEC_STRING; | |
class IBootFileCallback; | |
enum LoadBootResult { | |
LOAD_RESULT_OK, | |
MISSING_COLON, | |
FILE_NOT_OPENED, | |
EXTERNAL_ERROR, | |
}; | |
class ForteBootFileLoader { | |
public: | |
/** | |
* Constructor which uses the the default values for the boot file location | |
* @param paCallback Object to be called for each command | |
*/ | |
explicit ForteBootFileLoader(IBootFileCallback &paCallback); | |
~ForteBootFileLoader(); | |
LoadBootResult loadBootFile(); | |
bool isOpen() const { | |
return (0 != mBootfile); | |
} | |
bool needsExit() const { | |
return mNeedsExit; | |
} | |
private: | |
FILE *mBootfile; | |
IBootFileCallback &mCallback; //for now with one callback is enough for all cases | |
bool mNeedsExit; | |
bool openBootFile(); | |
bool readLine(CIEC_STRING &line); | |
bool hasCommandEnded(const CIEC_STRING &line) const; | |
}; | |
#endif /* SRC_STDFBLIB_ITA_FORTEBOOTFILELOADER_H_ */ |