450 #include "pins_arduino.h"
459 #define RF22_NUM_INTERRUPTS 3
462 #define RF22_SPI_WRITE_MASK 0x80
470 #ifndef RF22_MAX_MESSAGE_LEN
472 #define RF22_MAX_MESSAGE_LEN 50
476 #define RF22_FIFO_SIZE 64
479 #define RF22_MODE_IDLE 0
480 #define RF22_MODE_RX 1
481 #define RF22_MODE_TX 2
484 #define RF22_TXFFAEM_THRESHOLD 4
485 #define RF22_RXFFAFULL_THRESHOLD 55
488 #define RF22_DEFAULT_NODE_ADDRESS 0
491 #define RF22_BROADCAST_ADDRESS 0xff
494 #define RF22_NUM_MODEM_CONFIG_REGS 18
497 #define RF22_REG_00_DEVICE_TYPE 0x00
498 #define RF22_REG_01_VERSION_CODE 0x01
499 #define RF22_REG_02_DEVICE_STATUS 0x02
500 #define RF22_REG_03_INTERRUPT_STATUS1 0x03
501 #define RF22_REG_04_INTERRUPT_STATUS2 0x04
502 #define RF22_REG_05_INTERRUPT_ENABLE1 0x05
503 #define RF22_REG_06_INTERRUPT_ENABLE2 0x06
504 #define RF22_REG_07_OPERATING_MODE1 0x07
505 #define RF22_REG_08_OPERATING_MODE2 0x08
506 #define RF22_REG_09_OSCILLATOR_LOAD_CAPACITANCE 0x09
507 #define RF22_REG_0A_UC_OUTPUT_CLOCK 0x0a
508 #define RF22_REG_0B_GPIO_CONFIGURATION0 0x0b
509 #define RF22_REG_0C_GPIO_CONFIGURATION1 0x0c
510 #define RF22_REG_0D_GPIO_CONFIGURATION2 0x0d
511 #define RF22_REG_0E_IO_PORT_CONFIGURATION 0x0e
512 #define RF22_REG_0F_ADC_CONFIGURATION 0x0f
513 #define RF22_REG_10_ADC_SENSOR_AMP_OFFSET 0x10
514 #define RF22_REG_11_ADC_VALUE 0x11
515 #define RF22_REG_12_TEMPERATURE_SENSOR_CALIBRATION 0x12
516 #define RF22_REG_13_TEMPERATURE_VALUE_OFFSET 0x13
517 #define RF22_REG_14_WAKEUP_TIMER_PERIOD1 0x14
518 #define RF22_REG_15_WAKEUP_TIMER_PERIOD2 0x15
519 #define RF22_REG_16_WAKEUP_TIMER_PERIOD3 0x16
520 #define RF22_REG_17_WAKEUP_TIMER_VALUE1 0x17
521 #define RF22_REG_18_WAKEUP_TIMER_VALUE2 0x18
522 #define RF22_REG_19_LDC_MODE_DURATION 0x19
523 #define RF22_REG_1A_LOW_BATTERY_DETECTOR_THRESHOLD 0x1a
524 #define RF22_REG_1B_BATTERY_VOLTAGE_LEVEL 0x1b
525 #define RF22_REG_1C_IF_FILTER_BANDWIDTH 0x1c
526 #define RF22_REG_1D_AFC_LOOP_GEARSHIFT_OVERRIDE 0x1d
527 #define RF22_REG_1E_AFC_TIMING_CONTROL 0x1e
528 #define RF22_REG_1F_CLOCK_RECOVERY_GEARSHIFT_OVERRIDE 0x1f
529 #define RF22_REG_20_CLOCK_RECOVERY_OVERSAMPLING_RATE 0x20
530 #define RF22_REG_21_CLOCK_RECOVERY_OFFSET2 0x21
531 #define RF22_REG_22_CLOCK_RECOVERY_OFFSET1 0x22
532 #define RF22_REG_23_CLOCK_RECOVERY_OFFSET0 0x23
533 #define RF22_REG_24_CLOCK_RECOVERY_TIMING_LOOP_GAIN1 0x24
534 #define RF22_REG_25_CLOCK_RECOVERY_TIMING_LOOP_GAIN0 0x25
535 #define RF22_REG_26_RSSI 0x26
536 #define RF22_REG_27_RSSI_THRESHOLD 0x27
537 #define RF22_REG_28_ANTENNA_DIVERSITY1 0x28
538 #define RF22_REG_29_ANTENNA_DIVERSITY2 0x29
539 #define RF22_REG_2A_AFC_LIMITER 0x2a
540 #define RF22_REG_2B_AFC_CORRECTION_READ 0x2b
541 #define RF22_REG_2C_OOK_COUNTER_VALUE_1 0x2c
542 #define RF22_REG_2D_OOK_COUNTER_VALUE_2 0x2d
543 #define RF22_REG_2E_SLICER_PEAK_HOLD 0x2e
544 #define RF22_REG_30_DATA_ACCESS_CONTROL 0x30
545 #define RF22_REG_31_EZMAC_STATUS 0x31
546 #define RF22_REG_32_HEADER_CONTROL1 0x32
547 #define RF22_REG_33_HEADER_CONTROL2 0x33
548 #define RF22_REG_34_PREAMBLE_LENGTH 0x34
549 #define RF22_REG_35_PREAMBLE_DETECTION_CONTROL1 0x35
550 #define RF22_REG_36_SYNC_WORD3 0x36
551 #define RF22_REG_37_SYNC_WORD2 0x37
552 #define RF22_REG_38_SYNC_WORD1 0x38
553 #define RF22_REG_39_SYNC_WORD0 0x39
554 #define RF22_REG_3A_TRANSMIT_HEADER3 0x3a
555 #define RF22_REG_3B_TRANSMIT_HEADER2 0x3b
556 #define RF22_REG_3C_TRANSMIT_HEADER1 0x3c
557 #define RF22_REG_3D_TRANSMIT_HEADER0 0x3d
558 #define RF22_REG_3E_PACKET_LENGTH 0x3e
559 #define RF22_REG_3F_CHECK_HEADER3 0x3f
560 #define RF22_REG_40_CHECK_HEADER2 0x40
561 #define RF22_REG_41_CHECK_HEADER1 0x41
562 #define RF22_REG_42_CHECK_HEADER0 0x42
563 #define RF22_REG_43_HEADER_ENABLE3 0x43
564 #define RF22_REG_44_HEADER_ENABLE2 0x44
565 #define RF22_REG_45_HEADER_ENABLE1 0x45
566 #define RF22_REG_46_HEADER_ENABLE0 0x46
567 #define RF22_REG_47_RECEIVED_HEADER3 0x47
568 #define RF22_REG_48_RECEIVED_HEADER2 0x48
569 #define RF22_REG_49_RECEIVED_HEADER1 0x49
570 #define RF22_REG_4A_RECEIVED_HEADER0 0x4a
571 #define RF22_REG_4B_RECEIVED_PACKET_LENGTH 0x4b
572 #define RF22_REG_50_ANALOG_TEST_BUS_SELECT 0x50
573 #define RF22_REG_51_DIGITAL_TEST_BUS_SELECT 0x51
574 #define RF22_REG_52_TX_RAMP_CONTROL 0x52
575 #define RF22_REG_53_PLL_TUNE_TIME 0x53
576 #define RF22_REG_55_CALIBRATION_CONTROL 0x55
577 #define RF22_REG_56_MODEM_TEST 0x56
578 #define RF22_REG_57_CHARGE_PUMP_TEST 0x57
579 #define RF22_REG_58_CHARGE_PUMP_CURRENT_TRIMMING 0x58
580 #define RF22_REG_59_DIVIDER_CURRENT_TRIMMING 0x59
581 #define RF22_REG_5A_VCO_CURRENT_TRIMMING 0x5a
582 #define RF22_REG_5B_VCO_CALIBRATION 0x5b
583 #define RF22_REG_5C_SYNTHESIZER_TEST 0x5c
584 #define RF22_REG_5D_BLOCK_ENABLE_OVERRIDE1 0x5d
585 #define RF22_REG_5E_BLOCK_ENABLE_OVERRIDE2 0x5e
586 #define RF22_REG_5F_BLOCK_ENABLE_OVERRIDE3 0x5f
587 #define RF22_REG_60_CHANNEL_FILTER_COEFFICIENT_ADDRESS 0x60
588 #define RF22_REG_61_CHANNEL_FILTER_COEFFICIENT_VALUE 0x61
589 #define RF22_REG_62_CRYSTAL_OSCILLATOR_POR_CONTROL 0x62
590 #define RF22_REG_63_RC_OSCILLATOR_COARSE_CALIBRATION 0x63
591 #define RF22_REG_64_RC_OSCILLATOR_FINE_CALIBRATION 0x64
592 #define RF22_REG_65_LDO_CONTROL_OVERRIDE 0x65
593 #define RF22_REG_66_LDO_LEVEL_SETTINGS 0x66
594 #define RF22_REG_67_DELTA_SIGMA_ADC_TUNING1 0x67
595 #define RF22_REG_68_DELTA_SIGMA_ADC_TUNING2 0x68
596 #define RF22_REG_69_AGC_OVERRIDE1 0x69
597 #define RF22_REG_6A_AGC_OVERRIDE2 0x6a
598 #define RF22_REG_6B_GFSK_FIR_FILTER_COEFFICIENT_ADDRESS 0x6b
599 #define RF22_REG_6C_GFSK_FIR_FILTER_COEFFICIENT_VALUE 0x6c
600 #define RF22_REG_6D_TX_POWER 0x6d
601 #define RF22_REG_6E_TX_DATA_RATE1 0x6e
602 #define RF22_REG_6F_TX_DATA_RATE0 0x6f
603 #define RF22_REG_70_MODULATION_CONTROL1 0x70
604 #define RF22_REG_71_MODULATION_CONTROL2 0x71
605 #define RF22_REG_72_FREQUENCY_DEVIATION 0x72
606 #define RF22_REG_73_FREQUENCY_OFFSET1 0x73
607 #define RF22_REG_74_FREQUENCY_OFFSET2 0x74
608 #define RF22_REG_75_FREQUENCY_BAND_SELECT 0x75
609 #define RF22_REG_76_NOMINAL_CARRIER_FREQUENCY1 0x76
610 #define RF22_REG_77_NOMINAL_CARRIER_FREQUENCY0 0x77
611 #define RF22_REG_79_FREQUENCY_HOPPING_CHANNEL_SELECT 0x79
612 #define RF22_REG_7A_FREQUENCY_HOPPING_STEP_SIZE 0x7a
613 #define RF22_REG_7C_TX_FIFO_CONTROL1 0x7c
614 #define RF22_REG_7D_TX_FIFO_CONTROL2 0x7d
615 #define RF22_REG_7E_RX_FIFO_CONTROL 0x7e
616 #define RF22_REG_7F_FIFO_ACCESS 0x7f
621 #define RF22_DEVICE_TYPE_RX_TRX 0x08
622 #define RF22_DEVICE_TYPE_TX 0x07
625 #define RF22_FFOVL 0x80
626 #define RF22_FFUNFL 0x40
627 #define RF22_RXFFEM 0x20
628 #define RF22_HEADERR 0x10
629 #define RF22_FREQERR 0x08
630 #define RF22_LOCKDET 0x04
631 #define RF22_CPS 0x03
632 #define RF22_CPS_IDLE 0x00
633 #define RF22_CPS_RX 0x01
634 #define RF22_CPS_TX 0x10
637 #define RF22_IFFERROR 0x80
638 #define RF22_ITXFFAFULL 0x40
639 #define RF22_ITXFFAEM 0x20
640 #define RF22_IRXFFAFULL 0x10
641 #define RF22_IEXT 0x08
642 #define RF22_IPKSENT 0x04
643 #define RF22_IPKVALID 0x02
644 #define RF22_ICRCERROR 0x01
647 #define RF22_ISWDET 0x80
648 #define RF22_IPREAVAL 0x40
649 #define RF22_IPREAINVAL 0x20
650 #define RF22_IRSSI 0x10
651 #define RF22_IWUT 0x08
652 #define RF22_ILBD 0x04
653 #define RF22_ICHIPRDY 0x02
654 #define RF22_IPOR 0x01
657 #define RF22_ENFFERR 0x80
658 #define RF22_ENTXFFAFULL 0x40
659 #define RF22_ENTXFFAEM 0x20
660 #define RF22_ENRXFFAFULL 0x10
661 #define RF22_ENEXT 0x08
662 #define RF22_ENPKSENT 0x04
663 #define RF22_ENPKVALID 0x02
664 #define RF22_ENCRCERROR 0x01
667 #define RF22_ENSWDET 0x80
668 #define RF22_ENPREAVAL 0x40
669 #define RF22_ENPREAINVAL 0x20
670 #define RF22_ENRSSI 0x10
671 #define RF22_ENWUT 0x08
672 #define RF22_ENLBDI 0x04
673 #define RF22_ENCHIPRDY 0x02
674 #define RF22_ENPOR 0x01
677 #define RF22_SWRES 0x80
678 #define RF22_ENLBD 0x40
679 #define RF22_ENWT 0x20
680 #define RF22_X32KSEL 0x10
681 #define RF22_TXON 0x08
682 #define RF22_RXON 0x04
683 #define RF22_PLLON 0x02
684 #define RF22_XTON 0x01
687 #define RF22_ANTDIV 0xc0
688 #define RF22_RXMPK 0x10
689 #define RF22_AUTOTX 0x08
690 #define RF22_ENLDM 0x04
691 #define RF22_FFCLRRX 0x02
692 #define RF22_FFCLRTX 0x01
695 #define RF22_ADCSTART 0x80
696 #define RF22_ADCDONE 0x80
697 #define RF22_ADCSEL 0x70
698 #define RF22_ADCSEL_INTERNAL_TEMPERATURE_SENSOR 0x00
699 #define RF22_ADCSEL_GPIO0_SINGLE_ENDED 0x10
700 #define RF22_ADCSEL_GPIO1_SINGLE_ENDED 0x20
701 #define RF22_ADCSEL_GPIO2_SINGLE_ENDED 0x30
702 #define RF22_ADCSEL_GPIO0_GPIO1_DIFFERENTIAL 0x40
703 #define RF22_ADCSEL_GPIO1_GPIO2_DIFFERENTIAL 0x50
704 #define RF22_ADCSEL_GPIO0_GPIO2_DIFFERENTIAL 0x60
705 #define RF22_ADCSEL_GND 0x70
706 #define RF22_ADCREF 0x0c
707 #define RF22_ADCREF_BANDGAP_VOLTAGE 0x00
708 #define RF22_ADCREF_VDD_ON_3 0x08
709 #define RF22_ADCREF_VDD_ON_2 0x0c
710 #define RF22_ADCGAIN 0x03
713 #define RF22_ADCOFFS 0x0f
716 #define RF22_TSRANGE 0xc0
717 #define RF22_TSRANGE_M64_64C 0x00
718 #define RF22_TSRANGE_M64_192C 0x40
719 #define RF22_TSRANGE_0_128C 0x80
720 #define RF22_TSRANGE_M40_216F 0xc0
721 #define RF22_ENTSOFFS 0x20
722 #define RF22_ENTSTRIM 0x10
723 #define RF22_TSTRIM 0x0f
726 #define RF22_WTR 0x3c
727 #define RF22_WTD 0x03
730 #define RF22_AFBCD 0x80
731 #define RF22_ENAFC 0x40
732 #define RF22_AFCGEARH 0x38
733 #define RF22_AFCGEARL 0x07
736 #define RF22_SWAIT_TIMER 0xc0
737 #define RF22_SHWAIT 0x38
738 #define RF22_ANWAIT 0x07
741 #define RF22_ENPACRX 0x80
742 #define RF22_MSBFRST 0x00
743 #define RF22_LSBFRST 0x40
744 #define RF22_CRCHDRS 0x00
745 #define RF22_CRCDONLY 0x20
746 #define RF22_SKIP2PH 0x10
747 #define RF22_ENPACTX 0x08
748 #define RF22_ENCRC 0x04
749 #define RF22_CRC 0x03
750 #define RF22_CRC_CCITT 0x00
751 #define RF22_CRC_CRC_16_IBM 0x01
752 #define RF22_CRC_IEC_16 0x02
753 #define RF22_CRC_BIACHEVA 0x03
756 #define RF22_BCEN 0xf0
757 #define RF22_BCEN_NONE 0x00
758 #define RF22_BCEN_HEADER0 0x10
759 #define RF22_BCEN_HEADER1 0x20
760 #define RF22_BCEN_HEADER2 0x40
761 #define RF22_BCEN_HEADER3 0x80
762 #define RF22_HDCH 0x0f
763 #define RF22_HDCH_NONE 0x00
764 #define RF22_HDCH_HEADER0 0x01
765 #define RF22_HDCH_HEADER1 0x02
766 #define RF22_HDCH_HEADER2 0x04
767 #define RF22_HDCH_HEADER3 0x08
770 #define RF22_HDLEN 0x70
771 #define RF22_HDLEN_0 0x00
772 #define RF22_HDLEN_1 0x10
773 #define RF22_HDLEN_2 0x20
774 #define RF22_HDLEN_3 0x30
775 #define RF22_HDLEN_4 0x40
776 #define RF22_VARPKLEN 0x00
777 #define RF22_FIXPKLEN 0x08
778 #define RF22_SYNCLEN 0x06
779 #define RF22_SYNCLEN_1 0x00
780 #define RF22_SYNCLEN_2 0x02
781 #define RF22_SYNCLEN_3 0x04
782 #define RF22_SYNCLEN_4 0x06
783 #define RF22_PREALEN8 0x01
786 #define RF22_TXPOW 0x07
787 #define RF22_TXPOW_4X31 0x08 // Not used in RFM22B
788 #define RF22_TXPOW_1DBM 0x00
789 #define RF22_TXPOW_2DBM 0x01
790 #define RF22_TXPOW_5DBM 0x02
791 #define RF22_TXPOW_8DBM 0x03
792 #define RF22_TXPOW_11DBM 0x04
793 #define RF22_TXPOW_14DBM 0x05 // +28dBm on RF23bp
794 #define RF22_TXPOW_17DBM 0x06 // +29dBm on RF23bp
795 #define RF22_TXPOW_20DBM 0x07 // +30dBm on RF23bp
797 #define RF22_TXPOW_LNA_SW 0x08
800 #define RF22_TRCLK 0xc0
801 #define RF22_TRCLK_NONE 0x00
802 #define RF22_TRCLK_GPIO 0x40
803 #define RF22_TRCLK_SDO 0x80
804 #define RF22_TRCLK_NIRQ 0xc0
805 #define RF22_DTMOD 0x30
806 #define RF22_DTMOD_DIRECT_GPIO 0x00
807 #define RF22_DTMOD_DIRECT_SDI 0x10
808 #define RF22_DTMOD_FIFO 0x20
809 #define RF22_DTMOD_PN9 0x30
810 #define RF22_ENINV 0x08
811 #define RF22_FD8 0x04
812 #define RF22_MODTYP 0x30
813 #define RF22_MODTYP_UNMODULATED 0x00
814 #define RF22_MODTYP_OOK 0x01
815 #define RF22_MODTYP_FSK 0x02
816 #define RF22_MODTYP_GFSK 0x03
820 #define RF22_SBSEL 0x40
821 #define RF22_HBSEL 0x20
825 #define RF22_HAVE_SERIAL
827 #include <GenericSPI.h>
828 #include <HardwareSPI.h>
941 RF22(uint8_t slaveSelectPin = SS, uint8_t interrupt = 0,
GenericSPIClass *spi = &Hardware_spi);
967 void spiWrite(uint8_t reg, uint8_t val);
973 void spiBurstRead(uint8_t reg, uint8_t* dest, uint8_t len);
979 void spiBurstWrite(uint8_t reg,
const uint8_t* src, uint8_t len);
993 uint8_t
adcRead(uint8_t adcsel = RF22_ADCSEL_INTERNAL_TEMPERATURE_SENSOR,
994 uint8_t adcref = RF22_ADCREF_BANDGAP_VOLTAGE,
996 uint8_t adcoffs = 0);
1003 uint8_t
temperatureRead(uint8_t tsrange = RF22_TSRANGE_M64_64C, uint8_t tvoffs = 0);
1015 void setWutPeriod(uint16_t wtm, uint8_t wtr = 0, uint8_t wtd = 0);
1025 boolean setFrequency(
float centre,
float afcPullInRange = 0.05);
1113 boolean recv(uint8_t* buf, uint8_t* len);
1121 boolean send(
const uint8_t* data, uint8_t len);
1165 static void printBuffer(
const char* prompt,
const uint8_t* buf, uint8_t len);
1183 void setSyncWords(
const uint8_t* syncWords, uint8_t len);
1209 boolean fillTxBuf(
const uint8_t* data, uint8_t len);
1215 boolean appendTxBuf(
const uint8_t* data, uint8_t len);
1288 volatile uint8_t _mode;
1291 uint8_t _slaveSelectPin;
1293 uint8_t _deviceType;
1299 volatile uint8_t _bufLen;
1300 uint8_t _buf[RF22_MAX_MESSAGE_LEN];
1302 volatile boolean _rxBufValid;
1304 volatile uint8_t _txBufSentIndex;
1306 volatile uint16_t _rxBad;
1307 volatile uint16_t _rxGood;
1308 volatile uint16_t _txGood;
1310 volatile uint8_t _lastRssi;
uint8_t reg_6f
Value for register RF22_REG_6F_TX_DATA_RATE0.
Definition: RF22.h:877
void clearRxBuf()
Definition: RF22.cpp:577
void handleInterrupt()
Definition: RF22.cpp:196
boolean setFHStepSize(uint8_t fhs)
Definition: RF22.cpp:469
FSK, No Manchester, Rb = 2.4kbs, Fd = 36kHz.
Definition: RF22.h:893
uint8_t headerTo()
Definition: RF22.cpp:799
void setHeaderTo(uint8_t to)
Definition: RF22.cpp:779
FSK, No Manchester, Rb = 4.8kbs, Fd = 45kHz.
Definition: RF22.h:894
CRCPolynomial
Defines the available choices for CRC Types of permitted CRC polynomials, to be passed to setCRCPolyn...
Definition: RF22.h:925
uint8_t statusRead()
Definition: RF22.cpp:381
uint8_t reg_70
Value for register RF22_REG_70_MODULATION_CONTROL1.
Definition: RF22.h:878
uint8_t reg_6e
Value for register RF22_REG_6E_TX_DATA_RATE1.
Definition: RF22.h:876
OOK, No Manchester, Rb = 9.6kbs, Rx Bandwidth = 335kHz.
Definition: RF22.h:915
boolean setFrequency(float centre, float afcPullInRange=0.05)
Definition: RF22.cpp:431
uint8_t temperatureRead(uint8_t tsrange=RF22_TSRANGE_M64_64C, uint8_t tvoffs=0)
Definition: RF22.cpp:403
void setHeaderFlags(uint8_t flags)
Definition: RF22.cpp:794
uint8_t reg_1f
Value for register RF22_REG_1F_CLOCK_RECOVERY_GEARSHIFT_OVERRIDE.
Definition: RF22.h:864
uint8_t lastRssi()
Definition: RF22.cpp:819
boolean fillTxBuf(const uint8_t *data, uint8_t len)
Definition: RF22.cpp:700
FSK, No Manchester, Rb = 2kbs, Fd = 5kHz, PN9 random modulation for testing.
Definition: RF22.h:890
GFSK, No Manchester, Rb = 38.4kbs, Fd = 19.6kHz.
Definition: RF22.h:908
Biacheva.
Definition: RF22.h:930
boolean recv(uint8_t *buf, uint8_t *len)
Definition: RF22.cpp:647
void sendNextFragment()
Definition: RF22.cpp:721
void setHeaderId(uint8_t id)
Definition: RF22.cpp:789
bool waitAvailableTimeout(uint16_t timeout)
Definition: RF22.cpp:602
uint8_t reg_20
Value for register RF22_REG_20_CLOCK_RECOVERY_OVERSAMPLING_RATE.
Definition: RF22.h:865
RF22(uint8_t slaveSelectPin=SS, uint8_t interrupt=0, GenericSPIClass *spi=&Hardware_spi)
Definition: RF22.cpp:69
uint8_t reg_72
Value for register RF22_REG_72_FREQUENCY_DEVIATION.
Definition: RF22.h:880
void setModemRegisters(const ModemConfig *config)
Definition: RF22.cpp:540
uint8_t reg_2e
Value for register RF22_REG_2E_SLICER_PEAK_HOLD.
Definition: RF22.h:873
uint8_t reg_58
Value for register RF22_REG_58_CHARGE_PUMP_CURRENT_TRIMMING.
Definition: RF22.h:874
void setWutPeriod(uint16_t wtm, uint8_t wtr=0, uint8_t wtd=0)
Definition: RF22.cpp:418
boolean send(const uint8_t *data, uint8_t len)
Definition: RF22.cpp:686
GFSK, No Manchester, Rb = 2kbs, Fd = 5kHz.
Definition: RF22.h:903
OOK, No Manchester, Rb = 38.4kbs, Rx Bandwidth = 335kHz.
Definition: RF22.h:917
uint8_t reg_71
Value for register RF22_REG_71_MODULATION_CONTROL2.
Definition: RF22.h:879
void setPromiscuous(boolean promiscuous)
Definition: RF22.cpp:824
boolean setFHChannel(uint8_t fhch)
Definition: RF22.cpp:477
void setSyncWords(const uint8_t *syncWords, uint8_t len)
Definition: RF22.cpp:572
void setPreambleLength(uint8_t nibbles)
Definition: RF22.cpp:566
CCITT.
Definition: RF22.h:927
void reset()
Definition: RF22.cpp:329
Unmodulated carrier for testing.
Definition: RF22.h:889
void resetTxFifo()
Definition: RF22.cpp:763
void setMode(uint8_t mode)
Definition: RF22.cpp:493
void clearTxBuf()
Definition: RF22.cpp:662
GFSK, No Manchester, Rb = 4.8kbs, Fd = 45kHz.
Definition: RF22.h:905
boolean init()
Definition: RF22.cpp:82
void spiWrite(uint8_t reg, uint8_t val)
Definition: RF22.cpp:349
uint8_t reg_2d
Value for register RF22_REG_2D_OOK_COUNTER_VALUE_2.
Definition: RF22.h:872
OOK, No Manchester, Rb = 1.2kbs, Rx Bandwidth = 75kHz.
Definition: RF22.h:912
void waitAvailable()
Definition: RF22.cpp:593
boolean appendTxBuf(const uint8_t *data, uint8_t len)
Definition: RF22.cpp:708
Base class for SPI interfaces.
Definition: GenericSPI.h:28
boolean available()
Definition: RF22.cpp:585
uint8_t reg_23
Value for register RF22_REG_23_CLOCK_RECOVERY_OFFSET0.
Definition: RF22.h:868
void setTxPower(uint8_t power)
Definition: RF22.cpp:534
void restartTransmit()
Definition: RF22.cpp:678
IEC-16.
Definition: RF22.h:929
uint8_t reg_24
Value for register RF22_REG_24_CLOCK_RECOVERY_TIMING_LOOP_GAIN1.
Definition: RF22.h:869
GFSK, No Manchester, Rb = 125kbs, Fd = 125kHz.
Definition: RF22.h:910
uint8_t reg_2c
Value for register RF22_REG_2C_OOK_COUNTER_VALUE_1.
Definition: RF22.h:871
FSK, No Manchester, Rb = 38.4kbs, Fd = 19.6kHz.
Definition: RF22.h:897
OOK, No Manchester, Rb = 19.2kbs, Rx Bandwidth = 335kHz.
Definition: RF22.h:916
OOK, No Manchester, Rb = 40kbs, Rx Bandwidth = 335kHz.
Definition: RF22.h:918
void resetRxFifo()
Definition: RF22.cpp:756
void setModeTx()
Definition: RF22.cpp:516
uint8_t ezmacStatusRead()
Definition: RF22.cpp:488
static void isr0()
Low level interrupt service routine for RF22 connected to interrupt 0.
Definition: RF22.cpp:313
void waitPacketSent()
Definition: RF22.cpp:611
GFSK, No Manchester, Rb = 2.4kbs, Fd = 36kHz.
Definition: RF22.h:904
FSK, No Manchester, Rb = 57.6kbs, Fd = 28.8kHz.
Definition: RF22.h:898
virtual void handleWakeupTimerInterrupt()
Definition: RF22.cpp:775
uint8_t rssiRead()
Definition: RF22.cpp:483
uint8_t headerFrom()
Definition: RF22.cpp:804
uint8_t reg_1c
Value for register RF22_REG_1C_IF_FILTER_BANDWIDTH.
Definition: RF22.h:863
CRC-16 (IBM) The default used by RF22 library.
Definition: RF22.h:928
GFSK, No Manchester, Rb = 19.2kbs, Fd = 9.6kHz.
Definition: RF22.h:907
OOK, No Manchester, Rb = 4.8kbs, Rx Bandwidth = 335kHz.
Definition: RF22.h:914
uint8_t reg_69
Value for register RF22_REG_69_AGC_OVERRIDE1.
Definition: RF22.h:875
FSK, No Manchester, Rb = 512bs, Fd = 4.5kHz, for POCSAG compatibility.
Definition: RF22.h:901
void spiBurstRead(uint8_t reg, uint8_t *dest, uint8_t len)
Definition: RF22.cpp:359
void resetFifos()
Definition: RF22.cpp:749
void setModeRx()
Definition: RF22.cpp:507
boolean setModemConfig(ModemConfigChoice index)
Definition: RF22.cpp:553
void startTransmit()
Definition: RF22.cpp:670
static void isr1()
Low level interrupt service routine for RF22 connected to interrupt 1.
Definition: RF22.cpp:318
OOK, No Manchester, Rb = 2.4kbs, Rx Bandwidth = 335kHz.
Definition: RF22.h:913
Send and receive unaddressed, unreliable datagrams.
Definition: RF22.h:848
Defines register values for a set of modem configuration registers.
Definition: RF22.h:861
uint8_t mode()
Definition: RF22.cpp:529
FSK, No Manchester, Rb = 512bs, Fd = 2.5kHz, for POCSAG compatibility.
Definition: RF22.h:900
uint8_t reg_22
Value for register RF22_REG_22_CLOCK_RECOVERY_OFFSET1.
Definition: RF22.h:867
FSK, No Manchester, Rb = 125kbs, Fd = 125kHz.
Definition: RF22.h:899
uint8_t spiRead(uint8_t reg)
Definition: RF22.cpp:336
FSK, No Manchester, Rb = 2kbs, Fd = 5kHz.
Definition: RF22.h:892
uint8_t headerId()
Definition: RF22.cpp:809
static RF22 * _RF22ForInterrupt[]
Array of instances connected to interrupts 0 and 1.
Definition: RF22.h:1286
virtual void handleExternalInterrupt()
Definition: RF22.cpp:770
FSK, No Manchester, Rb = 19.2kbs, Fd = 9.6kHz.
Definition: RF22.h:896
uint8_t reg_21
Value for register RF22_REG_21_CLOCK_RECOVERY_OFFSET2.
Definition: RF22.h:866
uint8_t reg_25
Value for register RF22_REG_25_CLOCK_RECOVERY_TIMING_LOOP_GAIN0.
Definition: RF22.h:870
GFSK, No Manchester, Rb = 9.6kbs, Fd = 45kHz.
Definition: RF22.h:906
static void isr2()
Low level interrupt service routine for RF22 connected to interrupt 1.
Definition: RF22.cpp:323
void setModeIdle()
Definition: RF22.cpp:498
boolean setCRCPolynomial(CRCPolynomial polynomial)
Definition: RF22.cpp:829
ModemConfigChoice
Definition: RF22.h:887
GFSK, No Manchester, Rb = 57.6kbs, Fd = 28.8kHz.
Definition: RF22.h:909
uint16_t wutRead()
Definition: RF22.cpp:410
uint8_t headerFlags()
Definition: RF22.cpp:814
uint8_t adcRead(uint8_t adcsel=RF22_ADCSEL_INTERNAL_TEMPERATURE_SENSOR, uint8_t adcref=RF22_ADCREF_BANDGAP_VOLTAGE, uint8_t adcgain=0, uint8_t adcoffs=0)
Definition: RF22.cpp:386
void spiBurstWrite(uint8_t reg, const uint8_t *src, uint8_t len)
Definition: RF22.cpp:370
void setHeaderFrom(uint8_t from)
Definition: RF22.cpp:784
void readNextFragment()
Definition: RF22.cpp:738
FSK, No Manchester, Rb = 9.6kbs, Fd = 45kHz.
Definition: RF22.h:895
static void printBuffer(const char *prompt, const uint8_t *buf, uint8_t len)
Definition: RF22.cpp:627