Following is a list of registers located within the radio's RAM and EEPROM memory spaces:
Number of Ack response scans to make after transmitting an AckData packet. After the timeout, the radio resumes normal scans for incoming packets.
Number of transmission attempts to make before giving up when sending an AckData packet.
The BackOff mask adds randomness into AckData retries. Increasing this value is crucial in asynchronous systems where two radios could try talking to each other at the exact same time.
BackOff should be set to one of eight values: 0b00000000, 0b00000001, 0b00000011, 0b00000111, ... 0b11111111. This will add a random number (0 - BackOff) of ticks (16.4ms/tick) to the HoldOff delay.
BaudDiv is the baud rate divisor used to configure the radio's UART. Given a desired baud rate, you can calculate the divisor:
BaudDiv = ( 2,000,000 / Baud ) - 1
For 57.6k baud, use a BaudDiv of 34. For 9600 baud, use 207.
CalInit is the initials of the last technician to calibrate the radio.
Factory set RSSI calibration offset.
CalTS is a Linux-format timestamp of the last time CalOffset was updated. There is no real-time clock onboard the radio, so this field is not automatically updated. It is up to the calibration application to upload a new timestamp when a calibration is performed.
Frequency of each channel in multiples of 100kHz.
CntryCode is the radio's country code.
CryptSig is the encryption signature of the encryption key currently loaded in Flash. This signature is not automatically calculated by the radio and must be uploaded by the user application that generates the encryption key.
The radio's destination location code while in transparent mode. Formatted as:
struct LocnCode { uint8_t Group; uint8_t Addr; }
Where Group is 0-127 and Addr is 0-255.
Two groups to connect when Relay is set to 1. Both groups should be in the range 1-127.
Number of clock ticks (16.4ms/tick) to wait between transmission attempts of AckData packets.
JumpSeed is a random number seed used to calculate JumpTable.
JumpTable is a zero-based channel jump table. It is formatted so that each individual entry tells which channel is "next". For example, if the channel sequence starts with 120750, then:
JumpTable[0] = 19 JumpTable[19] = 6 JumpTable[6] = 49
Number of clock ticks (16.4ms/tick) after a transmission that two radios should "remain loyal" to each other. During the loyalty period, transmissions between the two radios are expedited, but transmissions with other radios are delayed.
Larger Loyalty values can increase communication rates between radios if you tend to send a lot of data packets to a single location. Smaller values (or zero) are better if you change radio targets frequently.
The minimum amount of time (in clock ticks of 64us/tick) that a radio will de-assert CTS#. This value can safely be set to zero when interrupts are not used to control hardware handshaking.
Non-zero values are important when connecting the radio to a PC, because PCs can lose serial data when too many serial interrupts are encountered.
The maximum time (in clock ticks of 16.4ms/tick) that a radio will wait before giving up on a missing sequence number. This value is ignored when you set SendInOrder to zero.
Next sequence number to use in transparent mode. It is important to be able to control the next sequence number when using the guaranteed-delivery mode.
For example, let's suppose you send a packet with sequence #0 to radio A, you switch tagets, and then some packets to radio B. If you were to switch back to radio A again, you will need to send a packet with sequence #1 next. Radio A is not aware of the packets you may have sent to radio B, and so it is still expecting the next packet in sequence.
Number of channels to use.
The maximum amount of time (in 10us increments) that a radio may transmit on a single channel before jumping to a new channel.
The number of times to repeat the transmission preamble when starting a new transmission:
Smaller numbers are faster, but they also increase the chance that the listener will miss the packet completely.
Number of channels to scan after a transmission before a new transmission can begin. Increasing this register puts gaps between transmissions and can decrease the chance of missing a NoAckData reply when you have transmissions that hog the bandwidth. Set to zero to maximize one-directional throughput.
SerNum is the radio's serial number. The device serial number is printed on a decal on the radio.
The radio's location code. Formatted as:
struct LocnCode { uint8_t Group; uint8_t Addr; }
Where Group is 1-127 and Addr is 1-255. Any packets received but not targetted at this location will be ignored.
The Stalemate counter is a watchdog. You should not need to adjust this register.
UpdateTS is a Linux-format timestamp of the last change made to EEPROM. There is no real-time clock onboard the radio, so this field is not automatically updated. It is up to the user application to upload a new timestamp when changes are made.
General options in bit fields:
Bits | Field | Description |
7 | DontAck |
0 = send Ack packets 1 = don't send Ack packets |
6 | AcceptUnEnc |
0 = discard unencrypted packets 1 = keep unencrypted packets |
5 | RelaysPrsnt |
0 = no relays are present in the system 1 = leave time for relays to retransmit packets |
4 | StartInCmd |
0 = start in transparent mode 1 = start in mixed-on mode |
3 | SendInOrder |
0 = do not enforce ordering 1 = keep packets in order |
2 | Relay |
0 = relaying disabled 1 = encrypt relaying between Groups |
1 | Encrypt |
0 = do not encrypt data packets before transmission 1 = encrypt packets |
0 | UseAcks |
0 = send NoAckData packets in transparent mode 1 = send AckData packets |
Serial port configuration in bit fields:
Bits | Field | Description |
7:6 | Reserved | Set to 00 |
5:4 | UPM |
00 = no parity 10 = even parity 11 = odd parity |
3 | USBS |
0 = 1 stop bit 1 = 2 stop bits |
2:1 | UCSZ |
00 = 5 bit data (transparent mode) 01 = 6 bit data (transparent mode) 10 = 7 bit data (transparent mode) 11 = 8 bit data (transparent mode) |
UserSpace is an undefined block of EEPROM. You may use this space as you wish in your user application.