Move createMeter into meters.cc

pull/267/head
Fredrik Öhrström 2021-02-20 11:08:23 +01:00
rodzic 7f5ef010eb
commit 73c4085a00
3 zmienionych plików z 37 dodań i 32 usunięć

Wyświetl plik

@ -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);
}
}

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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