-extern r_device silvercrest;
-extern r_device rubicson;
-extern r_device prologue;
-extern r_device waveman;
-extern r_device steffen;
-extern r_device elv_em1000;
-extern r_device elv_ws2000;
-extern r_device lacrossetx;
-extern r_device acurite5n1;
-extern r_device acurite_rain_gauge;
-extern r_device acurite_th;
-extern r_device oregon_scientific;
-extern r_device mebus433;
-extern r_device intertechno;
-extern r_device newkaku;
-extern r_device alectov1;
-extern r_device wh2;
-extern r_device leak;
+#include "bitbuffer.h"
+
+#define DEVICES \
+ DECL(silvercrest) \
+ DECL(rubicson) \
+ DECL(prologue) \
+ DECL(waveman) \
+ DECL(steffen) \
+ DECL(elv_em1000) \
+ DECL(elv_ws2000) \
+ DECL(lacrossetx) \
+ DECL(template) \
+ DECL(acurite_rain_gauge) \
+ DECL(acurite_th) \
+ DECL(oregon_scientific) \
+ DECL(mebus433) \
+ DECL(intertechno) \
+ DECL(newkaku) \
+ DECL(alectov1) \
+ DECL(cardin) \
+ DECL(fineoffset_WH2) \
+ DECL(nexus) \
+ DECL(ambient_weather) \
+ DECL(calibeur_RF104) \
+ DECL(X10_RF) \
+ DECL(DSC) \
+ DECL(brennenstuhl_rcs_2044) \
+ DECL(gt_wt_02) \
+ DECL(danfoss_CFR) \
+ DECL(ec3k) \
+ DECL(valeo) \
+ DECL(chuango) \
+ DECL(generic_remote) \
+ DECL(tfa_twin_plus_303049) \
+ DECL(fineoffset_wh1080) \
+ DECL(wt450) \
+ DECL(lacrossews) \
+ DECL(esperanza_ews) \
+ DECL(efergy_e2_classic) \
+ DECL(kw9015b) \
+ DECL(generic_temperature_sensor) \
+ DECL(wg_pb12v1) \
+ DECL(acurite_txr) \
+ DECL(acurite_986) \
+ DECL(hideki_ts04) \
+ DECL(oil_watchman) \
+ DECL(current_cost) \
+ DECL(emontx) \
+ DECL(ht680) \
+ DECL(s3318p) \
+ DECL(akhan_100F14) \
+ DECL(quhwa) \
+ DECL(oregon_scientific_v1) \
+ DECL(proove) \
+ DECL(bresser_3ch) \
+ DECL(springfield) \
+ DECL(oregon_scientific_sl109h) \
+ DECL(acurite_606) \
+ DECL(tfa_pool_thermometer) \
+ DECL(kedsum) \
+ DECL(blyss) \
+ DECL(steelmate) \
+ DECL(schraeder) \
+ DECL(lightwave_rf) \
+ DECL(elro_db286a) \
+ DECL(efergy_optical) \
+ DECL(hondaremote) \
+ DECL(template) \
+ DECL(fineoffset_XC0400) \
+ DECL(radiohead_ask) \
+ DECL(kerui) \
+ DECL(fineoffset_wh1050) \
+ DECL(honeywell) \
+ DECL(lelux) \
+ DECL(maverick_et73x) \
+ DECL(rftech) \
+ DECL(lacrosse_TX141TH_Bv2) \
+ DECL(acurite_00275rm) \
+ DECL(lacrosse_tx35) \
+ DECL(lacrosse_tx29) \
+ DECL(fineoffset_WH25) \
+ DECL(fineoffset_WH0530)
+
+typedef struct {
+ char name[256];
+ unsigned int modulation;
+ float short_limit;
+ float long_limit;
+ float reset_limit;
+ int (*json_callback)(bitbuffer_t *bitbuffer);
+ unsigned int disabled;
+ uintptr_t demod_arg; // Decoder specific optional argument (may be pointer to struct)
+ char **fields; // List of fields this decoder produces; required for CSV output. NULL-terminated.
+} r_device;
+
+#define DECL(name) extern r_device name;
+DEVICES
+#undef DECL