Skip to content

Introduce a RFM69 compatibility mode for RFM12. #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open

Introduce a RFM69 compatibility mode for RFM12. #11

wants to merge 15 commits into from

Conversation

aanon4
Copy link

@aanon4 aanon4 commented Oct 18, 2013

To enable the RFM69 and RFM12 to talk to each other, a few things in
the RFM12 code need to be changed. These changes call into three
buckets:

1. Modify the payload structure to match that HW version in RFM69
2. Modity the checksum algorithm to match the HW version in RFM69
3. Tweak the radio parameters so they're compatible.

The compatibility mode is enabled by

        #define RF69_COMPAT 1

aanon4 and others added 15 commits October 18, 2013 13:56
    To enable the RFM69 and RFM12 to talk to each other, a few things in
    the RFM12 code need to be changed. These changes call into three
    buckets:

    1. Modify the payload structure to match that HW version in RFM69
    2. Modity the checksum algorithm to match the HW version in RFM69
    3. Tweak the radio parameters so they're compatible.

    The compatibility mode is enabled by

            #define RF69_COMPAT 1
Tested using RFM12B_Struct_node and Struct_receive (for RFM69)
Changed to enable ACKs in RFM69 compatibility mode
*radio.GetDataLen();  should be  radio.GetDataLen();
Changed variable access to accessor functions.
Changed wait for ACK from while{} to do{}while so that ACKReceived
always gets called at least once.
Updated RFM12B example sketches to use accessor functions
@elmicha
Copy link

elmicha commented Nov 15, 2015

You don't even need to edit RFM69.cpp, you can set the two values with RFM69::writeReg() after RFM69::initialize():

radio.writeReg(REG_BITRATEMSB, RF_BITRATEMSB_38323);
radio.writeReg(REG_BITRATELSB, RF_BITRATELSB_38323);

These constants are defined in RFM69registers.h, so you need to include it.

@RobWilks
Copy link

That's handy to know. I dislike having to manage many variants of the same library. Many thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants