mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-09 22:58:14 +00:00
Flysky Flash space optimization
This commit is contained in:
parent
2261d655ea
commit
d96ba9fa46
@ -50,10 +50,6 @@ enum {
|
|||||||
FLAG_V912_BTMBTN= 0x80,
|
FLAG_V912_BTMBTN= 0x80,
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t chanrow;
|
|
||||||
uint8_t chancol;
|
|
||||||
uint8_t chanoffset;
|
|
||||||
|
|
||||||
const uint8_t PROGMEM V912_X17_SEQ[10] = { 0x14, 0x31, 0x40, 0x49, 0x49, // sometime first byte is 0x15 ?
|
const uint8_t PROGMEM V912_X17_SEQ[10] = { 0x14, 0x31, 0x40, 0x49, 0x49, // sometime first byte is 0x15 ?
|
||||||
0x49, 0x49, 0x49, 0x49, 0x49, };
|
0x49, 0x49, 0x49, 0x49, 0x49, };
|
||||||
|
|
||||||
@ -151,25 +147,6 @@ static void __attribute__((unused)) flysky_build_packet(uint8_t init)
|
|||||||
flysky_apply_extension_flags();
|
flysky_apply_extension_flags();
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint8_t PROGMEM tx_channels[16][16] = {
|
|
||||||
{0x0a, 0x5a, 0x14, 0x64, 0x1e, 0x6e, 0x28, 0x78, 0x32, 0x82, 0x3c, 0x8c, 0x46, 0x96, 0x50, 0xa0},
|
|
||||||
{0xa0, 0x50, 0x96, 0x46, 0x8c, 0x3c, 0x82, 0x32, 0x78, 0x28, 0x6e, 0x1e, 0x64, 0x14, 0x5a, 0x0a},
|
|
||||||
{0x0a, 0x5a, 0x50, 0xa0, 0x14, 0x64, 0x46, 0x96, 0x1e, 0x6e, 0x3c, 0x8c, 0x28, 0x78, 0x32, 0x82},
|
|
||||||
{0x82, 0x32, 0x78, 0x28, 0x8c, 0x3c, 0x6e, 0x1e, 0x96, 0x46, 0x64, 0x14, 0xa0, 0x50, 0x5a, 0x0a},
|
|
||||||
{0x28, 0x78, 0x0a, 0x5a, 0x50, 0xa0, 0x14, 0x64, 0x1e, 0x6e, 0x3c, 0x8c, 0x32, 0x82, 0x46, 0x96},
|
|
||||||
{0x96, 0x46, 0x82, 0x32, 0x8c, 0x3c, 0x6e, 0x1e, 0x64, 0x14, 0xa0, 0x50, 0x5a, 0x0a, 0x78, 0x28},
|
|
||||||
{0x50, 0xa0, 0x28, 0x78, 0x0a, 0x5a, 0x1e, 0x6e, 0x3c, 0x8c, 0x32, 0x82, 0x46, 0x96, 0x14, 0x64},
|
|
||||||
{0x64, 0x14, 0x96, 0x46, 0x82, 0x32, 0x8c, 0x3c, 0x6e, 0x1e, 0x5a, 0x0a, 0x78, 0x28, 0xa0, 0x50},
|
|
||||||
{0x50, 0xa0, 0x46, 0x96, 0x3c, 0x8c, 0x28, 0x78, 0x0a, 0x5a, 0x32, 0x82, 0x1e, 0x6e, 0x14, 0x64},
|
|
||||||
{0x64, 0x14, 0x6e, 0x1e, 0x82, 0x32, 0x5a, 0x0a, 0x78, 0x28, 0x8c, 0x3c, 0x96, 0x46, 0xa0, 0x50},
|
|
||||||
{0x46, 0x96, 0x3c, 0x8c, 0x50, 0xa0, 0x28, 0x78, 0x0a, 0x5a, 0x1e, 0x6e, 0x32, 0x82, 0x14, 0x64},
|
|
||||||
{0x64, 0x14, 0x82, 0x32, 0x6e, 0x1e, 0x5a, 0x0a, 0x78, 0x28, 0xa0, 0x50, 0x8c, 0x3c, 0x96, 0x46},
|
|
||||||
{0x46, 0x96, 0x0a, 0x5a, 0x3c, 0x8c, 0x14, 0x64, 0x50, 0xa0, 0x28, 0x78, 0x1e, 0x6e, 0x32, 0x82},
|
|
||||||
{0x82, 0x32, 0x6e, 0x1e, 0x78, 0x28, 0xa0, 0x50, 0x64, 0x14, 0x8c, 0x3c, 0x5a, 0x0a, 0x96, 0x46},
|
|
||||||
{0x46, 0x96, 0x0a, 0x5a, 0x50, 0xa0, 0x3c, 0x8c, 0x28, 0x78, 0x1e, 0x6e, 0x32, 0x82, 0x14, 0x64},
|
|
||||||
{0x64, 0x14, 0x82, 0x32, 0x6e, 0x1e, 0x78, 0x28, 0x8c, 0x3c, 0xa0, 0x50, 0x5a, 0x0a, 0x96, 0x46},
|
|
||||||
};
|
|
||||||
|
|
||||||
uint16_t ReadFlySky()
|
uint16_t ReadFlySky()
|
||||||
{
|
{
|
||||||
if (bind_counter)
|
if (bind_counter)
|
||||||
@ -183,28 +160,56 @@ uint16_t ReadFlySky()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
flysky_build_packet(0);
|
flysky_build_packet(0);
|
||||||
A7105_WriteData(21, pgm_read_byte_near(&tx_channels[chanrow][chancol])-chanoffset);
|
A7105_WriteData(21, hopping_frequency[hopping_frequency_no]);
|
||||||
chancol = (chancol + 1) % 16;
|
hopping_frequency_no = (hopping_frequency_no + 1) & 0x0F;
|
||||||
if (! chancol) //Keep transmit power updated
|
A7105_SetPower();
|
||||||
A7105_SetPower();
|
|
||||||
}
|
}
|
||||||
return 1510; //1460 on deviation but not working with the latest V911 bricks... Turnigy 9X v2 is 1533, Flysky TX for 9XR/9XR Pro is 1510, V911 TX is 1490.
|
return 1510; //1460 on deviation but not working with the latest V911 bricks... Turnigy 9X v2 is 1533, Flysky TX for 9XR/9XR Pro is 1510, V911 TX is 1490.
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t initFlySky() {
|
const uint8_t PROGMEM tx_channels[8][4] = {
|
||||||
|
{ 0x12, 0x34, 0x56, 0x78},
|
||||||
|
{ 0x18, 0x27, 0x36, 0x45},
|
||||||
|
{ 0x41, 0x82, 0x36, 0x57},
|
||||||
|
{ 0x84, 0x13, 0x65, 0x72},
|
||||||
|
{ 0x87, 0x64, 0x15, 0x32},
|
||||||
|
{ 0x76, 0x84, 0x13, 0x52},
|
||||||
|
{ 0x71, 0x62, 0x84, 0x35},
|
||||||
|
{ 0x71, 0x86, 0x43, 0x52}
|
||||||
|
};
|
||||||
|
|
||||||
|
uint16_t initFlySky()
|
||||||
|
{
|
||||||
|
uint8_t chanrow;
|
||||||
|
uint8_t chanoffset;
|
||||||
|
uint8_t temp;
|
||||||
|
|
||||||
A7105_Init(INIT_FLYSKY); //flysky_init();
|
A7105_Init(INIT_FLYSKY); //flysky_init();
|
||||||
|
|
||||||
if ((rx_tx_addr[3]&0xF0) > 0x90) // limit offset to 9 as higher values don't work with some RX (ie V912)
|
if ((rx_tx_addr[3]&0xF0) > 0x90) // limit offset to 9 as higher values don't work with some RX (ie V912)
|
||||||
rx_tx_addr[3]=rx_tx_addr[3]-0x70;
|
rx_tx_addr[3]=rx_tx_addr[3]-0x70;
|
||||||
chanrow=rx_tx_addr[3] & 0x0F;
|
chanrow=rx_tx_addr[3] & 0x0F;
|
||||||
chancol=0;
|
|
||||||
chanoffset=rx_tx_addr[3]/16;
|
chanoffset=rx_tx_addr[3]/16;
|
||||||
|
|
||||||
|
// Build frequency hop table
|
||||||
|
for(uint8_t i=0;i<16;i++)
|
||||||
|
{
|
||||||
|
temp=pgm_read_byte_near(&tx_channels[chanrow>>1][i>>2]);
|
||||||
|
if(i&0x01)
|
||||||
|
temp&=0x0F;
|
||||||
|
else
|
||||||
|
temp>>=4;
|
||||||
|
temp*=0x0A;
|
||||||
|
if(i&0x02)
|
||||||
|
temp+=0x50;
|
||||||
|
hopping_frequency[((chanrow&1)?15-i:i)]=temp-chanoffset;
|
||||||
|
}
|
||||||
|
hopping_frequency_no=0;
|
||||||
|
|
||||||
if(IS_AUTOBIND_FLAG_on)
|
if(IS_AUTOBIND_FLAG_on)
|
||||||
bind_counter = FLYSKY_BIND_COUNT;
|
bind_counter = FLYSKY_BIND_COUNT;
|
||||||
else
|
else
|
||||||
bind_counter = 0;
|
bind_counter = 0;
|
||||||
return 2400;
|
return 2400;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user