Skip to content

Commit 58ed8ca

Browse files
committed
Mould King: Analog and digital sub protocols
1 parent 4d2c8ef commit 58ed8ca

File tree

8 files changed

+70
-34
lines changed

8 files changed

+70
-34
lines changed

Lua_scripts/MultiChan.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,4 +194,5 @@
194194
85,0,E016H,Std,1,Stop,Flip,n-a,HLess,RTH
195195
87,0,IKEA
196196
89,0,LOSI
197-
90,0,MouldKg,Std,E,F
197+
90,0,MouldKg,Analog
198+
90,1,MouldKg,Digit,E,F

Multiprotocol/Losi_cyrf6936.ino

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,14 +121,15 @@ uint16_t LOSI_callback()
121121
void LOSI_init()
122122
{
123123
LOSI_cyrf_init();
124-
CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x13, 75); // 75 is unknown since dump stops at 0x27, this routine resets the CRC Seed to 0
125-
CYRF_ConfigRFChannel(hopping_frequency[0] | 1); // Only odd channels
124+
//CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x13, 75); // 75 is unknown since dump stops at 0x27, this routine resets the CRC Seed to 0
125+
//CYRF_ConfigRFChannel(hopping_frequency[0] | 1); // Only odd channels
126126

127127
#ifdef LOSI_FORCE_ID
128128
rx_tx_addr[0] = 0x47;
129129
rx_tx_addr[1] = 0x52;
130130
rx_tx_addr[2] = 0xAE;
131131
rx_tx_addr[3] = 0xAA;
132+
CYRF_ConfigRFChannel(0x27);
132133
#endif
133134

134135
if(IS_BIND_IN_PROGRESS)

Multiprotocol/MouldKg_nrf24l01.ino

Lines changed: 44 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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
@@ -35,6 +36,7 @@ enum {
3536

3637
static 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

Multiprotocol/Multi.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,4 @@
8585
85,E016H
8686
87,IKEA
8787
89,Losi
88-
90,MouldKg
88+
90,MouldKg,Analog,Digit

Multiprotocol/Multi_Protos.ino

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ const char STR_SUBTYPE_REALACC[] = "\x03""R11";
158158
const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype";
159159
const char STR_SUBTYPE_FUTABA[] = "\x05""SFHSS";
160160
const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
161+
const char STR_SUBTYPE_MOULKG[] = "\x06""Analog""Digit\0";
161162

162163
#define NO_SUBTYPE nullptr
163164

@@ -367,7 +368,7 @@ const mm_protocol_definition multi_protocols[] = {
367368
{PROTO_MLINK, STR_MLINK, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_CYRF, MLINK_init, MLINK_callback },
368369
#endif
369370
#if defined(MOULDKG_NRF24L01_INO)
370-
{PROTO_MOULDKG, STR_MOULDKG, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, MOULDKG_init, MOULDKG_callback },
371+
{PROTO_MOULDKG, STR_MOULDKG, STR_SUBTYPE_MOULKG, 2, OPTION_NONE, 0, 0, SW_NRF, MOULDKG_init, MOULDKG_callback },
371372
#endif
372373
#if defined(MT99XX_CCNRF_INO)
373374
{PROTO_MT99XX, STR_MT99XX, STR_SUBTYPE_MT99, 7, OPTION_NONE, 0, 0, SW_NRF, MT99XX_init, MT99XX_callback },

Multiprotocol/Multiprotocol.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#define VERSION_MAJOR 1
2020
#define VERSION_MINOR 3
2121
#define VERSION_REVISION 2
22-
#define VERSION_PATCH_LEVEL 83
22+
#define VERSION_PATCH_LEVEL 84
2323

2424
#define MODE_SERIAL 0
2525

@@ -440,6 +440,12 @@ enum RLINK
440440
RLINK_DUMBORC = 2,
441441
};
442442

443+
enum MOULDKG
444+
{
445+
MOULDKG_ANALOG = 0,
446+
MOULDKG_DIGIT = 1,
447+
};
448+
443449
#define NONE 0
444450
#define P_HIGH 1
445451
#define P_LOW 0

Multiprotocol/_Config.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
728728
PROTO_MLINK
729729
NONE
730730
PROTO_MOULDKG
731-
NONE
731+
MOULDKG_ANALOG
732+
MOULDKG_DIGIT
732733
PROTO_MT99XX
733734
MT99
734735
H7

Protocols_Details.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ CFlie|38|CFlie||||||||NRF24L01|
117117
[Losi](Protocols_Details.md#Losi---89)|89|||||||||CYRF6936|
118118
[MJXq](Protocols_Details.md#MJXQ---18)|18|WLH08|X600|X800|H26D|E010*|H26WH|PHOENIX*||NRF24L01|XN297
119119
[MLINK](Protocols_Details.md#MLINK---78)|78|||||||||CYRF6936|
120-
[MouldKg](Protocols_Details.md#mouldkg---90)|90|||||||||NRF24L01|XN297
120+
[MouldKg](Protocols_Details.md#mouldkg---90)|90|Analog|Digit|||||||NRF24L01|XN297
121121
[MT99xx](Protocols_Details.md#MT99XX---17)|17|MT|H7|YZ|LS|FY805|A180|DRAGON||NRF24L01|XN297
122122
[NCC1701](Protocols_Details.md#NCC1701---44)|44|||||||||NRF24L01|
123123
[OMP](Protocols_Details.md#OMP---77)|77|||||||||CC2500&NRF24L01|XN297L
@@ -1707,6 +1707,14 @@ CH16| CH8 | -100% | 0% | - | - | -
17071707
## MouldKg - *90*
17081708
Mould King 2.4GHz TX: Technic Brick models
17091709

1710+
### Sub_protocol Analog - *0*
1711+
1712+
CH1|CH2|CH3|CH4
1713+
---|---|---|---
1714+
A|B|C|D
1715+
1716+
### Sub_protocol Digit - *1*
1717+
17101718
CH1|CH2|CH3|CH4|CH5|CH6
17111719
---|---|---|---|---|---
17121720
A|B|C|D|E|F

0 commit comments

Comments
 (0)