make the 'protocol.h' definition shared with symlinks
This commit is contained in:
parent
8d18ba1ec4
commit
f917275cbc
|
@ -0,0 +1,52 @@
|
||||||
|
#ifndef _PROTOCOL_H_
|
||||||
|
#define _PROTOCOL_H_
|
||||||
|
|
||||||
|
#define DISCOVER_TTL 10000
|
||||||
|
#define DISCOVER_SIZE sizeof(int)*2
|
||||||
|
|
||||||
|
// discover request (c.f. class node)
|
||||||
|
struct discover {
|
||||||
|
uint8_t opcode; // opcode = 0
|
||||||
|
uint8_t wave; // id de la wave
|
||||||
|
uint8_t dist; // current node's distance
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct data {
|
||||||
|
uint8_t opcode; // opcode = 1
|
||||||
|
uint8_t dist; // distance of the last sender
|
||||||
|
uint8_t ttl; // time to live default = 10
|
||||||
|
uint8_t size; // size of message in bytes
|
||||||
|
uint8_t message[]; // actual message
|
||||||
|
};
|
||||||
|
|
||||||
|
// A <node> object is held by each node which values are determined thanks
|
||||||
|
// to the DISCOVER requests it receives; each node broadcasts a DISCOVER
|
||||||
|
// request every DISCOVER_TTL milliseconds
|
||||||
|
class node{
|
||||||
|
private:
|
||||||
|
// unique id of the node : MAC ADDR
|
||||||
|
int id;
|
||||||
|
|
||||||
|
// last received wave id
|
||||||
|
uint8_t last_wave;
|
||||||
|
|
||||||
|
// relative node-distance to the well
|
||||||
|
// WELL : dist = 0
|
||||||
|
// NODE1 can reach WELL : dist = 1
|
||||||
|
// NODE2 can reach NODE1 : dist = 2
|
||||||
|
// and so on...
|
||||||
|
uint8_t dist;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
// send a discover request
|
||||||
|
bool discover();
|
||||||
|
|
||||||
|
// update the current node according to a (received)
|
||||||
|
// discover request
|
||||||
|
bool update(struct discover req);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -3,8 +3,6 @@
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
#include <LiquidCrystal_I2C.h>
|
#include <LiquidCrystal_I2C.h>
|
||||||
|
|
||||||
// CONSTANTS
|
|
||||||
#define WAVE_TIMEOUT 5000 // send wave every (in ms)
|
|
||||||
|
|
||||||
// Peripherals
|
// Peripherals
|
||||||
LiquidCrystal_I2C screen(0x27, 16, 2);
|
LiquidCrystal_I2C screen(0x27, 16, 2);
|
||||||
|
@ -12,7 +10,7 @@ XBee xbee = XBee();
|
||||||
|
|
||||||
// ACTUAL DATA
|
// ACTUAL DATA
|
||||||
uint8_t wave_id = 250;
|
uint8_t wave_id = 250;
|
||||||
struct discover req = {0,0,0};
|
struct discover dsc = {0,0,0};
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(38400);
|
Serial.begin(38400);
|
||||||
|
@ -32,13 +30,13 @@ void loop() {
|
||||||
delay(WAVE_TIMEOUT);
|
delay(WAVE_TIMEOUT);
|
||||||
|
|
||||||
// increment wave id (will overflow from 255 to 0)
|
// increment wave id (will overflow from 255 to 0)
|
||||||
req.wave = ++wave_id; // set wave id
|
dsc.wave = ++wave_id; // set wave id
|
||||||
|
|
||||||
screen.clear();
|
screen.clear();
|
||||||
screen.print("+ wave");
|
screen.print("+ wave");
|
||||||
screen.print(req.wave);
|
screen.print(dsc.wave);
|
||||||
|
|
||||||
uint8_t payload[3] = {req.opcode, req.wave, req.dist};
|
uint8_t payload[3] = {dsc.opcode, dsc.wave, dsc.dist};
|
||||||
|
|
||||||
XBeeAddress64 addr64 = XBeeAddress64(0x00000000, 0x0000FFFF);
|
XBeeAddress64 addr64 = XBeeAddress64(0x00000000, 0x0000FFFF);
|
||||||
Tx64Request tx = Tx64Request(addr64, payload, sizeof(payload));
|
Tx64Request tx = Tx64Request(addr64, payload, sizeof(payload));
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
#ifndef _PROTOCOL_H_
|
|
||||||
#define _PROTOCOL_H_
|
|
||||||
|
|
||||||
#define DISCOVER_TTL 10000
|
|
||||||
#define DISCOVER_SIZE sizeof(int)*2
|
|
||||||
|
|
||||||
// discover request (c.f. class node)
|
|
||||||
struct discover {
|
|
||||||
uint8_t opcode; // opcode = 0
|
|
||||||
uint8_t wave; // id de la wave
|
|
||||||
uint8_t dist; // current node's distance
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct data {
|
|
||||||
uint8_t opcode; // opcode = 1
|
|
||||||
uint8_t dist; // distance of the last sender
|
|
||||||
uint8_t ttl; // time to live default = 10
|
|
||||||
uint8_t size; // size of message in bytes
|
|
||||||
uint8_t message[]; // actual message
|
|
||||||
};
|
|
||||||
|
|
||||||
// A <node> object is held by each node which values are determined thanks
|
|
||||||
// to the DISCOVER requests it receives; each node broadcasts a DISCOVER
|
|
||||||
// request every DISCOVER_TTL milliseconds
|
|
||||||
class node{
|
|
||||||
private:
|
|
||||||
// unique id of the node : MAC ADDR
|
|
||||||
int id;
|
|
||||||
|
|
||||||
// last received wave id
|
|
||||||
uint8_t last_wave;
|
|
||||||
|
|
||||||
// relative node-distance to the well
|
|
||||||
// WELL : dist = 0
|
|
||||||
// NODE1 can reach WELL : dist = 1
|
|
||||||
// NODE2 can reach NODE1 : dist = 2
|
|
||||||
// and so on...
|
|
||||||
uint8_t dist;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
// send a discover request
|
|
||||||
bool discover();
|
|
||||||
|
|
||||||
// update the current node according to a (received)
|
|
||||||
// discover request
|
|
||||||
bool update(struct discover req);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -0,0 +1 @@
|
||||||
|
../../protocol.h
|
Loading…
Reference in New Issue