]> git.itanic.dy.fi Git - rrdd/commitdiff
itanic: Move power related structures into power_database.h
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Sun, 3 Apr 2011 09:48:01 +0000 (12:48 +0300)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Sun, 3 Apr 2011 09:48:01 +0000 (12:48 +0300)
Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
database.h
power_database.h [new file with mode: 0644]

index 22ad2d83dd5cc49d4f99d0986f3d4e9e19a52993..ba54acf74bc68a35c798c6e4efe9fd4cd4692a77 100644 (file)
@@ -12,10 +12,6 @@ const char blank[] = "COMMENT:       ";
 #define SYSINFO_RRD_PATH       SYSINFO_PATH "sysinfo.rrd"
 #define SYSINFO_IMAGES_PATH    SYSINFO_PATH "images/"
 
-#define POWER_PATH             "/home/kaapeli/rrdd/power/"
-#define POWER_RRD_PATH         POWER_PATH "power.rrd"
-#define POWER_IMAGES_PATH      POWER_PATH "images/"
-
 #define SYSTEMP_RRD_PATH       "/root/systemp/systemp.rrd"
 
 #define NETWORK_RRD_PATH       SYSINFO_PATH "network.rrd"
@@ -212,123 +208,6 @@ const char *systemptext[] = {
        0
 };
 
