Development

Communication / Sigfox:

» Sigfox P2P 04: RX multipacket

This example shows how to receive multiple packets

Required Materials

1 x Waspmote
1 x Battery
1 x Sigfox 868 module
1 x 868 MHz antenna

Notes

- This code is part of a two-Waspmote communication. This is the receiving side. So, in order to establish communication, please set up a sending node
- This example can be executed in Waspmote v12 and Waspmote v15
- This example only works with Sigfox 868 module

Code

/*  
 *  ------ Sigfox P2P Code Example -------- 
 *  
 *  Explanation: This example shows how to receive multiple packets
 *  
 *  Copyright (C) 2016 Libelium Comunicaciones Distribuidas S.L. 
 *  http://www.libelium.com 
 *  
 *  This program is free software: you can redistribute it and/or modify  
 *  it under the terms of the GNU General Public License as published by  
 *  the Free Software Foundation, either version 3 of the License, or  
 *  (at your option) any later version.  
 *   
 *  This program is distributed in the hope that it will be useful,  
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of  
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 *  GNU General Public License for more details.  
 *   
 *  You should have received a copy of the GNU General Public License  
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.  
 *  
 *  Version:           3.0
 *  Design:            David Gascon 
 *  Implementation:    Yuri Carmona    
 */

// Put your libraries here (#include ...)

#include <WaspSigfox.h>

//////////////////////////////////////////////
uint8_t socket = SOCKET0;
//////////////////////////////////////////////

// ADDRESS: Define the LAN network address. 
// Range: From 0x000000 to 0xFFFFFF. 
// Default: 0x000000
//////////////////////////////////////////////
uint32_t address   = 0x000001;
//////////////////////////////////////////////

uint8_t error;



void setup() 
{
  USB.ON();  

  //////////////////////////////////////////////
  // switch on
  //////////////////////////////////////////////
  error = Sigfox.ON(socket);

  // Check status
  if( error == 0 ) 
  {
    USB.println(F("Switch ON OK"));     
  }
  else 
  {
    USB.println(F("Switch ON ERROR")); 
  } 


  //////////////////////////////////////////////
  // Set LAN address
  //////////////////////////////////////////////
  error = Sigfox.setAddressLAN(address);

  // Check status
  if( error == 0 ) 
  {
    USB.println(F("Set LAN Address OK"));   
  }
  else 
  {
    USB.println(F("Set LAN Address ERROR")); 
  } 

  USB.println();
  
  
  //////////////////////////////////////////////
  // Set Multi-packet reception  mode
  //////////////////////////////////////////////
  error = Sigfox.setMultiPacket();

  // Check status
  if( error == 0 ) 
  {
    USB.println(F("Set Multi-packet mode OK"));   
  }
  else 
  {
    USB.println(F("Set Multi-packet mode ERROR")); 
  } 

  USB.println();
}



void loop()
{
  // Receive data
  USB.println(F("Waiting for data..."));   

  // wait for a new packet (10 seconds)
  error = Sigfox.getMultiPacket(10);

  if (error == 0) 
  {
    USB.println(F("Packet received: "));
    USB.println(Sigfox._packet);
  }
  else
  {
    USB.println(F("Packet not received (timeout)"));  
  }


  USB.println();
}

Output

H#
Switch ON OK
Set LAN Address OK

Set Multi-packet mode OK

Waiting for data...
Packet received:
0000000000000000000000000000000001

Waiting for data...
Packet received:
0000000000000000000000000000000002

Waiting for data...
Packet received:
0000000000000000000000000000000003

Waiting for data...
...

Quick Publish: