formatting, remove unused

This commit is contained in:
john30
2022-09-17 23:57:24 +02:00
parent bb6a05190e
commit ce6ea68f22
20 changed files with 199 additions and 179 deletions
+1 -1
View File
@@ -1011,7 +1011,7 @@ result_t NumberDataType::getRawValueFromFloat(float val, unsigned int* output) c
} else {
if (m_divisor == 1) {
if (hasFlag(SIG)) {
long signedValue = static_cast<long>(val); // TODO static_c?
long signedValue = static_cast<long>(val); // TODO static_c?
if (signedValue < 0 && m_bitCount != 32) {
value = (unsigned int)(signedValue + (1 << m_bitCount));
} else {
+9 -8
View File
@@ -465,7 +465,8 @@ bool Device::available() {
ch = m_buffer[(pos+m_bufPos+1)%m_bufSize];
if (!(ch&ENH_BYTE_FLAG) || (ch&ENH_BYTE_MASK) != ENH_BYTE2) {
#ifdef DEBUG_RAW_TRAFFIC
fprintf(stdout, "raw avail enhanced following bad @%d+%d %2.2x %2.2x\n", m_bufPos, pos, m_buffer[(pos+m_bufPos)%m_bufSize], ch);
fprintf(stdout, "raw avail enhanced following bad @%d+%d %2.2x %2.2x\n", m_bufPos, pos,
m_buffer[(pos+m_bufPos)%m_bufSize], ch);
fflush(stdout);
#endif
if (m_listener != nullptr) {
@@ -654,17 +655,17 @@ bool Device::read(symbol_t* value, bool isAvailable, ArbitrationState* arbitrati
ostringstream stream;
switch ((m_infoLen << 8) | m_infoId) {
case 0x0200:
case 0x0500: // with firmware version and jumper info
case 0x0800: // with firmware version, jumper info, and bootloader version
stream << "firmware " << static_cast<unsigned>(m_infoBuf[0]) << "." // version minor
<< std::hex << static_cast<unsigned>(m_infoBuf[1]); // features mask
if (m_infoLen>=5) {
case 0x0500: // with firmware version and jumper info
case 0x0800: // with firmware version, jumper info, and bootloader version
stream << "firmware " << static_cast<unsigned>(m_infoBuf[0]) << "." // version minor
<< std::hex << static_cast<unsigned>(m_infoBuf[1]); // features mask
if (m_infoLen >= 5) {
stream << " [" << std::setfill('0') << std::setw(2) << std::hex << static_cast<unsigned>(m_infoBuf[2])
<< std::setw(2) << static_cast<unsigned>(m_infoBuf[3]) << "]";
stream << ", jumpers 0x" << std::setw(2) << static_cast<unsigned>(m_infoBuf[4]);
stream << std::setfill(' '); // reset
}
if (m_infoLen>=8) {
if (m_infoLen >= 8) {
stream << ", bootloader " << std::dec << static_cast<unsigned>(m_infoBuf[5]);
stream << " [" << std::setfill('0') << std::setw(2) << std::hex << static_cast<unsigned>(m_infoBuf[6])
<< std::setw(2) << static_cast<unsigned>(m_infoBuf[7]) << "]";
@@ -677,7 +678,7 @@ bool Device::read(symbol_t* value, bool isAvailable, ArbitrationState* arbitrati
for (uint8_t pos = 0; pos < m_infoPos; pos++) {
stream << " " << std::setw(2) << static_cast<unsigned>(m_infoBuf[pos]);
}
if (m_infoId == 2 && (m_infoBuf[2]&0x3f)!=0x3f) {
if (m_infoId == 2 && (m_infoBuf[2]&0x3f) != 0x3f) {
// non-default arbitration delay
val = (m_infoBuf[2]&0x3f)*10; // steps of 10us
stream << ", arbitration delay " << std::dec << static_cast<unsigned>(val) << " us";
+2 -1
View File
@@ -352,7 +352,8 @@ class SerialDevice : public Device {
*/
SerialDevice(const char* name, bool checkDevice, unsigned int extraLatency, bool readOnly, bool initialSend,
bool enhancedProto = false, bool enhancedHighSpeed = false)
: Device(name, checkDevice, extraLatency, readOnly, initialSend, enhancedProto), m_enhancedHighSpeed(enhancedHighSpeed) {
: Device(name, checkDevice, extraLatency, readOnly, initialSend, enhancedProto),
m_enhancedHighSpeed(enhancedHighSpeed) {
}
// @copydoc
+5 -2
View File
@@ -22,6 +22,7 @@
#include "lib/ebus/stringhelper.h"
#include <algorithm>
#include <stack>
namespace ebusd {
@@ -296,7 +297,8 @@ bool StringReplacer::checkMatchability() const {
return true;
}
ssize_t StringReplacer::match(const string& str, string* circuit, string* name, string* field, const string& separator) const {
ssize_t StringReplacer::match(const string& str, string* circuit, string* name, string* field,
const string& separator) const {
size_t last = 0;
size_t count = m_parts.size();
size_t idx;
@@ -442,7 +444,8 @@ StringReplacer StringReplacers::get(const string& key) const {
return StringReplacer();
}
string StringReplacers::get(const string& key, bool untilFirstEmpty, bool onlyAlphanum, const string& fallbackKey) const {
string StringReplacers::get(const string& key, bool untilFirstEmpty, bool onlyAlphanum,
const string& fallbackKey) const {
auto itc = m_constants.find(key);
if (itc != m_constants.end()) {
return itc->second;
+3 -2
View File
@@ -24,6 +24,7 @@
#include <map>
#include <string>
#include <sstream>
#include <utility>
#include <vector>
#include "lib/ebus/message.h"
@@ -34,6 +35,7 @@ namespace ebusd {
*/
using std::map;
using std::pair;
using std::ostringstream;
using std::string;
using std::vector;
@@ -172,7 +174,7 @@ class StringReplacer {
* @param isField true when it is a field.
* @return the created pair.
*/
static std::pair<string, int> makeField(const string& name, bool isField);
static pair<string, int> makeField(const string& name, bool isField);
/**
* Add a part to the list of parts.
@@ -180,7 +182,6 @@ class StringReplacer {
* @param inField 1 after '%', 2 after '%{', 0 otherwise.
*/
void addPart(ostringstream& stack, int inField);
};
+2 -2
View File
@@ -20,6 +20,8 @@
# include <config.h>
#endif
#include <string.h>
#include "lib/knx/knx.h"
#ifdef HAVE_KNXD
@@ -27,8 +29,6 @@
#endif
#include "lib/knx/knxnet.h"
#include <string.h>
namespace ebusd {
unsigned int parseInt(const char* str, int base, unsigned int minValue, unsigned int maxValue,
+5 -4
View File
@@ -150,12 +150,12 @@ class KnxConnection {
/**
* @return true if connection allows programming via ETS.
*/
virtual bool isProgrammable() const { return false; };
virtual bool isProgrammable() const { return false; }
/**
* @return the individual address, or 0 if not programmed yet, or any non-zero value if not programmable.
*/
virtual knx_addr_t getAddress() { return DEFAULT_ADDRESS; };
virtual knx_addr_t getAddress() const { return DEFAULT_ADDRESS; }
/**
* @param address the individual address to set.
@@ -168,7 +168,7 @@ class KnxConnection {
* Get the programming mode.
* @return true when in programming mode, false if not.
*/
virtual bool isProgrammingMode() {
virtual bool isProgrammingMode() const {
return false;
}
@@ -183,4 +183,5 @@ class KnxConnection {
} // namespace ebusd
#endif // LIB_KNX_KNX_H_
#endif // LIB_KNX_KNX_H_
+2 -2
View File
@@ -34,7 +34,7 @@ class KnxdConnection : public KnxConnection {
/**
* Construct a new instance.
*/
KnxdConnection(const char *url)
explicit KnxdConnection(const char *url)
: KnxConnection(), m_url(url), m_con(nullptr) {}
/**
@@ -121,4 +121,4 @@ class KnxdConnection : public KnxConnection {
} // namespace ebusd
#endif // LIB_KNX_KNXD_H_
#endif // LIB_KNX_KNXD_H_
+73 -70
View File
@@ -19,7 +19,6 @@
#ifndef LIB_KNX_KNXNET_H_
#define LIB_KNX_KNXNET_H_
#include <string>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
@@ -33,6 +32,7 @@
#include <errno.h>
#include <string.h>
#include <endian.h>
#include <string>
#include <cstdio>
#include "lib/knx/knx.h"
@@ -62,10 +62,10 @@ typedef union __attribute__ ((packed)) {
// KNXnet/IP header
typedef struct __attribute__ ((packed)) {
uint8_t headerLength; // =6
uint8_t protocolVersion; // =0x10
uint8_t headerLength; // =6
uint8_t protocolVersion; // =0x10
uint16be_t serviceTypeIdentifier;
uint16be_t totalLength; // complete length including header
uint16be_t totalLength; // complete length including header
} knxnet_header_t;
/** service types. */
@@ -92,7 +92,8 @@ typedef enum {
// cEMI frame header (external message interface)
typedef struct __attribute__ ((packed)) {
uint8_t messageCode;
uint8_t additionalInfoLength; // optional immediately following additional bytes, usually =0. fixed to 0 in cEMI management messages
// optional immediately following additional bytes, usually =0. fixed to 0 in cEMI management messages
uint8_t additionalInfoLength;
} knxnet_cemi_header_t;
/* cEMI message codes. */
@@ -128,21 +129,21 @@ typedef struct __attribute__ ((packed)) {
uint8_t raw;
struct {
#if __BYTE_ORDER == __BIG_ENDIAN
bool frameType: 1; // 0=extended, 1=standard
bool frameType: 1; // 0=extended, 1=standard
bool reserved: 1;
bool repeat: 1; // 0=repeat, 1=do not repeat
bool systemBroadcast: 1; // 0=system broadcast, 1=broadcast
uint8_t priority: 2; // 0=system, 1=normal, 2=urgent, 3=low
bool acknowledgeRequest: 1; // 1=ack requested
bool confirm: 1; // 0=no error, 1=error
bool repeat: 1; // 0=repeat, 1=do not repeat
bool systemBroadcast: 1; // 0=system broadcast, 1=broadcast
uint8_t priority: 2; // 0=system, 1=normal, 2=urgent, 3=low
bool acknowledgeRequest: 1; // 1=ack requested
bool confirm: 1; // 0=no error, 1=error
#else
bool confirm: 1; // 0=no error, 1=error
bool acknowledgeRequest: 1; // 1=ack requested
uint8_t priority: 2; // 0=system, 1=normal, 2=urgent, 3=low
bool systemBroadcast: 1; // 0=system broadcast, 1=broadcast
bool repeat: 1; // 0=repeat, 1=do not repeat
bool confirm: 1; // 0=no error, 1=error
bool acknowledgeRequest: 1; // 1=ack requested
uint8_t priority: 2; // 0=system, 1=normal, 2=urgent, 3=low
bool systemBroadcast: 1; // 0=system broadcast, 1=broadcast
bool repeat: 1; // 0=repeat, 1=do not repeat
bool reserved: 1;
bool frameType: 1; // 0=extended, 1=standard
bool frameType: 1; // 0=extended, 1=standard
#endif
};
} controlField1;
@@ -150,19 +151,19 @@ typedef struct __attribute__ ((packed)) {
uint8_t raw;
struct {
#if __BYTE_ORDER == __BIG_ENDIAN
bool addressType: 1; // 0=individual, 1=group
bool addressType: 1; // 0=individual, 1=group
uint8_t hopCount: 3;
uint8_t extendedFrameFormat: 4; // 0=standard frame, 0xf=escape
uint8_t extendedFrameFormat: 4; // 0=standard frame, 0xf=escape
#else
uint8_t extendedFrameFormat: 4; // 0=standard frame, 0xf=escape
uint8_t extendedFrameFormat: 4; // 0=standard frame, 0xf=escape
uint8_t hopCount: 3;
bool addressType: 1; // 0=individual, 1=group
bool addressType: 1; // 0=individual, 1=group
#endif
};
} controlField2;
uint16be_t sourceAddress;
uint16be_t destinationAddress;
uint8_t informationLength; // number of NPDU octets (not including the TPCI/APCI octet)
uint8_t informationLength; // number of NPDU octets (not including the TPCI/APCI octet)
} knxnet_l_data_header_t;
@@ -170,22 +171,22 @@ typedef union __attribute__ ((packed)) {
uint8_t raw;
struct {
#if __BYTE_ORDER == __BIG_ENDIAN
bool controlFlag: 1; // 0=data, 1=control
bool numbered: 1; // 1=has sequence, 0=no sequence
uint8_t sequence: 4; // optional sequence number
uint8_t apci: 2; // highest 2 bits of APCI
bool controlFlag: 1; // 0=data, 1=control
bool numbered: 1; // 1=has sequence, 0=no sequence
uint8_t sequence: 4; // optional sequence number
uint8_t apci: 2; // highest 2 bits of APCI
#else
uint8_t apci: 2; // highest 2 bits of APCI
uint8_t sequence: 4; // optional sequence number
bool numbered: 1; // 1=has sequence, 0=no sequence
bool controlFlag: 1; // 0=data, 1=control
uint8_t apci: 2; // highest 2 bits of APCI
uint8_t sequence: 4; // optional sequence number
bool numbered: 1; // 1=has sequence, 0=no sequence
bool controlFlag: 1; // 0=data, 1=control
#endif
};
} knxnet_tpci_apci_t;
typedef struct __attribute__ ((packed)) {
uint8_t length;
uint8_t protocolCode; // 0x01=UDP over IPv4
uint8_t protocolCode; // 0x01=UDP over IPv4
uint32be_t ipAddressV4;
uint16be_t port;
} knxnet_hpai_t;
@@ -194,9 +195,9 @@ typedef struct __attribute__ ((packed)) {
typedef struct __attribute__ ((packed)) {
uint8_t length;
uint8_t descriptionCode; // 0x01=device info
uint8_t medium; // 0x20=IP
uint8_t status; // bit 0=programming mode
uint8_t descriptionCode; // 0x01=device info
uint8_t medium; // 0x20=IP
uint8_t status; // bit 0=programming mode
uint16be_t individualAddress;
uint16be_t projInstId;
uint8_t serial[6];
@@ -207,11 +208,11 @@ typedef struct __attribute__ ((packed)) {
typedef struct __attribute__ ((packed)) {
uint8_t length;
uint8_t descriptionCode; // 0x02=services
uint8_t descriptionCode; // 0x02=services
struct {
uint8_t familyId;
uint8_t familyVersion;
}; // just one for now
}; // just one for now
} knxnet_dib_services_t;
// the default system port
@@ -227,7 +228,7 @@ class LastFrame {
public:
void set(uint8_t* data, size_t len, size_t lOffset, time_t now) {
if (len>=sizeof(m_data)) {
if (len >= sizeof(m_data)) {
return;
}
memcpy(m_data, data, len);
@@ -237,7 +238,7 @@ class LastFrame {
}
bool isValid(time_t now) {
return m_len && m_time>=now-LAST_FRAME_TIMEOUT;
return m_len && m_time >= now-LAST_FRAME_TIMEOUT;
}
bool isSameAs(uint8_t* data, size_t len, size_t lOffset, time_t now, bool isSend = false) {
@@ -250,10 +251,10 @@ class LastFrame {
}
int oldHopCount = (m_data[lOffset+1]&0x70)>>4;
int newHopCount = (data[lOffset+1]&0x70)>>4;
if (newHopCount < 6 // top hop count is always tolerated TODO bad idea?
&& memcmp(data, m_data, lOffset+1) == 0 // including first byte of l_data header
&& (data[lOffset+1]&~0x70)==(m_data[lOffset+1]&~0x70) // ignore hop count
&& (isSend ? newHopCount<=oldHopCount : newHopCount<oldHopCount) // decremented hop count?
if (newHopCount < 6 // top hop count is always tolerated TODO bad idea?
&& memcmp(data, m_data, lOffset+1) == 0 // including first byte of l_data header
&& (data[lOffset+1]&~0x70) == (m_data[lOffset+1]&~0x70) // ignore hop count
&& (isSend ? newHopCount <= oldHopCount : newHopCount < oldHopCount) // decremented hop count?
&& memcmp(data+lOffset+2, m_data+lOffset+2, len-(lOffset+2)) == 0
) {
m_time = now;
@@ -286,7 +287,7 @@ class LastFrame {
class LastFrames {
public:
bool isRepetition(uint8_t* data, size_t len, size_t lOffset, time_t now, bool isSend = false) {
for (int i=0; i<CHECK_REPETITION_COUNT; i++) {
for (int i=0; i < CHECK_REPETITION_COUNT; i++) {
if (m_lastFrames[i].isValid(now)
&& m_lastFrames[i].isSameAs(data, len, lOffset, now, isSend)) {
return true;
@@ -298,12 +299,12 @@ class LastFrames {
void add(uint8_t* data, size_t len, size_t lOffset, time_t now) {
int oldestPos = -1;
time_t oldestAge = 0;
for (int i=0; i<CHECK_REPETITION_COUNT; i++) {
for (int i=0; i < CHECK_REPETITION_COUNT; i++) {
if (!m_lastFrames[i].isValid(now)) {
m_lastFrames[i].set(data, len, lOffset, now);
return;
}
if (oldestPos<0 || m_lastFrames[i].m_time < oldestAge) {
if (oldestPos < 0 || m_lastFrames[i].m_time < oldestAge) {
oldestPos = i;
oldestAge = m_lastFrames[i].m_time;
}
@@ -312,7 +313,7 @@ class LastFrames {
}
void reset() {
for (int i=0; i<CHECK_REPETITION_COUNT; i++) {
for (int i=0; i < CHECK_REPETITION_COUNT; i++) {
m_lastFrames[i].reset();
}
}
@@ -328,7 +329,8 @@ class LastFrames {
// helper method to log received/sent telegrams
void logTelegram(bool sent, knxnet_cemi_header_t* c, knxnet_l_data_header_t* l, uint8_t* d) {
bool isGrp = l->controlField2.addressType;
PRINTF("%s msgcode=%2.2x, %d.%d.%d > %d%c%d%c%d, repeat=%s, ack=%s, hopcnt=%d, prio=%s, frame=%s, %sbroad, confirm=%s, tpci/apci=%2.2x",
PRINTF("%s msgcode=%2.2x, %d.%d.%d > %d%c%d%c%d, repeat=%s, ack=%s, hopcnt=%d, prio=%s, frame=%s, %sbroad, "
"confirm=%s, tpci/apci=%2.2x",
sent ? "send" : "recv",
c->messageCode,
l->sourceAddress.high>>4,
@@ -342,15 +344,15 @@ void logTelegram(bool sent, knxnet_cemi_header_t* c, knxnet_l_data_header_t* l,
l->controlField1.repeat ? "yes" : "no",
l->controlField1.acknowledgeRequest ? "yes" : "no",
l->controlField2.hopCount,
l->controlField1.priority==1 ? "normal" : l->controlField1.priority==2 ? "urgent" : l->controlField1.priority==3 ? "low" : "system",
l->controlField1.priority == 1 ? "normal" : l->controlField1.priority == 2 ? "urgent" :
l->controlField1.priority == 3 ? "low" : "system",
l->controlField1.frameType ? "std" : "ext",
l->controlField1.systemBroadcast ? "" : "sys ",
l->controlField1.confirm ? "error" : "no err",
d[0]
);
d[0]);
if (d) {
PRINTF(", data=");
for (int i=0; i<l->informationLength; i++) {
for (int i=0; i < l->informationLength; i++) {
PRINTF("%2.2x ", d[1+i]);
}
}
@@ -371,7 +373,7 @@ class KnxNetConnection : public KnxConnection {
/**
* Construct a new instance.
*/
KnxNetConnection(const char* url)
explicit KnxNetConnection(const char* url)
: KnxConnection(), m_url(url), m_sock(0), m_programmingMode(false), m_addr(0) {}
/**
@@ -395,7 +397,7 @@ class KnxNetConnection : public KnxConnection {
m_interface.s_addr = INADDR_ANY;
m_port = SYSTEM_MULTICAST_PORT;
if (m_url && m_url[0]) { // non-empty
string urlStr = m_url; // "[mcast][@intf]" for non-default 224.0.23.12:3671)
string urlStr = m_url; // "[mcast][@intf]" for non-default 224.0.23.12:3671)
if (!urlStr.empty()) {
auto pos = urlStr.find('@');
if (pos != string::npos) {
@@ -504,11 +506,12 @@ class KnxNetConnection : public KnxConnection {
// @copydoc
knx_transfer_t getPollData(int size, uint8_t* data, int* recvlen, knx_addr_t* src, knx_addr_t* dst) override {
uint8_t buf[128];
ssize_t len = recv(m_sock, buf, sizeof(buf), 0);
if (len < sizeof(knxnet_header_t)) {
ssize_t slen = recv(m_sock, buf, sizeof(buf), 0);
if (slen < 0 || static_cast<unsigned>(slen) < sizeof(knxnet_header_t)) {
PRINTF("#skip recv short hdr len=%d\n", len);
return KNX_TRANSFER_NONE;
}
size_t len = static_cast<unsigned>(slen);
auto h = (knxnet_header_t*)buf;
if (h->headerLength != sizeof(knxnet_header_t) || h->protocolVersion != 0x10) {
PRINTF("#skip recv short/proto len=%d\n", len);
@@ -583,16 +586,16 @@ class KnxNetConnection : public KnxConnection {
// all fine
int ret = d[0];
if (l->controlField2.addressType) {
ret |= 0x100; // address type group
ret |= 0x100; // address type group
}
if (!(ret&0x80)) {
ret &= ~0x03; // remove two apci bits
ret &= ~0x03; // remove two apci bits
}
if (ret&0x40) {
ret &= ~0x3c; // remove sequence number
ret &= ~0x3c; // remove sequence number
}
*recvlen = size > dataLen ? dataLen : size;
memcpy(data, d, *recvlen); // including the TPCI/APCI octet 6
memcpy(data, d, *recvlen); // including the TPCI/APCI octet 6
if (src) {
*src = htons(l->sourceAddress.raw);
}
@@ -638,27 +641,27 @@ class KnxNetConnection : public KnxConnection {
c->additionalInfoLength = 0;
auto lOffset = sizeof(knxnet_header_t)+sizeof(knxnet_cemi_header_t)+c->additionalInfoLength;
auto l = (knxnet_l_data_header_t*)(((uint8_t*)h)+lOffset);
l->controlField1.raw = 0xbc; // standard frame, no repeat, broadcast, low prio, no ack, no err
l->controlField2.raw = 0xe0; // group address, hop count 6, standard frame
l->controlField2.addressType = (typ&0x100)!=0;
l->controlField1.raw = 0xbc; // standard frame, no repeat, broadcast, low prio, no ack, no err
l->controlField2.raw = 0xe0; // group address, hop count 6, standard frame
l->controlField2.addressType = (typ&0x100) != 0;
l->sourceAddress.raw = htons(m_addr);
l->destinationAddress.raw = htons(dst);
if (typ&0x100) {
// ensure at least default individual address
if (!m_addr) {
l->sourceAddress.raw = 0xffff; // for "unregistered device" in S-Mode
l->sourceAddress.raw = 0xffff; // for "unregistered device" in S-Mode
}
}
l->informationLength = len-1; // subtracting the TPCI/APCI
l->informationLength = len-1; // subtracting the TPCI/APCI
uint8_t* d = buf+sizeof(knxnet_header_t)+sizeof(knxnet_cemi_header_t)+sizeof(knxnet_l_data_header_t);
// first byte of data is expected to hold the APCI upper byte, copy remainder:
memcpy(d, data, len);
int tpci = typ&0xff; // TPCI/APCI
if ((typ&0x080)==0) {
tpci |= (d[0]&0x03); // highest 2 bits of APCI
int tpci = typ&0xff; // TPCI/APCI
if ((typ&0x080) == 0) {
tpci |= (d[0]&0x03); // highest 2 bits of APCI
}
if (typ&0x040) {
tpci |= d[0]&((0x0f)<<2); // SeqNo
tpci |= d[0]&((0x0f) << 2); // SeqNo
}
d[0] = tpci;
logTelegram(true, c, l, d);
@@ -673,7 +676,7 @@ class KnxNetConnection : public KnxConnection {
}
// copydoc
knx_addr_t getAddress() override {
knx_addr_t getAddress() const override {
return m_addr;
}
@@ -686,7 +689,7 @@ class KnxNetConnection : public KnxConnection {
}
// copydoc
bool isProgrammingMode() override {
bool isProgrammingMode() const override {
return m_programmingMode;
}
+1 -1
View File
@@ -44,7 +44,7 @@ void clockGettime(struct timespec* t) {
#endif
}
long long clockGetMillis() {
uint64_t clockGetMillis() {
struct timespec t;
clockGettime(&t);
return t.tv_sec*1000LL + t.tv_nsec / 1000000;
+2 -1
View File
@@ -19,6 +19,7 @@
#ifndef LIB_UTILS_CLOCK_H_
#define LIB_UTILS_CLOCK_H_
#include <stdint.h>
#include <time.h>
namespace ebusd {
@@ -34,7 +35,7 @@ void clockGettime(struct timespec* t);
/**
* Get the current system time in milliseconds since the Epoch.
*/
long long clockGetMillis();
uint64_t clockGetMillis();
} // namespace ebusd
+1 -1
View File
@@ -170,7 +170,7 @@ SSLSocket* SSLSocket::connect(const string& host, const uint16_t& port, bool htt
if (isError("ctx_new", ctx)) {
break;
}
bool verifyPeer = !caFile || strcmp(caFile, "#")!=0;
bool verifyPeer = !caFile || strcmp(caFile, "#") != 0;
SSL_CTX_set_verify(ctx, verifyPeer ? SSL_VERIFY_PEER : SSL_VERIFY_NONE, nullptr);
if (verifyPeer) {
#if OPENSSL_VERSION_NUMBER >= 0x10101000L
+2 -2
View File
@@ -98,10 +98,10 @@ bool WaitThread::Wait(int seconds, int millis) {
struct timespec t;
clockGettime(&t);
t.tv_sec += seconds;
long newMillis = t.tv_nsec/1000000 + millis;
long int newMillis = t.tv_nsec/1000000 + millis;
if (newMillis >= 1000) {
t.tv_sec += newMillis / 1000;
t.tv_nsec = (newMillis%1000) * 1000000; // rounds down to whole millis
t.tv_nsec = (newMillis%1000) * 1000000; // rounds down to whole millis
} else {
t.tv_nsec += millis * 1000000;
}