You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
400 lines
14 KiB
400 lines
14 KiB
// Copyright (c) 2018 Brandenburg Tech, LLC
|
|
// All right reserved.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY BRANDENBURG TECH, LLC AND CONTRIBUTORS
|
|
// ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BRANDENBURT TECH, LLC
|
|
// AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
/* Warning: This file is automatically generated by AX-RadioLAB.
|
|
Manual changes are overwritten! */
|
|
|
|
#include "config.h"
|
|
|
|
#include "../axradio/axradioinit.h"
|
|
#include "../spi/ax5043spi.h"
|
|
#include "../crc/crc.h"
|
|
|
|
// TX: fcarrier=435.300MHz dev= 13.600kHz br= 4.800kBit/s pwr= 15.0dBm
|
|
// RX: fcarrier=435.300MHz bw= 28.200kHz br= 4.800kBit/s
|
|
|
|
void ax5043_set_registers(void)
|
|
{
|
|
ax5043WriteReg(AX5043_MODULATION, 0x08);
|
|
ax5043WriteReg(AX5043_ENCODING, 0x00);
|
|
ax5043WriteReg(AX5043_FRAMING, 0x24);
|
|
ax5043WriteReg(AX5043_FEC, 0x13);
|
|
ax5043WriteReg(AX5043_PINFUNCSYSCLK, 0x01);
|
|
ax5043WriteReg(AX5043_PINFUNCDCLK, 0x01);
|
|
ax5043WriteReg(AX5043_PINFUNCDATA, 0x01);
|
|
ax5043WriteReg(AX5043_PINFUNCANTSEL, 0x01);
|
|
ax5043WriteReg(AX5043_PINFUNCPWRAMP, 0x01);
|
|
ax5043WriteReg(AX5043_WAKEUPXOEARLY, 0x01);
|
|
ax5043WriteReg(AX5043_IFFREQ1, 0x06);
|
|
ax5043WriteReg(AX5043_IFFREQ0, 0x04);
|
|
ax5043WriteReg(AX5043_DECIMATION, 0x07);
|
|
ax5043WriteReg(AX5043_RXDATARATE2, 0x00);
|
|
ax5043WriteReg(AX5043_RXDATARATE1, 0xEE);
|
|
ax5043WriteReg(AX5043_RXDATARATE0, 0x18);
|
|
ax5043WriteReg(AX5043_MAXDROFFSET2, 0x00);
|
|
ax5043WriteReg(AX5043_MAXDROFFSET1, 0x00);
|
|
ax5043WriteReg(AX5043_MAXDROFFSET0, 0x00);
|
|
ax5043WriteReg(AX5043_MAXRFOFFSET2, 0x80);
|
|
ax5043WriteReg(AX5043_MAXRFOFFSET1, 0x23);
|
|
ax5043WriteReg(AX5043_MAXRFOFFSET0, 0xA9);
|
|
ax5043WriteReg(AX5043_FSKDMAX1, 0x05);
|
|
ax5043WriteReg(AX5043_FSKDMAX0, 0x76);
|
|
ax5043WriteReg(AX5043_FSKDMIN1, 0xFA);
|
|
ax5043WriteReg(AX5043_FSKDMIN0, 0x8A);
|
|
ax5043WriteReg(AX5043_AMPLFILTER, 0x00);
|
|
ax5043WriteReg(AX5043_RXPARAMSETS, 0xF4);
|
|
ax5043WriteReg(AX5043_AGCGAIN0, 0xC6);
|
|
ax5043WriteReg(AX5043_AGCTARGET0, 0x84);
|
|
ax5043WriteReg(AX5043_TIMEGAIN0, 0xEA);
|
|
ax5043WriteReg(AX5043_DRGAIN0, 0xE4);
|
|
ax5043WriteReg(AX5043_PHASEGAIN0, 0xC3);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINA0, 0x0F);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINB0, 0x1F);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINC0, 0x0A);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAIND0, 0x0A);
|
|
ax5043WriteReg(AX5043_AMPLITUDEGAIN0, 0x06);
|
|
ax5043WriteReg(AX5043_FREQDEV10, 0x00);
|
|
ax5043WriteReg(AX5043_FREQDEV00, 0x00);
|
|
ax5043WriteReg(AX5043_BBOFFSRES0, 0x00);
|
|
ax5043WriteReg(AX5043_AGCGAIN1, 0xC6);
|
|
ax5043WriteReg(AX5043_AGCTARGET1, 0x84);
|
|
ax5043WriteReg(AX5043_AGCAHYST1, 0x00);
|
|
ax5043WriteReg(AX5043_AGCMINMAX1, 0x00);
|
|
ax5043WriteReg(AX5043_TIMEGAIN1, 0xE8);
|
|
ax5043WriteReg(AX5043_DRGAIN1, 0xE3);
|
|
ax5043WriteReg(AX5043_PHASEGAIN1, 0xC3);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINA1, 0x0F);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINB1, 0x1F);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINC1, 0x0A);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAIND1, 0x0A);
|
|
ax5043WriteReg(AX5043_AMPLITUDEGAIN1, 0x06);
|
|
ax5043WriteReg(AX5043_FREQDEV11, 0x02);
|
|
ax5043WriteReg(AX5043_FREQDEV01, 0x36);
|
|
ax5043WriteReg(AX5043_FOURFSK1, 0x16);
|
|
ax5043WriteReg(AX5043_BBOFFSRES1, 0x00);
|
|
ax5043WriteReg(AX5043_AGCGAIN3, 0xFF);
|
|
ax5043WriteReg(AX5043_AGCTARGET3, 0x84);
|
|
ax5043WriteReg(AX5043_AGCAHYST3, 0x00);
|
|
ax5043WriteReg(AX5043_AGCMINMAX3, 0x00);
|
|
ax5043WriteReg(AX5043_TIMEGAIN3, 0xE7);
|
|
ax5043WriteReg(AX5043_DRGAIN3, 0xE2);
|
|
ax5043WriteReg(AX5043_PHASEGAIN3, 0xC3);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINA3, 0x0F);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINB3, 0x1F);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAINC3, 0x0D);
|
|
ax5043WriteReg(AX5043_FREQUENCYGAIND3, 0x0D);
|
|
ax5043WriteReg(AX5043_AMPLITUDEGAIN3, 0x06);
|
|
ax5043WriteReg(AX5043_FREQDEV13, 0x02);
|
|
ax5043WriteReg(AX5043_FREQDEV03, 0x36);
|
|
ax5043WriteReg(AX5043_FOURFSK3, 0x16);
|
|
ax5043WriteReg(AX5043_BBOFFSRES3, 0x00);
|
|
ax5043WriteReg(AX5043_MODCFGF, 0x03);
|
|
ax5043WriteReg(AX5043_FSKDEV2, 0x00);
|
|
ax5043WriteReg(AX5043_FSKDEV1, 0x37);
|
|
ax5043WriteReg(AX5043_FSKDEV0, 0xB5);
|
|
ax5043WriteReg(AX5043_MODCFGA, 0x05);
|
|
ax5043WriteReg(AX5043_TXRATE2, 0x00);
|
|
ax5043WriteReg(AX5043_TXRATE1, 0x13);
|
|
ax5043WriteReg(AX5043_TXRATE0, 0xA9);
|
|
ax5043WriteReg(AX5043_TXPWRCOEFFB1, 0x0F);
|
|
ax5043WriteReg(AX5043_TXPWRCOEFFB0, 0xFF);
|
|
ax5043WriteReg(AX5043_PLLVCOI, 0x99);
|
|
ax5043WriteReg(AX5043_PLLRNGCLK, 0x03);
|
|
ax5043WriteReg(AX5043_BBTUNE, 0x0F);
|
|
ax5043WriteReg(AX5043_BBOFFSCAP, 0x77);
|
|
ax5043WriteReg(AX5043_PKTADDRCFG, 0x00);
|
|
ax5043WriteReg(AX5043_PKTLENCFG, 0x80);
|
|
ax5043WriteReg(AX5043_PKTLENOFFSET, 0x00);
|
|
ax5043WriteReg(AX5043_PKTMAXLEN, 0xC8);
|
|
ax5043WriteReg(AX5043_MATCH0PAT3, 0xAA);
|
|
ax5043WriteReg(AX5043_MATCH0PAT2, 0xCC);
|
|
ax5043WriteReg(AX5043_MATCH0PAT1, 0xAA);
|
|
ax5043WriteReg(AX5043_MATCH0PAT0, 0xCC);
|
|
ax5043WriteReg(AX5043_MATCH1PAT1, 0x7E);
|
|
ax5043WriteReg(AX5043_MATCH1PAT0, 0x7E);
|
|
ax5043WriteReg(AX5043_MATCH1LEN, 0x8A);
|
|
ax5043WriteReg(AX5043_MATCH1MAX, 0x0A);
|
|
ax5043WriteReg(AX5043_TMGTXBOOST, 0x32);
|
|
ax5043WriteReg(AX5043_TMGTXSETTLE, 0x14);
|
|
ax5043WriteReg(AX5043_TMGRXBOOST, 0x32);
|
|
ax5043WriteReg(AX5043_TMGRXSETTLE, 0x14);
|
|
ax5043WriteReg(AX5043_TMGRXOFFSACQ, 0x00);
|
|
ax5043WriteReg(AX5043_TMGRXCOARSEAGC, 0x73);
|
|
ax5043WriteReg(AX5043_TMGRXRSSI, 0x03);
|
|
ax5043WriteReg(AX5043_TMGRXPREAMBLE2, 0x17);
|
|
ax5043WriteReg(AX5043_RSSIABSTHR, 0xE6);
|
|
ax5043WriteReg(AX5043_BGNDRSSITHR, 0x00);
|
|
ax5043WriteReg(AX5043_PKTCHUNKSIZE, 0x0D);
|
|
ax5043WriteReg(AX5043_PKTACCEPTFLAGS, 0x20);
|
|
ax5043WriteReg(AX5043_DACVALUE1, 0x00);
|
|
ax5043WriteReg(AX5043_DACVALUE0, 0x00);
|
|
ax5043WriteReg(AX5043_DACCONFIG, 0x00);
|
|
ax5043WriteReg(AX5043_REF, 0x03);
|
|
ax5043WriteReg(AX5043_XTALOSC, 0x03);
|
|
ax5043WriteReg(AX5043_XTALAMPL, 0x07);
|
|
ax5043WriteReg(AX5043_0xF1C, 0x07);
|
|
ax5043WriteReg(AX5043_0xF21, 0x68);
|
|
ax5043WriteReg(AX5043_0xF22, 0xFF);
|
|
ax5043WriteReg(AX5043_0xF23, 0x84);
|
|
ax5043WriteReg(AX5043_0xF26, 0x98);
|
|
ax5043WriteReg(AX5043_0xF34, 0x28);
|
|
ax5043WriteReg(AX5043_0xF35, 0x10);
|
|
ax5043WriteReg(AX5043_0xF44, 0x25);
|
|
}
|
|
|
|
|
|
void ax5043_set_registers_tx(void)
|
|
{
|
|
ax5043WriteReg(AX5043_PLLLOOP, 0x09);
|
|
ax5043WriteReg(AX5043_PLLCPI, 0x02);
|
|
ax5043WriteReg(AX5043_PLLVCODIV, 0x24);
|
|
ax5043WriteReg(AX5043_XTALCAP, 0x0C);
|
|
ax5043WriteReg(AX5043_0xF00, 0x0F);
|
|
ax5043WriteReg(AX5043_0xF18, 0x06);
|
|
}
|
|
|
|
|
|
void ax5043_set_registers_rx(void)
|
|
{
|
|
ax5043WriteReg(AX5043_PLLLOOP, 0x0B);
|
|
ax5043WriteReg(AX5043_PLLCPI, 0x10);
|
|
ax5043WriteReg(AX5043_PLLVCODIV, 0x24);
|
|
ax5043WriteReg(AX5043_XTALCAP, 0x0C);
|
|
ax5043WriteReg(AX5043_0xF00, 0x0F);
|
|
ax5043WriteReg(AX5043_0xF18, 0x02);
|
|
}
|
|
|
|
|
|
void ax5043_set_registers_rxwor(void)
|
|
{
|
|
ax5043WriteReg(AX5043_TMGRXAGC, 0x37);
|
|
ax5043WriteReg(AX5043_TMGRXPREAMBLE1, 0x19);
|
|
ax5043WriteReg(AX5043_PKTMISCFLAGS, 0x03);
|
|
}
|
|
|
|
|
|
void ax5043_set_registers_rxcont(void)
|
|
{
|
|
ax5043WriteReg(AX5043_TMGRXAGC, 0x00);
|
|
ax5043WriteReg(AX5043_TMGRXPREAMBLE1, 0x00);
|
|
ax5043WriteReg(AX5043_PKTMISCFLAGS, 0x00);
|
|
}
|
|
|
|
|
|
void ax5043_set_registers_rxcont_singleparamset(void)
|
|
{
|
|
ax5043WriteReg(AX5043_RXPARAMSETS, 0xFF);
|
|
ax5043WriteReg(AX5043_FREQDEV13, 0x00);
|
|
ax5043WriteReg(AX5043_FREQDEV03, 0x00);
|
|
ax5043WriteReg(AX5043_AGCGAIN3, 0xE8);
|
|
}
|
|
|
|
|
|
#define MUL8_16(x,y) ((uint8_t)((x)&0xff)*(uint16_t)(uint8_t)((y)&0xff))
|
|
|
|
#define CONSTMULFIX24(x) \
|
|
if (f >= 0) { \
|
|
uint32_t r = MUL8_16((x)>>16,f); \
|
|
r += MUL8_16((x)>>8,f>>8); \
|
|
r += MUL8_16((x),f>>16); \
|
|
r >>= 8; \
|
|
r += MUL8_16((x)>>24,f); \
|
|
r += MUL8_16((x)>>16,f>>8); \
|
|
r += MUL8_16((x)>>8,f>>16); \
|
|
r += MUL8_16((x),f>>24); \
|
|
r += ((uint32_t)MUL8_16((x)>>24,f>>8))<<8; \
|
|
r += ((uint32_t)MUL8_16((x)>>16,f>>16))<<8; \
|
|
r += ((uint32_t)MUL8_16((x)>>8,f>>24))<<8; \
|
|
r += ((uint32_t)MUL8_16((x)>>24,f>>16))<<16; \
|
|
r += ((uint32_t)MUL8_16((x)>>16,f>>24))<<16; \
|
|
r += ((uint32_t)MUL8_16((x)>>24,f>>24))<<24; \
|
|
return r; \
|
|
} \
|
|
{ \
|
|
int32_t r; \
|
|
f = -f; \
|
|
r = -(uint32_t)MUL8_16((x)>>16,f); \
|
|
r -= (uint32_t)MUL8_16((x)>>8,f>>8); \
|
|
r -= (uint32_t)MUL8_16((x),f>>16); \
|
|
r >>= 8; \
|
|
r -= (uint32_t)MUL8_16((x)>>24,f); \
|
|
r -= (uint32_t)MUL8_16((x)>>16,f>>8); \
|
|
r -= (uint32_t)MUL8_16((x)>>8,f>>16); \
|
|
r -= (uint32_t)MUL8_16((x),f>>24); \
|
|
r -= ((uint32_t)MUL8_16((x)>>24,f>>8))<<8; \
|
|
r -= ((uint32_t)MUL8_16((x)>>16,f>>16))<<8; \
|
|
r -= ((uint32_t)MUL8_16((x)>>8,f>>24))<<8; \
|
|
r -= ((uint32_t)MUL8_16((x)>>24,f>>16))<<16; \
|
|
r -= ((uint32_t)MUL8_16((x)>>16,f>>24))<<16; \
|
|
r -= ((uint32_t)MUL8_16((x)>>24,f>>24))<<24; \
|
|
return r; \
|
|
}
|
|
|
|
#define CONSTMULFIX16(x) \
|
|
if (f >= 0) { \
|
|
uint32_t r = MUL8_16((x)>>16,f); \
|
|
r += MUL8_16((x)>>8,f>>8); \
|
|
r >>= 8; \
|
|
r += MUL8_16((x)>>24,f); \
|
|
r += MUL8_16((x)>>16,f>>8); \
|
|
r += ((uint32_t)MUL8_16((x)>>24,f>>8))<<8; \
|
|
return r; \
|
|
} \
|
|
{ \
|
|
int32_t r; \
|
|
f = -f; \
|
|
r = -(uint32_t)MUL8_16((x)>>16,f); \
|
|
r -= (uint32_t)MUL8_16((x)>>8,f>>8); \
|
|
r >>= 8; \
|
|
r -= (uint32_t)MUL8_16((x)>>24,f); \
|
|
r -= (uint32_t)MUL8_16((x)>>16,f>>8); \
|
|
r -= ((uint32_t)MUL8_16((x)>>24,f>>8))<<8; \
|
|
return r; \
|
|
}
|
|
|
|
int32_t axradio_conv_freq_fromhz(int32_t f)
|
|
{
|
|
/* scale by 1.048576 (true 1.048576) */
|
|
CONSTMULFIX24(0x10c6f7a);
|
|
}
|
|
|
|
int32_t axradio_conv_freq_tohz(int32_t f)
|
|
{
|
|
/* scale by 0.953674 (true 0.953674) */
|
|
CONSTMULFIX24(0xf42400);
|
|
}
|
|
|
|
const uint8_t axradio_phy_innerfreqloop = 0;
|
|
|
|
int32_t axradio_conv_freq_fromreg(int32_t f)
|
|
{
|
|
/* scale by 1.000000 (true 1.000000) */
|
|
CONSTMULFIX16(0x1000000);
|
|
}
|
|
|
|
int32_t axradio_conv_timeinterval_totimer0(int32_t dt)
|
|
{
|
|
/* scale by 0.032776 (true 0.032768) */
|
|
int32_t r;
|
|
dt >>= 5;
|
|
r = dt;
|
|
dt >>= 4;
|
|
r += dt;
|
|
dt >>= 2;
|
|
r -= dt;
|
|
dt >>= 3;
|
|
r += dt;
|
|
return r;
|
|
}
|
|
|
|
uint8_t axradio_byteconv(uint8_t b)
|
|
{
|
|
return b;
|
|
}
|
|
|
|
|
|
void axradio_byteconv_buffer(uint8_t *buf __attribute__((unused)), uint16_t buflen __attribute__((unused)))
|
|
{
|
|
}
|
|
|
|
uint16_t axradio_framing_check_crc(uint8_t *pkt, uint16_t cnt)
|
|
{
|
|
if (crc_crc16(pkt, cnt, 0xFFFF) != 0xB001)
|
|
return 0;
|
|
return cnt;
|
|
}
|
|
|
|
uint16_t axradio_framing_append_crc(uint8_t *pkt, uint16_t cnt)
|
|
{
|
|
uint16_t s = 0xFFFF;
|
|
s = crc_crc16(pkt, cnt, s);
|
|
pkt += cnt;
|
|
*pkt++ = ~(uint8_t)(s);
|
|
*pkt++ = ~(uint8_t)(s >> 8);
|
|
return cnt + 2;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// physical layer
|
|
const uint8_t axradio_phy_pn9 = 0;
|
|
const uint8_t axradio_phy_nrchannels = 1;
|
|
const uint32_t axradio_phy_chanfreq[1] = { 0x1b34cccd };
|
|
const uint8_t axradio_phy_chanpllrnginit[1] = { 0x0a };
|
|
const uint8_t axradio_phy_chanvcoiinit[1] = { 0x99 };
|
|
uint8_t axradio_phy_chanpllrng[1];
|
|
uint8_t axradio_phy_chanvcoi[1];
|
|
const uint8_t axradio_phy_vcocalib = 0;
|
|
const int32_t axradio_phy_maxfreqoffset = 27387;
|
|
const int8_t axradio_phy_rssioffset = 64;
|
|
// axradio_phy_rssioffset is added to AX5043_RSSIREFERENCE and subtracted from chip RSSI value to prevent overflows (8bit RSSI only goes down to -128)
|
|
// axradio_phy_rssioffset is also added to AX5043_RSSIABSTHR
|
|
const int8_t axradio_phy_rssireference = (int8_t)(0xF8 + 64);
|
|
const int8_t axradio_phy_channelbusy = -90 + 64;
|
|
const uint16_t axradio_phy_cs_period = 7; // timer0 units, 10ms
|
|
const uint8_t axradio_phy_cs_enabled = 0;
|
|
const uint8_t axradio_phy_lbt_retries = 0;
|
|
const uint8_t axradio_phy_lbt_forcetx = 0;
|
|
const uint16_t axradio_phy_preamble_wor_longlen = 2; // wor_longlen + wor_len totals to 240.0ms plus 112bits
|
|
const uint16_t axradio_phy_preamble_wor_len = 0; // 176; No preamble for CW
|
|
const uint16_t axradio_phy_preamble_longlen = 0;
|
|
const uint16_t axradio_phy_preamble_len = 0; // 112; No preamble for CW
|
|
const uint8_t axradio_phy_preamble_byte = 0x00; // 0x7e; No preamble for XW
|
|
const uint8_t axradio_phy_preamble_flags = 0x38;
|
|
const uint8_t axradio_phy_preamble_appendbits = 0;
|
|
const uint8_t axradio_phy_preamble_appendpattern = 0x00;
|
|
|
|
//framing
|
|
const uint8_t axradio_framing_maclen = 1;
|
|
const uint8_t axradio_framing_addrlen = 0;
|
|
const uint8_t axradio_framing_destaddrpos = 0;
|
|
const uint8_t axradio_framing_sourceaddrpos = 0xff;
|
|
const uint8_t axradio_framing_lenpos = 0;
|
|
const uint8_t axradio_framing_lenoffs = 0;
|
|
const uint8_t axradio_framing_lenmask = 0xff;
|
|
const uint8_t axradio_framing_swcrclen = 0;
|
|
|
|
const uint8_t axradio_framing_synclen = 32;
|
|
const uint8_t axradio_framing_syncword[] = { 0xcc, 0xaa, 0xcc, 0xaa};
|
|
const uint8_t axradio_framing_syncflags = 0x18;
|
|
const uint8_t axradio_framing_enable_sfdcallback = 0;
|
|
|
|
const uint32_t axradio_framing_ack_timeout = 65; // 98.9ms in wtimer0 units (640Hz)
|
|
const uint32_t axradio_framing_ack_delay = 313; // 1.0ms in wtimer1 units (20MHz/64)
|
|
const uint8_t axradio_framing_ack_retransmissions = 0;
|
|
const uint8_t axradio_framing_ack_seqnrpos = 0xff;
|
|
|
|
const uint8_t axradio_framing_minpayloadlen = 0; // must be set to 1 if the payload directly follows the destination address, and a CRC is configured
|
|
//WOR
|
|
const uint16_t axradio_wor_period = 128;
|
|
|
|
// synchronous mode
|
|
const uint32_t axradio_sync_period = 32768; // ACTUALLY FREQ, NOT PERIOD!
|
|
const uint32_t axradio_sync_xoscstartup = 49;
|
|
const uint32_t axradio_sync_slave_syncwindow = 98304; // 3.000s
|
|
const uint32_t axradio_sync_slave_initialsyncwindow = 5898240; //180.000s
|
|
const uint32_t axradio_sync_slave_syncpause = 19660800; // 600.000s
|
|
const int16_t axradio_sync_slave_maxperiod = 2020; // in (2^SYNC_K1) * wtimer0 units
|
|
const uint8_t axradio_sync_slave_resyncloss = 11; // resyncloss is one more than the number of missed packets to cause a resync
|
|
// window 0 is the first window after synchronisation
|
|
// window 1 is the window normally used when there are no lost packets
|
|
// window 2 is used after one packet is lost, etc
|
|
const uint8_t axradio_sync_slave_nrrx = 3;
|
|
const uint32_t axradio_sync_slave_rxadvance[] = { 1833, 1796, 1874 };// 55.918ms, 54.788ms, 57.167ms
|
|
const uint32_t axradio_sync_slave_rxwindow[] = { 1847, 1773, 1929 }; // 56.346ms, 54.086ms, 58.844ms
|
|
const uint32_t axradio_sync_slave_rxtimeout = 3032; // 92.5ms, maximum duration of a packet
|