kopia lustrzana https://github.com/weetmuts/wmbusmeters
Move createMeter into meters.cc
rodzic
7f5ef010eb
commit
73c4085a00
33
src/main.cc
33
src/main.cc
|
@ -46,7 +46,6 @@ using namespace std;
|
|||
int main(int argc, char **argv);
|
||||
void check_if_multiple_wmbus_meters_running();
|
||||
void check_for_dead_wmbus_devices(Configuration *config);
|
||||
shared_ptr<Meter> create_meter(Configuration *config, MeterType type, MeterInfo *mi, const char *keymsg);
|
||||
shared_ptr<Printer> create_printer(Configuration *config);
|
||||
shared_ptr<WMBus> create_wmbus_object(Detected *detected, Configuration *config, shared_ptr<SerialCommunicationManager> manager);
|
||||
enum class DetectionType { STDIN_FILE_SIMULATION, ALL };
|
||||
|
@ -304,31 +303,6 @@ void check_for_dead_wmbus_devices(Configuration *config)
|
|||
}
|
||||
}
|
||||
|
||||
shared_ptr<Meter> create_meter(Configuration *config, MeterType type, MeterInfo *mi, const char *keymsg)
|
||||
{
|
||||
shared_ptr<Meter> newm;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
#define X(mname,link,info,type,cname) \
|
||||
case MeterType::type: \
|
||||
{ \
|
||||
newm = create##cname(*mi); \
|
||||
newm->addConversions(config->conversions); \
|
||||
verbose("(main) configured \"%s\" \"" #mname "\" \"%s\" %s\n", \
|
||||
mi->name.c_str(), mi->id.c_str(), keymsg); \
|
||||
return newm; \
|
||||
} \
|
||||
break;
|
||||
LIST_OF_METERS
|
||||
#undef X
|
||||
case MeterType::UNKNOWN:
|
||||
error("No such meter type \"%s\"\n", mi->type.c_str());
|
||||
break;
|
||||
}
|
||||
return newm;
|
||||
}
|
||||
|
||||
shared_ptr<WMBus> create_wmbus_object(Detected *detected, Configuration *config,
|
||||
shared_ptr<SerialCommunicationManager> manager)
|
||||
{
|
||||
|
@ -717,7 +691,7 @@ void list_shell_envs(Configuration *config, string meter_type)
|
|||
vector<string> envs;
|
||||
Telegram t;
|
||||
MeterInfo mi;
|
||||
shared_ptr<Meter> meter = create_meter(config, toMeterType(meter_type), &mi, "");
|
||||
shared_ptr<Meter> meter = createMeter(config, toMeterType(meter_type), &mi);
|
||||
meter->printMeter(&t,
|
||||
&ignore1,
|
||||
&ignore2, config->separator,
|
||||
|
@ -737,7 +711,7 @@ void list_shell_envs(Configuration *config, string meter_type)
|
|||
void list_fields(Configuration *config, string meter_type)
|
||||
{
|
||||
MeterInfo mi;
|
||||
shared_ptr<Meter> meter = create_meter(config, toMeterType(meter_type), &mi, "");
|
||||
shared_ptr<Meter> meter = createMeter(config, toMeterType(meter_type), &mi);
|
||||
|
||||
int width = 0;
|
||||
for (auto &p : meter->prints())
|
||||
|
@ -1138,8 +1112,7 @@ void setup_meters(Configuration *config, MeterManager *manager)
|
|||
{
|
||||
for (auto &m : config->meters)
|
||||
{
|
||||
const char *keymsg = (m.key[0] == 0) ? "not-encrypted" : "encrypted";
|
||||
auto meter = create_meter(config, toMeterType(m.type), &m, keymsg);
|
||||
auto meter = createMeter(config, toMeterType(m.type), &m);
|
||||
manager->addMeter(meter);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2017-2020 Fredrik Öhrström
|
||||
Copyright (C) 2017-2021 Fredrik Öhrström
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -15,6 +15,7 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include"config.h"
|
||||
#include"meters.h"
|
||||
#include"meters_common_implementation.h"
|
||||
#include"units.h"
|
||||
|
@ -736,3 +737,30 @@ METER_DETECTION
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
shared_ptr<Meter> createMeter(Configuration *config, MeterType type, MeterInfo *mi)
|
||||
{
|
||||
shared_ptr<Meter> newm;
|
||||
|
||||
const char *keymsg = (mi->key[0] == 0) ? "not-encrypted" : "encrypted";
|
||||
|
||||
switch (type)
|
||||
{
|
||||
#define X(mname,link,info,type,cname) \
|
||||
case MeterType::type: \
|
||||
{ \
|
||||
newm = create##cname(*mi); \
|
||||
newm->addConversions(config->conversions); \
|
||||
verbose("(main) configured \"%s\" \"" #mname "\" \"%s\" %s\n", \
|
||||
mi->name.c_str(), mi->id.c_str(), keymsg); \
|
||||
return newm; \
|
||||
} \
|
||||
break;
|
||||
LIST_OF_METERS
|
||||
#undef X
|
||||
case MeterType::UNKNOWN:
|
||||
error("No such meter type \"%s\"\n", mi->type.c_str());
|
||||
break;
|
||||
}
|
||||
return newm;
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2017-2020 Fredrik Öhrström
|
||||
Copyright (C) 2017-2021 Fredrik Öhrström
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -399,4 +399,8 @@ LIST_OF_METERS
|
|||
|
||||
Generic *createGeneric(WMBus *bus, MeterInfo &m);
|
||||
|
||||
struct Configuration;
|
||||
struct MeterInfo;
|
||||
shared_ptr<Meter> createMeter(Configuration *config, MeterType type, MeterInfo *mi);
|
||||
|
||||
#endif
|
||||
|
|
Ładowanie…
Reference in New Issue