Project
Loading...
Searching...
No Matches
DataPointCreator.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
13
14namespace
15{
16o2::dcs::DataPointCompositeObject createDPCOM(const std::string& alias, const uint64_t* val, uint32_t seconds, uint16_t msec, uint16_t flags, o2::dcs::DeliveryType dt)
17{
18 auto dpid = o2::dcs::DataPointIdentifier(alias, dt);
19 auto dpval = o2::dcs::DataPointValue(
20 flags,
21 msec,
22 seconds,
23 val,
24 dt);
25 return o2::dcs::DataPointCompositeObject(dpid, dpval);
26}
27} // namespace
28
29namespace o2::dcs
30{
31template <>
32DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, double val, uint32_t seconds, uint16_t msec, uint16_t flags)
33{
34 return createDPCOM(alias, reinterpret_cast<const uint64_t*>(&val), seconds, msec, flags, DeliveryType::DPVAL_DOUBLE);
35}
36
37template <>
38DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, float val, uint32_t seconds, uint16_t msec, uint16_t flags)
39{
40 uint64_t tmp = 0;
41 memcpy(&tmp, &val, sizeof(val));
42 return createDPCOM(alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_FLOAT);
43}
44
45template <>
46DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, int32_t val, uint32_t seconds, uint16_t msec, uint16_t flags)
47{
48 int64_t tmp{val};
49 return createDPCOM(alias, reinterpret_cast<const uint64_t*>(&tmp), seconds, msec, flags, DeliveryType::DPVAL_INT);
50}
51
52template <>
53DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, uint32_t val, uint32_t seconds, uint16_t msec, uint16_t flags)
54{
55 uint64_t tmp{val};
56 return createDPCOM(alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_UINT);
57}
58
59template <>
60DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, long long val, uint32_t seconds, uint16_t msec, uint16_t flags)
61{
62 uint64_t tmp{static_cast<uint64_t>(val)};
63 return createDPCOM(alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_UINT);
64}
65
66template <>
67DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, char val, uint32_t seconds, uint16_t msec, uint16_t flags)
68{
69 uint64_t tmp = 0;
70 memcpy(&tmp, &val, 1);
71 return createDPCOM(alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_CHAR);
72}
73
74template <>
75DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, bool val, uint32_t seconds, uint16_t msec, uint16_t flags)
76{
77 uint64_t tmp{val};
78 return createDPCOM(alias, &tmp, seconds, msec, flags, DeliveryType::DPVAL_BOOL);
79}
80
81template <>
82DataPointCompositeObject createDataPointCompositeObject(const std::string& alias, std::string val, uint32_t seconds, uint16_t msec, uint16_t flags)
83{
84 constexpr int N{56};
85 uint64_t tmp[N / sizeof(uint64_t)];
86 strncpy((char*)tmp, val.c_str(), N);
87 return createDPCOM(alias, tmp, seconds, msec, flags, DeliveryType::DPVAL_STRING);
88}
89
90} // namespace o2::dcs
GLuint GLfloat * val
Definition glcorearb.h:1582
GLbitfield flags
Definition glcorearb.h:1570
o2::dcs::DataPointCompositeObject createDataPointCompositeObject(const std::string &alias, T val, uint32_t seconds, uint16_t msec, uint16_t flags=0)