Library for HopeRF RFM22 / RFM22B transceiver module ported to mbed. Original Software from Mike McCauley (mikem@open.com.au) . See http://www.open.com.au/mikem/arduino/RF22/

Dependents:   RF22_MAX_test_Send Geofence_receiver Geofence_sender Geofence_sender ... more

More Info about RFM22-modules like connecting and a demo-program see RF22-Notebook

RF22Datagram.cpp

Committer:
charly
Date:
2013-09-02
Revision:
9:4002a2c117cc
Parent:
5:0386600f3408

File content as of revision 9:4002a2c117cc:

// RF22Datagram.cpp
//
// Copyright (C) 2011 Mike McCauley
// $Id: RF22Datagram.cpp,v 1.3 2012/05/30 01:50:21 mikem Exp $
// ported to mbed by Karl Zweimueller

#include <RF22Datagram.h>
//#include <SPI.h>

RF22Datagram::RF22Datagram(uint8_t thisAddress, PinName slaveSelectPin , PinName mosi, PinName miso, PinName sclk, PinName interrupt ) 
    : RF22(slaveSelectPin , mosi, miso, sclk, interrupt )
{
    _thisAddress = thisAddress;
}

////////////////////////////////////////////////////////////////////
// Public methods
boolean RF22Datagram::init()
{
    boolean ret = this->RF22::init();
    if (ret)
    setThisAddress(_thisAddress);
    return ret;
}

void RF22Datagram::setThisAddress(uint8_t thisAddress)
{
    _thisAddress = thisAddress;
    // Check the TO header against RF22_DEFAULT_NODE_ADDRESS
    spiWrite(RF22_REG_3F_CHECK_HEADER3, _thisAddress);
    // Use this address in the transmitted FROM header
    setHeaderFrom(_thisAddress);
}

boolean RF22Datagram::sendto(uint8_t* buf, uint8_t len, uint8_t address)
{
    setHeaderTo(address);
    return send(buf, len);
}

boolean RF22Datagram::recvfrom(uint8_t* buf, uint8_t* len, uint8_t* from, uint8_t* to, uint8_t* id, uint8_t* flags)
{
    if (recv(buf, len))
    {

    if (from)  *from =  headerFrom();
    if (to)    *to =    headerTo();
    if (id)    *id =    headerId();
    if (flags) *flags = headerFlags();
    return true;
    }
    return false;
}