From 0b02be925a29357f69abbc9e9a58e7c5aaed2eab Mon Sep 17 00:00:00 2001 From: Patrick Venture Date: Fri, 31 Aug 2018 11:55:55 -0700 Subject: add .clang-format Change-Id: I7c2a527b4751a560703a61fcbe9638b150546af5 Signed-off-by: Patrick Venture --- dcmihandler.hpp | 442 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 220 insertions(+), 222 deletions(-) (limited to 'dcmihandler.hpp') diff --git a/dcmihandler.hpp b/dcmihandler.hpp index 5388344..6e64faf 100644 --- a/dcmihandler.hpp +++ b/dcmihandler.hpp @@ -1,11 +1,12 @@ #ifndef __HOST_IPMI_DCMI_HANDLER_H__ #define __HOST_IPMI_DCMI_HANDLER_H__ +#include "nlohmann/json.hpp" + #include +#include #include #include -#include -#include "nlohmann/json.hpp" namespace dcmi { @@ -33,25 +34,24 @@ enum Commands static constexpr auto propIntf = "org.freedesktop.DBus.Properties"; static constexpr auto assetTagIntf = - "xyz.openbmc_project.Inventory.Decorator.AssetTag"; + "xyz.openbmc_project.Inventory.Decorator.AssetTag"; static constexpr auto assetTagProp = "AssetTag"; static constexpr auto networkServiceName = "xyz.openbmc_project.Network"; -static constexpr auto networkConfigObj = - "/xyz/openbmc_project/network/config"; +static constexpr auto networkConfigObj = "/xyz/openbmc_project/network/config"; static constexpr auto networkConfigIntf = - "xyz.openbmc_project.Network.SystemConfiguration"; + "xyz.openbmc_project.Network.SystemConfiguration"; static constexpr auto hostNameProp = "HostName"; static constexpr auto temperatureSensorType = 0x01; static constexpr auto maxInstances = 255; static constexpr auto configFile = "/usr/share/ipmi-providers/dcmi_sensors.json"; static constexpr auto ethernetIntf = - "xyz.openbmc_project.Network.EthernetInterface"; + "xyz.openbmc_project.Network.EthernetInterface"; static constexpr auto ethernetDefaultChannelNum = 0x1; static constexpr auto networkRoot = "/xyz/openbmc_project/network"; static constexpr auto dhcpObj = "/xyz/openbmc_project/network/config/dhcp"; static constexpr auto dhcpIntf = - "xyz.openbmc_project.Network.DHCPConfiguration"; + "xyz.openbmc_project.Network.DHCPConfiguration"; static constexpr auto systemBusName = "org.freedesktop.systemd1"; static constexpr auto systemPath = "/org/freedesktop/systemd1"; static constexpr auto systemIntf = "org.freedesktop.systemd1.Manager"; @@ -59,56 +59,56 @@ static constexpr auto systemIntf = "org.freedesktop.systemd1.Manager"; namespace assettag { - using ObjectPath = std::string; - using Service = std::string; - using Interfaces = std::vector; - using ObjectTree = std::map>; +using ObjectPath = std::string; +using Service = std::string; +using Interfaces = std::vector; +using ObjectTree = std::map>; -} //namespace assettag +} // namespace assettag namespace temp_readings { - static constexpr auto maxDataSets = 8; - static constexpr auto maxTemp = 127; // degrees C +static constexpr auto maxDataSets = 8; +static constexpr auto maxTemp = 127; // degrees C - /** @struct Response - * - * DCMI payload for Get Temperature Readings response - */ - struct Response - { +/** @struct Response + * + * DCMI payload for Get Temperature Readings response + */ +struct Response +{ #if BYTE_ORDER == LITTLE_ENDIAN - uint8_t temperature: 7; //!< Temperature reading in Celsius - uint8_t sign: 1; //!< Sign bit + uint8_t temperature : 7; //!< Temperature reading in Celsius + uint8_t sign : 1; //!< Sign bit #endif #if BYTE_ORDER == BIG_ENDIAN - uint8_t sign: 1; //!< Sign bit - uint8_t temperature: 7; //!< Temperature reading in Celsius + uint8_t sign : 1; //!< Sign bit + uint8_t temperature : 7; //!< Temperature reading in Celsius #endif - uint8_t instance; //!< Entity instance number - } __attribute__((packed)); + uint8_t instance; //!< Entity instance number +} __attribute__((packed)); - using ResponseList = std::vector; - using Value = uint8_t; - using Sign = bool; - using Temperature = std::tuple; -} +using ResponseList = std::vector; +using Value = uint8_t; +using Sign = bool; +using Temperature = std::tuple; +} // namespace temp_readings namespace sensor_info { - static constexpr auto maxRecords = 8; +static constexpr auto maxRecords = 8; - /** @struct Response - * - * DCMI payload for Get Sensor Info response - */ - struct Response - { - uint8_t recordIdLsb; //!< SDR record id LS byte - uint8_t recordIdMsb; //!< SDR record id MS byte - } __attribute__((packed)); +/** @struct Response + * + * DCMI payload for Get Sensor Info response + */ +struct Response +{ + uint8_t recordIdLsb; //!< SDR record id LS byte + uint8_t recordIdMsb; //!< SDR record id MS byte +} __attribute__((packed)); - using ResponseList = std::vector; +using ResponseList = std::vector; } // namespace sensor_info static constexpr auto groupExtId = 0xDC; @@ -124,9 +124,9 @@ static constexpr size_t maxCtrlIdStrLen = 63; */ struct GetAssetTagRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t offset; //!< Offset to read. - uint8_t bytes; //!< Number of bytes to read. + uint8_t groupID; //!< Group extension identification. + uint8_t offset; //!< Offset to read. + uint8_t bytes; //!< Number of bytes to read. } __attribute__((packed)); /** @struct GetAssetTagResponse @@ -135,8 +135,8 @@ struct GetAssetTagRequest */ struct GetAssetTagResponse { - uint8_t groupID; //!< Group extension identification. - uint8_t tagLength; //!< Total asset tag length. + uint8_t groupID; //!< Group extension identification. + uint8_t tagLength; //!< Total asset tag length. } __attribute__((packed)); /** @struct SetAssetTagRequest @@ -145,9 +145,9 @@ struct GetAssetTagResponse */ struct SetAssetTagRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t offset; //!< Offset to write. - uint8_t bytes; //!< Number of bytes to write. + uint8_t groupID; //!< Group extension identification. + uint8_t offset; //!< Offset to write. + uint8_t bytes; //!< Number of bytes to write. } __attribute__((packed)); /** @struct SetAssetTagResponse @@ -156,8 +156,8 @@ struct SetAssetTagRequest */ struct SetAssetTagResponse { - uint8_t groupID; //!< Group extension identification. - uint8_t tagLength; //!< Total asset tag length. + uint8_t groupID; //!< Group extension identification. + uint8_t tagLength; //!< Total asset tag length. } __attribute__((packed)); /** @brief Read the object tree to fetch the object path that implemented the @@ -205,8 +205,8 @@ bool getPcapEnabled(sdbusplus::bus::bus& bus); */ struct GetPowerLimitRequest { - uint8_t groupID; //!< Group extension identification. - uint16_t reserved; //!< Reserved + uint8_t groupID; //!< Group extension identification. + uint16_t reserved; //!< Reserved } __attribute__((packed)); /** @struct GetPowerLimitResponse @@ -215,13 +215,13 @@ struct GetPowerLimitRequest */ struct GetPowerLimitResponse { - uint8_t groupID; //!< Group extension identification. - uint16_t reserved; //!< Reserved. - uint8_t exceptionAction; //!< Exception action. - uint16_t powerLimit; //!< Power limit requested in watts. - uint32_t correctionTime; //!< Correction time limit in milliseconds. - uint16_t reserved1; //!< Reserved. - uint16_t samplingPeriod; //!< Statistics sampling period in seconds. + uint8_t groupID; //!< Group extension identification. + uint16_t reserved; //!< Reserved. + uint8_t exceptionAction; //!< Exception action. + uint16_t powerLimit; //!< Power limit requested in watts. + uint32_t correctionTime; //!< Correction time limit in milliseconds. + uint16_t reserved1; //!< Reserved. + uint16_t samplingPeriod; //!< Statistics sampling period in seconds. } __attribute__((packed)); /** @brief Set the power cap value @@ -237,14 +237,14 @@ void setPcap(sdbusplus::bus::bus& bus, const uint32_t powerCap); */ struct SetPowerLimitRequest { - uint8_t groupID; //!< Group extension identification. - uint16_t reserved; //!< Reserved - uint8_t reserved1; //!< Reserved - uint8_t exceptionAction; //!< Exception action. - uint16_t powerLimit; //!< Power limit requested in watts. - uint32_t correctionTime; //!< Correction time limit in milliseconds. - uint16_t reserved2; //!< Reserved. - uint16_t samplingPeriod; //!< Statistics sampling period in seconds. + uint8_t groupID; //!< Group extension identification. + uint16_t reserved; //!< Reserved + uint8_t reserved1; //!< Reserved + uint8_t exceptionAction; //!< Exception action. + uint16_t powerLimit; //!< Power limit requested in watts. + uint32_t correctionTime; //!< Correction time limit in milliseconds. + uint16_t reserved2; //!< Reserved. + uint16_t samplingPeriod; //!< Statistics sampling period in seconds. } __attribute__((packed)); /** @struct SetPowerLimitResponse @@ -253,7 +253,7 @@ struct SetPowerLimitRequest */ struct SetPowerLimitResponse { - uint8_t groupID; //!< Group extension identification. + uint8_t groupID; //!< Group extension identification. } __attribute__((packed)); /** @brief Enable or disable the power capping @@ -269,9 +269,9 @@ void setPcapEnable(sdbusplus::bus::bus& bus, bool enabled); */ struct ApplyPowerLimitRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t powerLimitAction; //!< Power limit activation - uint16_t reserved; //!< Reserved + uint8_t groupID; //!< Group extension identification. + uint8_t powerLimitAction; //!< Power limit activation + uint16_t reserved; //!< Reserved } __attribute__((packed)); /** @struct ApplyPowerLimitResponse @@ -280,7 +280,7 @@ struct ApplyPowerLimitRequest */ struct ApplyPowerLimitResponse { - uint8_t groupID; //!< Group extension identification. + uint8_t groupID; //!< Group extension identification. } __attribute__((packed)); /** @struct GetMgmntCtrlIdStrRequest @@ -289,9 +289,9 @@ struct ApplyPowerLimitResponse */ struct GetMgmntCtrlIdStrRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t offset; //!< Offset to read. - uint8_t bytes; //!< Number of bytes to read. + uint8_t groupID; //!< Group extension identification. + uint8_t offset; //!< Offset to read. + uint8_t bytes; //!< Number of bytes to read. } __attribute__((packed)); /** @struct GetMgmntCtrlIdStrResponse @@ -300,9 +300,9 @@ struct GetMgmntCtrlIdStrRequest */ struct GetMgmntCtrlIdStrResponse { - uint8_t groupID; //!< Group extension identification. - uint8_t strLen; //!< ID string length. - char data[]; //!< ID string + uint8_t groupID; //!< Group extension identification. + uint8_t strLen; //!< ID string length. + char data[]; //!< ID string } __attribute__((packed)); /** @struct SetMgmntCtrlIdStrRequest @@ -311,10 +311,10 @@ struct GetMgmntCtrlIdStrResponse */ struct SetMgmntCtrlIdStrRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t offset; //!< Offset to write. - uint8_t bytes; //!< Number of bytes to read. - char data[]; //!< ID string + uint8_t groupID; //!< Group extension identification. + uint8_t offset; //!< Offset to write. + uint8_t bytes; //!< Number of bytes to read. + char data[]; //!< ID string } __attribute__((packed)); /** @struct GetMgmntCtrlIdStrResponse @@ -323,8 +323,8 @@ struct SetMgmntCtrlIdStrRequest */ struct SetMgmntCtrlIdStrResponse { - uint8_t groupID; //!< Group extension identification. - uint8_t offset; //!< Last Offset Written. + uint8_t groupID; //!< Group extension identification. + uint8_t offset; //!< Last Offset Written. } __attribute__((packed)); /** @enum DCMICapParameters @@ -345,8 +345,8 @@ enum class DCMICapParameters */ struct GetDCMICapRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t param; //!< Capability parameter selector. + uint8_t groupID; //!< Group extension identification. + uint8_t param; //!< Capability parameter selector. } __attribute__((packed)); /** @struct GetDCMICapRequest @@ -355,11 +355,11 @@ struct GetDCMICapRequest */ struct GetDCMICapResponse { - uint8_t groupID; //!< Group extension identification. - uint8_t major; //!< DCMI Specification Conformance - major ver - uint8_t minor; //!< DCMI Specification Conformance - minor ver - uint8_t paramRevision; //!< Parameter Revision = 02h - uint8_t data[]; //!< Capability array + uint8_t groupID; //!< Group extension identification. + uint8_t major; //!< DCMI Specification Conformance - major ver + uint8_t minor; //!< DCMI Specification Conformance - minor ver + uint8_t paramRevision; //!< Parameter Revision = 02h + uint8_t data[]; //!< Capability array } __attribute__((packed)); /** @struct DCMICap @@ -368,10 +368,10 @@ struct GetDCMICapResponse */ struct DCMICap { - std::string name; //!< Name of DCMI capability. - uint8_t bytePosition; //!< Starting byte number from DCMI spec. - uint8_t position; //!< bit position from the DCMI spec. - uint8_t length; //!< Length of the value from DCMI spec. + std::string name; //!< Name of DCMI capability. + uint8_t bytePosition; //!< Starting byte number from DCMI spec. + uint8_t position; //!< bit position from the DCMI spec. + uint8_t length; //!< Length of the value from DCMI spec. }; using DCMICapList = std::vector; @@ -382,8 +382,8 @@ using DCMICapList = std::vector; */ struct DCMICapEntry { - uint8_t size; //!< Size of capability array in bytes. - DCMICapList capList; //!< List of capabilities for a parameter. + uint8_t size; //!< Size of capability array in bytes. + DCMICapList capList; //!< List of capabilities for a parameter. }; using DCMICaps = std::map; @@ -394,11 +394,11 @@ using DCMICaps = std::map; */ struct GetTempReadingsRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t sensorType; //!< Type of the sensor - uint8_t entityId; //!< Entity ID - uint8_t entityInstance; //!< Entity Instance (0 means all instances) - uint8_t instanceStart; //!< Instance start (used if instance is 0) + uint8_t groupID; //!< Group extension identification. + uint8_t sensorType; //!< Type of the sensor + uint8_t entityId; //!< Entity ID + uint8_t entityInstance; //!< Entity Instance (0 means all instances) + uint8_t instanceStart; //!< Instance start (used if instance is 0) } __attribute__((packed)); /** @struct GetTempReadingsResponse @@ -407,9 +407,9 @@ struct GetTempReadingsRequest */ struct GetTempReadingsResponseHdr { - uint8_t groupID; //!< Group extension identification. - uint8_t numInstances; //!< No. of instances for requested id - uint8_t numDataSets; //!< No. of sets of temperature data + uint8_t groupID; //!< Group extension identification. + uint8_t numInstances; //!< No. of instances for requested id + uint8_t numDataSets; //!< No. of sets of temperature data } __attribute__((packed)); /** @brief Parse out JSON config file containing information @@ -421,83 +421,81 @@ Json parseSensorConfig(); namespace temp_readings { - /** @brief Read temperature from a d-bus object, scale it as per dcmi - * get temperature reading requirements. - * - * @param[in] dbusService - the D-Bus service - * @param[in] dbusPath - the D-Bus path - * - * @return A temperature reading - */ - Temperature readTemp(const std::string& dbusService, - const std::string& dbusPath); - - /** @brief Read temperatures and fill up DCMI response for the Get - * Temperature Readings command. This looks at a specific - * instance. - * - * @param[in] type - one of "inlet", "cpu", "baseboard" - * @param[in] instance - A non-zero Entity instance number - * - * @return A tuple, containing a temperature reading and the - * number of instances. - */ - std::tuple read (const std::string& type, - uint8_t instance); - - /** @brief Read temperatures and fill up DCMI response for the Get - * Temperature Readings command. This looks at a range of - * instances. - * - * @param[in] type - one of "inlet", "cpu", "baseboard" - * @param[in] instanceStart - Entity instance start index - * - * @return A tuple, containing a list of temperature readings and the - * number of instances. - */ - std::tuple readAll(const std::string& type, - uint8_t instanceStart); -} +/** @brief Read temperature from a d-bus object, scale it as per dcmi + * get temperature reading requirements. + * + * @param[in] dbusService - the D-Bus service + * @param[in] dbusPath - the D-Bus path + * + * @return A temperature reading + */ +Temperature readTemp(const std::string& dbusService, + const std::string& dbusPath); + +/** @brief Read temperatures and fill up DCMI response for the Get + * Temperature Readings command. This looks at a specific + * instance. + * + * @param[in] type - one of "inlet", "cpu", "baseboard" + * @param[in] instance - A non-zero Entity instance number + * + * @return A tuple, containing a temperature reading and the + * number of instances. + */ +std::tuple read(const std::string& type, + uint8_t instance); + +/** @brief Read temperatures and fill up DCMI response for the Get + * Temperature Readings command. This looks at a range of + * instances. + * + * @param[in] type - one of "inlet", "cpu", "baseboard" + * @param[in] instanceStart - Entity instance start index + * + * @return A tuple, containing a list of temperature readings and the + * number of instances. + */ +std::tuple readAll(const std::string& type, + uint8_t instanceStart); +} // namespace temp_readings namespace sensor_info { - /** @brief Create response from JSON config. - * - * @param[in] config - JSON config info about DCMI sensors - * - * @return Sensor info response - */ - Response createFromJson(const Json& config); - - /** @brief Read sensor info and fill up DCMI response for the Get - * Sensor Info command. This looks at a specific - * instance. - * - * @param[in] type - one of "inlet", "cpu", "baseboard" - * @param[in] instance - A non-zero Entity instance number - * @param[in] config - JSON config info about DCMI sensors - * - * @return A tuple, containing a sensor info response and - * number of instances. - */ - std::tuple read(const std::string& type, - uint8_t instance, - const Json& config); - - /** @brief Read sensor info and fill up DCMI response for the Get - * Sensor Info command. This looks at a range of - * instances. - * - * @param[in] type - one of "inlet", "cpu", "baseboard" - * @param[in] instanceStart - Entity instance start index - * @param[in] config - JSON config info about DCMI sensors - * - * @return A tuple, containing a list of sensor info responses and the - * number of instances. - */ - std::tuple readAll(const std::string& type, - uint8_t instanceStart, - const Json& config); +/** @brief Create response from JSON config. + * + * @param[in] config - JSON config info about DCMI sensors + * + * @return Sensor info response + */ +Response createFromJson(const Json& config); + +/** @brief Read sensor info and fill up DCMI response for the Get + * Sensor Info command. This looks at a specific + * instance. + * + * @param[in] type - one of "inlet", "cpu", "baseboard" + * @param[in] instance - A non-zero Entity instance number + * @param[in] config - JSON config info about DCMI sensors + * + * @return A tuple, containing a sensor info response and + * number of instances. + */ +std::tuple read(const std::string& type, + uint8_t instance, const Json& config); + +/** @brief Read sensor info and fill up DCMI response for the Get + * Sensor Info command. This looks at a range of + * instances. + * + * @param[in] type - one of "inlet", "cpu", "baseboard" + * @param[in] instanceStart - Entity instance start index + * @param[in] config - JSON config info about DCMI sensors + * + * @return A tuple, containing a list of sensor info responses and the + * number of instances. + */ +std::tuple + readAll(const std::string& type, uint8_t instanceStart, const Json& config); } // namespace sensor_info /** @brief Read power reading from power reading sensor object @@ -515,9 +513,9 @@ int64_t getPowerReading(sdbusplus::bus::bus& bus); */ struct GetPowerReadingRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t mode; //!< Mode - uint8_t modeAttribute; //!< Mode Attributes + uint8_t groupID; //!< Group extension identification. + uint8_t mode; //!< Mode + uint8_t modeAttribute; //!< Mode Attributes } __attribute__((packed)); /** @struct GetPowerReadingResponse @@ -527,18 +525,18 @@ struct GetPowerReadingRequest */ struct GetPowerReadingResponse { - uint8_t groupID; //!< Group extension identification. - uint16_t currentPower; //!< Current power in watts - uint16_t minimumPower; //!< Minimum power over sampling duration - //!< in watts - uint16_t maximumPower; //!< Maximum power over sampling duration - //!< in watts - uint16_t averagePower; //!< Average power over sampling duration - //!< in watts - uint32_t timeStamp; //!< IPMI specification based time stamp - uint32_t timeFrame; //!< Statistics reporting time period in milli - //!< seconds. - uint8_t powerReadingState; //!< Power Reading State + uint8_t groupID; //!< Group extension identification. + uint16_t currentPower; //!< Current power in watts + uint16_t minimumPower; //!< Minimum power over sampling duration + //!< in watts + uint16_t maximumPower; //!< Maximum power over sampling duration + //!< in watts + uint16_t averagePower; //!< Average power over sampling duration + //!< in watts + uint32_t timeStamp; //!< IPMI specification based time stamp + uint32_t timeFrame; //!< Statistics reporting time period in milli + //!< seconds. + uint8_t powerReadingState; //!< Power Reading State } __attribute__((packed)); /** @struct GetSensorInfoRequest @@ -547,11 +545,11 @@ struct GetPowerReadingResponse */ struct GetSensorInfoRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t sensorType; //!< Type of the sensor - uint8_t entityId; //!< Entity ID - uint8_t entityInstance; //!< Entity Instance (0 means all instances) - uint8_t instanceStart; //!< Instance start (used if instance is 0) + uint8_t groupID; //!< Group extension identification. + uint8_t sensorType; //!< Type of the sensor + uint8_t entityId; //!< Entity ID + uint8_t entityInstance; //!< Entity Instance (0 means all instances) + uint8_t instanceStart; //!< Instance start (used if instance is 0) } __attribute__((packed)); /** @struct GetSensorInfoResponseHdr @@ -560,14 +558,14 @@ struct GetSensorInfoRequest */ struct GetSensorInfoResponseHdr { - uint8_t groupID; //!< Group extension identification. - uint8_t numInstances; //!< No. of instances for requested id - uint8_t numRecords; //!< No. of record ids in the response + uint8_t groupID; //!< Group extension identification. + uint8_t numInstances; //!< No. of instances for requested id + uint8_t numRecords; //!< No. of record ids in the response } __attribute__((packed)); /** * @brief Parameters for DCMI Configuration Parameters */ -enum class DCMIConfigParameters: uint8_t +enum class DCMIConfigParameters : uint8_t { ActivateDHCP = 1, DiscoveryConfig, @@ -583,11 +581,11 @@ enum class DCMIConfigParameters: uint8_t */ struct SetConfParamsRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t paramSelect; //!< Parameter selector. - uint8_t setSelect; //!< Set Selector (use 00h for parameters that only - //!< have one set). - uint8_t data[]; //!< Configuration parameter data. + uint8_t groupID; //!< Group extension identification. + uint8_t paramSelect; //!< Parameter selector. + uint8_t setSelect; //!< Set Selector (use 00h for parameters that only + //!< have one set). + uint8_t data[]; //!< Configuration parameter data. } __attribute__((packed)); /** @struct SetConfParamsResponse @@ -597,7 +595,7 @@ struct SetConfParamsRequest */ struct SetConfParamsResponse { - uint8_t groupID; //!< Group extension identification. + uint8_t groupID; //!< Group extension identification. } __attribute__((packed)); /** @struct GetConfParamsRequest @@ -607,11 +605,11 @@ struct SetConfParamsResponse */ struct GetConfParamsRequest { - uint8_t groupID; //!< Group extension identification. - uint8_t paramSelect; //!< Parameter selector. - uint8_t setSelect; //!< Set Selector. Selects a given set of parameters - //!< under a given Parameter selector value. 00h if - //!< parameter doesn't use a Set Selector. + uint8_t groupID; //!< Group extension identification. + uint8_t paramSelect; //!< Parameter selector. + uint8_t setSelect; //!< Set Selector. Selects a given set of parameters + //!< under a given Parameter selector value. 00h if + //!< parameter doesn't use a Set Selector. } __attribute__((packed)); /** @struct GetConfParamsResponse @@ -621,11 +619,11 @@ struct GetConfParamsRequest */ struct GetConfParamsResponse { - uint8_t groupID; //!< Group extension identification. - uint8_t major; //!< DCMI Spec Conformance - major ver = 01h. - uint8_t minor; //!< DCMI Spec Conformance - minor ver = 05h. - uint8_t paramRevision; //!< Parameter Revision = 01h. - uint8_t data[]; //!< Parameter data. + uint8_t groupID; //!< Group extension identification. + uint8_t major; //!< DCMI Spec Conformance - major ver = 01h. + uint8_t minor; //!< DCMI Spec Conformance - minor ver = 05h. + uint8_t paramRevision; //!< Parameter Revision = 01h. + uint8_t data[]; //!< Parameter data. } __attribute__((packed)); -- cgit v1.2.1