mirror of
				https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
				synced 2025-11-03 22:31:04 +00:00 
			
		
		
		
	XK2 2nd ID
This commit is contained in:
		
							parent
							
								
									9b66711052
								
							
						
					
					
						commit
						fd150fa109
					
				@ -193,7 +193,7 @@
 | 
				
			|||||||
62,0,XK,X450,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video
 | 
					62,0,XK,X450,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video
 | 
				
			||||||
62,1,XK,X420,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
 | 
					62,1,XK,X420,1,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
 | 
				
			||||||
62,2,XK,Cars,0,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
 | 
					62,2,XK,Cars,0,FMode,TakeOf,Emerg,3D_6G,Pict,Video,Flip,Light
 | 
				
			||||||
99,0,XK2,X4,0,Rate,Mode,Hover
 | 
					99,0,XK2,X4,0,Rate,Mode,Hover,Light
 | 
				
			||||||
8,0,YD717,Std,1,Flip,Light,Pict,Video,HLess
 | 
					8,0,YD717,Std,1,Flip,Light,Pict,Video,HLess
 | 
				
			||||||
8,1,YD717,SkyWlkr,1,Flip,Light,Pict,Video,HLess
 | 
					8,1,YD717,SkyWlkr,1,Flip,Light,Pict,Video,HLess
 | 
				
			||||||
8,2,YD717,Simax4,1,Flip,Light,Pict,Video,HLess
 | 
					8,2,YD717,Simax4,1,Flip,Light,Pict,Video,HLess
 | 
				
			||||||
 | 
				
			|||||||
@ -19,7 +19,7 @@
 | 
				
			|||||||
#define VERSION_MAJOR		1
 | 
					#define VERSION_MAJOR		1
 | 
				
			||||||
#define VERSION_MINOR		3
 | 
					#define VERSION_MINOR		3
 | 
				
			||||||
#define VERSION_REVISION	4
 | 
					#define VERSION_REVISION	4
 | 
				
			||||||
#define VERSION_PATCH_LEVEL	18
 | 
					#define VERSION_PATCH_LEVEL	19
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MODE_SERIAL 0
 | 
					#define MODE_SERIAL 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -70,13 +70,14 @@ static void __attribute__((unused)) XK2_send_packet()
 | 
				
			|||||||
		//Flags
 | 
							//Flags
 | 
				
			||||||
		packet[5] = GET_FLAG(CH5_SW, 0x01)								//Rate
 | 
							packet[5] = GET_FLAG(CH5_SW, 0x01)								//Rate
 | 
				
			||||||
				  | GET_FLAG(CH6_SW, 0x08)								//Mode
 | 
									  | GET_FLAG(CH6_SW, 0x08)								//Mode
 | 
				
			||||||
				  | GET_FLAG(CH7_SW, 0x20);								//Hover
 | 
									  | GET_FLAG(CH7_SW, 0x20)								//Hover
 | 
				
			||||||
 | 
									  | GET_FLAG(CH8_SW, 0x40);								//Light
 | 
				
			||||||
		//Telemetry not received=00, Telemetry received=01 but sometimes switch to 1 even if telemetry is not there...
 | 
							//Telemetry not received=00, Telemetry received=01 but sometimes switch to 1 even if telemetry is not there...
 | 
				
			||||||
		packet[6] = 0x00;
 | 
							packet[6] = 0x00;
 | 
				
			||||||
		//Unknown
 | 
							//Unknown
 | 
				
			||||||
		packet[7] = crc8;												//?? RX_ID checksum ?? => sum RX_ID[0..2]
 | 
							packet[7] = crc8;												//?? RX_ID checksum ?? => sum RX_ID[0..2]
 | 
				
			||||||
		//Checksum seed
 | 
							//Checksum seed
 | 
				
			||||||
		packet[8] = 0x7F;												//Constant?
 | 
							packet[8] = num_ch;												//Based on TX ID but calculation is unknown
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	//Checksum
 | 
						//Checksum
 | 
				
			||||||
	for(uint8_t i=0; i<XK2_PAYLOAD_SIZE-1; i++)
 | 
						for(uint8_t i=0; i<XK2_PAYLOAD_SIZE-1; i++)
 | 
				
			||||||
@ -108,14 +109,28 @@ static void __attribute__((unused)) XK2_RF_init()
 | 
				
			|||||||
