common/recipes-qin/openbmc-sensord/files/src/SensorSysfsApi.h (35 lines of code) (raw):
/*
* Copyright 2014-present Facebook. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#pragma once
#include <string>
#include <stdexcept>
#include <fstream>
#include <glog/logging.h>
#include <object-tree/Object.h>
#include "SensorAttribute.h"
#include "SensorApi.h"
namespace openbmc {
namespace qin {
/**
* Sensor API for reading and writing value of the attribute from the
* SensorObject path.
*/
class SensorSysfsApi : public SensorApi {
private:
std::string fsPath_;
public:
SensorSysfsApi(const std::string &fsPath) {
fsPath_ = fsPath;
}
const std::string& getFsPath() const {
return fsPath_;
}
/**
* Reads value from the path specified by object and attr. The path
* will be constructed from fsPath_ and addr in attribute.
* Only reads the first line.
*
* @param object of Attribute to be read
* @param attr of the value to be read
* @throw errno if the file cannot be opened
* @return value read
*/
const std::string readValue(const Object &object,
const SensorAttribute &attr) const override;
/**
* Writes value to the path specified by object and attr. The path
* will be constructed from fsPath_ and addr in attribute.
*
* @param object of Attribute to be written
* @param attr of the value to be written
* @param value to be written
* @throw errno if the file cannot be opened
*/
void writeValue(const Object &object,
const SensorAttribute &attr,
const std::string &value) override;
/**
* Dump the sensor api info into json format. The dump should
* contain info for the api and path.
*
* @return nlohmann::json object containing the following entries.
*
* api: the api for accessing sensor attribute; "sysfs" here
* path: the path to accessing sensor attribute; fsPath_ here
*/
nlohmann::json dumpToJson() const override {
LOG(INFO) << "Dumping SensorSysfs into json";
nlohmann::json dump;
dump["api"] = "sysfs";
dump["path"] = fsPath_;
return dump;
}
};
} // namespace qin
} // namespace openbmc