-const char *powertext[] = {
-       "DEF:vesiv=" POWER_RRD_PATH ":vesivoima:AVERAGE",
-       "DEF:ydinv=" POWER_RRD_PATH ":ydinvoima:AVERAGE",
-       "DEF:lauhd=" POWER_RRD_PATH ":lauhdevoima:AVERAGE",
-       "DEF:kauko=" POWER_RRD_PATH ":kaukolampo:AVERAGE",
-       "DEF:teoll=" POWER_RRD_PATH ":teollisuus:AVERAGE",
-       "DEF:muutu=" POWER_RRD_PATH ":muu:AVERAGE",
-       "DEF:huipp=" POWER_RRD_PATH ":huippuvoima:AVERAGE",
-       "DEF:tuont=" POWER_RRD_PATH ":tuonti:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                   "
-       "MIN          MAX         AVG        Last\\n",
-       blank,
-       "AREA:ydinv#ffff00:Ydinvoima   ",
-       "GPRINT:ydinv:MIN:" numfmt,
-       "GPRINT:ydinv:MAX:" numfmt,
-       "GPRINT:ydinv:AVERAGE:" numfmt,
-       "GPRINT:ydinv:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       blank,
-       "STACK:teoll#ff00ff:Teollisuus  ",
-       "GPRINT:teoll:MIN:" numfmt,
-       "GPRINT:teoll:MAX:" numfmt,
-       "GPRINT:teoll:AVERAGE:" numfmt,
-       "GPRINT:teoll:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       blank,
-       "STACK:kauko#00ff00:Kaukolämpö  ",
-       "GPRINT:kauko:MIN:" numfmt,
-       "GPRINT:kauko:MAX:" numfmt,
-       "GPRINT:kauko:AVERAGE:" numfmt,
-       "GPRINT:kauko:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       blank,
-       "STACK:muutu#808080:Muu         ",
-       "GPRINT:muutu:MIN:" numfmt,
-       "GPRINT:muutu:MAX:" numfmt,
-       "GPRINT:muutu:AVERAGE:" numfmt,
-       "GPRINT:muutu:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       blank,
-       "STACK:lauhd#ff0000:Lauhdevoima ",
-       "GPRINT:lauhd:MIN:" numfmt,
-       "GPRINT:lauhd:MAX:" numfmt,
-       "GPRINT:lauhd:AVERAGE:" numfmt,
-       "GPRINT:lauhd:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       blank,
-       "STACK:vesiv#0000ff:Vesivoima   ",
-       "GPRINT:vesiv:MIN:" numfmt,
-       "GPRINT:vesiv:MAX:" numfmt,
-       "GPRINT:vesiv:AVERAGE:" numfmt,
-       "GPRINT:vesiv:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       blank,
-       "STACK:tuont#000000:Tuonti      ",
-       "GPRINT:tuont:MIN:" numfmt,
-       "GPRINT:tuont:MAX:" numfmt,
-       "GPRINT:tuont:AVERAGE:" numfmt,
-       "GPRINT:tuont:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       blank,
-       "STACK:huipp#ff0000:Huippuvoima ",
-       "GPRINT:huipp:MIN:" numfmt,
-       "GPRINT:huipp:MAX:" numfmt,
-       "GPRINT:huipp:AVERAGE:" numfmt,
-       "GPRINT:huipp:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-       0
-};
-
-const char *freqtext[] = {
-       "DEF:freq=" POWER_RRD_PATH ":taajuus:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                   "
-       "MIN          MAX         AVG        Last\\n",
-       blank,
-       "LINE1:freq#0000ff:Taajuus      ",
-       "GPRINT:freq:MIN:" numfmt,
-       "GPRINT:freq:MAX:" numfmt,
-       "GPRINT:freq:AVERAGE:" numfmt,
-       "GPRINT:freq:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-};
-
-const char *deviationtext[] = {
-       "DEF:devi=" POWER_RRD_PATH ":aikapoikkeama:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                   "
-       "MIN          MAX         AVG        Last\\n",
-       blank,
-       "LINE1:devi#0000ff:Aikapoikkeama ",
-       "GPRINT:devi:MIN:" numfmt,
-       "GPRINT:devi:MAX:" numfmt,
-       "GPRINT:devi:AVERAGE:" numfmt,
-       "GPRINT:devi:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-};
-
-const char *pricetext[] = {
-       "DEF:hinta=" POWER_RRD_PATH ":hinta:AVERAGE",
-       "COMMENT:\\n",
-       blank,
-       "COMMENT:                   "
-       "MIN          MAX         AVG        Last\\n",
-       blank,
-       "LINE1:hinta#0000ff:Hinta         ",
-       "GPRINT:hinta:MIN:" numfmt,
-       "GPRINT:hinta:MAX:" numfmt,
-       "GPRINT:hinta:AVERAGE:" numfmt,
-       "GPRINT:hinta:LAST:" numfmt "\\n",
-       "COMMENT: \\n",
-};
-
 const char *cpuoptions[] = {
        "--alt-autoscale-max",
        "--lower-limit", "0",
@@ -367,34 +246,6 @@ const char *systempoptions[] = {
        0
 };
 
-const char *freqoptions[] = {
-       "--alt-autoscale",
-       "--vertical-label", "Taajuus Hz",
-       "--units-exponent", "-3",
-       0
-};
-
-const char *deviationoptions[] = {
-       "--alt-autoscale",
-       "--vertical-label", "Aikapoikkeama s",
-       0
-};
-
-const char *priceoptions[] = {
-       "--alt-autoscale",
-       "--vertical-label", "Hinta €/MWh",
-       0
-};
-
-const char *poweroptions[] = {
-       "--alt-autoscale-max",
-       "--lower-limit", "0",
-       "--vertical-label",
-       "Teho (MW)",
-       "--units-exponent", "0",
-       0
-};
-
 #define xstr(s) str(s)
 #define str(s) #s
 
@@ -440,20 +291,9 @@ const char *poweroptions[] = {
                .text = (char **)&rrdname ## text,                      \
        };
 
-#define CPUPATH        (xstr(SYSINFO_IMAGES_PATH) "cpu" )
-#define MEMPATH        (xstr(SYSINFO_IMAGES_PATH) "mem")
-#define SYSTEMPPATH    (xstr(SYSINFO_IMAGES_PATH) "systemp")
-#define POWERPATH      (xstr(POWER_IMAGES_PATH) "power")
-#define FREQPATH       (xstr(POWER_IMAGES_PATH) "freq")
-#define DEVIATIONPATH  (xstr(POWER_IMAGES_PATH) "deviation")
-
 DEFINE_IMAGE(cpu,      "/home/kaapeli/rrdd/sysinfo/images/cpu", 720, 480);
 DEFINE_IMAGE(mem,      "/home/kaapeli/rrdd/sysinfo/images/mem", 720, 480);
 DEFINE_IMAGE(systemp,  "/home/kaapeli/rrdd/sysinfo/images/systemp", 720, 480);
-DEFINE_IMAGE(power,    "/home/kaapeli/rrdd/power/images/power", 480, 480);
-DEFINE_IMAGE(freq,     "/home/kaapeli/rrdd/power/images/freq", 480, 240);
-DEFINE_IMAGE(deviation,        "/home/kaapeli/rrdd/power/images/deviation", 480, 240);
-DEFINE_IMAGE(price,    "/home/kaapeli/rrdd/power/images/price", 480, 240);
 DEFINE_IMAGE(eth0,     "/home/kaapeli/rrdd/sysinfo/images/eth0", 720, 200);
 DEFINE_IMAGE(eth1,     "/home/kaapeli/rrdd/sysinfo/images/eth1", 720, 200);
 
@@ -489,26 +329,6 @@ static struct rrd_image *systemp_images[] = {
        0
 };
 
-static struct rrd_image *power_images[] = {
-       &powerdaily,
-       &powerweekly,
-       &powermonthly,
-       &poweryearly,
-       &freqdaily,
-       &freqweekly,
-       &freqmonthly,
-       &freqyearly,
-       &deviationdaily,
-       &deviationweekly,
-       &deviationmonthly,
-       &deviationyearly,
-       &pricedaily,
-       &priceweekly,
-       &pricemonthly,
-       &priceyearly,
-       0
-};
-
 #define SOURCE_ENTRY(_name, _type, _heartbeat, _min, _max) \
        {                                                  \
                .name = _name,                             \
@@ -591,41 +411,6 @@ struct rrd_archive network_archives[] = {
        {},
 };
 
-struct rrd_data_source power_sources[] = {
-       SOURCE_ENTRY("kulutus", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("tuotanto", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("vesivoima", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("ydinvoima", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("lauhdevoima", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("kaukolampo", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("teollisuus", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("muu", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("huippuvoima", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("tuonti", "GAUGE", 360, -3000, 3000)
-       SOURCE_ENTRY("hinta", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("ylijaama", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("ylijaamakumul", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("taajuus", "GAUGE", 360, 0, 3000)
-       SOURCE_ENTRY("aikapoikkeama", "GAUGE", 360, -30, 30)
-       {},
-};
-
-struct rrd_archive power_archives[] = {
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 1, 480)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 7, 480)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 31, 480)
-       ARCHIVE_ENTRY("AVERAGE", 0.5, 365, 480)
-       ARCHIVE_ENTRY("MIN", 0.5, 1, 480)
-       ARCHIVE_ENTRY("MIN", 0.5, 7, 480)
-       ARCHIVE_ENTRY("MIN", 0.5, 31, 480)
-       ARCHIVE_ENTRY("MIN", 0.5, 365, 480)
-       ARCHIVE_ENTRY("MAX", 0.5, 1, 480)
-       ARCHIVE_ENTRY("MAX", 0.5, 7, 480)
-       ARCHIVE_ENTRY("MAX", 0.5, 31, 480)
-       ARCHIVE_ENTRY("MAX", 0.5, 365, 480)
-       {},
-};
-
 static struct rrd_database cpumem_rrd = {
        .filename       = SYSINFO_RRD_PATH,
        .interval       = 120,
@@ -636,23 +421,6 @@ static struct rrd_database cpumem_rrd = {
        .name           = "cpumem",
 };
 
-char *power_parse_cmdline[] = {
-       "./parse_power.sh",
-       "",
-       NULL,
-};
-
-static struct rrd_database power_rrd = {
-       .name           = "power",
-       .filename       = POWER_RRD_PATH,
-       .interval       = 180,
-       .sources        = power_sources,
-       .archives       = power_archives,
-       .parse          = script_parser,
-       .parser_data    = power_parse_cmdline,
-       .images         = power_images,
-};
-
 static struct rrd_database systemp_rrd = {
        .interval       = 300,
        .parse          = NULL,
@@ -678,6 +446,8 @@ static struct rrd_database network_rrd = {
        .images         = network_images,
 };
 
+#include "power_database.h"
+
 static struct rrd_database *all_rrds[] = {
        &cpumem_rrd,
        &power_rrd,
diff --git a/power_database.h b/power_database.h
new file mode 100644 (file)
index 0000000..3d68480
--- /dev/null
@@ -0,0 +1,225 @@
+#define POWER_PATH             "/home/kaapeli/rrdd/power/"
+#define POWER_RRD_PATH         POWER_PATH "power.rrd"
+#define POWER_IMAGES_PATH      POWER_PATH "images/"
+
+const char *powertext[] = {
+       "DEF:vesiv=" POWER_RRD_PATH ":vesivoima:AVERAGE",
+       "DEF:ydinv=" POWER_RRD_PATH ":ydinvoima:AVERAGE",
+       "DEF:lauhd=" POWER_RRD_PATH ":lauhdevoima:AVERAGE",
+       "DEF:kauko=" POWER_RRD_PATH ":kaukolampo:AVERAGE",
+       "DEF:teoll=" POWER_RRD_PATH ":teollisuus:AVERAGE",
+       "DEF:muutu=" POWER_RRD_PATH ":muu:AVERAGE",
+       "DEF:huipp=" POWER_RRD_PATH ":huippuvoima:AVERAGE",
+       "DEF:tuont=" POWER_RRD_PATH ":tuonti:AVERAGE",
+       "COMMENT:\\n",
+       blank,
+       "COMMENT:                   "
+       "MIN          MAX         AVG        Last\\n",
+       blank,
+       "AREA:ydinv#ffff00:Ydinvoima   ",
+       "GPRINT:ydinv:MIN:" numfmt,
+       "GPRINT:ydinv:MAX:" numfmt,
+       "GPRINT:ydinv:AVERAGE:" numfmt,
+       "GPRINT:ydinv:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       blank,
+       "STACK:teoll#ff00ff:Teollisuus  ",
+       "GPRINT:teoll:MIN:" numfmt,
+       "GPRINT:teoll:MAX:" numfmt,
+       "GPRINT:teoll:AVERAGE:" numfmt,
+       "GPRINT:teoll:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       blank,
+       "STACK:kauko#00ff00:Kaukolämpö  ",
+       "GPRINT:kauko:MIN:" numfmt,
+       "GPRINT:kauko:MAX:" numfmt,
+       "GPRINT:kauko:AVERAGE:" numfmt,
+       "GPRINT:kauko:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       blank,
+       "STACK:muutu#808080:Muu         ",
+       "GPRINT:muutu:MIN:" numfmt,
+       "GPRINT:muutu:MAX:" numfmt,
+       "GPRINT:muutu:AVERAGE:" numfmt,
+       "GPRINT:muutu:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       blank,
+       "STACK:lauhd#ff0000:Lauhdevoima ",
+       "GPRINT:lauhd:MIN:" numfmt,
+       "GPRINT:lauhd:MAX:" numfmt,
+       "GPRINT:lauhd:AVERAGE:" numfmt,
+       "GPRINT:lauhd:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       blank,
+       "STACK:vesiv#0000ff:Vesivoima   ",
+       "GPRINT:vesiv:MIN:" numfmt,
+       "GPRINT:vesiv:MAX:" numfmt,
+       "GPRINT:vesiv:AVERAGE:" numfmt,
+       "GPRINT:vesiv:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       blank,
+       "STACK:tuont#000000:Tuonti      ",
+       "GPRINT:tuont:MIN:" numfmt,
+       "GPRINT:tuont:MAX:" numfmt,
+       "GPRINT:tuont:AVERAGE:" numfmt,
+       "GPRINT:tuont:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       blank,
+       "STACK:huipp#ff0000:Huippuvoima ",
+       "GPRINT:huipp:MIN:" numfmt,
+       "GPRINT:huipp:MAX:" numfmt,
+       "GPRINT:huipp:AVERAGE:" numfmt,
+       "GPRINT:huipp:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+       0
+};
+
+const char *freqtext[] = {
+       "DEF:freq=" POWER_RRD_PATH ":taajuus:AVERAGE",
+       "COMMENT:\\n",
+       blank,
+       "COMMENT:                   "
+       "MIN          MAX         AVG        Last\\n",
+       blank,
+       "LINE1:freq#0000ff:Taajuus      ",
+       "GPRINT:freq:MIN:" numfmt,
+       "GPRINT:freq:MAX:" numfmt,
+       "GPRINT:freq:AVERAGE:" numfmt,
+       "GPRINT:freq:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+};
+
+const char *deviationtext[] = {
+       "DEF:devi=" POWER_RRD_PATH ":aikapoikkeama:AVERAGE",
+       "COMMENT:\\n",
+       blank,
+       "COMMENT:                   "
+       "MIN          MAX         AVG        Last\\n",
+       blank,
+       "LINE1:devi#0000ff:Aikapoikkeama ",
+       "GPRINT:devi:MIN:" numfmt,
+       "GPRINT:devi:MAX:" numfmt,
+       "GPRINT:devi:AVERAGE:" numfmt,
+       "GPRINT:devi:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+};
+
+const char *pricetext[] = {
+       "DEF:hinta=" POWER_RRD_PATH ":hinta:AVERAGE",
+       "COMMENT:\\n",
+       blank,
+       "COMMENT:                   "
+       "MIN          MAX         AVG        Last\\n",
+       blank,
+       "LINE1:hinta#0000ff:Hinta         ",
+       "GPRINT:hinta:MIN:" numfmt,
+       "GPRINT:hinta:MAX:" numfmt,
+       "GPRINT:hinta:AVERAGE:" numfmt,
+       "GPRINT:hinta:LAST:" numfmt "\\n",
+       "COMMENT: \\n",
+};
+
+const char *freqoptions[] = {
+       "--alt-autoscale",
+       "--vertical-label", "Taajuus Hz",
+       "--units-exponent", "-3",
+       0
+};
+
+const char *deviationoptions[] = {
+       "--alt-autoscale",
+       "--vertical-label", "Aikapoikkeama s",
+       0
+};
+
+const char *priceoptions[] = {
+       "--alt-autoscale",
+       "--vertical-label", "Hinta €/MWh",
+       0
+};
+
+const char *poweroptions[] = {
+       "--alt-autoscale-max",
+       "--lower-limit", "0",
+       "--vertical-label",
+       "Teho (MW)",
+       "--units-exponent", "0",
+       0
+};
+
+DEFINE_IMAGE(power,    "/home/kaapeli/rrdd/power/images/power", 480, 480);
+DEFINE_IMAGE(freq,     "/home/kaapeli/rrdd/power/images/freq", 480, 240);
+DEFINE_IMAGE(deviation,        "/home/kaapeli/rrdd/power/images/deviation", 480, 240);
+DEFINE_IMAGE(price,    "/home/kaapeli/rrdd/power/images/price", 480, 240);
+
+static struct rrd_image *power_images[] = {
+       &powerdaily,
+       &powerweekly,
+       &powermonthly,
+       &poweryearly,
+       &freqdaily,
+       &freqweekly,
+       &freqmonthly,
+       &freqyearly,
+       &deviationdaily,
+       &deviationweekly,
+       &deviationmonthly,
+       &deviationyearly,
+       &pricedaily,
+       &priceweekly,
+       &pricemonthly,
+       &priceyearly,
+       0
+};
+
+struct rrd_data_source power_sources[] = {
+       SOURCE_ENTRY("kulutus", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("tuotanto", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("vesivoima", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("ydinvoima", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("lauhdevoima", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("kaukolampo", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("teollisuus", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("muu", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("huippuvoima", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("tuonti", "GAUGE", 360, -3000, 3000)
+       SOURCE_ENTRY("hinta", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("ylijaama", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("ylijaamakumul", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("taajuus", "GAUGE", 360, 0, 3000)
+       SOURCE_ENTRY("aikapoikkeama", "GAUGE", 360, -30, 30)
+       {},
+};
+
+struct rrd_archive power_archives[] = {
+       ARCHIVE_ENTRY("AVERAGE", 0.5, 1, 480)
+       ARCHIVE_ENTRY("AVERAGE", 0.5, 7, 480)
+       ARCHIVE_ENTRY("AVERAGE", 0.5, 31, 480)
+       ARCHIVE_ENTRY("AVERAGE", 0.5, 365, 480)
+       ARCHIVE_ENTRY("MIN", 0.5, 1, 480)
+       ARCHIVE_ENTRY("MIN", 0.5, 7, 480)
+       ARCHIVE_ENTRY("MIN", 0.5, 31, 480)
+       ARCHIVE_ENTRY("MIN", 0.5, 365, 480)
+       ARCHIVE_ENTRY("MAX", 0.5, 1, 480)
+       ARCHIVE_ENTRY("MAX", 0.5, 7, 480)
+       ARCHIVE_ENTRY("MAX", 0.5, 31, 480)
+       ARCHIVE_ENTRY("MAX", 0.5, 365, 480)
+       {},
+};
+
+char *power_parse_cmdline[] = {
+       "./parse_power.sh",
+       "",
+       NULL,
+};
+
+static struct rrd_database power_rrd = {
+       .name           = "power",
+       .filename       = POWER_RRD_PATH,
+       .interval       = 180,
+       .sources        = power_sources,
+       .archives       = power_archives,
+       .parse          = script_parser,
+       .parser_data    = power_parse_cmdline,
+       .images         = power_images,
+};