static void __attribute__((unused)) XK2_initialize_txid()
 | 
					static void __attribute__((unused)) XK2_initialize_txid()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	#ifdef FORCE_XK2_ID
 | 
						#ifdef FORCE_XK2_ID
 | 
				
			||||||
 | 
						if(rx_tx_addr[3]&1)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
		rx_tx_addr[0] = 0x66;
 | 
							rx_tx_addr[0] = 0x66;
 | 
				
			||||||
		rx_tx_addr[1] = 0x4F;
 | 
							rx_tx_addr[1] = 0x4F;
 | 
				
			||||||
		rx_tx_addr[2] = 0x47;
 | 
							rx_tx_addr[2] = 0x47;
 | 
				
			||||||
		for(uint8_t i=0;i<XK2_RF_NUM_CHANNELS;i++)
 | 
							num_ch = 0x7F;				// Must be based on the ID but calculation unknow yet
 | 
				
			||||||
			hopping_frequency[i] = 65 + i*4;	//65=0x41, 69=0x45, 73=0x49, 77=0x4D
 | 
							//hopping frequencies 65=0x41, 69=0x45, 73=0x49, 77=0x4D
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							rx_tx_addr[0] = 0x36;
 | 
				
			||||||
 | 
							rx_tx_addr[1] = 0x49;
 | 
				
			||||||
 | 
							rx_tx_addr[2] = 0x6B;
 | 
				
			||||||
 | 
							num_ch = 0x79;				// Must be based on the ID but calculation unknow yet
 | 
				
			||||||
 | 
							//hopping frequencies 65=0x41, 69=0x45, 73=0x49, 77=0x4D
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	#endif
 | 
						#endif
 | 
				
			||||||
 | 
						for(uint8_t i=0;i<XK2_RF_NUM_CHANNELS;i++)	// Are these RF frequencies always the same?
 | 
				
			||||||
 | 
							hopping_frequency[i] = 65 + i*4;		//65=0x41, 69=0x45, 73=0x49, 77=0x4D
 | 
				
			||||||
	rx_tx_addr[3] = 0xCC;
 | 
						rx_tx_addr[3] = 0xCC;
 | 
				
			||||||
	rx_tx_addr[4] = 0xCC;
 | 
						rx_tx_addr[4] = 0xCC;
 | 
				
			||||||
 | 
						debugln("ID: %02X %02X %02X %02X %02X , HOP: %02X %02X %02X %02X",rx_tx_addr[0],rx_tx_addr[1],rx_tx_addr[2],rx_tx_addr[3],rx_tx_addr[4],hopping_frequency[0],hopping_frequency[1],hopping_frequency[2],hopping_frequency[3]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
uint16_t XK2_callback()
 | 
					uint16_t XK2_callback()
 | 
				
			||||||
@ -271,6 +286,7 @@ P[4] = alternates 20,60,A0,E0
 | 
				
			|||||||
P[5] = flags
 | 
					P[5] = flags
 | 
				
			||||||
        01=high rate
 | 
					        01=high rate
 | 
				
			||||||
		20=hover=long_press_left
 | 
							20=hover=long_press_left
 | 
				
			||||||
 | 
							40=light -> temporary
 | 
				
			||||||
		08=6g/3d=short_press_right sequece also switches for a few packets to C1 if 8 C0 if 0
 | 
							08=6g/3d=short_press_right sequece also switches for a few packets to C1 if 8 C0 if 0
 | 
				
			||||||
P[6] = 00 telemetry nok
 | 
					P[6] = 00 telemetry nok
 | 
				
			||||||
       01 telemetry ok but sometimes switch to 1 also when telemetry is nok...
 | 
					       01 telemetry ok but sometimes switch to 1 also when telemetry is nok...
 | 
				
			||||||
 | 
				
			|||||||
@ -1515,17 +1515,17 @@ Models: WLtoys cars 284131/284161/284010/124016/124017/144010 and Eachine EAT14
 | 
				
			|||||||
## XK2 - *99*
 | 
					## XK2 - *99*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Sub_protocol X4 - *0*
 | 
					### Sub_protocol X4 - *0*
 | 
				
			||||||
Transmitter: XK X4-A160, model: XK A160S
 | 
					Transmitter: XK X4-A160, X5S, model: XK A160S, XK A280
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Only 1 ID and might only work with my plane**
 | 
					**Only 2 IDs**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If a CC2500 is installed it will be used for this sub protocol. Option in this case is used for fine frequency tuning like any CC2500 protocols so check the [Frequency Tuning page](/docs/Frequency_Tuning.md).
 | 
					If a CC2500 is installed it will be used for this sub protocol. Option in this case is used for fine frequency tuning like any CC2500 protocols so check the [Frequency Tuning page](/docs/Frequency_Tuning.md).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If only a NRF24L01 is installed then this sub protocol might be problematic because it is using the xn297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
 | 
					If only a NRF24L01 is installed then this sub protocol might be problematic because it is using the xn297L emulation with a transmission speed of 250kbps which doesn't work very well with every NRF24L01, this is an hardware issue with the authenticity and accuracy of the components.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CH1|CH2|CH3|CH4|CH5|CH6|CH7
 | 
					CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8
 | 
				
			||||||
---|---|---|---|---|---|---
 | 
					---|---|---|---|---|---|---|---
 | 
				
			||||||
A|E|T|R|Rate|Mode|Hover
 | 
					A|E|T|R|Rate|Mode|Hover|Light
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The plane does not need to be bound each time if it is powered on **after** the radio/protocol is on.
 | 
					The plane does not need to be bound each time if it is powered on **after** the radio/protocol is on.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user