blob: 9c2237f3fcfbc7e1bfe2b2a30fe80dcb4cf39942 [file] [log] [blame]
Ratan Gupta00659052017-02-23 17:29:08 +05301#pragma once
2
3#include <stdint.h>
4
5#include <map>
6#include <string>
7
8#include <sdbusplus/server.hpp>
Dhruvaraj Subhashchandrane0af7202017-07-12 06:35:20 -05009#include "sensorhandler.h"
Ratan Gupta00659052017-02-23 17:29:08 +053010
11namespace ipmi
12{
Ratan Guptadcb10672017-07-10 10:33:50 +053013
14using DbusObjectPath = std::string;
15using DbusService = std::string;
16using DbusInterface = std::string;
17using DbusObjectInfo = std::pair<DbusObjectPath, DbusService>;
18using DbusProperty = std::string;
Ratan Guptacc8feb42017-07-25 21:52:10 +053019
20using Value = sdbusplus::message::variant<bool, uint8_t, int16_t,
21 uint16_t, int32_t, uint32_t,
22 int64_t, uint64_t, std::string>;
23
Ratan Guptadcb10672017-07-10 10:33:50 +053024using PropertyMap = std::map<DbusProperty, Value>;
Ratan Guptab8e99552017-07-27 07:07:48 +053025
Ratan Guptadcb10672017-07-10 10:33:50 +053026using ObjectTree = std::map<DbusObjectPath,
27 std::map<DbusService, std::vector<DbusInterface>>>;
Ratan Gupta8c31d232017-08-13 05:49:43 +053028
Ratan Guptacc6cdbf2017-09-01 23:06:25 +053029using InterfaceList = std::vector<std::string>;
30
Ratan Gupta00659052017-02-23 17:29:08 +053031namespace sensor
32{
33
34using Offset = uint8_t;
Ratan Guptadcb10672017-07-10 10:33:50 +053035using Value = ipmi::Value;
Ratan Gupta00659052017-02-23 17:29:08 +053036
37struct Values
38{
39 Value assert;
40 Value deassert;
41};
42
43using OffsetValueMap = std::map<Offset,Values>;
44
Ratan Guptadcb10672017-07-10 10:33:50 +053045using DbusProperty = ipmi::DbusProperty;
Ratan Gupta00659052017-02-23 17:29:08 +053046using DbusPropertyMap = std::map<DbusProperty,OffsetValueMap>;
47
Ratan Guptadcb10672017-07-10 10:33:50 +053048using DbusInterface = ipmi::DbusInterface;
Ratan Gupta00659052017-02-23 17:29:08 +053049using DbusInterfaceMap = std::map<DbusInterface,DbusPropertyMap>;
50
51using InstancePath = std::string;
52using Type = uint8_t;
53using ReadingType = uint8_t;
Emily Shaffer10f49592017-05-10 12:01:10 -070054using Multiplier = uint16_t;
55using OffsetB = uint16_t;
56using Exponent = uint8_t;
57using ScaledOffset = int64_t;
Ratan Gupta00659052017-02-23 17:29:08 +053058
59struct Info
60{
61 Type sensorType;
62 InstancePath sensorPath;
Deepak Kodihalli1bb0d382017-08-12 02:01:27 -050063 DbusInterface sensorInterface;
Ratan Gupta00659052017-02-23 17:29:08 +053064 ReadingType sensorReadingType;
Emily Shaffer10f49592017-05-10 12:01:10 -070065 Multiplier coefficientM;
66 OffsetB coefficientB;
67 Exponent exponentB;
68 ScaledOffset scaledOffset;
Deepak Kodihalli1bb0d382017-08-12 02:01:27 -050069 std::function<uint8_t(SetSensorReadingReq&, const Info&)> updateFunc;
70 DbusInterfaceMap propertyInterfaces;
Ratan Gupta00659052017-02-23 17:29:08 +053071};
72
73using Id = uint8_t;
74using IdInfoMap = std::map<Id,Info>;
75
Ratan Guptadcb10672017-07-10 10:33:50 +053076using PropertyMap = ipmi::PropertyMap;
Tom Josephbe703f72017-03-09 12:34:35 +053077
78using InterfaceMap = std::map<DbusInterface, PropertyMap>;
79
80using Object = sdbusplus::message::object_path;
81using ObjectMap = std::map<Object, InterfaceMap>;
82
Dhruvaraj Subhashchandrane0af7202017-07-12 06:35:20 -050083using IpmiUpdateData = sdbusplus::message::message;
84
Tom Josephdd78a1d2017-05-05 11:04:29 +053085struct SelData
86{
87 Id sensorID;
88 Type sensorType;
89 ReadingType eventReadingType;
90 Offset eventOffset;
91};
92
93using InventoryPath = std::string;
94
95using InvObjectIDMap = std::map<InventoryPath, SelData>;
96
Ratan Gupta8c31d232017-08-13 05:49:43 +053097}// namespace sensor
98
99namespace network
100{
101
102constexpr auto MAC_ADDRESS_FORMAT = "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx";
103constexpr auto IP_ADDRESS_FORMAT = "%u.%u.%u.%u";
104constexpr auto PREFIX_FORMAT = "%hhd";
105constexpr auto ADDR_TYPE_FORMAT = "%hhx";
106
107constexpr auto IPV4_ADDRESS_SIZE_BYTE = 4;
108constexpr auto IPV6_ADDRESS_SIZE_BYTE = 16;
109
110constexpr auto DEFAULT_MAC_ADDRESS = "00:00:00:00:00:00";
111constexpr auto DEFAULT_ADDRESS = "0.0.0.0";
112
Ratan Guptab8e99552017-07-27 07:07:48 +0530113constexpr auto MAC_ADDRESS_SIZE_BYTE = 6;
Ratan Gupta533d03b2017-07-30 10:39:22 +0530114constexpr auto VLAN_SIZE_BYTE = 2;
Ratan Guptacc6cdbf2017-09-01 23:06:25 +0530115constexpr auto IPSRC_SIZE_BYTE = 1;
Ratan Guptab8e99552017-07-27 07:07:48 +0530116constexpr auto BITS_32 = 32;
117constexpr auto MASK_32_BIT = 0xFFFFFFFF;
Ratan Gupta533d03b2017-07-30 10:39:22 +0530118constexpr auto VLAN_ID_MASK = 0x00000FFF;
119constexpr auto VLAN_ENABLE_MASK = 0x8000;
Ratan Guptab8e99552017-07-27 07:07:48 +0530120
Ratan Guptacc6cdbf2017-09-01 23:06:25 +0530121enum class IPOrigin: uint8_t
122{
123 UNSPECIFIED = 0,
124 STATIC = 1,
125 DHCP = 2,
126};
127
128
Ratan Gupta8c31d232017-08-13 05:49:43 +0530129}//namespace network
Ratan Gupta00659052017-02-23 17:29:08 +0530130}//namespace ipmi