rflink_old/Plugins/Plugin_001.c

618 lines
70 KiB
C

//#######################################################################################################
//## This Plugin is only for use with the RFLink software package ##
//## Plugin-01: Long Packet Translation and debugging ##
//#######################################################################################################
/*********************************************************************************************\
* This plugin takes care of long packets that actually contain multiple RF packets
* Usually caused by a very short delay between RF packets
*
* Author : StuntTeam
* Support : http://sourceforge.net/projects/rflink/
* License : This code is free for use in any open source project when this header is included.
* Usage of any parts of this code in a commercial application is prohibited!
***********************************************************************************************
* Technical information:
*
* The first part of this plugin outputs all the received pulses from RF packets, use this plugin to
* find signals from new devices. Even if you do not know what to do with the data yourself you might
* want to share your data so others can analyse it and add support for missong protocols.
*
* The second part of this plugin takes care of oversized RF packets that might need to be cut into
* smaller RF packets. Usually the oversized packets are due to a very short delay between re-transmits
* so that multiple packets are seen as one long packet
*
* ELRO HOMEEASY HE842
* The HE842 remote control sends 3 different protocols.
* 8 x Protocol method 1 - 28 bit code (58 pulses)
* 20 x Protocol method 2 - 24 bit code (50 pulses)
* 6 x Protocol method 3 - HE compatible (116 pulses) See Plugin 15
* Method 1 is detected as a 460+ pulse RF packet which we reject.
* 20;19;DEBUG;Pulses=464;Pulses(uSec)=275,950,200,925,850,275,200,925,200,925,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,925,200,4975,200,925,200,925,850,275,200,925,200,925,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,925,200,4975,200,925,200,925,850,275,200,925,200,925,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,925,200,4975,200,925,200,925,850,275,200,925,200,925,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,925,200,4975,200,925,200,925,850,275,200,925,200,950,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,925,200,4975,200,950,225,950,850,275,200,925,200,925,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,925,200,4975,200,925,200,925,850,275,200,925,200,925,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,925,200,4975,200,925,200,925,850,275,200,925,200,925,850,275,200,925,850,275,200,925,200,925,850,275,200,925,200,925,850,275,850,275,200,925,200,925,850,275,200,925,200,925,200,925,850,275,200,925,850,275,850,275,200,925,850,275,200,975,200;
* -------------------
* ELRO FLAMINGO FA500
* The FA500R remote control sends 4 different protocols.
* 4 x Protocol method 1 - 28 bit code (58 pulses) - Same as HE842 Method 1
* 3 x Protocol method 2 - AC compatible (132 pulses)
* 3 x Protocol method 3 - HE compatible (116 pulses)
* 5 x Protocol method 4 - 24/12 bit code (24 pulses)
* It appears that the FA500S power switch is only capable to react to the first method!
* RFLink can only distinguish the 3rd method properly. Method 1 and 2 have to be pulled apart first.
* This plugin will split the received signal so that method 1 or 2 can be used.
* In this case we force method 1 so that the remote control can be used with the FA500 switches.
* Method 3: 20;60;DEBUG;Pulses=24;Pulses(uSec)=325,800,275,800,825,225,275,800,275,825,275,800,825,225,275,800,825,225,275,800,275,800,275;
* Method 1&2: 20;1F;DEBUG;Pulses=364;Pulses(uSec)=225,4650,200,875,200,875,800,250,200,875,200,875,800,250,200,875,200,875,825,250,825,250,200,875,825,250,200,875,200,875,825,250,800,250,200,875,200,875,200,875,800,250,800,225,200,875,200,875,825,250,825,250,200,875,800,250,200,875,200,4650,200,875,200,875,825,250,200,875,200,875,800,250,200,875,200,875,825,250,800,250,200,875,800,250,200,875,200,875,825,225,825,250,200,875,200,875,200,875,825,250,800,250,200,875,200,875,825,250,800,225,200,875,800,250,200,875,200,4650,200,875,200,875,800,250,200,875,200,875,825,250,200,875,200,875,800,250,825,250,200,875,800,250,200,875,200,875,800,225,825,250,200,875,200,875,200,875,800,250,800,250,200,875,200,875,800,250,825,225,200,875,800,250,200,875,200,4650,200,875,200,875,800,250,200,875,200,875,800,250,200,875,200,875,825,250,800,250,200,875,825,250,200,875,200,875,800,225,800,250,200,875,200,875,200,875,800,250,825,250,200,875,200,875,800,250,800,250,200,875,825,250,200,875,150,2550,150,175,150,1200,125,175,150,1200,125,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,150,1200,150,1175,150,200,150,175,150,1200,150,175,150,1175,150,175,150,1200,150,1175,150,200,150,1175,150,200,150,175,150,1175,150,1175,150,200,150,1175,150,200,125,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,150,1175,150,175,125,1200,150,175,125,1200,150,175,150,1200,150,175,150,1200,150,175,150,1200,150,175,150,1200,150,175,150,1200,150,1175,150,175,150;
* 20;55;DEBUG;Pulses=58;Pulses(uSec)=275,900,200,900,850,250,200,925,200,925,850,275,875,250,225,950,875,275,875,275,225,950,875,275,225,950,875,275,225,950,225,950,875,275,200,950,875,275,875,275,875,250,875,275,875,275,875,275,875,250,225,950,875,275,200,950,225;
* 20;57;DEBUG;Pulses=130;Pulses(uSec)=225,200,150,1250,150,200,150,1250,150,200,150,1250,150,200,150,1250,150,200,150,1275,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,1275,150,225,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,1275,150,225,150,1300,150,225,150,200,150,1300,150,1300,150,200,150,1300,150,200,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,1275,150,200,150;
* 20;59;DEBUG;Pulses=124;Pulses(uSec)=225,1250,150,175,150,1250,150,200,150,1250,150,200,150,1250,150,200,150,1250,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,1300,150,200,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,1275,150,225,150,1275,150,225,150,200,150,1300,150,1275,150,200,150,1275,150,200,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,200,150,1300,150,1275,150,200,150;
* -------------------
* Auriol
* 20;03;DEBUG;Pulses=511;Pulses(uSec)=425,750,425,775,425,1700,450,1700,450,1675,450,1700,450,750,425,1725,425,1725,425,775,425,800,400,800,400,800,425,800,400,800,425,800,400,1725,400,1750,425,800,400,1750,400,800,400,1750,400,825,400,1750,400,1750,400,1750,400,1750,400,1750,400,800,400,825,400,800,400,825,400,825,400,825,375,825,400,825,400,3725,300,825,400,825,400,1750,400,1750,400,1750,400,1750,400,825,400,1750,400,1750,375,825,400,825,400,825,400,825,400,825,375,825,400,825,375,1750,400,1775,400,825,375,1775,400,825,375,1750,400,825,400,1750,375,1775,400,1750,375,1775,400,1750,400,825,400,825,400,825,400,825,400,825,400,825,400,825,400,825,400,3725,300,825,400,825,400,1750,400,1750,400,1775,400,1750,400,825,400,1750,400,1750,375,825,400,825,400,825,400,825,400,825,400,825,400,825,400,1750,400,1750,400,825,400,1775,400,825,375,1775,400,825,375,1750,375,1750,400,1775,400,1750,400,1775,400,825,375,825,400,825,375,825,400,825,375,825,375,825,400,825,400,3725,275,825,375,825,400,1775,400,1775,375,1750,400,1775,375,825,375,1750,400,1775,400,825,400,825,375,825,400,825,400,825,375,825,400,825,375,1750,400,1775,400,825,375,1775,400,825,375,1750,400,825,375,1775,375,1775,400,1750,375,1775,400,1750,400,825,375,825,400,825,375,825,400,825,375,825,375,825,400,825,375,3750,300,825,375,825,400,1750,400,1775,375,1775,400,1750,375,825,375,1775,400,1775,375,825,400,825,375,825,400,825,400,825,375,825,400,825,375,1775,400,1750,375,825,400,1750,400,825,375,1775,400,825,375,1775,375,1750,400,1775,375,1750,400,1775,400,825,375,825,400,825,375,825,400,825,375,825,400,850,400,825,375,3750,275,825,375,825,400,1775,375,1775,375,1750,400,1775,375,825,400,1775,400,1750,400,825,375,825,375,825,375,850,400,825,375,825,400,825,375,1750,375,1775,375,825,375,1775,375,825,400,1750,400,825,375,1750,375,1775,375,1750,375,1775,400,1775,400,825,375,825,375,825,375,825,400,825,375,825,400,825,400,825,375,3750,275,825,375,825,400,1775,400,1750,375,1775,400,1775,375,825,400,1750,400,1775,400,825,400,825,375,825,400,825,400,825,375,825,400,825,375,1750,400,1775,375,825,375,1775,400,825,375,1750,400,825,375,1775,375,1775,400,1750,375,1775,375,1750,400,825,375,850,375,825,375,825,375,825;
* -------------------
* Xiron
* 20;03;DEBUG;Pulses=511;Pulses(uSec)=600,3425,575,625,550,1600,525,1625,525,700,500,1650,500,1650,475,1675,475,725,475,1650,475,750,475,725,475,750,450,750,475,750,450,750,450,750,450,1700,450,1700,450,750,450,1700,450,750,450,1700,450,1700,450,1700,450,1700,450,1700,450,1700,450,1700,450,775,450,775,450,1700,425,1725,425,775,450,1700,425,775,450,800,425,3575,425,775,450,1700,425,1725,425,775,425,1700,450,1725,450,1700,425,775,425,1725,450,775,425,775,425,775,425,775,425,775,425,775,450,775,425,1700,425,1725,425,775,425,1725,425,775,425,1725,425,1700,450,1700,425,1725,450,1700,450,1725,425,1700,425,775,450,775,425,1725,425,1700,425,775,425,1725,450,775,425,775,425,3600,425,775,450,1725,425,1700,425,775,450,1725,425,1700,425,1725,450,775,450,1700,450,775,425,775,425,775,450,775,425,775,425,775,425,775,425,1725,425,1700,425,775,425,1725,425,775,425,1725,425,1700,425,1725,425,1700,425,1725,450,1700,425,1725,425,775,450,775,425,1700,425,1725,425,775,425,1725,450,775,425,775,425,3575,450,775,425,1700,425,1725,425,775,425,1700,425,1725,425,1700,450,775,450,1700,450,775,450,775,425,775,425,775,450,775,425,775,425,775,425,1700,425,1725,425,775,425,1700,450,775,425,1700,450,1700,425,1700,450,1700,425,1700,425,1700,450,1700,425,775,450,775,450,1700,425,1700,450,775,425,1700,450,775,425,775,425,3600,450,775,425,1725,450,1700,450,775,450,1700,450,1700,450,1700,450,775,450,1725,450,750,450,775,425,775,450,775,425,775,425,775,450,775,425,1725,450,1700,425,800,450,1700,425,775,425,1725,425,1700,425,1725,425,1700,450,1725,425,1700,450,1725,425,775,425,775,425,1700,450,1700,450,775,425,1725,425,775,450,775,425,3575,450,775,425,1700,425,1700,450,775,425,1700,450,1700,450,1700,450,775,450,1700,425,775,450,775,425,775,450,775,425,775,425,775,425,775,425,1700,450,1950,425,800,425,1700,425,775,425,1725,450,1700,425,1725,450,1700,450,1725,425,1700,450,1725,425,775,450,775,425,1700,450,1700,450,775,425,1725,450,775,425,775,425,3575,450,775,425,1700,425,1700,450,775,425,1700,450,1700,425,1700,450,775,450,1700,425,775,450,775,425,775,450,775,425,775,425,800,425,775,425,1700,450,1725,425,775,425,1725,425,775,425,1700,425,1725,425,1700,425,1725,450,1700,425,1725,450,1700,450,775,425,775,450,1700,425,1700;
* 20;06;DEBUG;Pulses=511;Pulses(uSec)=525,3475,525,700,475,1650,475,1675,475,750,450,1700,475,1675,450,1700,450,750,450,1700,425,775,425,775,400,825,400,800,425,800,425,800,400,1750,400,800,400,800,400,825,400,800,400,800,375,1750,400,825,375,825,400,1775,375,1750,400,1750,400,1750,400,825,400,825,400,1750,400,825,400,1750,400,1750,400,1775,375,1775,400,3625,400,825,400,1775,375,1775,400,825,375,1775,400,1750,400,1750,400,825,400,1750,375,825,400,825,400,825,375,825,400,825,375,825,375,1775,375,825,375,850,375,825,375,825,400,825,375,1775,375,825,375,850,350,1775,375,1775,375,1750,400,1775,350,825,375,825,375,1750,375,825,400,1750,375,1775,375,1775,375,1775,375,3650,375,850,375,1775,375,1775,400,825,375,1775,375,1750,400,1775,375,825,375,1775,375,825,375,825,400,850,375,825,400,825,375,825,400,1750,375,825,375,825,375,825,375,825,375,825,350,1775,375,825,375,850,350,1775,375,1775,375,1775,375,1775,375,825,375,825,375,1775,375,825,375,1775,375,1775,375,1775,375,1775,375,3625,400,825,375,1775,375,1750,400,825,375,1775,375,1750,400,1775,375,825,375,1775,375,825,375,825,375,825,375,850,375,825,375,825,375,1750,375,825,375,825,375,850,375,825,375,825,375,1775,375,850,375,825,350,1775,375,1750,375,1800,350,1775,375,825,375,825,375,1775,375,825,375,1775,375,1775,350,1775,375,1750,375,3650,375,825,375,1775,375,1750,400,825,400,1750,375,1775,375,1775,375,850,375,1775,375,825,375,825,400,825,375,825,375,825,375,825,375,1750,375,825,375,825,375,825,350,825,375,825,375,1775,375,825,375,825,350,1775,375,1775,375,1775,375,1775,375,850,350,825,375,1775,375,825,375,1775,375,1775,350,1775,375,1775,375,3650,375,825,375,1775,375,1775,375,825,375,1750,375,1775,375,1775,375,825,375,1775,375,850,350,825,375,825,375,825,375,850,375,850,375,1775,375,825,375,825,375,850,350,825,375,825,375,1775,375,825,375,1075,375,1775,375,1775,375,1775,375,1750,375,825,375,825,375,1775,375,825,375,1775,375,1775,375,1750,400,1775,375,3650,375,825,400,1775,375,1775,375,825,375,1775,375,1775,400,1750,375,825,400,1750,375,825,375,825,375,825,375,825,400,825,375,825,375,1775,375,825,350,825,375,825,375,825,375,850,350,1775,375,850,375,825,375,1775,375,1800,350,1775,375,1750,375,825,375,825,375,1775,375,825;
* 20;0F;DEBUG;Pulses=511;Pulses(uSec)=475,3525,450,775,450,1700,425,1725,425,775,425,1725,425,1725,400,1775,400,825,400,1750,400,825,400,825,375,825,375,825,375,825,375,825,375,1775,375,850,375,850,350,850,350,850,375,1775,375,1775,375,850,375,850,350,1800,375,1775,375,1775,375,1775,350,850,375,850,350,1800,375,1775,375,1775,350,850,350,875,350,1800,350,3675,350,850,350,1775,375,1775,350,850,375,1775,350,1800,350,1775,375,850,350,1800,350,850,350,875,350,850,350,850,325,875,350,875,350,1800,350,875,350,875,325,875,350,850,350,1800,350,1800,350,875,350,875,350,1825,325,1800,350,1800,350,1800,350,875,350,875,325,1800,350,1800,350,1800,350,875,350,875,350,1800,350,3675,350,875,350,1800,350,1800,350,875,325,1800,350,1800,350,1800,350,875,350,1800,350,850,350,850,350,875,350,875,325,875,350,875,350,1800,350,875,350,875,325,875,350,875,350,1800,350,1800,350,875,350,850,350,1800,325,1825,350,1800,350,1800,350,850,350,875,325,1825,325,1800,350,1800,350,875,350,875,350,1825,325,3675,350,875,350,1800,350,1800,350,850,325,1800,350,1800,350,1800,350,875,350,1800,350,850,350,875,350,850,350,850,350,875,350,875,350,1800,350,875,350,875,325,875,350,875,350,1800,350,1800,350,875,325,875,350,1825,325,1825,325,1825,350,1800,350,875,350,875,350,1800,350,1800,350,1800,325,875,350,875,350,1800,350,3675,350,875,325,1800,350,1800,375,850,325,1800,350,1800,350,1800,350,850,350,1800,325,875,350,875,350,875,350,875,350,875,350,850,350,1800,350,875,350,875,350,875,350,875,350,1800,325,1825,350,875,325,875,350,1800,350,1800,325,1800,350,1800,350,875,350,875,350,1800,350,1800,350,1800,325,875,350,875,350,1800,350,3675,350,875,325,1800,350,1800,350,875,350,1800,350,1800,350,1800,350,850,350,1800,350,850,350,875,350,875,350,875,350,875,350,875,350,1825,350,875,350,875,350,875,350,875,350,1825,325,1800,350,1325,350,875,350,1800,350,1800,350,1800,350,1800,350,875,350,875,350,1800,350,1800,325,1800,350,875,350,875,350,1800,350,3675,350,850,350,1800,350,1800,350,875,350,1800,350,1800,350,1800,350,875,325,1800,350,850,350,850,350,875,350,850,350,850,350,875,325,1800,350,875,350,875,350,875,350,875,325,1800,350,1800,350,875,350,875,350,1800,350,1800,350,1800,350,1800,325,875,350,875,350,1800,350,1800; * -------------------
* 20;0B;DEBUG;Pulses=511;Pulses(uSec)=75,125,625,3375,525,675,525,1625,475,725,475,750,475,750,450,775,450,1700,450,1700,450,1700,450,750,450,775,450,1725,425,800,425,800,425,800,425,1725,400,825,400,800,400,1725,425,800,425,775,425,800,400,800,400,800,400,1750,400,1750,400,1750,400,1750,400,825,400,1750,400,800,400,800,400,800,400,1750,400,1750,400,825,400,3625,400,800,400,1750,400,800,400,825,400,825,400,825,375,1775,375,1750,400,1750,375,800,400,800,400,1750,400,825,400,800,400,825,375,1775,375,825,375,825,375,1775,375,825,375,825,375,825,400,825,400,825,400,1750,400,1750,400,1750,375,1775,375,850,375,1775,375,825,375,825,375,825,375,1750,400,1750,400,825,400,3625,400,825,375,1775,375,825,400,825,400,825,400,825,400,1750,375,1775,375,1775,375,825,375,825,375,1775,375,825,375,825,375,825,400,1750,400,825,400,825,400,1750,375,825,375,825,375,825,375,825,375,825,375,1775,375,1775,375,1750,400,1750,400,825,400,1750,400,825,375,850,375,825,375,1775,375,1775,375,825,375,3650,375,825,375,1775,375,825,375,825,375,825,375,825,375,1750,400,1750,400,1750,375,825,400,825,375,1775,375,825,375,825,375,825,375,1775,375,825,375,825,375,1775,400,825,400,825,400,825,400,825,375,850,375,1775,375,1775,375,1775,375,1775,375,825,375,1775,375,825,400,825,400,825,400,1750,400,1750,375,850,375,3650,400,825,400,1750,400,825,400,825,375,825,375,825,375,1775,375,1775,375,1775,375,825,375,850,375,1750,400,825,400,825,400,825,400,1750,375,825,375,825,375,1775,375,825,375,825,375,825,375,825,375,825,400,1750,400,1775,400,1750,400,1750,375,825,375,1775,375,850,375,825,375,825,375,1775,375,1775,375,825,400,3625,400,825,375,1775,400,825,375,825,375,825,400,825,400,1750,400,1750,400,1750,375,825,375,825,375,1775,375,825,375,825,375,825,375,1775,375,825,400,825,400,1750,400,825,400,825,375,850,375,825,375,825,375,1775,375,1775,375,1775,375,1775,375,800,400,1750,400,1300,375,825,400,825,400,1750,400,1750,400,825,375,3650,375,825,400,1750,400,825,400,825,400,825,375,825,375,1775,375,1775,375,1775,375,850,375,850,375,1775,375,825,400,825,375,825,400,1750,400,825,400,825,375,1775,375,825,375,825,375,850,375,825,375,825,375,1775,375,1750,400,1750,400,1750,400,825,400,1750,375,825;
* 20;17;DEBUG;Pulses=511;Pulses(uSec)=550,675,475,1650,525,700,500,700,450,750,450,750,450,1700,450,1700,450,1725,400,775,425,775,425,1725,400,800,425,800,400,775,425,1725,400,800,400,825,400,1750,400,800,425,800,400,825,400,1775,400,825,400,1750,400,1750,400,1750,400,1750,400,800,400,825,400,1775,375,825,400,1750,375,825,375,825,400,825,375,3625,400,825,400,1750,375,825,400,825,375,825,375,825,375,1775,350,1775,375,1775,375,825,400,825,375,1775,375,850,375,825,400,825,400,1775,375,850,375,850,375,1775,375,825,375,850,375,850,375,1775,375,825,375,1775,375,1775,375,1750,400,1775,400,825,375,850,375,1775,375,825,400,1775,375,850,375,850,375,825,375,3650,375,825,375,1775,375,850,375,850,375,825,400,825,375,1750,375,1775,375,1775,375,825,400,825,375,1775,375,850,375,825,375,825,375,1775,375,850,375,850,375,1775,375,825,375,850,375,850,375,1775,375,825,375,1775,375,1800,375,1775,400,1775,375,850,375,850,375,1775,375,825,375,1775,375,850,375,850,375,825,375,3650,375,825,375,1775,375,850,375,850,375,825,400,825,375,1775,375,1775,375,1775,375,825,400,825,350,1775,375,850,375,825,375,825,375,1775,350,850,375,850,350,1775,375,825,375,850,375,850,375,1775,375,825,375,1775,375,1775,375,1775,375,1775,375,825,375,850,375,1775,375,825,375,1775,375,850,375,850,375,850,375,3650,375,825,375,1775,375,825,375,850,375,850,375,825,375,1775,375,1775,375,1800,375,825,375,825,375,1775,375,850,375,825,375,825,375,1775,350,850,375,850,350,1775,375,825,375,850,350,850,375,1800,375,825,375,1775,350,1800,350,1800,375,1775,375,825,375,850,350,1800,375,825,375,1775,350,850,375,850,375,850,375,3650,375,825,375,1775,375,850,375,850,350,850,375,850,375,1775,375,1775,350,1800,375,825,375,825,375,1775,375,850,375,850,375,825,375,1775,350,850,375,850,375,1775,375,825,375,825,375,850,375,1800,375,825,375,1775,375,1800,350,1775,375,1775,375,825,375,850,375,2025,375,850,375,1775,400,825,375,850,375,850,375,3650,375,850,375,1775,400,825,350,850,375,850,375,850,375,1775,375,1775,375,1775,375,850,350,825,375,1775,375,850,375,850,375,825,375,1775,375,825,375,850,375,1800,375,825,375,825,375,825,350,1800,375,850,375,1775,375,1775,375,1775,375,1775,375,825,375,825,375,1775,375,850,375,1775;
auriol..
* BYRON & LIDL doorbells
* The doorbells send the same packet a number of times shortly after each other.
* We just grab one packet out of the lot and kill the remaining ones.
* -------------------
* Home Confort Smart Home - TEL-010
* The Home Confort remote sends the same RF packet at least 6 times over the air. The delay in between the re-transmits is too short to detect individual packets
* So we break, filter and convert the Home Confort RF packets in this plugin
\*********************************************************************************************/
#define OVERSIZED_LIMIT 291 // longest packet is handled by plugin 48
#define PULSE500 500/RAWSIGNAL_SAMPLE_RATE
#define PULSE1100 1100/RAWSIGNAL_SAMPLE_RATE
#define PULSE1600 1600/RAWSIGNAL_SAMPLE_RATE
#define PULSE2000 2000/RAWSIGNAL_SAMPLE_RATE
#define PULSE4000 4000/RAWSIGNAL_SAMPLE_RATE
#define PULSE4200 4200/RAWSIGNAL_SAMPLE_RATE
#define PULSE3300 3300/RAWSIGNAL_SAMPLE_RATE
#define PULSE2500 2500/RAWSIGNAL_SAMPLE_RATE
#define PULSE3000 3000/RAWSIGNAL_SAMPLE_RATE
#define PULSE5000 5000/RAWSIGNAL_SAMPLE_RATE
#define PULSE6000 6000/RAWSIGNAL_SAMPLE_RATE
#define PULSE6500 6500/RAWSIGNAL_SAMPLE_RATE
#ifdef PLUGIN_001
boolean Plugin_001(byte function, char *string) {
byte HEconversiontype=1; // 0=No conversion, 1=conversion to Elro 58 pulse protocol (same as FA500R Method 1)
int i,j;
// ==========================================================================
// TEST
// ==========================================================================
//PROGMEM int temp[]={4200,625,150,625,150,625,125,625,125,625,125,625,125,625,125,625,125,625,125,625,125,625,125,625,125,625,125,625,125,625,125,625,150,625,125,625,125,650,125,175,600,175,600,175,600,175,600,175,600,175,575,175,575,175,600,175,600,175,600,175,575,175,575,175,600,175,600,175,600,175,600,175,600,175,600,175,575,175,575,175,575,650,100,175,575,175,575,175,575,175,575,175,575,175,575,650,100,175,100,4625,2375,650,100,650,100,675,100,650,100,675,100,650,100,675,100,675,100,675,100,675,100,650,100,650,100,650,100,650,125,650,100,650,125,650,100,650,100,650,100,175,575,175,575,175,575,175,575,175,575,175,575,175,575,200,575,175,575,175,575,175,575,175,575,200,575,200,575,200,575,200,575,200,575,175,575,200,575,200,575,200,575,675,100,200,575,200,575,200,575,200,575,200,575,175,575,675,100,175,100,4625,2375,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,650,100,175,575,200,575,175,575,200,575,200,575,200,575,175,575,175,575,200,575,200,575,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,575,200,575,675,100,200,575,200,575,200,575,200,575,200,575,200,575,650,100,200,100,4625,2375,650,100,650,100,650,100,675,100,650,100,675,100,650,100,650,100,650,100,650,100,650,100,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,175,600,175,600,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,600,175,575,175,575,175,575,175,575,175,575,175,575,175,575,175,600,650,125,175,575,175,575,175,575,175,575,175,575,175,575,650,125,175,125};
//PROGMEM int temp[]={725,150,600,150,600,150,600,150,600,650,125,150,600,175,600,175,600,175,600,175,600,175,600,650,125,175,125,4650,2375,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,650,125,175,600,175,600,650,125,175,600,175,600,175,600,175,600,175,600,175,600,175,600,175,600,175,600,175,600,175,600,175,575,175,575,175,575,175,575,175,600,650,125,175,575,175,575,175,575,175,575,175,575,175,600,650,125,175,100,4625,2375,300,325};
//PROGMEM int temp[]={550,300,475,300,475,325,950,800,450,325,925,825,925,325,450,350,425,350,425,350,425,825,425,350,900,850,900,850,900,850,875,850,425,375,400,375,400,375,400,375,400,375,400,375,400,375,875,375,400,350,1325,875,400,375,400,375,400,375,875,875,400,400,875,875,875,400,400,400,400,400,400,400,375,875,400,375,875,875,875,875,875,875,875,875,400,375,400,375,400,375,400,375,400,375,400,375,400,375,875,375,400,350,1325,875,400,375,400,375,400,375,875,875,400,375,875,875,875,400,400,400,400,400,400,400,400,875,400,375,875,875,875,875,875,875,875,875,400,375,400,375,400,375,400,375,400,375,400,375,400,375,875,375,400,0,0,0,0,0,0,0,0,0,0,0,0,0};
//PROGMEM int temp[]={625,300,575,275,550,300,1025,875,500,350,1000,925,1000,400,475,400,450,400,450,375,450,900,475,375,1000,925,975,925,975,925,950,925,450,400,450,400,450,400,450,400,450,400,450,400,450,400,950,425,425,375,1450,950,425,425,425,425,425,425,950,950,425,425,950,975,950,425,425,425,425,425,425,425,425,950,425,425,950,950,950,950,950,950,950,950,425,425,425,425,425,425,425,425,425,425,425,425,425,425,950,425,425,375,1450,950,425,425,425,425,425,425,950,950,425,425,950,975,950,425,425,425,425,425,425,425,425,950,425,425,950,950,950,950,950,950,950,950,450,425,425,425,425,425,425,425,425,425,425,425,425,425,950,425,425};
//PROGMEM int temp[]={325,825,875,225,225,875,850,225,225,875,225,875,225,875,225,850,225,875,225,875,225,850,225,850,225,875,825,250,225,875,850,225,225,875,825,250,200,900,825,275,200,900,200,900,200,900,825,250,200};
//pir PROGMEM int temp[]={475,925,400,950,1150,175,400,950,375,950,1125,200,1100,225,1100,250,1075,250,1075,275,1050,275,1050,275,1050,275,1050,275,275,1050,1050,275,300,1050,1050,275,300,1050,300,1050,1050,275,300,1050,275,1050,1050,275,275};
//homeconfort PROGMEM int temp[]={2675,200,600,200,600,700,100,700,100,200,600,700,100,700,100,200,600,700,100,225,600,725,75,225,600,225,575,725,75,225,575,225,575,225,575,725,75,725,75,725,75,725,75,225,575,725,75,225,575,225,575,225,575,225,575,225,575,250,575,250,575,250,575,250,575,250,550,250,550,250,550,250,550,250,550,250,550,250,550,250,575,725,75,250,550,250,550,250,550,250,550,250,550,250,550,750,50,250,50};
//eurodomest //20;03;DEBUG;Pulses=50;Pulses(uSec)= PROGMEM int temp[]={275,800,200,800,200,800,175,800,775,225,175,800,200,800,200,800,200,800,775,225,175,800,175,800,775,225,775,225,200,800,775,225,200,800,775,225,200,800,200,800,775,225,775,225,775,225,775,225,175};
//lacrosse hum PROGMEM int temp[]={1400,1300,1325,1300,1325,1275,1350,1150,225,1300,1325,1275,1325,1275,225,1300,1325,1275,225,1275,1350,1275,225,1300,1325,1275,225,1300,225,1275,1350,1275,1350,1275,250,1275,225,1275,1350,1275,1350,1300,225,1300,1350,1275,225,1275,225,1275,225,1275,225,1275,1325,1275,225,1300,1325,1275,1325,1275,1325,1275,250,1275,1350,1275,1325,1300,1325,1275,250,1275,1350,1275,1325,1275,250,1275,1325,1275,250,1275,225,1275,225,1275,1350,1275,225,1275,250,1275,225,1275,1325,1275,250,1275,1350,1300,1325};
//lacrosse temp
//PROGMEM int temp[]={1400,1275,1350,1275,1350,1275,1325,1150,225,1275,1350,1275,1325,1275,225,1300,1325,1275,225,1300,1325,1275,1325,1275,1350,1275,225,1300,225,1275,1350,1275,1350,1300,225,1300,225,1275,1350,1275,1325,1275,250,1275,1350,1275,250,1275,225,1275,225,1275,225,1275,1325,1275,1350,1275,250,1275,1325,1275,1350,1275,1350,1275,225,1275,225,1275,1350,1275,225,1300,1325,1275,1325,1275,1350,1275,250,1275,1325,1275,250,1275,250,1275,225,1275,1350,1275,1350,1275,225,1275,1350,1275,1350,1275,225,1275,1325};
//lacrosse wind
//PROGMEM int temp[]={1400,1275,1350,1275,1350,1275,1325,1150,250,1275,1350,1275,1325,1275,250,1275,1325,1275,1350,1275,225,1275,225,1275,1350,1300,225,1275,225,1275,1350,1275,1325,1275,225,1275,225,1275,1325,1275,1325,1275,250,1275,1350,1300,225,1275,225,1275,225,1275,225,1275,1350,1275,1325,1275,1350,1275,1325,1275,1350,1275,1325,1275,1350,1275,1325,1300,1325,1275,225,1275,225,1275,1350,1275,225,1275,225,1300,225,1275,250,1275,225,1275,225,1275,250,1275,225,1275,225,1275,1350,1275,250,1275,225,1275,1325};
//powerfix 2 off
//PROGMEM int temp[]={600,600,1250,625,1225,625,1225,625,1250,1300,550,625,1225,625,1225,625,1250,625,1225,625,1225,625,1225,625,1250,1300,575,625,1225,625,1225,625,1250,625,1225,650,1225,1300,550,625,1175};
//PROGMEM int temp[]={600,600,1250,600,1250,625,1225,625,1225,1275,575,625,1225,625,1225,625,1250,625,1225,650,1200,625,1225,625,1225,1300,550,1300,575,1300,550,1300,575,650,1225,625,1225,625,1225,625,1175};
//PROGMEM int temp[]={3675,950,250,950,250,950,950,250,250,950,250,950,250,950,950,275,250,950,950,275,250,950,950,250,250,950,950,250,250,950,250,950,250,950,950,250,250,950,950,250,250,950,950,275,250,950,950,275,250};
// mising bit 102 pulses //PROGMEM int temp[]={1400,1275,1325,1275,1325,1275,1325,1175,225,1300,1350,1275,1350,1275,225,1300,1325,1300,1325,1275,1325,1300,225,1300,1325,1275,225,1275,225,1300,1325,1275,1325,1275,250,1275,225,1275,1325,1275,1350,1275,225,1275,1325,1275,225,1225,300,1275,250,1275,225,1275,1325,1275,1325,1300,225,1275,225,1275,1325,1300,1325,1275,225,1275,225,1275,225,1275,225,1275,1325,1275,1325,1275,250,1275,250,1275,1325,1275,1350,1275,225,1275,225,1300,1325,1275,1350,1275,1325,1300,1325,1275,1350,1275,1325};
//lacrosse v3
//PROGMEM int temp[]={825,275,750,275,750,300,750,300,750,300,750,275,750,275,750,300,750,300,750,300,250,800,725,300,750,300,250,800,725,300,225,800,225,800,250,800,250,800,725,300,250,800,725,300,750,300,725,300,250,800,250,800,225,800,750,300,250,800,725,300,250,800,725,300,250,800,725,300,725,300,250,800,725,300,725,300,250,800,725,300,250,800,725,300,725,300,725,300,725,300,250,800,225,800,225,800,725,300,725,300,225,800,225,800,725,300,725,300,725,300,250,800,250,800,725,300,725,300,725,300,250,800,725,300,725,300,725,300,225,800,225,800,225,800,725,300,225,800,225,800,250,800,725,300,225,800,225,800,225,800,250,800,250,800,225,800,725,300,225,800,225,600};
// oregon v1
//PROGMEM int temp[]={1525,1025,1475,1050,1450,2350,1475,1025,2800,1025,1450,2375,1450,1050,2800,2375,1450,1050,1450,1050,1450,1050,1450,1050,2800,1050,1450,2350,1475,1025,1475,1050,1450,1050,1450,1050,1425,1050,1450,1050,1450,1050,2800,2375,2800,2375,2800,1050,1450,1075,1425};
//PROGMEM int temp[]={1725,1100,1650,1100,1650,1100,1650,1100,1650,1100,1650,1100,1625,1125,1625,1125,1625,1125,1625,1100,1625,1100,1625,4150,5675,225,3100,1125,1625,1125,1625,2600,3100,2600,1625,1125,3100,2600,1625,1125,3075,1125,1625,2600,3100,2600,1625,1125,3075,2600,1625,1125,1625,1125,1625,1125,1625,1125,1600,1125,3075,2600,1600,1125,3075,2600,1625,1125,1600,1150,3075,600};
//20;38;DEBUG;Pulses=66;Pulses(uSec)= v1
//PROGMEM int temp[]={1725,1075,1675,1075,1675,1075,1675,1075,1675,1050,1700,1050,1675,4125,5725,5075,1650,2575,3125,1100,1625,2575,1600,1150,3175,2500,1700,1050,1625,1150,3125,2550,3150,1075,1650,2550,1650,1100,1575,1175,3100,2575,1625,1125,1650,1075,1675,1075,1650,1125,1575,1175,3100,1100,1600,2600,1625,1125,1650,1100,1625,1125,1575,1175,3100,600};
//20;04;DEBUG;Pulses=50;Pulses(uSec)=
//PROGMEM int temp[]={300,1020,240,1020,240,1020,240,1020,240,1020,240,1020,240,1020,990,300,240,1020,240,1020,240,1020,240,1020,240,1020,990,270,240,1020,990,300,240,1020,240,1020,240,1020,990,300,240,1020,990,300,240,1020,990,300,240,6990};
// chuango
//PROGMEM int temp[]={1625,425,1550,450,1575,400,525,1450,1575,425,1550,425,475,1550,1450,525,1450,550,375,1525,475,1475,500,1475,1575,400,525,1450,1550,425,1525,500,1475,575,350,1600,400,1550,475,1500,500,1475,1550,425,1550,425,1550,425,450};
//PROGMEM int temp[]={1975,275,900,250,225,975,250,975,250,975,225,975,900,250,900,250,900,250,250,950,225,975,900,250,225,950,225,975,250,950,225,975,900,250,900,250,900,250,250,950,900,250,250,950,225,950,925,250,250};
//Imagintronix:
//PROGMEM int temp[]={390,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,1260,870,420,870,1260,870,420,870,1230,870,420,870,1260,870,420,870,1260,870,1260,870,1260,870,1230,870,1260,870,420,870,1260,870,420,870,1260,870,420,870,1260,870,1260,870,1260,870,420,870,1260,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,420,870,1230,870,1260,870,420,870,420,870,420,840,420,840,1260,6990};
//20;10;DEBUG;Pulses=42;Pulses(uSec)=Chacon:
//PROGMEM int temp[]={630,570,1230,540,1230,540,1230,540,1230,570,1230,540,1230,540,1230,540,1230,570,1230,540,1230,540,1230,540,1230,570,1200,540,1200,570,1170,1230,540,570,1200,540,1200,540,1170,1230,540,6990};
//PROGMEM int temp[]={660,510,1260,510,1260,510,1260,510,1260,540,1260,510,1260,540,1260,540,1230,540,1230,540,1230,540,1230,540,1230,570,1230,540,1230,540,1230,540,1230,570,1230,540,1230,540,1230,540,1230,6990};
//PROGMEM int temp[]={120,510,90,510,510,90,510,90,120,510,90,510,510,90,510,90,510,90,90,510,120,510,120,510,510,90,510,90,90,510,510,90,510,90,90,510,90,510,120,510,120,510,120,510,510,90,510,90,120,6240,120};
//PROGMEM int temp[]={90,510,510,90,510,90,120,510,510,90,90,510,90,510,510,90,510,90,510,90,120,510,510,90,120,510,510,90,510,90,90,510,90,510,510,90,510,90,510,90,90,510,90,510,510,90,510,90,90,6300,90};
//PROGMEM int temp[]={330,360,270,360,270,330,270,360,270,360,270,360,270,330,270,360,270,360,270,360,270,360,270,3960,660,360,270,780,690,360,690,360,660,360,270,780,270,780,270,780,690,360,270,780,270,780,690,360,270,780,660,360,270,780,270,780,690,360,270,780,660,360,270,780,660,360,270,780,660,360,270,780,270,780,690,360,690,360,660,360,270,780,660,360,690,360,660,360,660,360,660,360,270,780,690,360,660,360,660,360,270,780,660,360,270,780,270,780,270,780,690,360,270,780,690,360,690,360,270,780,660,360,690,360,690,360,270,780,660,360,660,360,690,360,690,360,270,780,270,780,660,360,660,360,660,360,270,780,690,360,660,390,660,360,270,6990};
// bofu
//PROGMEM int temp[]={1200,2370,1560,180,600,210,600,210,600,210,210,600,210,600,600,210,600,210,210,600,600,210,210,600,600,210,600,210,600,180,600,180,600,180,210,600,600,180,600,180,210,600,210,600,180,600,180,600,600,180,600,210,180,600,180,600,180,600,180,600,210,600,210,600,600,180,600,210,210,600,600,210,210,600,600,210,600,210,210,600,210,600,600,180,600};
//PROGMEM int temp[]={270,600,210,600,210,600,180,600,180,600,180,630,180,600,180,630,180,600,180,600,180,600,180,600,180,6990};
//Alecto
//PROGMEM int temp[]={1800,2010,1710,2010,3690,3960,1710,2010,1710,2010,1710,2010,1710,3960,1710,3960,1710,3960,1710,2010,1710,3960,1740,2010,1710,2010,1710,3960,1710,2010,1710,2010,1710,3960,1710,2010,1710,2010,1710,3960,1740,3960,1710,2010,1710,2010,1710,2010,1710,2010,1710,3960,1710,2010,1710,3960,1710,2010,1710,2010,1710,2010,1710,1980,1710,3960,1710,2010,1710,3960,1710,3960,1710,3960,1710,3960,1710,2010,1710,2010,1710,2010,1710,3960,1710,2010,1710,3960,1710,3960,1710,2010,1710,3960,1710,3960,1710,2010,1710,3960,1710,3960,1710,2010,1710,2010,1710,3960,1710,3960,1710,3960,1710,3960,1740,2010,1710,3960,1740,2010,1710,3960,1710,3960,1710,3960,1710,3960,1710,1980,1740,3960,1710,3960,1740,1980,1740,1980,1710,3960,1710,2010,1710,2010,1740,2010,1710,3960,1710,6990};
//PROGMEM int temp[]={360,150,600,180,600,510,300,510,300,510,300,510,300,510,300,210,600,210,630,510,300,210,600,540,300,510,300,210,600,210,600,510,300,180,600,510,300,510,300,210,600,540,300,210,600,510,300,210,600,210,600,540,300,510,270,210,600,6990};
//PROGMEM int temp[]={1200,2370,1530,180,600,210,600,210,600,210,210,600,210,600,600,210,600,210,210,600,600,210,210,600,600,210,600,180,600,180,600,180,600,180,210,600,600,180,600,180,210,600,180,600,180,600,180,600,600,210,600,210,180,600,180,600,180,600,210,600,210,600,210,600,600,210,600,210,210,600,600,210,210,600,600,210,600,210,210,600,210,600,600,180,600,6990};
// perel
//PROGMEM int temp[]={420,900,1080,180,360,900,360,900,360,900,1080,180,360,900,1080,210,330,930,1080,210,330,930,330,930,360,930,330,930,330,930,330,930,330,930,330,930,330,930,1080,210,330,930,1080,210,330,930,1080,210,330,6990};
// Europe
//PROGMEM int temp[]={1290,3240,450,3240,450,3240,1230,3240,1230,3240,450,3240,1230,3240,1230,3240,1230,3240,1230,3240,1230,3240,1230,3240,1230,3240,1230,3240,450,3240,1230,3240,1230,3240,1230,3240,1230,3240,1230,3240,1230,3240,1200,3240,1230,3240,1200,3240,1230,3240,450,6990};
//kaku doorbell
//PROGMEM int temp[]={300,950,250,950,250,950,950,275,250,950,250,950,250,950,950,275,250,950,950,275,250,950,950,250,250,950,950,275,250,950,250,950,250,950,950,275,250,950,950,250,250,950,950,275,250,950,950,250,250};
//rev tristate
//PROGMEM int temp[]={330,960,930,270,240,960,930,270,930,270,930,270,240,960,930,270,930,270,930,270,240,960,930,270,240,960,930,270,240,960,240,960,240,930,240,960,240,960,240,960,240,960,240,960,930,270,930,270,240,6990};
//PROGMEM int temp[]={270,990,930,270,210,960,930,270,930,270,930,270,210,960,900,270,210,960,900,270,900,270,900,270,210,960,900,270,210,960,210,960,210,960,210,960,210,960,210,960,900,270,900,270,210,960,210,960,210,6990};
// lidl 3state
//PROGMEM int temp[]={180,930,900,270,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,210,930,870,270,210,930,870,270,210,930,210,930,870,270,900,270,210,6990};
// impuls
//PROGMEM int temp[]={60,330,360,30,60,330,360,30,60,330,360,30,60,330,360,30,360,30,360,30,60,330,60,330,60,330,60,330,60,330,60,330,60,330,60,330,60,330,60,330,60,330,360,30,60,330,60,330,60,6990;};
//biowin
//PROGMEM int temp[]={1200,1860,480,1860,480,3780,480,3780,480,3780,480,3780,480,3780,480,3780,480,3810,480,1890,480,3780,480,1860,450,1860,480,3750,480,3780,480,3780,480,1890,480,1860,480,1860,480,1860,480,1860,480,1860,480,3750,480,1890,480,3780,480,1860,480,1860,480,3750,480,1860,480,1860,480,1860,480,3750,480,1890,450,1860,480,1860,480,3750,480,1860,480,3780,480,3780,480,1860,480,1890,480,6990};
//somfy up 88
//PROGMEM int temp[]={1200,2490,2400,2490,4710,1200,1170,1200,1170,1200,1170,1200,540,570,510,570,1170,570,510,570,510,540,540,1200,1170,1200,540,570,1170,570,540,570,510,540,540,570,510,570,540,1200,1170,1200,1170,570,510,1200,1170,570,540,1200,540,570,1170,1200,1170,1200,510,540,540,570,1170,570,540,570,510,1200,540,540,540,570,1170,570,540,1200,1170,540,540,570,540,1200,1170,570,510,570,540,1200,510,6990};
//somfy down? 84
//PROGMEM int temp[]={3540,1140,1110,1140,1110,1140,1140,1200,1170,1200,1170,570,540,570,540,1200,1170,1200,1170,1200,1170,570,510,570,540,1200,510,570,540,570,1170,570,540,1200,1170,570,510,1200,1170,570,540,1200,510,570,1170,1200,1170,1200,510,540,540,540,1170,570,540,570,540,1200,540,540,510,570,1170,570,510,1200,1170,540,540,570,540,1200,1170,540,540,570,540,1200,510,6990};
// somfy my 80
//PROGMEM int temp[]={1200,2490,2400,2490,4710,1200,1170,1200,1170,1200,510,540,1170,1200,540,540,1170,1200,540,540,1170,1200,1170,540,540,1200,1170,1200,510,540,1170,540,540,570,540,540,540,570,540,1200,510,570,510,540,540,540,1170,1200,1170,1200,1170,540,540,1200,510,570,510,570,1170,1200,1170,570,510,570,540,540,540,1200,1170,1200,1170,570,540,570,540,1200,1170,570,540,570,540,1200,1170,6990};
//PROGMEM int temp[]={270,930,210,930,210,930,870,270,180,930,870,270,180,930,870,270,180,930,840,270,180,930,210,930,210,930,870,270,180,930,870,270,180,930,870,270,180,930,870,270,210,930,180,930,180,930,840,270,180,6990};
//Xiron
//PROGMEM int temp[]={990,870,900,870,870,390,390,390,390,870,390,390,870,390,390,900,390,390,390,390,870,390,390,390,390,870,390,390,870,390,390,870,390,390,390,390,900,870,390,390,870,870,870,870,870,390,390,870,870,870,390,390,870,870,390,390,870,390,390,390,390,870,390,390,870,390,390,390,390,390,390,390,390,390,390,870,870,870,870,870,870,390,390,390,390,870,870,390,390,870,390,390,870,870,390,390,870,900,390,390,390,390,390,390,30,6990};
//if (RawSignal.Number==66){
// for (i=0;i<160;i++) {
// //RawSignal.Pulses[1+i]=temp[i]/25;
// RawSignal.Pulses[1+i]=temp[i]/RawSignal.Multiply;
// }
// RawSignal.Number=106;
//}
// -
//if (RawSignal.Number==66){
//Serial.print("20;01;LaCrosseV2;ID=0606;"); // Label
// ----------------------------------
//int sensordata=0x0e; // 9=203 10=225
//sprintf(pbuffer, "WINDIR=%04d;", sensordata);
//Serial.print( pbuffer );
//sensordata=6;
//sensordata=sensordata*36;
//sprintf(pbuffer, "WINGS=%04x;", sensordata);
//Serial.print( pbuffer );
//sprintf(pbuffer, "WINSP=%04x;", sensordata);
//Serial.println( pbuffer );
//}
// ==========================================================================
// Kill ALL Short RF packets
// ==========================================================================
if (RawSignal.Number < 24) { // Less than 24 pulses?
RawSignal.Number=0; // Kill packet
return true; // abort processing
}
// ==========================================================================
// DEBUG
// ==========================================================================
if (RFDebug==true) {
// ----------------------------------
// Output
// ----------------------------------
sprintf(pbuffer, "20;%02X;", PKSequenceNumber++); // Node and packet number
Serial.print( pbuffer );
// ----------------------------------
Serial.print(F("DEBUG;Pulses=")); // debug data
Serial.print(RawSignal.Number);
Serial.print(F(";Pulses(uSec)="));
//for(i=1;i<RawSignal.Number;i++) {
for(i=1;i<RawSignal.Number+1;i++) {
Serial.print(RawSignal.Pulses[i]*RawSignal.Multiply);
//if (i < RawSignal.Number-1) Serial.write(',');
if (i < RawSignal.Number) Serial.write(',');
}
Serial.println(";");
}
// ==========================================================================
// Beginning of Signal translation for Impuls
// ==========================================================================
// 20;D7;DEBUG;Pulses=250;Pulses(uSec)=275,325,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,325,75,350,75,325,375,25,75,4700,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,350,75,350,75,325,375,25,75,4700,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,325,375,25,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,75,350,75,325,375,25,75,4700,75,325,375,25,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,75,325,75,350,375,25,75,4700,75,350,375,25,75,325,375,25,75,325,375,25,75,350,375,25,75,350,375,25,75,350,375,25,75,325,375,25,75,325,375,25,75,325,375,25,75,350,375,25,75,350,75,325,75,350,375,25,75;
if ((RawSignal.Number == 250) || (RawSignal.Number == RAW_BUFFER_SIZE-1) ) { // Impuls
if (RawSignal.Pulses[50] > PULSE4200) {
if (RawSignal.Pulses[100] > PULSE4200) {
if (RawSignal.Pulses[150] > PULSE4200) {
RawSignal.Number=50; // New packet length
RawSignal.Pulses[0]=33; // signal the plugin number that should process this packet
return false; // packet detected, conversion done
}
}
}
}
// ==========================================================================
// End of Signal translation
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Home Confort Switches/Remotes
// ==========================================================================
if (RawSignal.Number == 200) {
if (RawSignal.Pulses[1] > PULSE2000) {
if (RawSignal.Pulses[100] > PULSE4000) {
if (RawSignal.Pulses[101] > PULSE2000) {
RawSignal.Number=100; // New packet length
RawSignal.Pulses[0]=11; // signal the plugin number that should process this packet
return false; // packet detected, conversion done
}
}
}
}
// ==========================================================================
// End of Signal translation
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Intertek Unitec Switches/Remotes
// ==========================================================================
if (RawSignal.Number == 202) {
if (RawSignal.Pulses[2] > PULSE2000) {
if (RawSignal.Pulses[52] > PULSE2000) {
if (RawSignal.Pulses[102] > PULSE2000) {
if (RawSignal.Pulses[1] < PULSE500) {
RawSignal.Number=50; // New packet length
RawSignal.Pulses[0]=19; // signal the plugin number that should process this packet
return false; // packet detected, conversion done
}
}
}
}
}
// ==========================================================================
// End of Signal translation
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for HomeEasy HE844 mode 4 - compatibility mode
// ==========================================================================
//if (RawSignal.Number == 234) {
// if (HEconversiontype==0) { // Reject the entire packet
// if ((RawSignal.Pulses[2] > PULSE4000) && (RawSignal.Pulses[2+58] > PULSE4000) && (RawSignal.Pulses[2+58+58] > PULSE4000) ){
// RawSignal.Pulses[0]=15; // Instruct plugin 3 to skip any packets it might see after this
// RawSignal.Number=0; // Kill packet
// return true; // abort processing
// }
// }
//}
// ==========================================================================
// End of Signal translation HomeEasy HE842
// ==========================================================================
// ==========================================================================
// END plugin 001 if the incoming packet is not oversized and resume normal processing of plugins
// there is no need to do all the checks if there never will be a match
if (RawSignal.Number < OVERSIZED_LIMIT) return false;
// ==========================================================================
// ##########################################################################
// ==========================================================================
// Beginning of Signal translation for oversized packets (more pulses than handled by any plugin)
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Flamingo FA500R
// ==========================================================================
if (RawSignal.Number > 330 && RawSignal.Number < 378) {
int pos1=RawSignal.Number - 130;
int pos2=RawSignal.Number - 130 - 58;
if (RawSignal.Pulses[pos1] > PULSE2000 && RawSignal.Pulses[pos2] > PULSE4000) {
for (i=0;i<58;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[pos2+1+i];
}
RawSignal.Pulses[0]=12; // Data will be processed by plugin 12
RawSignal.Number=58; // New packet length
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
// ==========================================================================
// End of Signal Translation
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Conrad RSL
// ==========================================================================
//Conrad RSL
//20;87;DEBUG;Pulses=462;Pulses(uSec)=1260,420,510,1140,1230,420,1230,420,510,1140,1230,420,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,1230,420,1230,420,1230,420,1230,420,1230,420,510,1140,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,6930,1230,420,510,1140,1230,420,1230,420,510,1140,1230,420,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,1230,420,1230,420,1230,420,1230,420,1230,420,510,1140,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,6930,1230,420,510,1140,1230,420,1230,420,510,1140,1230,420,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,1230,420,1230,420,1230,420,1230,420,1230,420,510,1140,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,6930,1230,420,510,1140,1230,420,1230,420,510,1140,1230,420,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,1230,420,1230,420,1230,420,1230,420,1230,420,510,1140,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,6930,1230,420,510,1140,1230,420,1230,420,510,1140,1230,420,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,1230,420,1230,420,1230,420,1230,420,1230,420,510,1140,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,6930,1230,420,510,1140,1230,420,1230,420,510,1140,1230,420,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,1230,420,1230,420,1230,420,1230,420,1230,420,510,1140,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,6930,1230,420,510,1140,1230,420,1230,420,510,1140,1230,420,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,510,1140,1230,420,1230,420,1230,420,1230,420,1230,420,510,1140,1230,420,510,1140,510,1140,510,1140,510,1140,510,1140,510,6990;
if (RawSignal.Number == 462) {
if ( (RawSignal.Pulses[66] > PULSE6500) && (RawSignal.Pulses[66+66] > PULSE6500) && (RawSignal.Pulses[66+66+66] > PULSE6500) ) {
RawSignal.Number=66; // New packet length
return false; // Conversion done, terminate plugin 1 and continue with regular plugins
}
}
// ==========================================================================
// End of Signal Translation
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for HomeEasy HE842/HE852/HE863
// ==========================================================================
if (RawSignal.Number > 460) { // && RawSignal.Number < 470) {
if (HEconversiontype==0) { // Reject the entire packet
if ((RawSignal.Pulses[2] > PULSE4000) && (RawSignal.Pulses[2+58] > PULSE4000) && (RawSignal.Pulses[2+58+58] > PULSE4000) ){
RawSignal.Pulses[0]=15; // Instruct plugin 3 to skip any packets it might see after this
RawSignal.Number=0; // Kill packet
return true; // abort processing
}
} else { // Convert to Elro Method 1 (same as FA500 Method 1)
int pos1=RawSignal.Number - 58;
//if (RawSignal.Pulses[pos1]*RawSignal.Multiply > 4000) {
if (RawSignal.Pulses[pos1] > PULSE4000) {
for (i=0;i<58;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[pos1+1+i];
}
RawSignal.Number=58; // New packet length
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
// ==========================================================================
// End of Signal translation HomeEasy HE842
// ==========================================================================
// **************************************************************************
// Full buffer size checks, >>>>>> STATIC checks <<<<<
// **************************************************************************
// ==========================================================================
// Beginning of Signal translation for Forrinx
// ==========================================================================
if (RawSignal.Number == RAW_BUFFER_SIZE-1) {
if ((RawSignal.Pulses[2] > PULSE6000) && (RawSignal.Pulses[2+50] > PULSE6000) && (RawSignal.Pulses[2+50+50] > PULSE6000)) {
for (i=0;i<50;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[3+i]; // reorder pulse array
}
RawSignal.Number=51; // New packet length (report 51 and not 50 to avoid handling by other plugins
RawSignal.Pulses[0]=76; // signal the plugin number that should process this packet
return false; // packet detected, conversion done
}
}
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for bofu
// ==========================================================================
if (RawSignal.Number == RAW_BUFFER_SIZE-1) {
if ( (RawSignal.Pulses[1] > PULSE4200) && (RawSignal.Pulses[2] > PULSE2000) && (RawSignal.Pulses[3] > PULSE1100) ) {
if ( (RawSignal.Pulses[1+86] > PULSE4200) && (RawSignal.Pulses[2+86] > PULSE2000) && (RawSignal.Pulses[3+86] > PULSE1100) ) {
RawSignal.Number=85; // New packet length
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
// ==========================================================================
// **************************************************************************
// Full buffer size checks, >>>> SCANNING checks <<<<< sorted by packet size
// **************************************************************************
// ==========================================================================
// Beginning of Signal translation for Silvercrest Doorbell
// ==========================================================================
if (RawSignal.Number == RAW_BUFFER_SIZE-1) {
for (j=2;j<114;j++) { // Only check twice the total RF packet length we are looking for
if (RawSignal.Pulses[j] > PULSE1100) { // input is going to fast skip to where new part is going to start
if (j+114 > RAW_BUFFER_SIZE-1) break; // cant be the packet we look for
if ( (RawSignal.Pulses[j+114] > PULSE1100) && (RawSignal.Pulses[j+114+114] > PULSE1100) && (RawSignal.Pulses[j+114+114+114] > PULSE1100) ) { // first long delay found, make sure we have another at the right position
for (i=0;i<114;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[j+1+i]; // reorder pulse array
}
RawSignal.Number=114; // New packet length
RawSignal.Pulses[0]=75; // signal the plugin number that should process this packet
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
}
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Home Confort Switches/Remotes
// ==========================================================================
if (RawSignal.Number > 299) { // Scan for corrupted/chained Home Confort RF packets
if (RawSignal.Pulses[1] > PULSE2000) {
if (RawSignal.Pulses[100] > PULSE4000) {
if (RawSignal.Pulses[101] > PULSE2000) {
RawSignal.Number=100; // New packet length
RawSignal.Pulses[0]=11; // signal the plugin number that should process this packet
return false; // packet detected, conversion done
}
}
}
for (j=1;j<104;j++) {
//if (RawSignal.Pulses[j]*RawSignal.Multiply > 4000) {
if (RawSignal.Pulses[j] > PULSE4000) {
//if (RawSignal.Pulses[j+1]*RawSignal.Multiply > 2000) {
if (RawSignal.Pulses[j+1] > PULSE2000) {
if ( (j+98) > RawSignal.Number) break; // cant be the packet we are looking for
//if ( (RawSignal.Pulses[j+100]*RawSignal.Multiply > 4000) && (RawSignal.Pulses[j+101]*RawSignal.Multiply > 2000) ) { // This could be a Home Confort packet
if ( (RawSignal.Pulses[j+100] > PULSE4000) && (RawSignal.Pulses[j+101] > PULSE2000) ) { // This could be a Home Confort packet
for (i=0;i<100;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[j+i]; // relocate/reorder pulse array
}
RawSignal.Number=100; // New packet length
RawSignal.Pulses[0]=11; // signal the plugin number that should process this packet
}
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
}
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Auriol & Xiron
// ==========================================================================
if (RawSignal.Number == RAW_BUFFER_SIZE-1) {
for (int offset=0; offset < 74; offset++) {
//if (RawSignal.Pulses[offset]*RawSignal.Multiply > 3300) {
if (RawSignal.Pulses[offset+74] > PULSE3300
&& RawSignal.Pulses[offset+74*2] > PULSE3300
&& ((offset > 0 && RawSignal.Pulses[offset] > PULSE3300)
|| RawSignal.Pulses[offset+74*3] > PULSE3300)) {
for (i=0;i<74;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[offset+i+1]; // reorder pulse array
}
RawSignal.Number=74; // New packet length
RawSignal.Pulses[0]=46; // signal the plugin number that should process this packet
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Oregon
// ==========================================================================
if (RawSignal.Number == RAW_BUFFER_SIZE-1) {
for (j=50;j<104;j++) { // Only check the total RF packet length we are looking for
//if (RawSignal.Pulses[j]*RawSignal.Multiply > 2500) { // input is going to fast skip to where new part is going to start
if (RawSignal.Pulses[j] > PULSE1600) { // input is going to fast skip to where new part is going to start
if (j+52 > RAW_BUFFER_SIZE-1) break; // check for overflow, cant be the packet we look for
byte x=0;
if ( (RawSignal.Pulses[j+52] > PULSE1600) && (RawSignal.Pulses[j+52+52] > PULSE1600) && (RawSignal.Pulses[j+52+52+52] > PULSE1600) ) x=2;
if ( (RawSignal.Pulses[j+50] > PULSE1600) && (RawSignal.Pulses[j+50+50] > PULSE1600) && (RawSignal.Pulses[j+50+50+50] > PULSE1600) ) x=1;
if (x !=0) {
for (i=0;i<52;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[j+1+i]; // reorder pulse array
}
RawSignal.Number=52; // New packet length
RawSignal.Pulses[0]=63; // signal the plugin number that should process this packet
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
}
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for SelectPlus
// ==========================================================================
if (RawSignal.Number == RAW_BUFFER_SIZE-1) {
for (j=2;j<37;j++) { // Only check the total RF packet length we are looking for
//if (RawSignal.Pulses[j]*RawSignal.Multiply > 2500) { // input is going to fast skip to where new part is going to start
if (RawSignal.Pulses[j] > PULSE5000) { // input is going to fast skip to where new part is going to start
if (j+36 > RAW_BUFFER_SIZE-1) break; // cant be the packet we look for
//if ( (RawSignal.Pulses[j+26]*RawSignal.Multiply > 2500) && (RawSignal.Pulses[j+26]*RawSignal.Multiply < 3000) && (RawSignal.Pulses[j+26+26]*RawSignal.Multiply > 2500) ) { // first long delay found, make sure we have another at the right position
if ( (RawSignal.Pulses[j+36] > PULSE5000) && (RawSignal.Pulses[j+36+36] > PULSE5000) ) { // first long delay found, make sure we have another at the right position
if (j != 36) {
for (i=0;i<36;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[j+1+i]; // reorder pulse array
}
}
RawSignal.Number=36; // New packet length
RawSignal.Pulses[0]=70; // signal the plugin number that should process this packet
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
}
// ==========================================================================
// ==========================================================================
// Beginning of Signal translation for Byron Doorbell
// ==========================================================================
if (RawSignal.Number == RAW_BUFFER_SIZE-1) {
for (j=2;j<90 /*RawSignal.Number*/;j++) { // Only check twice the total RF packet length we are looking for
// Byron SX
//if (RawSignal.Pulses[j]*RawSignal.Multiply > 2500) { // input is going to fast skip to where new part is going to start
if (RawSignal.Pulses[j] > PULSE2500) { // input is going to fast skip to where new part is going to start
if (j+26 > RAW_BUFFER_SIZE-1) break; // cant be the packet we look for
//if ( (RawSignal.Pulses[j+26]*RawSignal.Multiply > 2500) && (RawSignal.Pulses[j+26]*RawSignal.Multiply < 3000) && (RawSignal.Pulses[j+26+26]*RawSignal.Multiply > 2500) ) { // first long delay found, make sure we have another at the right position
if ( (RawSignal.Pulses[j+26] > PULSE2500) && (RawSignal.Pulses[j+26] < PULSE3000) && (RawSignal.Pulses[j+26+26] > PULSE2500) ) { // first long delay found, make sure we have another at the right position
for (i=0;i<26;i++){
RawSignal.Pulses[1+i]=RawSignal.Pulses[j+1+i]; // reorder pulse array
}
RawSignal.Number=26; // New packet length
RawSignal.Pulses[0]=72; // signal the plugin number that should process this packet
return false; // Conversion done, stop plugin 1 and continue with regular plugins
}
}
}
}
// ==========================================================================
// ==========================================================================
// End of Signal translation
// ==========================================================================
if (RawSignal.Number > OVERSIZED_LIMIT) { // unknown and unsupported long packet (290 is the max. pulse length used at the Oregon plugin)
RawSignal.Number=0; // no need to show this to any of the other plugins for processing
return true; // abort processing completely
} // as there is no support for it anyway
return false;
}
#endif //PLUGIN_001
/*********************************************************************************************\
167 5010
77 2310
52 1560
161
77
52
0137
77
52
161
77
52
169
78
52
161
77
52
0137
77
52
161
77
52
20;08;DEBUG;Pulses=511;Pulses(uSec)=
5010,2340,1560,210,270,510,270,510,270,540, 9
270,510,270,510,270,510,270,510,270,510, 20
270,510,270,510,270,510,270,510,270,510, 30
270,510,270,510,270,510,600,210,270,510, 4
270,510,270,510,270,540,270,540,600,210, 5
600,210,600,210,270,510,270,540,270,540, 6
270,510,270,510,270,510,270,510,600,210, 69
600,210,600,210,600,210,600,210,600,210, 79
270,510,270,510,600,210,4830,2310,1560,210,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,540,270,540,270,510,270,510,270,510,270,540,270,540,270,510,270,510,600,210,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,270,510,270,510,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,600,210,600,210,600,210,270,510,270,540,600,210,4830,2310,1560,210,270,510,270,510,270,510,270,540,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,600,210,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,270,540,270,540,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,600,210,600,210,600,210,270,510,270,510,600,210,4830,2310,1560,210,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,540,270,540,270,540,270,510,270,510,270,510,270,510,270,540,270,540,600,210,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,270,510,270,510,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,600,210,600,210,600,210,270,510,270,510,600,210,4830,2310,1560,210,270,540,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,600,210,270,510,270,510,270,510,270,510,270,540,600,210,600,210,600,210,270,510,270,510,270,510,270,540,270,540,270,510,270,510,600,210,600,210,600,210,600,210,600,210,600,210,270,510,270,510,600,210,4830,2310,1560,210,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,510,270,540,270,540,270,510,270,510,270,510,270,540,270,540,270,510,600,210,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,270,510,270,510,270,510,270,510,270,510,270,510,270,510,600,210,600,210,600,210,600,210,600,210,600,210,270;
Plugin Pulselength
------ -----------
002 102-104
003 50
004 132 148
005 50
006 106
007 66
008 96
009 66 68
010 134-164
011 100
012 (26) 58
013 42
014 36-52
015 116
030 74
031 94 & 126
032 74-78
034 124-284
035 96
040 58
041 92/162/122/132
042 48-56
043 88
044 82
045 66
046 74
048 126-290
060 26
061 50
070 36
071 66
072 26
073 26
074 50
080 52
081 46
082 26
090 194
100 160 & 164-176
\*********************************************************************************************/