blob: 5c6e714c5c5303e0453532119317ee992ab74696 [file] [log] [blame]
Matt Spinler711d51d2019-11-06 09:36:51 -06001/**
2 * Copyright © 2019 IBM Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Matt Spinlerc8705e22019-09-11 12:36:07 -050016#include "data_interface.hpp"
Matt Spinler99c2b402019-05-23 14:29:16 -050017#include "elog_entry.hpp"
18#include "extensions.hpp"
Matt Spinler4e8078c2019-07-09 13:22:32 -050019#include "manager.hpp"
Matt Spinler17ed2ed2019-12-12 14:12:23 -060020#include "pldm_interface.hpp"
Matt Spinler99c2b402019-05-23 14:29:16 -050021
22namespace openpower
23{
24namespace pels
25{
26
27using namespace phosphor::logging;
28
Matt Spinler4e8078c2019-07-09 13:22:32 -050029std::unique_ptr<Manager> manager;
30
Matt Spinler99c2b402019-05-23 14:29:16 -050031void pelStartup(internal::Manager& logManager)
32{
Matt Spinlerc8705e22019-09-11 12:36:07 -050033 std::unique_ptr<DataInterfaceBase> dataIface =
34 std::make_unique<DataInterface>(logManager.getBus());
35
Matt Spinler17ed2ed2019-12-12 14:12:23 -060036#ifndef DONT_SEND_PELS_TO_HOST
37 std::unique_ptr<HostInterface> hostIface = std::make_unique<PLDMInterface>(
38 logManager.getBus().get_event(), *(dataIface.get()));
39
40 manager = std::make_unique<Manager>(logManager, std::move(dataIface),
41 std::move(hostIface));
42#else
Matt Spinlerc8705e22019-09-11 12:36:07 -050043 manager = std::make_unique<Manager>(logManager, std::move(dataIface));
Matt Spinler17ed2ed2019-12-12 14:12:23 -060044#endif
Matt Spinler99c2b402019-05-23 14:29:16 -050045}
46
47REGISTER_EXTENSION_FUNCTION(pelStartup);
48
49void pelCreate(const std::string& message, uint32_t id, uint64_t timestamp,
50 Entry::Level severity, const AdditionalDataArg& additionalData,
51 const AssociationEndpointsArg& assocs)
52{
Matt Spinler4e8078c2019-07-09 13:22:32 -050053 manager->create(message, id, timestamp, severity, additionalData, assocs);
Matt Spinler99c2b402019-05-23 14:29:16 -050054}
55
56REGISTER_EXTENSION_FUNCTION(pelCreate);
57
58void pelDelete(uint32_t id)
59{
Matt Spinler4e8078c2019-07-09 13:22:32 -050060 return manager->erase(id);
Matt Spinler99c2b402019-05-23 14:29:16 -050061}
62
63REGISTER_EXTENSION_FUNCTION(pelDelete);
64
65void pelDeleteProhibited(uint32_t id, bool& prohibited)
66{
Matt Spinler4e8078c2019-07-09 13:22:32 -050067 prohibited = manager->isDeleteProhibited(id);
Matt Spinler99c2b402019-05-23 14:29:16 -050068}
69
70REGISTER_EXTENSION_FUNCTION(pelDeleteProhibited);
71
72} // namespace pels
73} // namespace openpower