Reply -
Raw
#include <confuse.h>
#include <RF24/RF24.h>
#include <RF24Network/RF24Network.h>
#include <RF24Mesh/RF24Mesh.h>
#include <RF24Gateway/RF24Gateway.h>
//RF24 radio(RPI_V2_GPIO_P1_15, BCM2835_SPI_CS0, BCM2835_SPI_SPEED_8MHZ);
//RF24 radio(22,0);
int radio_chipenable = 23;
int radio_chipselect = 1;
int loadconfig() {
cfg_opt_t opts[] {
CFG_SIMPLE_INT("radio-chip-enable", &radio_chipenable),
CFG_SIMPLE_INT("radio-chip-select", &radio_chipselect),
CFG_END()
};
cfg_t *cfg = cfg_init(opts, CFGF_NOCASE);
cfg_parse(cfg, "gateway.conf");
cfg_free(cfg);
return 0;
}
int init(int argc, char** argv) {
loadconfig();
RF24 radio(radio_chipenable, radio_chipselect);
RF24Network network(radio);
RF24Mesh mesh(radio, network);
RF24Gateway gw(radio, network, mesh);
return 0;
}
int main(int argc, char** argv) {
init(argc, argv);
//Config for use with RF24Mesh as Master Node
//uint8_t nodeID=0;
gw.begin();
//Config for use with RF24Mesh as child Node
// uint8_t nodeID = 1;
// gw.begin(nodeID);
//Config for use without RF24Mesh
// uint16_t RF24NetworkAddress = 0;
// gw.begin(RF24NetworkAddress);
//Set this to your chosen IP/Subnet
char ip[] = "10.30.0.1";
char subnet[] = "255.255.255.0";
gw.setIP(ip, subnet);
while (true) {
// The gateway handles all IP traffic (marked as EXTERNAL_DATA_TYPE) and passes it to the associated network interface
// RF24Network user payloads are loaded into the user cache
gw.update();
if (network.available()) {
RF24NetworkHeader header;
size_t size = network.peek(header);
uint8_t buf[size];
network.read(header, &buf, size);
printf("Received Network Message, type: %d id %d \n", header.type, header.id);
}
}
return 0;
}