mirror of
https://github.com/eried/portapack-mayhem.git
synced 2024-10-01 01:26:06 -04:00
e6afd7744d
* Weather restructure * Added Solight TE44 protocol * Add disabled Marantec24, and GangQi * More opt in subghzd
141 lines
5.4 KiB
C++
141 lines
5.4 KiB
C++
/*
|
|
This is the protocol list handler. It holds an instance of all known protocols.
|
|
So include here the .hpp, and add a new element to the protos vector in the constructor. That's all you need to do here if you wanna add a new proto.
|
|
@htotoo
|
|
*/
|
|
|
|
#include <vector>
|
|
#include <memory>
|
|
#include "portapack_shared_memory.hpp"
|
|
|
|
#include "fprotolistgeneral.hpp"
|
|
#include "subghzdbase.hpp"
|
|
#include "s-princeton.hpp"
|
|
#include "s-bett.hpp"
|
|
#include "s-came.hpp"
|
|
#include "s-came_atomo.hpp"
|
|
#include "s-came_twee.hpp"
|
|
#include "s-chambcode.hpp"
|
|
#include "s-clemsa.hpp"
|
|
#include "s-doitrand.hpp"
|
|
#include "s-dooya.hpp"
|
|
#include "s-faac.hpp"
|
|
#include "s-gate_tx.hpp"
|
|
#include "s-holtek.hpp"
|
|
#include "s-holtek_ht12x.hpp"
|
|
#include "s-honeywell.hpp"
|
|
#include "s-honeywellwdb.hpp"
|
|
#include "s-hormann.hpp"
|
|
#include "s-ido.hpp"
|
|
#include "s-intertechnov3.hpp"
|
|
#include "s-keeloq.hpp"
|
|
#include "s-kinggates_stylo_4k.hpp"
|
|
#include "s-linear.hpp"
|
|
#include "s-linear_delta3.hpp"
|
|
#include "s-magellan.hpp"
|
|
#include "s-marantec.hpp"
|
|
#include "s-mastercode.hpp"
|
|
#include "s-megacode.hpp"
|
|
#include "s-neroradio.hpp"
|
|
#include "s-nero_sketch.hpp"
|
|
#include "s-nice_flo.hpp"
|
|
#include "s-nice_flors.hpp"
|
|
#include "s-phoenix_v2.hpp"
|
|
#include "s-power_smart.hpp"
|
|
#include "s-secplus_v1.hpp"
|
|
#include "s-secplus_v2.hpp"
|
|
#include "s-smc5326.hpp"
|
|
#include "s-star_line.hpp"
|
|
#include "s-x10.hpp"
|
|
// #include "s-hormannbisecure.hpp" //fm
|
|
#include "s-legrand.hpp"
|
|
#include "s-somify_keytis.hpp"
|
|
#include "s-somify_telis.hpp"
|
|
#include "s-gangqi.hpp"
|
|
#include "s-marantec24.hpp"
|
|
// GENIE FROM PR
|
|
|
|
#ifndef __FPROTO_PROTOLISTSGZ_H__
|
|
#define __FPROTO_PROTOLISTSGZ_H__
|
|
|
|
class SubGhzDProtos : public FProtoListGeneral {
|
|
public:
|
|
SubGhzDProtos(const SubGhzDProtos&) { SubGhzDProtos(); }; // won't use, but makes compiler happy
|
|
SubGhzDProtos& operator=(const SubGhzDProtos&) { return *this; } // won't use, but makes compiler happy
|
|
SubGhzDProtos() {
|
|
// add protos
|
|
protos[FPS_PRINCETON] = new FProtoSubGhzDPrinceton();
|
|
protos[FPS_BETT] = new FProtoSubGhzDBett();
|
|
protos[FPS_CAME] = new FProtoSubGhzDCame();
|
|
protos[FPS_CAMEATOMO] = new FProtoSubGhzDCameAtomo();
|
|
protos[FPS_CAMETWEE] = new FProtoSubGhzDCameTwee();
|
|
protos[FPS_CHAMBCODE] = new FProtoSubGhzDChambCode();
|
|
protos[FPS_CLEMSA] = new FProtoSubGhzDClemsa();
|
|
protos[FPS_DOITRAND] = new FProtoSubGhzDDoitrand();
|
|
protos[FPS_DOOYA] = new FProtoSubGhzDDooya();
|
|
protos[FPS_FAAC] = new FProtoSubGhzDFaac();
|
|
protos[FPS_GATETX] = new FProtoSubGhzDGateTx();
|
|
protos[FPS_HOLTEK] = new FProtoSubGhzDHoltek();
|
|
protos[FPS_HOLTEKHT12X] = new FProtoSubGhzDHoltekHt12x();
|
|
protos[FPS_HONEYWELL] = new FProtoSubGhzDHoneywell();
|
|
protos[FPS_HONEYWELLWDB] = new FProtoSubGhzDHoneywellWdb();
|
|
protos[FPS_HORMANN] = new FProtoSubGhzDHormann();
|
|
protos[FPS_IDO] = new FProtoSubGhzDIdo();
|
|
protos[FPS_INTERTECHNOV3] = new FProtoSubGhzDIntertechnoV3();
|
|
protos[FPS_KEELOQ] = new FProtoSubGhzDKeeLoq();
|
|
protos[FPS_KINGGATESSTYLO4K] = new FProtoSubGhzDKinggatesStylo4K();
|
|
protos[FPS_LINEAR] = new FProtoSubGhzDLinear();
|
|
protos[FPS_LINEARDELTA3] = new FProtoSubGhzDLinearDelta3();
|
|
protos[FPS_MAGELLAN] = new FProtoSubGhzDMagellan();
|
|
protos[FPS_MARANTEC] = new FProtoSubGhzDMarantec();
|
|
protos[FPS_MASTERCODE] = new FProtoSubGhzDMastercode();
|
|
protos[FPS_MEGACODE] = new FProtoSubGhzDMegacode();
|
|
protos[FPS_NERORADIO] = new FProtoSubGhzDNeroRadio();
|
|
protos[FPS_NERO_SKETCH] = new FProtoSubGhzDNeroSketch();
|
|
protos[FPS_NICEFLO] = new FProtoSubGhzDNiceflo();
|
|
protos[FPS_NICEFLORS] = new FProtoSubGhzDNiceflors();
|
|
protos[FPS_PHOENIXV2] = new FProtoSubGhzDPhoenixV2();
|
|
protos[FPS_POWERSMART] = new FProtoSubGhzDPowerSmart();
|
|
protos[FPS_SECPLUSV1] = new FProtoSubGhzDSecPlusV1();
|
|
protos[FPS_SECPLUSV2] = new FProtoSubGhzDSecPlusV2();
|
|
protos[FPS_SMC5326] = new FProtoSubGhzDSmc5326();
|
|
protos[FPS_SOMIFY_KEYTIS] = new FProtoSubGhzDSomifyKeytis();
|
|
protos[FPS_SOMIFY_TELIS] = new FProtoSubGhzDSomifyTelis();
|
|
protos[FPS_STARLINE] = new FProtoSubGhzDStarLine();
|
|
protos[FPS_X10] = new FProtoSubGhzDX10();
|
|
// protos[FPS_HORMANNBISECURE] = new FProtoSubGhzDHormannBiSecure(); //fm
|
|
protos[FPS_LEGRAND] = new FProtoSubGhzDLegrand();
|
|
protos[FPS_GANGQI] = new FProtoSubGhzDGangqi();
|
|
protos[FPS_MARANTEC24] = new FProtoSubGhzDMarantec24();
|
|
|
|
for (uint8_t i = 0; i < FPS_COUNT; ++i) {
|
|
if (protos[i] != NULL) protos[i]->setCallback(callbackTarget);
|
|
}
|
|
}
|
|
|
|
~SubGhzDProtos() { // not needed for current operation logic, but a bit more elegant :)
|
|
for (uint8_t i = 0; i < FPS_COUNT; ++i) {
|
|
if (protos[i] != NULL) {
|
|
free(protos[i]);
|
|
protos[i] = NULL;
|
|
}
|
|
}
|
|
};
|
|
|
|
static void callbackTarget(FProtoSubGhzDBase* instance) {
|
|
SubGhzDDataMessage packet_message{instance->sensorType, instance->data_count_bit, instance->decode_data};
|
|
shared_memory.application_queue.push(packet_message);
|
|
}
|
|
|
|
void feed(bool level, uint32_t duration) {
|
|
for (uint8_t i = 0; i < FPS_COUNT; ++i) {
|
|
if (protos[i] != NULL) protos[i]->feed(level, duration);
|
|
}
|
|
}
|
|
|
|
protected:
|
|
FProtoSubGhzDBase* protos[FPS_COUNT] = {NULL};
|
|
};
|
|
|
|
#endif
|