So Flutter can do WAY more than the current default firmware does. Lets talk about how to make it easy for you guys to do what you need in testing Flutter's capability. I don't want idiots to be able to turn off frequency hopping and cause interference, but there does need to be a straightforward way of doing it so we'll just have to slightly obscure it to prevent mischief. We can't stop someone who is determined to cause trouble.
I'll start by giving you some details on the default wireless behavior. Pulling from the header file in our source code, this is the default behavior:
// Modulation format = 2-GFSK
// RX filter BW = 50.505051
// Packet bit length = 0
// Device address = 0
// Carrier frequency = 915.000000
// Manchester enable = false
// Packet length mode = Variable
// Whitening = true
// Bit rate = 20 ksps
// Address config = Address checking, 0x00 is broadcast address.
// Symbol rate = 20 ksps
// Deviation = 12.5kHz
// Packet length = variable
Please see the datasheets here for more information:
We also hop frequencies every 40 milliseconds in a pseudorandom pattern defined by feeding a hash of the network name into a psuedo random number generator. More details are available in this PDF here:
There is an XML file of that graph in the same folder, and it can be edited at www.draw.io.
Currently we use a very simple master/slave relationship with one master per network. Channel 0 is the pairing channel, and the master sends out timing on that channel every time it loops around 50 channels (so every 2 seconds). Unsynchronized devices wait on the pairing channel and then hop with the master using the same hash and pseudorandom generator algorithm the master uses.
I should do a full write up on Flutter's behavior so look for that in the coming weeks. Please ask any questions you may have here!