summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.clang-format99
-rw-r--r--argument.cpp25
-rw-r--r--argument.hpp75
-rw-r--r--controller.cpp16
-rw-r--r--physical.cpp23
-rw-r--r--physical.hpp261
6 files changed, 301 insertions, 198 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..ea71ad6
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,99 @@
+---
+Language: Cpp
+# BasedOnStyle: LLVM
+AccessModifierOffset: -2
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: false
+AlignConsecutiveDeclarations: false
+AlignEscapedNewlinesLeft: false
+AlignOperands: true
+AlignTrailingComments: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortBlocksOnASingleLine: false
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: None
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: true
+BinPackArguments: true
+BinPackParameters: true
+BraceWrapping:
+ AfterClass: true
+ AfterControlStatement: true
+ AfterEnum: true
+ AfterFunction: true
+ AfterNamespace: true
+ AfterObjCDeclaration: true
+ AfterStruct: true
+ AfterUnion: true
+ BeforeCatch: true
+ BeforeElse: true
+ IndentBraces: false
+BreakBeforeBinaryOperators: None
+BreakBeforeBraces: Custom
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializers: AfterColon
+ColumnLimit: 80
+CommentPragmas: '^ IWYU pragma:'
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: true
+DerivePointerAlignment: false
+PointerAlignment: Left
+DisableFormat: false
+ExperimentalAutoDetectBinPacking: false
+FixNamespaceComments: true
+ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
+IncludeBlocks: Regroup
+IncludeCategories:
+ - Regex: '^[<"](gtest|gmock)'
+ Priority: 5
+ - Regex: '^"config.h"'
+ Priority: -1
+ - Regex: '^".*\.hpp"'
+ Priority: 1
+ - Regex: '^<.*\.h>'
+ Priority: 2
+ - Regex: '^<.*'
+ Priority: 3
+ - Regex: '.*'
+ Priority: 4
+IndentCaseLabels: true
+IndentWidth: 4
+IndentWrappedFunctionNames: true
+KeepEmptyLinesAtTheStartOfBlocks: true
+MacroBlockBegin: ''
+MacroBlockEnd: ''
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+ObjCBlockIndentWidth: 2
+ObjCSpaceAfterProperty: false
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakComment: 300
+PenaltyBreakFirstLessLess: 120
+PenaltyBreakString: 1000
+PenaltyExcessCharacter: 1000000
+PenaltyReturnTypeOnItsOwnLine: 60
+ReflowComments: true
+SortIncludes: true
+SortUsingDeclarations: true
+SpaceAfterCStyleCast: false
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeParens: ControlStatements
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles: false
+SpacesInContainerLiterals: true
+SpacesInCStyleCastParentheses: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+Standard: Cpp11
+TabWidth: 4
+UseTab: Never
+...
+
diff --git a/argument.cpp b/argument.cpp
index b70a0dd..fd0c50d 100644
--- a/argument.cpp
+++ b/argument.cpp
@@ -14,11 +14,12 @@
* limitations under the License.
*/
-#include <iostream>
-#include <iterator>
+#include "argument.hpp"
+
#include <algorithm>
#include <cassert>
-#include "argument.hpp"
+#include <iostream>
+#include <iterator>
namespace phosphor
{
@@ -29,17 +30,17 @@ const std::string ArgumentParser::true_string = "true";
const std::string ArgumentParser::empty_string = "";
const char* ArgumentParser::optionstr = "p:?h";
-const option ArgumentParser::options[] =
-{
- { "path", required_argument, nullptr, 'p' },
- { "help", no_argument, nullptr, 'h' },
- { 0, 0, 0, 0},
+const option ArgumentParser::options[] = {
+ {"path", required_argument, nullptr, 'p'},
+ {"help", no_argument, nullptr, 'h'},
+ {0, 0, 0, 0},
};
ArgumentParser::ArgumentParser(int argc, char** argv)
{
int option = 0;
- while(-1 != (option = getopt_long(argc, argv, optionstr, options, nullptr)))
+ while (-1 !=
+ (option = getopt_long(argc, argv, optionstr, options, nullptr)))
{
if ((option == '?') || (option == 'h'))
{
@@ -48,7 +49,8 @@ ArgumentParser::ArgumentParser(int argc, char** argv)
}
auto i = &options[0];
- while ((i->val != option) && (i->val != 0)) ++i;
+ while ((i->val != option) && (i->val != 0))
+ ++i;
if (i->val)
arguments[i->name] = (i->has_arg ? optarg : true_string);
@@ -74,8 +76,7 @@ void ArgumentParser::usage(char** argv)
std::cerr << "Options:" << std::endl;
std::cerr << " --help Print this menu" << std::endl;
std::cerr << " --path=<path> absolute path of LED in sysfs; like";
- std::cerr << " /sys/class/leds/<name>"
- << std::endl;
+ std::cerr << " /sys/class/leds/<name>" << std::endl;
}
} // namespace led
} // namespace phosphor
diff --git a/argument.hpp b/argument.hpp
index 9c91615..81876da 100644
--- a/argument.hpp
+++ b/argument.hpp
@@ -1,6 +1,7 @@
#ifndef __ARGUMENT_H
#define __ARGUMENT_H
#include <getopt.h>
+
#include <map>
#include <string>
@@ -13,43 +14,43 @@ namespace led
*/
class ArgumentParser
{
- public:
- ArgumentParser() = delete;
- ~ArgumentParser() = default;
- ArgumentParser(const ArgumentParser&) = delete;
- ArgumentParser& operator=(const ArgumentParser&) = delete;
- ArgumentParser(ArgumentParser&&) = default;
- ArgumentParser& operator=(ArgumentParser&&) = default;
-
- /** @brief Constructs Argument object
- *
- * @param argc - the main function's argc passed as is
- * @param argv - the main function's argv passed as is
- * @return Object constructed
- */
- ArgumentParser(int argc, char** argv);
-
- /** @brief Given a option, returns its argument(optarg) */
- const std::string& operator[](const std::string& opt);
-
- /** @brief Displays usage */
- static void usage(char** argv);
-
- /** @brief Set to 'true' when an option is passed */
- static const std::string true_string;
-
- /** @brief Set to '' when an option is not passed */
- static const std::string empty_string;
-
- private:
- /** @brief Option to argument mapping */
- std::map<const std::string, std::string> arguments;
-
- /** @brief Array of struct options as needed by getopt_long */
- static const option options[];
-
- /** @brief optstring as needed by getopt_long */
- static const char* optionstr;
+ public:
+ ArgumentParser() = delete;
+ ~ArgumentParser() = default;
+ ArgumentParser(const ArgumentParser&) = delete;
+ ArgumentParser& operator=(const ArgumentParser&) = delete;
+ ArgumentParser(ArgumentParser&&) = default;
+ ArgumentParser& operator=(ArgumentParser&&) = default;
+
+ /** @brief Constructs Argument object
+ *
+ * @param argc - the main function's argc passed as is
+ * @param argv - the main function's argv passed as is
+ * @return Object constructed
+ */
+ ArgumentParser(int argc, char** argv);
+
+ /** @brief Given a option, returns its argument(optarg) */
+ const std::string& operator[](const std::string& opt);
+
+ /** @brief Displays usage */
+ static void usage(char** argv);
+
+ /** @brief Set to 'true' when an option is passed */
+ static const std::string true_string;
+
+ /** @brief Set to '' when an option is not passed */
+ static const std::string empty_string;
+
+ private:
+ /** @brief Option to argument mapping */
+ std::map<const std::string, std::string> arguments;
+
+ /** @brief Array of struct options as needed by getopt_long */
+ static const option options[];
+
+ /** @brief optstring as needed by getopt_long */
+ static const char* optionstr;
};
} // namespace led
diff --git a/controller.cpp b/controller.cpp
index f0ba4c2..f945034 100644
--- a/controller.cpp
+++ b/controller.cpp
@@ -14,12 +14,14 @@
* limitations under the License.
*/
-#include <iostream>
-#include <string>
-#include <algorithm>
+#include "config.h"
+
#include "argument.hpp"
#include "physical.hpp"
-#include "config.h"
+
+#include <algorithm>
+#include <iostream>
+#include <string>
static void ExitWithError(const char* err, char** argv)
{
@@ -68,8 +70,8 @@ int main(int argc, char** argv)
std::replace(name.begin(), name.end(), '-', '_');
// Unique bus name representing a single LED.
- auto busName = std::string(BUSNAME) + '.' + name;
- auto objPath = std::string(OBJPATH) + '/' + name;
+ auto busName = std::string(BUSNAME) + '.' + name;
+ auto objPath = std::string(OBJPATH) + '/' + name;
// Get a handle to system dbus.
auto bus = std::move(sdbusplus::bus::new_default());
@@ -85,7 +87,7 @@ int main(int argc, char** argv)
bus.request_name(busName.c_str());
/** @brief Wait for client requests */
- while(true)
+ while (true)
{
// Handle dbus message / signals discarding unhandled
bus.process_discard();
diff --git a/physical.cpp b/physical.cpp
index 38c69b0..e7ca582 100644
--- a/physical.cpp
+++ b/physical.cpp
@@ -14,9 +14,10 @@
* limitations under the License.
*/
+#include "physical.hpp"
+
#include <iostream>
#include <string>
-#include "physical.hpp"
namespace phosphor
{
namespace led
@@ -27,7 +28,7 @@ void Physical::setInitialState()
{
// Control files in /sys/class/leds/<led-name>
brightCtrl = path + BRIGHTNESS;
- blinkCtrl = path + BLINKCTRL;
+ blinkCtrl = path + BLINKCTRL;
delayOnCtrl = path + DELAYON;
delayOffCtrl = path + DELAYOFF;
@@ -66,14 +67,14 @@ void Physical::setInitialState()
if (brightness == std::string(ASSERT))
{
// LED is in Solid ON
- sdbusplus::xyz::openbmc_project::Led::server
- ::Physical::state(Action::On);
+ sdbusplus::xyz::openbmc_project::Led::server ::Physical::state(
+ Action::On);
}
else
{
// LED is in OFF state
- sdbusplus::xyz::openbmc_project::Led::server
- ::Physical::state(Action::Off);
+ sdbusplus::xyz::openbmc_project::Led::server ::Physical::state(
+ Action::Off);
}
}
return;
@@ -83,12 +84,12 @@ void Physical::setInitialState()
auto Physical::state(Action value) -> Action
{
// Obtain current operation
- auto current = sdbusplus::xyz::openbmc_project::Led::server
- ::Physical::state();
+ auto current =
+ sdbusplus::xyz::openbmc_project::Led::server ::Physical::state();
// Update requested operation into base class
- auto requested = sdbusplus::xyz::openbmc_project::Led::server
- ::Physical::state(value);
+ auto requested =
+ sdbusplus::xyz::openbmc_project::Led::server ::Physical::state(value);
// Apply the action.
driveLED(current, requested);
@@ -112,7 +113,7 @@ void Physical::driveLED(Action current, Action request)
}
// Transition TO Stable states.
- if(request == Action::On || request == Action::Off)
+ if (request == Action::On || request == Action::Off)
{
return stableStateOperation(request);
}
diff --git a/physical.hpp b/physical.hpp
index 36fbedc..47ad7d5 100644
--- a/physical.hpp
+++ b/physical.hpp
@@ -1,9 +1,9 @@
#pragma once
-#include <string>
#include <fstream>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/server/object.hpp>
+#include <string>
#include <xyz/openbmc_project/Led/Physical/server.hpp>
namespace phosphor
{
@@ -50,141 +50,140 @@ constexpr auto DELAYOFF = "/delay_off";
* @brief Responsible for applying actions on a particular physical LED
*/
class Physical : public sdbusplus::server::object::object<
- sdbusplus::xyz::openbmc_project::Led::server::Physical>
+ sdbusplus::xyz::openbmc_project::Led::server::Physical>
{
- public:
- Physical() = delete;
- ~Physical() = default;
- Physical(const Physical&) = delete;
- Physical& operator=(const Physical&) = delete;
- Physical(Physical&&) = delete;
- Physical& operator=(Physical&&) = delete;
-
- /** @brief Constructs LED object. Argument 'true' says that we hold off
- * from sending the signals since we need to do some house keeping and
- * only when we finish that, we are considered active and can then
- * broadcast the signal.
- *
- * @param[in] bus - system dbus handler
- * @param[in] objPath - The Dbus path that hosts physical LED
- * @param[in] ledPath - sysfs path where this LED is exported
- */
- Physical(sdbusplus::bus::bus& bus,
- const std::string& objPath,
- const std::string& ledPath) :
-
- sdbusplus::server::object::object<
- sdbusplus::xyz::openbmc_project::Led::server::Physical>(
- bus, objPath.c_str(), true),
- path(ledPath)
+ public:
+ Physical() = delete;
+ ~Physical() = default;
+ Physical(const Physical&) = delete;
+ Physical& operator=(const Physical&) = delete;
+ Physical(Physical&&) = delete;
+ Physical& operator=(Physical&&) = delete;
+
+ /** @brief Constructs LED object. Argument 'true' says that we hold off
+ * from sending the signals since we need to do some house keeping and
+ * only when we finish that, we are considered active and can then
+ * broadcast the signal.
+ *
+ * @param[in] bus - system dbus handler
+ * @param[in] objPath - The Dbus path that hosts physical LED
+ * @param[in] ledPath - sysfs path where this LED is exported
+ */
+ Physical(sdbusplus::bus::bus& bus, const std::string& objPath,
+ const std::string& ledPath) :
+
+ sdbusplus::server::object::object<
+ sdbusplus::xyz::openbmc_project::Led::server::Physical>(
+ bus, objPath.c_str(), true),
+ path(ledPath)
+ {
+ // Suppose this is getting launched as part of BMC reboot, then we
+ // need to save what the micro-controller currently has.
+ setInitialState();
+
+ // We are now ready.
+ emit_object_added();
+ }
+
+ /** @brief Overloaded State Property Setter function
+ *
+ * @param[in] value - One of OFF / ON / BLINK
+ * @return - Success or exception thrown
+ */
+ Action state(Action value) override;
+
+ private:
+ /** @brief File system location where this LED is exposed
+ * Typically /sys/class/leds/<Led-Name>
+ */
+ std::string path;
+
+ /** @brief Frequency range that the LED can operate on.
+ * Will be removed when frequency is put into interface
+ */
+ uint32_t frequency;
+
+ /** @brief Brightness described above */
+ std::string brightCtrl;
+
+ /** @brief BlinkCtrl described above */
+ std::string blinkCtrl;
+
+ /** @brief delay_on described above */
+ std::string delayOnCtrl;
+
+ /** @brief delay_ff described above */
+ std::string delayOffCtrl;
+
+ /** @brief reads sysfs and then setsup the parameteres accordingly
+ *
+ * @return None
+ */
+ void setInitialState();
+
+ /** @brief Applies the user triggered action on the LED
+ * by writing to sysfs
+ *
+ * @param [in] current - Current state of LED
+ * @param [in] request - Requested state
+ *
+ * @return None
+ */
+ void driveLED(Action current, Action request);
+
+ /** @brief Sets the LED to either ON or OFF state
+ *
+ * @param [in] action - Requested action. Could be OFF or ON
+ * @return None
+ */
+ void stableStateOperation(Action action);
+
+ /** @brief Sets the LED to BLINKING
+ *
+ * @return None
+ */
+ void blinkOperation();
+
+ /** @brief Generic file writer.
+ * There are files like "brightness", "trigger" , "delay_on" and
+ * "delay_off" that will tell what the LED driver needs to do.
+ *
+ * @param[in] filename - Name of file to be written
+ * @param[in] data - Data to be written to
+ * @return - None
+ */
+ template <typename T>
+ auto write(const std::string& fileName, T&& data)
+ {
+ if (std::ifstream(fileName))
{
- // Suppose this is getting launched as part of BMC reboot, then we
- // need to save what the micro-controller currently has.
- setInitialState();
-
- // We are now ready.
- emit_object_added();
+ std::ofstream file(fileName, std::ios::out);
+ file << data;
+ file.close();
}
-
- /** @brief Overloaded State Property Setter function
- *
- * @param[in] value - One of OFF / ON / BLINK
- * @return - Success or exception thrown
- */
- Action state(Action value) override;
-
- private:
- /** @brief File system location where this LED is exposed
- * Typically /sys/class/leds/<Led-Name>
- */
- std::string path;
-
- /** @brief Frequency range that the LED can operate on.
- * Will be removed when frequency is put into interface
- */
- uint32_t frequency;
-
- /** @brief Brightness described above */
- std::string brightCtrl;
-
- /** @brief BlinkCtrl described above */
- std::string blinkCtrl;
-
- /** @brief delay_on described above */
- std::string delayOnCtrl;
-
- /** @brief delay_ff described above */
- std::string delayOffCtrl;
-
- /** @brief reads sysfs and then setsup the parameteres accordingly
- *
- * @return None
- */
- void setInitialState();
-
- /** @brief Applies the user triggered action on the LED
- * by writing to sysfs
- *
- * @param [in] current - Current state of LED
- * @param [in] request - Requested state
- *
- * @return None
- */
- void driveLED(Action current, Action request);
-
- /** @brief Sets the LED to either ON or OFF state
- *
- * @param [in] action - Requested action. Could be OFF or ON
- * @return None
- */
- void stableStateOperation(Action action);
-
- /** @brief Sets the LED to BLINKING
- *
- * @return None
- */
- void blinkOperation();
-
- /** @brief Generic file writer.
- * There are files like "brightness", "trigger" , "delay_on" and
- * "delay_off" that will tell what the LED driver needs to do.
- *
- * @param[in] filename - Name of file to be written
- * @param[in] data - Data to be written to
- * @return - None
- */
- template <typename T>
- auto write(const std::string& fileName, T&& data)
- {
- if(std::ifstream(fileName))
- {
- std::ofstream file(fileName, std::ios::out);
- file << data;
- file.close();
- }
- return;
- }
-
- /** @brief Generic file reader.
- * There are files like "brightness", "trigger" , "delay_on" and
- * "delay_off" that will tell what the LED driver needs to do.
- *
- * @param[in] filename - Name of file to be read
- * @return - File content
- */
- template <typename T>
- T read(const std::string& fileName)
+ return;
+ }
+
+ /** @brief Generic file reader.
+ * There are files like "brightness", "trigger" , "delay_on" and
+ * "delay_off" that will tell what the LED driver needs to do.
+ *
+ * @param[in] filename - Name of file to be read
+ * @return - File content
+ */
+ template <typename T>
+ T read(const std::string& fileName)
+ {
+ T data = T();
+ if (std::ifstream(fileName))
{
- T data = T();
- if(std::ifstream(fileName))
- {
- std::ifstream file(fileName, std::ios::in);
- file >> data;
- file.close();
- }
- return data;
+ std::ifstream file(fileName, std::ios::in);
+ file >> data;
+ file.close();
}
+ return data;
+ }
};
} // namespace led
-}
+} // namespace phosphor
OpenPOWER on IntegriCloud