@@ -22,7 +22,8 @@ Multiprotocol is distributed in the hope that it will be useful,
2222#define MOULDKG_BIND_PACKET_PERIOD 12000
2323#define MOULDKG_TX_BIND_CHANNEL 11
2424#define MOULDKG_RX_BIND_CHANNEL 76
25- #define MOULDKG_PAYLOAD_SIZE 5
25+ #define MOULDKG_PAYLOAD_SIZE_DIGIT 5
26+ #define MOULDKG_PAYLOAD_SIZE_ANALOG 10
2627#define MOULDKG_BIND_PAYLOAD_SIZE 7
2728#define MOULDKG_BIND_COUNT 300
2829#define MOULDKG_RF_NUM_CHANNELS 4
3536
3637static void __attribute__ ((unused)) MOULDKG_send_packet()
3738{
39+ uint8_t len = MOULDKG_BIND_PAYLOAD_SIZE;
3840 memcpy (&packet[1 ],rx_tx_addr,3 );
3941 if (IS_BIND_IN_PROGRESS)
4042 {
@@ -45,41 +47,52 @@ static void __attribute__((unused)) MOULDKG_send_packet()
4547 {
4648 XN297_RFChannel (hopping_frequency[(packet_count>>1 )&0x03 ]);
4749
48- uint8_t val=0 ;
49- if (packet_count&1 ==0 )
50+ if (sub_protocol == MOULDKG_ANALOG)
5051 {
51- packet[0 ] = 0x31 ;
52- // Button B
53- if (Channel_data[CH2]>CHANNEL_MAX_COMMAND) val |= 0x40 ;
54- else if (Channel_data[CH2]<CHANNEL_MIN_COMMAND) val |= 0x80 ;
55- // Button C
56- if (Channel_data[CH3]>CHANNEL_MAX_COMMAND) val |= 0x10 ;
57- else if (Channel_data[CH3]<CHANNEL_MIN_COMMAND) val |= 0x20 ;
52+ packet[0 ] = 0x36 ;
53+ uint8_t ch[]={ 1 ,0 ,2 ,3 };
54+ for (uint8_t i=0 ;i<4 ;i++)
55+ packet[i+4 ] = convert_channel_8b (ch[i]);
56+ len = MOULDKG_PAYLOAD_SIZE_ANALOG;
5857 }
5958 else
60- {
61- packet[0 ] = 0x30 ;
62- val = 0x60
63- | GET_FLAG (CH5_SW, 0x80 ) // Button E
64- | GET_FLAG (CH6_SW, 0x10 ); // Button F
59+ {// DIGIT
60+ len = MOULDKG_PAYLOAD_SIZE_DIGIT;
61+ uint8_t val=0 ;
62+ if (packet_count&1 )
63+ {
64+ packet[0 ] = 0x31 ;
65+ // Button B
66+ if (Channel_data[CH2]>CHANNEL_MAX_COMMAND) val |= 0x40 ;
67+ else if (Channel_data[CH2]<CHANNEL_MIN_COMMAND) val |= 0x80 ;
68+ // Button C
69+ if (Channel_data[CH3]>CHANNEL_MAX_COMMAND) val |= 0x10 ;
70+ else if (Channel_data[CH3]<CHANNEL_MIN_COMMAND) val |= 0x20 ;
71+ }
72+ else
73+ {
74+ packet[0 ] = 0x30 ;
75+ val = 0x60
76+ | GET_FLAG (CH5_SW, 0x80 ) // Button E
77+ | GET_FLAG (CH6_SW, 0x10 ); // Button F
78+ }
79+ // Button A
80+ if (Channel_data[CH1]>CHANNEL_MAX_COMMAND) val |= 0x01 ;
81+ else if (Channel_data[CH1]<CHANNEL_MIN_COMMAND) val |= 0x02 ;
82+ // Button D
83+ if (Channel_data[CH4]>CHANNEL_MAX_COMMAND) val |= 0x04 ;
84+ else if (Channel_data[CH4]<CHANNEL_MIN_COMMAND) val |= 0x08 ;
85+ packet[4 ]= val;
86+
87+ packet_count++;
6588 }
66- // Button A
67- if (Channel_data[CH1]>CHANNEL_MAX_COMMAND) val |= 0x01 ;
68- else if (Channel_data[CH1]<CHANNEL_MIN_COMMAND) val |= 0x02 ;
69- // Button D
70- if (Channel_data[CH4]>CHANNEL_MAX_COMMAND) val |= 0x04 ;
71- else if (Channel_data[CH4]<CHANNEL_MIN_COMMAND) val |= 0x08 ;
72- packet[4 ]= val;
73-
74- packet_count++;
7589 }
7690
7791 // Send
7892 XN297_SetPower ();
7993 XN297_SetTxRxMode (TX_EN);
80- XN297_WritePayload (packet, IS_BIND_IN_PROGRESS?MOULDKG_BIND_PAYLOAD_SIZE:MOULDKG_PAYLOAD_SIZE );
94+ XN297_WritePayload (packet, len );
8195 #if 0
82- uint8_t len = IS_BIND_IN_PROGRESS?MOULDKG_BIND_PAYLOAD_SIZE:MOULDKG_PAYLOAD_SIZE;
8396 for(uint8_t i=0; i < len; i++)
8497 debug("%02X ", packet[i]);
8598 debugln();
@@ -170,3 +183,8 @@ void MOULDKG_init()
170183}
171184
172185#endif
186+
187+ // Analog
188+ // Bind TX: C=11 S=Y A= 4B 44 48 P(7)= C0 46 01 00 00 00 00
189+ // Bind RX: 5A 46 01 00 63 82 4E
190+ // Norm: C=15 S=Y A= 63 82 4E P(10)= 36 46 01 00 80 80 80 80 00 00
0 commit comments