mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-09 22:38:10 +00:00
Mould King: Analog and digital sub protocols
This commit is contained in:
parent
4d2c8ef04e
commit
58ed8ca60f
@ -194,4 +194,5 @@
|
|||||||
85,0,E016H,Std,1,Stop,Flip,n-a,HLess,RTH
|
85,0,E016H,Std,1,Stop,Flip,n-a,HLess,RTH
|
||||||
87,0,IKEA
|
87,0,IKEA
|
||||||
89,0,LOSI
|
89,0,LOSI
|
||||||
90,0,MouldKg,Std,E,F
|
90,0,MouldKg,Analog
|
||||||
|
90,1,MouldKg,Digit,E,F
|
@ -121,14 +121,15 @@ uint16_t LOSI_callback()
|
|||||||
void LOSI_init()
|
void LOSI_init()
|
||||||
{
|
{
|
||||||
LOSI_cyrf_init();
|
LOSI_cyrf_init();
|
||||||
CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x13, 75); // 75 is unknown since dump stops at 0x27, this routine resets the CRC Seed to 0
|
//CYRF_FindBestChannels(hopping_frequency, 1, 0, 0x13, 75); // 75 is unknown since dump stops at 0x27, this routine resets the CRC Seed to 0
|
||||||
CYRF_ConfigRFChannel(hopping_frequency[0] | 1); // Only odd channels
|
//CYRF_ConfigRFChannel(hopping_frequency[0] | 1); // Only odd channels
|
||||||
|
|
||||||
#ifdef LOSI_FORCE_ID
|
#ifdef LOSI_FORCE_ID
|
||||||
rx_tx_addr[0] = 0x47;
|
rx_tx_addr[0] = 0x47;
|
||||||
rx_tx_addr[1] = 0x52;
|
rx_tx_addr[1] = 0x52;
|
||||||
rx_tx_addr[2] = 0xAE;
|
rx_tx_addr[2] = 0xAE;
|
||||||
rx_tx_addr[3] = 0xAA;
|
rx_tx_addr[3] = 0xAA;
|
||||||
|
CYRF_ConfigRFChannel(0x27);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(IS_BIND_IN_PROGRESS)
|
if(IS_BIND_IN_PROGRESS)
|
||||||
|
@ -22,7 +22,8 @@ Multiprotocol is distributed in the hope that it will be useful,
|
|||||||
#define MOULDKG_BIND_PACKET_PERIOD 12000
|
#define MOULDKG_BIND_PACKET_PERIOD 12000
|
||||||
#define MOULDKG_TX_BIND_CHANNEL 11
|
#define MOULDKG_TX_BIND_CHANNEL 11
|
||||||
#define MOULDKG_RX_BIND_CHANNEL 76
|
#define MOULDKG_RX_BIND_CHANNEL 76
|
||||||
#define MOULDKG_PAYLOAD_SIZE 5
|
#define MOULDKG_PAYLOAD_SIZE_DIGIT 5
|
||||||
|
#define MOULDKG_PAYLOAD_SIZE_ANALOG 10
|
||||||
#define MOULDKG_BIND_PAYLOAD_SIZE 7
|
#define MOULDKG_BIND_PAYLOAD_SIZE 7
|
||||||
#define MOULDKG_BIND_COUNT 300
|
#define MOULDKG_BIND_COUNT 300
|
||||||
#define MOULDKG_RF_NUM_CHANNELS 4
|
#define MOULDKG_RF_NUM_CHANNELS 4
|
||||||
@ -35,6 +36,7 @@ enum {
|
|||||||
|
|
||||||
static void __attribute__((unused)) MOULDKG_send_packet()
|
static void __attribute__((unused)) MOULDKG_send_packet()
|
||||||
{
|
{
|
||||||
|
uint8_t len = MOULDKG_BIND_PAYLOAD_SIZE;
|
||||||
memcpy(&packet[1],rx_tx_addr,3);
|
memcpy(&packet[1],rx_tx_addr,3);
|
||||||
if(IS_BIND_IN_PROGRESS)
|
if(IS_BIND_IN_PROGRESS)
|
||||||
{
|
{
|
||||||
@ -45,41 +47,52 @@ static void __attribute__((unused)) MOULDKG_send_packet()
|
|||||||
{
|
{
|
||||||
XN297_RFChannel(hopping_frequency[(packet_count>>1)&0x03]);
|
XN297_RFChannel(hopping_frequency[(packet_count>>1)&0x03]);
|
||||||
|
|
||||||
uint8_t val=0;
|
if(sub_protocol == MOULDKG_ANALOG)
|
||||||
if(packet_count&1==0)
|
|
||||||
{
|
{
|
||||||
packet[0] = 0x31;
|
packet[0] = 0x36;
|
||||||
//Button B
|
uint8_t ch[]={ 1,0,2,3 };
|
||||||
if(Channel_data[CH2]>CHANNEL_MAX_COMMAND) val |= 0x40;
|
for(uint8_t i=0;i<4;i++)
|
||||||
else if(Channel_data[CH2]<CHANNEL_MIN_COMMAND) val |= 0x80;
|
packet[i+4] = convert_channel_8b(ch[i]);
|
||||||
//Button C
|
len = MOULDKG_PAYLOAD_SIZE_ANALOG;
|
||||||
if(Channel_data[CH3]>CHANNEL_MAX_COMMAND) val |= 0x10;
|
|
||||||
else if(Channel_data[CH3]<CHANNEL_MIN_COMMAND) val |= 0x20;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{//DIGIT
|
||||||
packet[0] = 0x30;
|
len = MOULDKG_PAYLOAD_SIZE_DIGIT;
|
||||||
val = 0x60
|
uint8_t val=0;
|
||||||
| GET_FLAG(CH5_SW, 0x80) // Button E
|
if(packet_count&1)
|
||||||
| GET_FLAG(CH6_SW, 0x10); // Button F
|
{
|
||||||
}
|
packet[0] = 0x31;
|
||||||
//Button A
|
//Button B
|
||||||
if(Channel_data[CH1]>CHANNEL_MAX_COMMAND) val |= 0x01;
|
if(Channel_data[CH2]>CHANNEL_MAX_COMMAND) val |= 0x40;
|
||||||
else if(Channel_data[CH1]<CHANNEL_MIN_COMMAND) val |= 0x02;
|
else if(Channel_data[CH2]<CHANNEL_MIN_COMMAND) val |= 0x80;
|
||||||
//Button D
|
//Button C
|
||||||
if(Channel_data[CH4]>CHANNEL_MAX_COMMAND) val |= 0x04;
|
if(Channel_data[CH3]>CHANNEL_MAX_COMMAND) val |= 0x10;
|
||||||
else if(Channel_data[CH4]<CHANNEL_MIN_COMMAND) val |= 0x08;
|
else if(Channel_data[CH3]<CHANNEL_MIN_COMMAND) val |= 0x20;
|
||||||
packet[4]= val;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
packet[0] = 0x30;
|
||||||
|
val = 0x60
|
||||||
|
| GET_FLAG(CH5_SW, 0x80) // Button E
|
||||||
|
| GET_FLAG(CH6_SW, 0x10); // Button F
|
||||||
|
}
|
||||||
|
//Button A
|
||||||
|
if(Channel_data[CH1]>CHANNEL_MAX_COMMAND) val |= 0x01;
|
||||||
|
else if(Channel_data[CH1]<CHANNEL_MIN_COMMAND) val |= 0x02;
|
||||||
|
//Button D
|
||||||
|
if(Channel_data[CH4]>CHANNEL_MAX_COMMAND) val |= 0x04;
|
||||||
|
else if(Channel_data[CH4]<CHANNEL_MIN_COMMAND) val |= 0x08;
|
||||||
|
packet[4]= val;
|
||||||
|
|
||||||
packet_count++;
|
packet_count++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send
|
// Send
|
||||||
XN297_SetPower();
|
XN297_SetPower();
|
||||||
XN297_SetTxRxMode(TX_EN);
|
XN297_SetTxRxMode(TX_EN);
|
||||||
XN297_WritePayload(packet, IS_BIND_IN_PROGRESS?MOULDKG_BIND_PAYLOAD_SIZE:MOULDKG_PAYLOAD_SIZE);
|
XN297_WritePayload(packet, len);
|
||||||
#if 0
|
#if 0
|
||||||
uint8_t len = IS_BIND_IN_PROGRESS?MOULDKG_BIND_PAYLOAD_SIZE:MOULDKG_PAYLOAD_SIZE;
|
|
||||||
for(uint8_t i=0; i < len; i++)
|
for(uint8_t i=0; i < len; i++)
|
||||||
debug("%02X ", packet[i]);
|
debug("%02X ", packet[i]);
|
||||||
debugln();
|
debugln();
|
||||||
@ -170,3 +183,8 @@ void MOULDKG_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Analog
|
||||||
|
// Bind TX: C=11 S=Y A= 4B 44 48 P(7)= C0 46 01 00 00 00 00
|
||||||
|
// Bind RX: 5A 46 01 00 63 82 4E
|
||||||
|
// Norm: C=15 S=Y A= 63 82 4E P(10)= 36 46 01 00 80 80 80 80 00 00
|
@ -85,4 +85,4 @@
|
|||||||
85,E016H
|
85,E016H
|
||||||
87,IKEA
|
87,IKEA
|
||||||
89,Losi
|
89,Losi
|
||||||
90,MouldKg
|
90,MouldKg,Analog,Digit
|
@ -158,6 +158,7 @@ const char STR_SUBTYPE_REALACC[] = "\x03""R11";
|
|||||||
const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype";
|
const char STR_SUBTYPE_KYOSHO[] = "\x04""FHSS""Hype";
|
||||||
const char STR_SUBTYPE_FUTABA[] = "\x05""SFHSS";
|
const char STR_SUBTYPE_FUTABA[] = "\x05""SFHSS";
|
||||||
const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
|
const char STR_SUBTYPE_JJRC345[] = "\x08""JJRC345\0""SkyTmblr";
|
||||||
|
const char STR_SUBTYPE_MOULKG[] = "\x06""Analog""Digit\0";
|
||||||
|
|
||||||
#define NO_SUBTYPE nullptr
|
#define NO_SUBTYPE nullptr
|
||||||
|
|
||||||
@ -367,7 +368,7 @@ const mm_protocol_definition multi_protocols[] = {
|
|||||||
{PROTO_MLINK, STR_MLINK, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_CYRF, MLINK_init, MLINK_callback },
|
{PROTO_MLINK, STR_MLINK, NO_SUBTYPE, 0, OPTION_NONE, 1, 0, SW_CYRF, MLINK_init, MLINK_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(MOULDKG_NRF24L01_INO)
|
#if defined(MOULDKG_NRF24L01_INO)
|
||||||
{PROTO_MOULDKG, STR_MOULDKG, NO_SUBTYPE, 0, OPTION_NONE, 0, 0, SW_NRF, MOULDKG_init, MOULDKG_callback },
|
{PROTO_MOULDKG, STR_MOULDKG, STR_SUBTYPE_MOULKG, 2, OPTION_NONE, 0, 0, SW_NRF, MOULDKG_init, MOULDKG_callback },
|
||||||
#endif
|
#endif
|
||||||
#if defined(MT99XX_CCNRF_INO)
|
#if defined(MT99XX_CCNRF_INO)
|
||||||
{PROTO_MT99XX, STR_MT99XX, STR_SUBTYPE_MT99, 7, OPTION_NONE, 0, 0, SW_NRF, MT99XX_init, MT99XX_callback },
|
{PROTO_MT99XX, STR_MT99XX, STR_SUBTYPE_MT99, 7, OPTION_NONE, 0, 0, SW_NRF, MT99XX_init, MT99XX_callback },
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 3
|
#define VERSION_MINOR 3
|
||||||
#define VERSION_REVISION 2
|
#define VERSION_REVISION 2
|
||||||
#define VERSION_PATCH_LEVEL 83
|
#define VERSION_PATCH_LEVEL 84
|
||||||
|
|
||||||
#define MODE_SERIAL 0
|
#define MODE_SERIAL 0
|
||||||
|
|
||||||
@ -440,6 +440,12 @@ enum RLINK
|
|||||||
RLINK_DUMBORC = 2,
|
RLINK_DUMBORC = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum MOULDKG
|
||||||
|
{
|
||||||
|
MOULDKG_ANALOG = 0,
|
||||||
|
MOULDKG_DIGIT = 1,
|
||||||
|
};
|
||||||
|
|
||||||
#define NONE 0
|
#define NONE 0
|
||||||
#define P_HIGH 1
|
#define P_HIGH 1
|
||||||
#define P_LOW 0
|
#define P_LOW 0
|
||||||
|
@ -728,7 +728,8 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
PROTO_MLINK
|
PROTO_MLINK
|
||||||
NONE
|
NONE
|
||||||
PROTO_MOULDKG
|
PROTO_MOULDKG
|
||||||
NONE
|
MOULDKG_ANALOG
|
||||||
|
MOULDKG_DIGIT
|
||||||
PROTO_MT99XX
|
PROTO_MT99XX
|
||||||
MT99
|
MT99
|
||||||
H7
|
H7
|
||||||
|
@ -117,7 +117,7 @@ CFlie|38|CFlie||||||||NRF24L01|
|
|||||||
[Losi](Protocols_Details.md#Losi---89)|89|||||||||CYRF6936|
|
[Losi](Protocols_Details.md#Losi---89)|89|||||||||CYRF6936|
|
||||||
[MJXq](Protocols_Details.md#MJXQ---18)|18|WLH08|X600|X800|H26D|E010*|H26WH|PHOENIX*||NRF24L01|XN297
|
[MJXq](Protocols_Details.md#MJXQ---18)|18|WLH08|X600|X800|H26D|E010*|H26WH|PHOENIX*||NRF24L01|XN297
|
||||||
[MLINK](Protocols_Details.md#MLINK---78)|78|||||||||CYRF6936|
|
[MLINK](Protocols_Details.md#MLINK---78)|78|||||||||CYRF6936|
|
||||||
[MouldKg](Protocols_Details.md#mouldkg---90)|90|||||||||NRF24L01|XN297
|
[MouldKg](Protocols_Details.md#mouldkg---90)|90|Analog|Digit|||||||NRF24L01|XN297
|
||||||
[MT99xx](Protocols_Details.md#MT99XX---17)|17|MT|H7|YZ|LS|FY805|A180|DRAGON||NRF24L01|XN297
|
[MT99xx](Protocols_Details.md#MT99XX---17)|17|MT|H7|YZ|LS|FY805|A180|DRAGON||NRF24L01|XN297
|
||||||
[NCC1701](Protocols_Details.md#NCC1701---44)|44|||||||||NRF24L01|
|
[NCC1701](Protocols_Details.md#NCC1701---44)|44|||||||||NRF24L01|
|
||||||
[OMP](Protocols_Details.md#OMP---77)|77|||||||||CC2500&NRF24L01|XN297L
|
[OMP](Protocols_Details.md#OMP---77)|77|||||||||CC2500&NRF24L01|XN297L
|
||||||
@ -1707,6 +1707,14 @@ CH16| CH8 | -100% | 0% | - | - | -
|
|||||||
## MouldKg - *90*
|
## MouldKg - *90*
|
||||||
Mould King 2.4GHz TX: Technic Brick models
|
Mould King 2.4GHz TX: Technic Brick models
|
||||||
|
|
||||||
|
### Sub_protocol Analog - *0*
|
||||||
|
|
||||||
|
CH1|CH2|CH3|CH4
|
||||||
|
---|---|---|---
|
||||||
|
A|B|C|D
|
||||||
|
|
||||||
|
### Sub_protocol Digit - *1*
|
||||||
|
|
||||||
CH1|CH2|CH3|CH4|CH5|CH6
|
CH1|CH2|CH3|CH4|CH5|CH6
|
||||||
---|---|---|---|---|---
|
---|---|---|---|---|---
|
||||||
A|B|C|D|E|F
|
A|B|C|D|E|F
|
||||||
|
Loading…
x
Reference in New Issue
Block a user