blob: 4746a5ceabc4aaa9cea522619c2ba9fbe2a3b8c2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2019 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:
* Jose Cabral - initial implementation
*******************************************************************************/
#include "opcua_handler_abstract.h"
#include <forte_printer.h>
#include <devlog.h>
#include <parameterParser.h>
//we tried to use the logLevelNames and logCategoryNames as extern from open62541 but it failed when using with shared libray
const char *const LogLevelNames[6] = {
"trace",
"debug",
"info",
"warning",
"error",
"fatal" };
const char *const LogCategoryNames[7] = {
"network",
"channel",
"session",
"server",
"client",
"userland" };
const UA_Logger COPC_UA_HandlerAbstract::UA_Forte_logger = {UA_Log_Forte, 0, UA_Log_Forte_clear};
COPC_UA_HandlerAbstract::COPC_UA_HandlerAbstract(CDeviceExecution& paDeviceExecution) :
CExternalEventHandler(paDeviceExecution) {
}
COPC_UA_HandlerAbstract::~COPC_UA_HandlerAbstract() {
//do nothing
}
void COPC_UA_HandlerAbstract::triggerNewEvent(CEventSourceFB &paLayer) {
startNewEventChain(&paLayer);
}
void COPC_UA_HandlerAbstract::setPriority(int) {
//currently we are doing nothing here.
}
int COPC_UA_HandlerAbstract::getPriority() const {
//the same as for setPriority
return 0;
}
UA_Logger COPC_UA_HandlerAbstract::getLogger() {
return UA_Forte_logger;
}
void COPC_UA_HandlerAbstract::UA_Log_Forte( //We omit SONAR only for the parameters
void*, UA_LogLevel paLevel, UA_LogCategory paCategory, const char *paMsg, va_list paArgs //NOSONAR
) {
char tmpStr[mMaxLogLength];
forte_snprintf(tmpStr, mMaxLogLength, "[OPC UA LOGGER] %s/%s\t", LogLevelNames[paLevel], LogCategoryNames[paCategory]);
char *start = &tmpStr[strlen(tmpStr)];
forte_vsnprintf(start, mMaxLogLength, paMsg, paArgs);
size_t len = strlen(tmpStr);
tmpStr[len] = '\n';
tmpStr[len + 1] = '\0';
switch(paLevel){
case UA_LOGLEVEL_TRACE:
case UA_LOGLEVEL_DEBUG:
DEVLOG_DEBUG(tmpStr);
break;
case UA_LOGLEVEL_INFO:
DEVLOG_INFO(tmpStr);
break;
case UA_LOGLEVEL_WARNING:
DEVLOG_WARNING(tmpStr);
break;
case UA_LOGLEVEL_ERROR:
case UA_LOGLEVEL_FATAL:
DEVLOG_ERROR(tmpStr);
break;
default:
break;
}
}
void COPC_UA_HandlerAbstract::UA_Log_Forte_clear( //We omit SONAR only for the parameters
void* //NOSONAR
) {
//do nothing
}