diff --git a/Multiprotocol/HOTT_cc2500.ino b/Multiprotocol/HOTT_cc2500.ino
new file mode 100644
index 0000000..e171e4b
--- /dev/null
+++ b/Multiprotocol/HOTT_cc2500.ino
@@ -0,0 +1,214 @@
+/*
+ This project is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Multiprotocol is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Multiprotocol. If not, see .
+ */
+
+#if defined(HOTT_CC2500_INO)
+
+#include "iface_cc2500.h"
+
+#define HOTT_COARSE 0
+#define HOTT_TX_PACKET_LEN 50
+#define HOTT_RX_PACKET_LEN 22
+#define HOTT_PACKET_PERIOD 10000
+
+enum {
+ HOTT_START = 0x00,
+ HOTT_CAL = 0x01,
+ HOTT_DATA1 = 0x02,
+ HOTT_RX1 = 0x03,
+ HOTT_RX2 = 0x04,
+};
+
+#define HOTT_FREQ0_VAL 0x6E
+
+// Some important initialization parameters, all others are either default,
+// or not important in the context of transmitter
+// FIFOTHR 00
+// SYNC1 D3
+// SYNC0 91
+// PKTLEN 32 - Packet length, 50 bytes
+// PKTCTRL1 04 - APPEND_STATUS on=RSSI+LQI, all other are receive parameters - irrelevant
+// PKTCTRL0 44 - whitening, use FIFO, use CRC, fixed packet length
+// ADDR 00
+// CHANNR 10
+// FSCTRL1 09 - IF
+// FSCTRL0 00 - zero freq offset
+// FREQ2 5C - synthesizer frequencyfor 26MHz crystal
+// FREQ1 6C
+// FREQ0 B9
+// MDMCFG4 2D -
+// MDMCFG3 3B -
+// MDMCFG2 73 - disable DC blocking, MSK, no Manchester code, 32 bits sync word
+// MDMCFG1 A3 - FEC enable, 4 preamble bytes, CHANSPC_E - 03
+// MDMCFG0 AA - CHANSPC_M - AA
+// DEVIATN 47 -
+// MCSM2 07 -
+// MCSM1 00 - always use CCA, go to IDLE when done
+// MCSM0 08 - disable autocalibration, PO_TIMEOUT - 64, no pin radio control, no forcing XTAL to stay in SLEEP
+// FOCCFG 1D
+const PROGMEM uint8_t HOTT_init_values[] = {
+ /* 00 */ 0x2F, 0x2E, 0x2F, 0x00, 0xD3, 0x91, 0x32, 0x04,
+ /* 08 */ 0x44, 0x00, 0x00, 0x09, 0x00, 0x5C, 0x6C, HOTT_FREQ0_VAL + HOTT_COARSE,
+ /* 10 */ 0x2D, 0x3B, 0x73, 0xA3, 0xAA, 0x47, 0x07, 0x00, //original 0x17=0
+ /* 18 */ 0x08, 0x1D, 0x1C, 0xC7, 0x09, 0xF0, 0x87, 0x6B,
+ /* 20 */ 0xF0, 0xB6, 0x10, 0xEA, 0x0A, 0x00, 0x11
+};
+
+static void __attribute__((unused)) HOTT_rf_init()
+{
+ CC2500_Strobe(CC2500_SIDLE);
+
+ for (uint8_t i = 0; i < 39; ++i)
+ CC2500_WriteReg(i, pgm_read_byte_near(&HOTT_init_values[i]));
+
+ prev_option = option;
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
+
+ CC2500_SetTxRxMode(TX_EN);
+ CC2500_SetPower();
+}
+
+static void __attribute__((unused)) HOTT_tune_chan()
+{
+ CC2500_Strobe(CC2500_SIDLE);
+ CC2500_WriteReg(CC2500_0A_CHANNR, (rf_ch_num+1)*3);
+ CC2500_Strobe(CC2500_SCAL);
+}
+
+static void __attribute__((unused)) HOTT_tune_chan_fast()
+{
+ CC2500_Strobe(CC2500_SIDLE);
+ CC2500_WriteReg(CC2500_0A_CHANNR, (rf_ch_num+1)*3);
+ CC2500_WriteReg(CC2500_25_FSCAL1, calData[rf_ch_num]);
+}
+
+static void __attribute__((unused)) HOTT_tune_freq()
+{
+ if ( prev_option != option )
+ {
+ CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
+ CC2500_WriteReg(CC2500_0F_FREQ0, HOTT_FREQ0_VAL + HOTT_COARSE);
+ prev_option = option ;
+ phase = HOTT_START; // Restart the tune process if option is changed to get good tuned values
+ }
+}
+
+uint8_t HOTT_hop[75]= { 48, 37, 16, 62, 9, 50, 42, 22, 68, 0, 55, 35, 21, 74, 1, 56, 31, 20, 70, 11, 45, 32, 24, 71, 8, 54, 38, 26, 61, 13, 53, 30, 15, 65, 7, 52, 34, 28, 60, 3, 47, 39, 18, 69, 2, 49, 44, 23, 72, 5, 51, 43, 19, 64, 12, 46, 33, 17, 67, 6, 58, 36, 29, 73, 14, 57, 41, 25, 63, 4, 59, 40, 27, 66, 10 };
+uint16_t HOTT_hop_val = 0xC06B;
+
+// Channel values are PPM*2
+static void __attribute__((unused)) HOTT_data_packet()
+{
+ packet[2] = hopping_frequency_no;
+ packet[3] = 0x00; // unknown, may be for additional channels
+ for(uint8_t i=4;i<28;i+=2)
+ {
+ uint16_t val=Channel_data[(i-4)>>1];
+ val=(((val<<2)+val)>>2)+860*2; //value range 860<->2140 *2 <-> -125%<->+125%
+ packet[i] = val;
+ packet[i+1] = val>>8;
+ }
+
+ packet[28] = 0x8C; // unknown
+ packet[29] = 0x02; // unknown
+
+ CC2500_SetTxRxMode(TX_EN);
+ CC2500_SetPower();
+ CC2500_WriteReg(CC2500_06_PKTLEN, 0x32);
+ CC2500_WriteData(packet, HOTT_TX_PACKET_LEN);
+ #if 0
+ debug("P:");
+ for(uint8_t i=0;i>8;
+ memcpy(&packet[30],"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x07\x7C\x94\x00\x0C\x50\x4D\xF2\x00\x00\xB1",20); //unknown
+}
+
+uint16_t initHOTT()
+{
+ BIND_DONE; // Not a TX bind protocol
+ HOTT_init();
+
+ HOTT_rf_init();
+ phase = HOTT_START;
+ return 10000;
+}
+
+#endif
\ No newline at end of file
diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h
index 521f7d2..1cae8b1 100644
--- a/Multiprotocol/Multiprotocol.h
+++ b/Multiprotocol/Multiprotocol.h
@@ -19,7 +19,7 @@
#define VERSION_MAJOR 1
#define VERSION_MINOR 3
#define VERSION_REVISION 0
-#define VERSION_PATCH_LEVEL 32
+#define VERSION_PATCH_LEVEL 33
//******************
// Protocols
diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino
index b73cbe2..b7e1ac4 100644
--- a/Multiprotocol/Multiprotocol.ino
+++ b/Multiprotocol/Multiprotocol.ino
@@ -73,7 +73,7 @@ uint32_t blink=0,last_signal=0;
//
uint16_t counter;
uint8_t channel;
-uint8_t packet[40];
+uint8_t packet[50];
#define NUM_CHN 16
// Servo data
@@ -113,6 +113,8 @@ uint8_t num_ch;
#ifdef CC2500_INSTALLED
#ifdef SCANNER_CC2500_INO
uint8_t calData[255];
+ #elif defined(HOTT_CC2500_IN0)
+ uint8_t calData[75];
#else
uint8_t calData[50];
#endif