• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wirenboard / wb-mqtt-w1 / 2

31 Jul 2026 09:52AM UTC coverage: 61.341% (+2.2%) from 59.111%
2

Pull #36

github

450382
ekateluv
Add missing cstdint include in test/utils.h

clang-tidy 22 in the updated devenv image no longer gets uint8_t
transitively from other standard headers.
Pull Request #36: Use exported vars instead of MAKEFLAGS for coverage options

172 of 248 branches covered (69.35%)

311 of 507 relevant lines covered (61.34%)

9.1 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

70.42
/onewire_driver.cpp
1
#include "onewire_driver.h"
2
#include <functional>
3

4
#include <algorithm>
5

6
#define LOG(logger) logger.Log() << "[w1 driver] "
7

8
using namespace std;
9
using namespace WBMQTT;
10

11
namespace
12
{
13
    void DeleteControl(const TSysfsOneWireThermometer& sensor, PLocalDevice device, PDriverTx& tx, TLogger& infoLogger)
2✔
14
    {
15
        LOG(infoLogger) << "RemoveControl of: " << sensor.GetId();
2✔
16
        device->RemoveControl(tx, sensor.GetId()).Sync();
2✔
17
    }
2✔
18

19
    void UpdateValue(const TSysfsOneWireThermometer& sensor, PLocalDevice device, PDriverTx& tx, TLogger& errorLogger)
×
20
    {
21
        try {
22
            device->GetControl(sensor.GetId())->SetValue(tx, sensor.GetTemperature()).Sync();
×
23
        } catch (const exception& er) {
×
24
            LOG(errorLogger) << er.what();
×
25
            device->GetControl(sensor.GetId())->SetError(tx, "r").Sync();
×
26
        }
×
27
    }
×
28

29
    void CreateControl(const TSysfsOneWireThermometer& sensor, PLocalDevice device, PDriverTx& tx, TLogger& errorLogger)
10✔
30
    {
31
        try {
32
            device
33
                ->CreateControl(tx,
30✔
34
                                TControlArgs{}
10✔
35
                                    .SetId(sensor.GetId())
10✔
36
                                    .SetType("temperature")
20✔
37
                                    .SetReadonly(true)
10✔
38
                                    .SetRawValue(FormatFloat(sensor.GetTemperature())))
20✔
39
                .GetValue();
20✔
40
        } catch (const exception& er) {
×
41
            LOG(errorLogger) << er.what();
×
42
            device
43
                ->CreateControl(
×
44
                    tx,
45
                    TControlArgs{}.SetId(sensor.GetId()).SetType("temperature").SetReadonly(true).SetError("r"))
×
46
                .GetValue();
×
47
        }
×
48
    }
10✔
49
} // namespace
50

51
TOneWireDriverWorker::TOneWireDriverWorker(const string& deviceId,
6✔
52
                                           const PDeviceDriver& mqttDriver,
53
                                           TLogger& infoLogger,
54
                                           TLogger& debugLogger,
55
                                           TLogger& errorLogger,
56
                                           const string& thermometersSysfsDir)
6✔
57
    : MqttDriver(mqttDriver),
6✔
58
      OneWireManager(thermometersSysfsDir, debugLogger, errorLogger),
6✔
59
      InfoLogger(infoLogger),
6✔
60
      DebugLogger(debugLogger),
6✔
61
      ErrorLogger(errorLogger),
6✔
62
      DeviceId(deviceId),
6✔
63
      FirstTime(true)
6✔
64
{
65
    auto tx = MqttDriver->BeginTx();
6✔
66
    Device = tx->CreateDevice(TLocalDeviceArgs{}
18✔
67
                                  .SetId(DeviceId)
6✔
68
                                  .SetTitle("1-wire Thermometers", "en")
24✔
69
                                  .SetTitle("Термометры 1-wire", "ru")
30✔
70
                                  .SetIsVirtual(true)
6✔
71
                                  .SetDoLoadPrevious(false))
72
                 .GetValue();
6✔
73
}
6✔
74

75
void TOneWireDriverWorker::RunIteration()
10✔
76
{
77
    LOG(DebugLogger) << "Rescan bus";
10✔
78
    auto devices = OneWireManager.RescanBusAndRead();
10✔
79
    auto tx = MqttDriver->BeginTx();
10✔
80

81
    for (auto sensor: devices) {
22✔
82
        switch (sensor->GetStatus()) {
12✔
83
            case TSysfsOneWireThermometer::New:
10✔
84
                CreateControl(*sensor, Device, tx, ErrorLogger);
10✔
85
                break;
10✔
86
            case TSysfsOneWireThermometer::Connected:
×
87
                UpdateValue(*sensor, Device, tx, ErrorLogger);
×
88
                break;
×
89
            case TSysfsOneWireThermometer::Disconnected:
2✔
90
                DeleteControl(*sensor, Device, tx, InfoLogger);
2✔
91
                break;
2✔
92
        }
93
    }
12✔
94

95
    if (FirstTime) {
10✔
96
        Device->RemoveUnusedControls(tx).Wait();
6✔
97
        FirstTime = false;
6✔
98
    }
99
}
10✔
100

101
TOneWireDriverWorker::~TOneWireDriverWorker()
12✔
102
{
103
    try {
104
        MqttDriver->BeginTx()->RemoveDeviceById(DeviceId).Sync();
12✔
105
    } catch (const std::exception& e) {
×
106
        LOG(ErrorLogger) << "Exception during ~TOneWireDriverWorker: " << e.what();
×
107
    } catch (...) {
×
108
        LOG(ErrorLogger) << "Unknown exception during ~TOneWireDriverWorker";
×
109
    }
×
110
}
12✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc