X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=ntsimulator%2Fntsim-ng%2Fcore%2Ffaults%2Ffaults_logic.c;fp=ntsimulator%2Fntsim-ng%2Fcore%2Ffaults%2Ffaults_logic.c;h=3f1688eafc059f87dbcf6e2fc91f56568bb21332;hb=f1d5c9198acde7a7ce296490087cad37e008f688;hp=0000000000000000000000000000000000000000;hpb=f2d8f1002fa93848c80a88e5658db4816cba3020;p=sim%2Fo1-interface.git diff --git a/ntsimulator/ntsim-ng/core/faults/faults_logic.c b/ntsimulator/ntsim-ng/core/faults/faults_logic.c new file mode 100644 index 0000000..3f1688e --- /dev/null +++ b/ntsimulator/ntsim-ng/core/faults/faults_logic.c @@ -0,0 +1,65 @@ +/************************************************************************* +* +* Copyright 2020 highstreet technologies GmbH and others +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +***************************************************************************/ + +#define _GNU_SOURCE + +#include "faults.h" +#include "utils/log_utils.h" +#include "utils/rand_utils.h" +#include "utils/sys_utils.h" +#include +#include +#include + +static uint16_t *faults_fault_list = 0; +static uint16_t faults_fault_list_len = 0; +static uint16_t faults_fault_list_iterator = 0; + +void faults_fault_list_clear(void) { + faults_fault_list_len = 0; + free(faults_fault_list); + faults_fault_list = 0; + faults_fault_list_iterator = 0; +} + +int faults_fault_list_add(uint16_t delay) { + faults_fault_list_len++; + faults_fault_list = (uint16_t *)realloc(faults_fault_list, sizeof(uint16_t) * (faults_fault_list_len)); + if(faults_fault_list == 0) { + log_error("realloc failed"); + return NTS_ERR_FAILED; + } + faults_fault_list[faults_fault_list_len - 1] = delay; + + return NTS_ERR_OK; +} + +bool faults_fault_list_not_empty(void) { + return (faults_fault_list_len != 0); +} + +uint16_t faults_fault_list_get_next(void) { + assert(faults_fault_list_iterator < faults_fault_list_len); + + uint16_t ret = faults_fault_list[faults_fault_list_iterator]; + faults_fault_list_iterator++; + if(faults_fault_list_iterator >= faults_fault_list_len) { + faults_fault_list_iterator = 0; + } + + return ret; +}