add: receive/receiveTime as optional sketch functions for handling
incoming messages
This commit is contained in:
@@ -39,7 +39,9 @@
|
|||||||
// HARDWARE
|
// HARDWARE
|
||||||
#if defined(ARDUINO_ARCH_ESP8266)
|
#if defined(ARDUINO_ARCH_ESP8266)
|
||||||
#include "drivers/ESP8266/SPI/SPI.cpp"
|
#include "drivers/ESP8266/SPI/SPI.cpp"
|
||||||
|
#include "drivers/ESP8266/EEPROM/EEPROM.cpp"
|
||||||
#include "core/MyHwESP8266.cpp"
|
#include "core/MyHwESP8266.cpp"
|
||||||
|
|
||||||
// For ESP8266, we always enable gateway feature
|
// For ESP8266, we always enable gateway feature
|
||||||
#define MY_GATEWAY_ESP8266
|
#define MY_GATEWAY_ESP8266
|
||||||
#elif defined(ARDUINO_ARCH_AVR)
|
#elif defined(ARDUINO_ARCH_AVR)
|
||||||
@@ -110,7 +112,11 @@
|
|||||||
#endif
|
#endif
|
||||||
#if defined(MY_GATEWAY_ESP8266)
|
#if defined(MY_GATEWAY_ESP8266)
|
||||||
// GATEWAY - ESP8266
|
// GATEWAY - ESP8266
|
||||||
|
// #include "drivers/ESP8266/ESP8266WiFi/src/ESP8266Wifi.cpp"
|
||||||
|
|
||||||
|
// #include "drivers/ESP8266/ESP8266WiFi/src/WifiClient.cpp"
|
||||||
|
// #include "drivers/ESP8266/ESP8266WiFi/src/WifiServer.cpp"
|
||||||
|
// #include "drivers/ESP8266/ESP8266WiFi/src/WifiUdp.cpp"
|
||||||
#elif defined(MY_GATEWAY_W5100)
|
#elif defined(MY_GATEWAY_W5100)
|
||||||
// GATEWAY - W5100
|
// GATEWAY - W5100
|
||||||
#include "drivers/AVR/Ethernet_W5100/utility/socket.cpp"
|
#include "drivers/AVR/Ethernet_W5100/utility/socket.cpp"
|
||||||
@@ -212,18 +218,31 @@
|
|||||||
#include "core/MySensorCore.cpp"
|
#include "core/MySensorCore.cpp"
|
||||||
|
|
||||||
extern void setup();
|
extern void setup();
|
||||||
extern void loop();
|
//extern void loop();
|
||||||
|
|
||||||
|
// Optional sketch functions called by MySensors library
|
||||||
|
void receive(const MyMessage &message) __attribute__((weak));
|
||||||
|
void receiveTime(unsigned long) __attribute__((weak));
|
||||||
|
void presentation() __attribute__((weak));
|
||||||
|
extern "C" void setup() __attribute__((weak));
|
||||||
|
extern "C" void loop() __attribute__((weak));
|
||||||
|
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
// Initialize library and handle sketch functions like we want to
|
// Initialize library and handle sketch functions like we want to
|
||||||
int main() {
|
int main(void) {
|
||||||
init(); // Init Arduino
|
init(); // Init Arduino
|
||||||
|
#if defined(USBCON)
|
||||||
|
USBDevice.attach();
|
||||||
|
#endif
|
||||||
_begin(); // Startup MySensors library
|
_begin(); // Startup MySensors library
|
||||||
setup(); // Call sketch setup
|
if (setup) setup(); // Call sketch setup
|
||||||
while(1) {
|
for(;;) {
|
||||||
_process(); // Process incoming data
|
_process(); // Process incoming data
|
||||||
loop(); // Call sketch loop
|
if (loop) loop(); // Call sketch loop
|
||||||
|
#if !defined(ARDUINO_ARCH_ESP8266)
|
||||||
if (serialEventRun) serialEventRun();
|
if (serialEventRun) serialEventRun();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ inline void gatewayTransportProcess() {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Call incoming message callback if available
|
// Call incoming message callback if available
|
||||||
if (_msgCallback != NULL) {
|
if (receive) {
|
||||||
_msgCallback(_msg);
|
receive(_msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "MyHwESP8266.h"
|
#include "MyHwESP8266.h"
|
||||||
#include "drivers/ESP8266/EEPROM/EEPROM.cpp"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
int8_t pinIntTrigger = 0;
|
int8_t pinIntTrigger = 0;
|
||||||
|
|||||||
@@ -29,6 +29,11 @@
|
|||||||
//#include <SPI.h>
|
//#include <SPI.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define min(a,b) ((a)<(b)?(a):(b))
|
||||||
|
#define max(a,b) ((a)>(b)?(a):(b))
|
||||||
|
|
||||||
|
|
||||||
// Define these as macros to save valuable space
|
// Define these as macros to save valuable space
|
||||||
|
|
||||||
#define hwDigitalWrite(__pin, __value) (digitalWrite(__pin, __value))
|
#define hwDigitalWrite(__pin, __value) (digitalWrite(__pin, __value))
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ MyMessage _msgTmp; // Buffer for temporary messages (acks and nonces among other
|
|||||||
|
|
||||||
uint16_t _heartbeat;
|
uint16_t _heartbeat;
|
||||||
void (*_timeCallback)(unsigned long); // Callback for requested time messages
|
void (*_timeCallback)(unsigned long); // Callback for requested time messages
|
||||||
void (*_msgCallback)(const MyMessage &); // Callback for incoming messages from other nodes and gateway.
|
|
||||||
|
|
||||||
|
|
||||||
void _process() {
|
void _process() {
|
||||||
@@ -60,10 +59,6 @@ static inline bool isValidParent( const uint8_t parent ) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void setIncomingCallback(void (*msgCallback)(const MyMessage &)) {
|
|
||||||
_msgCallback = msgCallback;
|
|
||||||
}
|
|
||||||
|
|
||||||
void _begin() {
|
void _begin() {
|
||||||
#if !defined(MY_DISABLED_SERIAL)
|
#if !defined(MY_DISABLED_SERIAL)
|
||||||
hwInit();
|
hwInit();
|
||||||
@@ -218,8 +213,7 @@ void request(uint8_t childSensorId, uint8_t variableType, uint8_t destination) {
|
|||||||
_sendRoute(build(_msg, _nc.nodeId, destination, childSensorId, C_REQ, variableType, false).set(""));
|
_sendRoute(build(_msg, _nc.nodeId, destination, childSensorId, C_REQ, variableType, false).set(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
void requestTime(void (* timeCallback)(unsigned long)) {
|
void requestTime() {
|
||||||
_timeCallback = timeCallback;
|
|
||||||
_sendRoute(build(_msg, _nc.nodeId, GATEWAY_ADDRESS, NODE_SENSOR_ID, C_INTERNAL, I_TIME, false).set(""));
|
_sendRoute(build(_msg, _nc.nodeId, GATEWAY_ADDRESS, NODE_SENSOR_ID, C_INTERNAL, I_TIME, false).set(""));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,9 +231,9 @@ void _processInternalMessages() {
|
|||||||
isMetric = _msg.getString()[0] == 'M' ;
|
isMetric = _msg.getString()[0] == 'M' ;
|
||||||
_cc.isMetric = isMetric;
|
_cc.isMetric = isMetric;
|
||||||
hwWriteConfig(EEPROM_CONTROLLER_CONFIG_ADDRESS, isMetric);
|
hwWriteConfig(EEPROM_CONTROLLER_CONFIG_ADDRESS, isMetric);
|
||||||
} else if (type == I_TIME && _timeCallback != NULL) {
|
} else if (type == I_TIME && receiveTime) {
|
||||||
// Deliver time to callback
|
// Deliver time to callback
|
||||||
_timeCallback(_msg.getULong());
|
receiveTime(_msg.getULong());
|
||||||
}
|
}
|
||||||
#if defined(MY_REPEATER_FEATURE)
|
#if defined(MY_REPEATER_FEATURE)
|
||||||
if (type == I_CHILDREN && _msg.getString()[0] == 'C') {
|
if (type == I_CHILDREN && _msg.getString()[0] == 'C') {
|
||||||
|
|||||||
@@ -76,12 +76,6 @@ struct ControllerConfig {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the callback method for incoming messages
|
|
||||||
*
|
|
||||||
* @param incomingMessageCallback Callback function for incoming messages from other nodes or controller and request responses.
|
|
||||||
*/
|
|
||||||
void setIncomingCallback(void (* msgCallback)(const MyMessage &)=NULL);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return this nodes id.
|
* Return this nodes id.
|
||||||
@@ -144,11 +138,10 @@ void sendHeartbeat(void);
|
|||||||
void request(uint8_t childSensorId, uint8_t variableType, uint8_t destination=GATEWAY_ADDRESS);
|
void request(uint8_t childSensorId, uint8_t variableType, uint8_t destination=GATEWAY_ADDRESS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests time from controller. Answer will be delivered to callback.
|
* Requests time from controller. Answer will be delivered to receiveTime function in sketch.
|
||||||
*
|
*
|
||||||
* @param callback for time request. Incoming argument is seconds since 1970.
|
|
||||||
*/
|
*/
|
||||||
void requestTime(void (* timeCallback)(unsigned long));
|
void requestTime();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -232,10 +225,12 @@ boolean _sendRoute(MyMessage &message);
|
|||||||
extern NodeConfig _nc;
|
extern NodeConfig _nc;
|
||||||
extern MyMessage _msg; // Buffer for incoming messages.
|
extern MyMessage _msg; // Buffer for incoming messages.
|
||||||
extern MyMessage _msgTmp; // Buffer for temporary messages (acks and nonces among others).
|
extern MyMessage _msgTmp; // Buffer for temporary messages (acks and nonces among others).
|
||||||
extern void (*_msgCallback)(const MyMessage &); // Callback for incoming messages from other nodes and gateway.
|
|
||||||
#ifdef MY_DEBUG
|
#ifdef MY_DEBUG
|
||||||
extern char _convBuf[MAX_PAYLOAD*2+1];
|
extern char _convBuf[MAX_PAYLOAD*2+1];
|
||||||
#endif
|
#endif
|
||||||
|
void receive(const MyMessage &message) __attribute__((weak));
|
||||||
|
void receiveTime(unsigned long) __attribute__((weak));
|
||||||
|
void presentation() __attribute__((weak));
|
||||||
|
|
||||||
// Inline function and macros
|
// Inline function and macros
|
||||||
static inline MyMessage& build(MyMessage &msg, uint8_t sender, uint8_t destination, uint8_t sensor, uint8_t command, uint8_t type, bool enableAck) {
|
static inline MyMessage& build(MyMessage &msg, uint8_t sender, uint8_t destination, uint8_t sensor, uint8_t command, uint8_t type, bool enableAck) {
|
||||||
|
|||||||
@@ -282,8 +282,8 @@ inline void transportProcess() {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
// Call incoming message callback if available
|
// Call incoming message callback if available
|
||||||
if (_msgCallback != NULL) {
|
if (receive) {
|
||||||
_msgCallback(_msg);
|
receive(_msg);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
#define WIFIUDP_H
|
#define WIFIUDP_H
|
||||||
|
|
||||||
#include <Udp.h>
|
#include <Udp.h>
|
||||||
#include <include/slist.h>
|
#include "include/slist.h"
|
||||||
|
|
||||||
#define UDP_TX_PACKET_MAX_SIZE 8192
|
#define UDP_TX_PACKET_MAX_SIZE 8192
|
||||||
|
|
||||||
|
|||||||
@@ -32,16 +32,16 @@
|
|||||||
#ifndef __LWIP_API_H__
|
#ifndef __LWIP_API_H__
|
||||||
#define __LWIP_API_H__
|
#define __LWIP_API_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include <stddef.h> /* for size_t */
|
#include <stddef.h> /* for size_t */
|
||||||
|
|
||||||
#include "lwip/netbuf.h"
|
#include "netbuf.h"
|
||||||
#include "lwip/sys.h"
|
#include "sys.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,17 +32,17 @@
|
|||||||
#ifndef __LWIP_API_MSG_H__
|
#ifndef __LWIP_API_MSG_H__
|
||||||
#define __LWIP_API_MSG_H__
|
#define __LWIP_API_MSG_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include <stddef.h> /* for size_t */
|
#include <stddef.h> /* for size_t */
|
||||||
|
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
#include "lwip/sys.h"
|
#include "sys.h"
|
||||||
#include "lwip/igmp.h"
|
#include "igmp.h"
|
||||||
#include "lwip/api.h"
|
#include "api.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
#define BIG_ENDIAN 4321
|
#define BIG_ENDIAN 4321
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "arch/cc.h"
|
#include "../arch/cc.h"
|
||||||
|
|
||||||
/** Temporary: define format string for size_t if not defined in cc.h */
|
/** Temporary: define format string for size_t if not defined in cc.h */
|
||||||
#ifndef SZT_F
|
#ifndef SZT_F
|
||||||
|
|||||||
@@ -44,12 +44,12 @@
|
|||||||
#ifndef __LWIP_AUTOIP_H__
|
#ifndef __LWIP_AUTOIP_H__
|
||||||
#define __LWIP_AUTOIP_H__
|
#define __LWIP_AUTOIP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
#include "lwip/udp.h"
|
#include "udp.h"
|
||||||
#include "netif/etharp.h"
|
#include "netif/etharp.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
#ifndef __LWIP_DEBUG_H__
|
#ifndef __LWIP_DEBUG_H__
|
||||||
#define __LWIP_DEBUG_H__
|
#define __LWIP_DEBUG_H__
|
||||||
|
|
||||||
#include "lwip/arch.h"
|
#include "arch.h"
|
||||||
|
|
||||||
/** lower two bits indicate debug level
|
/** lower two bits indicate debug level
|
||||||
* - 0 all
|
* - 0 all
|
||||||
|
|||||||
@@ -33,8 +33,8 @@
|
|||||||
#define __LWIP_DEF_H__
|
#define __LWIP_DEF_H__
|
||||||
|
|
||||||
/* arch.h might define NULL already */
|
/* arch.h might define NULL already */
|
||||||
#include "lwip/arch.h"
|
#include "arch.h"
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
#ifndef __LWIP_DHCP_H__
|
#ifndef __LWIP_DHCP_H__
|
||||||
#define __LWIP_DHCP_H__
|
#define __LWIP_DHCP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
#include "lwip/udp.h"
|
#include "udp.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
#ifndef __LWIP_DNS_H__
|
#ifndef __LWIP_DNS_H__
|
||||||
#define __LWIP_DNS_H__
|
#define __LWIP_DNS_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
#ifndef __LWIP_ERR_H__
|
#ifndef __LWIP_ERR_H__
|
||||||
#define __LWIP_ERR_H__
|
#define __LWIP_ERR_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/arch.h"
|
#include "arch.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,10 +32,10 @@
|
|||||||
#ifndef __LWIP_ICMP_H__
|
#ifndef __LWIP_ICMP_H__
|
||||||
#define __LWIP_ICMP_H__
|
#define __LWIP_ICMP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -74,9 +74,9 @@ enum icmp_te_type {
|
|||||||
* is splitted to two u16_t like ICMP echo needs it.
|
* is splitted to two u16_t like ICMP echo needs it.
|
||||||
* This header is also used for other ICMP types that do not
|
* This header is also used for other ICMP types that do not
|
||||||
* use the data part.
|
* use the data part.
|
||||||
* 定义ICMP回送请求报文首部结构,
|
* ����ICMP�����������ײ��ṹ��
|
||||||
* 由于所有ICMP报文首部有很大相似性,
|
* ��������ICMP�����ײ��кܴ������ԣ�
|
||||||
* 该结构同样适用于其它ICMP报文。
|
* �ýṹͬ������������ICMP���ġ�
|
||||||
*/
|
*/
|
||||||
PACK_STRUCT_BEGIN
|
PACK_STRUCT_BEGIN
|
||||||
struct icmp_echo_hdr {
|
struct icmp_echo_hdr {
|
||||||
@@ -91,11 +91,11 @@ PACK_STRUCT_END
|
|||||||
# include "arch/epstruct.h"
|
# include "arch/epstruct.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//读取ICMP首部中字段
|
//��ȡICMP�ײ����ֶ�
|
||||||
#define ICMPH_TYPE(hdr) ((hdr)->type)
|
#define ICMPH_TYPE(hdr) ((hdr)->type)
|
||||||
#define ICMPH_CODE(hdr) ((hdr)->code)
|
#define ICMPH_CODE(hdr) ((hdr)->code)
|
||||||
|
|
||||||
/** Combines type and code to an u16_t 向ICMP报文首部字段中写入相应值*/
|
/** Combines type and code to an u16_t ��ICMP�����ײ��ֶ���д����Ӧֵ*/
|
||||||
#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t))
|
#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t))
|
||||||
#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c))
|
#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c))
|
||||||
|
|
||||||
|
|||||||
@@ -35,10 +35,10 @@
|
|||||||
#ifndef __LWIP_IGMP_H__
|
#ifndef __LWIP_IGMP_H__
|
||||||
#define __LWIP_IGMP_H__
|
#define __LWIP_IGMP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
|
|
||||||
#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
|
|||||||
@@ -32,9 +32,9 @@
|
|||||||
#ifndef __LWIP_INET_H__
|
#ifndef __LWIP_INET_H__
|
||||||
#define __LWIP_INET_H__
|
#define __LWIP_INET_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/def.h"
|
#include "def.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,10 +32,10 @@
|
|||||||
#ifndef __LWIP_INET_CHKSUM_H__
|
#ifndef __LWIP_INET_CHKSUM_H__
|
||||||
#define __LWIP_INET_CHKSUM_H__
|
#define __LWIP_INET_CHKSUM_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
|
|
||||||
/** Swap the bytes in an u16_t: much like htons() for little-endian */
|
/** Swap the bytes in an u16_t: much like htons() for little-endian */
|
||||||
#ifndef SWAP_BYTES_IN_WORD
|
#ifndef SWAP_BYTES_IN_WORD
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
#ifndef __LWIP_INIT_H__
|
#ifndef __LWIP_INIT_H__
|
||||||
#define __LWIP_INIT_H__
|
#define __LWIP_INIT_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,13 +32,13 @@
|
|||||||
#ifndef __LWIP_IP_H__
|
#ifndef __LWIP_IP_H__
|
||||||
#define __LWIP_IP_H__
|
#define __LWIP_IP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#include "lwip/def.h"
|
#include "def.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
#ifndef __LWIP_IP_ADDR_H__
|
#ifndef __LWIP_IP_ADDR_H__
|
||||||
#define __LWIP_IP_ADDR_H__
|
#define __LWIP_IP_ADDR_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/def.h"
|
#include "def.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -33,12 +33,12 @@
|
|||||||
#ifndef __LWIP_IP_FRAG_H__
|
#ifndef __LWIP_IP_FRAG_H__
|
||||||
#define __LWIP_IP_FRAG_H__
|
#define __LWIP_IP_FRAG_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/ip.h"
|
#include "ip.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
#ifndef __LWIP_MEM_H__
|
#ifndef __LWIP_MEM_H__
|
||||||
#define __LWIP_MEM_H__
|
#define __LWIP_MEM_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "mem_manager.h"
|
#include "mem_manager.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
#ifndef __LWIP_MEMP_H__
|
#ifndef __LWIP_MEMP_H__
|
||||||
#define __LWIP_MEMP_H__
|
#define __LWIP_MEMP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,9 +32,9 @@
|
|||||||
#ifndef __LWIP_NETBUF_H__
|
#ifndef __LWIP_NETBUF_H__
|
||||||
#define __LWIP_NETBUF_H__
|
#define __LWIP_NETBUF_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
#ifndef __LWIP_NETDB_H__
|
#ifndef __LWIP_NETDB_H__
|
||||||
#define __LWIP_NETDB_H__
|
#define __LWIP_NETDB_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_DNS && LWIP_SOCKET
|
#if LWIP_DNS && LWIP_SOCKET
|
||||||
|
|
||||||
|
|||||||
@@ -32,16 +32,16 @@
|
|||||||
#ifndef __LWIP_NETIF_H__
|
#ifndef __LWIP_NETIF_H__
|
||||||
#define __LWIP_NETIF_H__
|
#define __LWIP_NETIF_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
|
#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
|
||||||
|
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
|
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
|
|
||||||
#include "lwip/def.h"
|
#include "def.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#if LWIP_DHCP
|
#if LWIP_DHCP
|
||||||
struct dhcp;
|
struct dhcp;
|
||||||
#endif
|
#endif
|
||||||
@@ -143,15 +143,15 @@ struct netif {
|
|||||||
ip_addr_t gw;
|
ip_addr_t gw;
|
||||||
|
|
||||||
/** This function is called by the network device driver
|
/** This function is called by the network device driver
|
||||||
* to pass a packet up the TCP/IP stack. 向IP层输入数据包*/
|
* to pass a packet up the TCP/IP stack. ��IP��������ݰ�*/
|
||||||
netif_input_fn input;
|
netif_input_fn input;
|
||||||
/** This function is called by the IP module when it wants
|
/** This function is called by the IP module when it wants
|
||||||
* to send a packet on the interface. This function typically
|
* to send a packet on the interface. This function typically
|
||||||
* first resolves the hardware address, then sends the packet. 发送IP数据包*/
|
* first resolves the hardware address, then sends the packet. ����IP��ݰ�*/
|
||||||
netif_output_fn output;
|
netif_output_fn output;
|
||||||
/** This function is called by the ARP module when it wants
|
/** This function is called by the ARP module when it wants
|
||||||
* to send a packet on the interface. This function outputs
|
* to send a packet on the interface. This function outputs
|
||||||
* the pbuf as-is on the link medium. 底层数据包发送*/
|
* the pbuf as-is on the link medium. �ײ���ݰ���*/
|
||||||
netif_linkoutput_fn linkoutput;
|
netif_linkoutput_fn linkoutput;
|
||||||
#if LWIP_NETIF_STATUS_CALLBACK
|
#if LWIP_NETIF_STATUS_CALLBACK
|
||||||
/** This function is called when the netif state is set to up or down
|
/** This function is called when the netif state is set to up or down
|
||||||
@@ -164,7 +164,7 @@ struct netif {
|
|||||||
netif_status_callback_fn link_callback;
|
netif_status_callback_fn link_callback;
|
||||||
#endif /* LWIP_NETIF_LINK_CALLBACK */
|
#endif /* LWIP_NETIF_LINK_CALLBACK */
|
||||||
/** This field can be set by the device driver and could point
|
/** This field can be set by the device driver and could point
|
||||||
* to state information for the device. 自由设置字段,比如指向底层设备相关信息*/
|
* to state information for the device. ���������ֶΣ�����ָ��ײ��豸�����Ϣ*/
|
||||||
void *state;
|
void *state;
|
||||||
#if LWIP_DHCP
|
#if LWIP_DHCP
|
||||||
/** the DHCP client state information for this netif */
|
/** the DHCP client state information for this netif */
|
||||||
@@ -178,17 +178,17 @@ struct netif {
|
|||||||
/* the hostname for this netif, NULL is a valid value */
|
/* the hostname for this netif, NULL is a valid value */
|
||||||
char* hostname;
|
char* hostname;
|
||||||
#endif /* LWIP_NETIF_HOSTNAME */
|
#endif /* LWIP_NETIF_HOSTNAME */
|
||||||
/** maximum transfer unit (in bytes) 该接口允许的最大数据包长度,多是1500*/
|
/** maximum transfer unit (in bytes) �ýӿ�����������ݰ�ȣ�����1500*/
|
||||||
u16_t mtu;
|
u16_t mtu;
|
||||||
/** number of bytes used in hwaddr该接口物理地址长度 */
|
/** number of bytes used in hwaddr�ýӿ������ַ���� */
|
||||||
u8_t hwaddr_len;
|
u8_t hwaddr_len;
|
||||||
/** link level hardware address of this interface 该接口物理地址*/
|
/** link level hardware address of this interface �ýӿ������ַ*/
|
||||||
u8_t hwaddr[NETIF_MAX_HWADDR_LEN];
|
u8_t hwaddr[NETIF_MAX_HWADDR_LEN];
|
||||||
/** flags (see NETIF_FLAG_ above) 该接口状态、属性字段*/
|
/** flags (see NETIF_FLAG_ above) �ýӿ�״̬�������ֶ�*/
|
||||||
u8_t flags;
|
u8_t flags;
|
||||||
/** descriptive abbreviation 该接口的名字*/
|
/** descriptive abbreviation �ýӿڵ�����*/
|
||||||
char name[2];
|
char name[2];
|
||||||
/** number of this interface 该接口的编号*/
|
/** number of this interface �ýӿڵı��*/
|
||||||
u8_t num;
|
u8_t num;
|
||||||
#if LWIP_SNMP
|
#if LWIP_SNMP
|
||||||
/** link type (from "snmp_ifType" enum from snmp.h) */
|
/** link type (from "snmp_ifType" enum from snmp.h) */
|
||||||
@@ -216,9 +216,9 @@ struct netif {
|
|||||||
u8_t *addr_hint;
|
u8_t *addr_hint;
|
||||||
#endif /* LWIP_NETIF_HWADDRHINT */
|
#endif /* LWIP_NETIF_HWADDRHINT */
|
||||||
#if ENABLE_LOOPBACK
|
#if ENABLE_LOOPBACK
|
||||||
/* List of packets to be queued for ourselves. 指向发送给自己的数据包的pbuf*/
|
/* List of packets to be queued for ourselves. ָ�����Լ�����ݰ��pbuf*/
|
||||||
struct pbuf *loop_first;//第一个
|
struct pbuf *loop_first;//��һ��
|
||||||
struct pbuf *loop_last;//最后一个
|
struct pbuf *loop_last;//���һ��
|
||||||
#if LWIP_LOOPBACK_MAX_PBUFS
|
#if LWIP_LOOPBACK_MAX_PBUFS
|
||||||
u16_t loop_cnt_current;
|
u16_t loop_cnt_current;
|
||||||
#endif /* LWIP_LOOPBACK_MAX_PBUFS */
|
#endif /* LWIP_LOOPBACK_MAX_PBUFS */
|
||||||
|
|||||||
@@ -28,14 +28,14 @@
|
|||||||
#ifndef __LWIP_NETIFAPI_H__
|
#ifndef __LWIP_NETIFAPI_H__
|
||||||
#define __LWIP_NETIFAPI_H__
|
#define __LWIP_NETIFAPI_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/sys.h"
|
#include "sys.h"
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
#include "lwip/dhcp.h"
|
#include "dhcp.h"
|
||||||
#include "lwip/autoip.h"
|
#include "autoip.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -42,8 +42,8 @@
|
|||||||
* Include user defined options first. Anything not defined in these files
|
* Include user defined options first. Anything not defined in these files
|
||||||
* will be set to standard values. Override anything you dont like!
|
* will be set to standard values. Override anything you dont like!
|
||||||
*/
|
*/
|
||||||
#include "include/lwipopts.h"
|
#include "../include/lwipopts.h"
|
||||||
#include "lwip/debug.h"
|
#include "../lwip/debug.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|||||||
@@ -33,8 +33,8 @@
|
|||||||
#ifndef __LWIP_PBUF_H__
|
#ifndef __LWIP_PBUF_H__
|
||||||
#define __LWIP_PBUF_H__
|
#define __LWIP_PBUF_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,14 +32,14 @@
|
|||||||
#ifndef __LWIP_RAW_H__
|
#ifndef __LWIP_RAW_H__
|
||||||
#define __LWIP_RAW_H__
|
#define __LWIP_RAW_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/def.h"
|
#include "def.h"
|
||||||
#include "lwip/ip.h"
|
#include "ip.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
#ifndef __SIO_H__
|
#ifndef __SIO_H__
|
||||||
#define __SIO_H__
|
#define __SIO_H__
|
||||||
|
|
||||||
#include "lwip/arch.h"
|
#include "arch.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -33,13 +33,13 @@
|
|||||||
#ifndef __LWIP_SNMP_H__
|
#ifndef __LWIP_SNMP_H__
|
||||||
#define __LWIP_SNMP_H__
|
#define __LWIP_SNMP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
|
|
||||||
struct udp_pcb;
|
struct udp_pcb;
|
||||||
struct netif;
|
struct netif;
|
||||||
|
|||||||
@@ -35,10 +35,10 @@
|
|||||||
#ifndef __LWIP_SNMP_ASN1_H__
|
#ifndef __LWIP_SNMP_ASN1_H__
|
||||||
#define __LWIP_SNMP_ASN1_H__
|
#define __LWIP_SNMP_ASN1_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/snmp.h"
|
#include "snmp.h"
|
||||||
|
|
||||||
#if LWIP_SNMP
|
#if LWIP_SNMP
|
||||||
|
|
||||||
|
|||||||
@@ -35,11 +35,11 @@
|
|||||||
#ifndef __LWIP_SNMP_MSG_H__
|
#ifndef __LWIP_SNMP_MSG_H__
|
||||||
#define __LWIP_SNMP_MSG_H__
|
#define __LWIP_SNMP_MSG_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
#include "lwip/snmp.h"
|
#include "snmp.h"
|
||||||
#include "lwip/snmp_structs.h"
|
#include "snmp_structs.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
|
|
||||||
#if LWIP_SNMP
|
#if LWIP_SNMP
|
||||||
|
|
||||||
|
|||||||
@@ -37,11 +37,11 @@
|
|||||||
#ifndef __LWIP_SNMP_STRUCTS_H__
|
#ifndef __LWIP_SNMP_STRUCTS_H__
|
||||||
#define __LWIP_SNMP_STRUCTS_H__
|
#define __LWIP_SNMP_STRUCTS_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/snmp.h"
|
#include "snmp.h"
|
||||||
|
|
||||||
#if SNMP_PRIVATE_MIB
|
#if SNMP_PRIVATE_MIB
|
||||||
/* When using a private MIB, you have to create a file 'private_mib.h' that contains
|
/* When using a private MIB, you have to create a file 'private_mib.h' that contains
|
||||||
|
|||||||
@@ -34,14 +34,14 @@
|
|||||||
#ifndef __LWIP_SOCKETS_H__
|
#ifndef __LWIP_SOCKETS_H__
|
||||||
#define __LWIP_SOCKETS_H__
|
#define __LWIP_SOCKETS_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include <stddef.h> /* for size_t */
|
#include <stddef.h> /* for size_t */
|
||||||
|
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/inet.h"
|
#include "inet.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,10 +32,10 @@
|
|||||||
#ifndef __LWIP_STATS_H__
|
#ifndef __LWIP_STATS_H__
|
||||||
#define __LWIP_STATS_H__
|
#define __LWIP_STATS_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#include "lwip/mem.h"
|
#include "mem.h"
|
||||||
#include "lwip/memp.h"
|
#include "memp.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
#ifndef __LWIP_SYS_H__
|
#ifndef __LWIP_SYS_H__
|
||||||
#define __LWIP_SYS_H__
|
#define __LWIP_SYS_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#include "eagle_soc.h"
|
#include "eagle_soc.h"
|
||||||
|
|
||||||
|
|||||||
@@ -32,16 +32,16 @@
|
|||||||
#ifndef __LWIP_TCP_H__
|
#ifndef __LWIP_TCP_H__
|
||||||
#define __LWIP_TCP_H__
|
#define __LWIP_TCP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/sys.h"
|
#include "sys.h"
|
||||||
#include "lwip/mem.h"
|
#include "mem.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/ip.h"
|
#include "ip.h"
|
||||||
#include "lwip/icmp.h"
|
#include "icmp.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,17 +32,17 @@
|
|||||||
#ifndef __LWIP_TCP_IMPL_H__
|
#ifndef __LWIP_TCP_IMPL_H__
|
||||||
#define __LWIP_TCP_IMPL_H__
|
#define __LWIP_TCP_IMPL_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/tcp.h"
|
#include "tcp.h"
|
||||||
#include "lwip/sys.h"
|
#include "sys.h"
|
||||||
#include "lwip/mem.h"
|
#include "mem.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/ip.h"
|
#include "ip.h"
|
||||||
#include "lwip/icmp.h"
|
#include "icmp.h"
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@@ -156,14 +156,14 @@ u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb)ICACHE_FLASH_ATTR;
|
|||||||
#endif
|
#endif
|
||||||
PACK_STRUCT_BEGIN
|
PACK_STRUCT_BEGIN
|
||||||
struct tcp_hdr {
|
struct tcp_hdr {
|
||||||
PACK_STRUCT_FIELD(u16_t src); //源端口
|
PACK_STRUCT_FIELD(u16_t src); //Դ�˿�
|
||||||
PACK_STRUCT_FIELD(u16_t dest); //目的端口
|
PACK_STRUCT_FIELD(u16_t dest); //Ŀ�Ķ˿�
|
||||||
PACK_STRUCT_FIELD(u32_t seqno); //序号
|
PACK_STRUCT_FIELD(u32_t seqno); //���
|
||||||
PACK_STRUCT_FIELD(u32_t ackno); //应答序号
|
PACK_STRUCT_FIELD(u32_t ackno); //Ӧ�����
|
||||||
PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags);//首部长度+保留位+标志位
|
PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags);//�ײ�����+����λ+��־λ
|
||||||
PACK_STRUCT_FIELD(u16_t wnd); //窗口大小
|
PACK_STRUCT_FIELD(u16_t wnd); //���ڴ�С
|
||||||
PACK_STRUCT_FIELD(u16_t chksum); //校验和
|
PACK_STRUCT_FIELD(u16_t chksum); //���
|
||||||
PACK_STRUCT_FIELD(u16_t urgp); //紧急指针
|
PACK_STRUCT_FIELD(u16_t urgp); //����ָ��
|
||||||
} PACK_STRUCT_STRUCT;
|
} PACK_STRUCT_STRUCT;
|
||||||
PACK_STRUCT_END
|
PACK_STRUCT_END
|
||||||
#ifdef PACK_STRUCT_USE_INCLUDES
|
#ifdef PACK_STRUCT_USE_INCLUDES
|
||||||
|
|||||||
@@ -32,17 +32,17 @@
|
|||||||
#ifndef __LWIP_TCPIP_H__
|
#ifndef __LWIP_TCPIP_H__
|
||||||
#define __LWIP_TCPIP_H__
|
#define __LWIP_TCPIP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if !NO_SYS /* don't build if not configured for use in lwipopts.h */
|
#if !NO_SYS /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/api_msg.h"
|
#include "api_msg.h"
|
||||||
#include "lwip/netifapi.h"
|
#include "netifapi.h"
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/api.h"
|
#include "api.h"
|
||||||
#include "lwip/sys.h"
|
#include "sys.h"
|
||||||
#include "lwip/timers.h"
|
#include "timers.h"
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -33,15 +33,15 @@
|
|||||||
#ifndef __LWIP_TIMERS_H__
|
#ifndef __LWIP_TIMERS_H__
|
||||||
#define __LWIP_TIMERS_H__
|
#define __LWIP_TIMERS_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
/* Timers are not supported when NO_SYS==1 and NO_SYS_NO_TIMERS==1 */
|
/* Timers are not supported when NO_SYS==1 and NO_SYS_NO_TIMERS==1 */
|
||||||
#define LWIP_TIMERS (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS))
|
#define LWIP_TIMERS (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS))
|
||||||
|
|
||||||
#if LWIP_TIMERS
|
#if LWIP_TIMERS
|
||||||
|
|
||||||
#include "lwip/err.h"
|
#include "err.h"
|
||||||
#include "lwip/sys.h"
|
#include "sys.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -32,14 +32,14 @@
|
|||||||
#ifndef __LWIP_UDP_H__
|
#ifndef __LWIP_UDP_H__
|
||||||
#define __LWIP_UDP_H__
|
#define __LWIP_UDP_H__
|
||||||
|
|
||||||
#include "lwip/opt.h"
|
#include "opt.h"
|
||||||
|
|
||||||
#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */
|
#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */
|
||||||
|
|
||||||
#include "lwip/pbuf.h"
|
#include "pbuf.h"
|
||||||
#include "lwip/netif.h"
|
#include "netif.h"
|
||||||
#include "lwip/ip_addr.h"
|
#include "ip_addr.h"
|
||||||
#include "lwip/ip.h"
|
#include "ip.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|||||||
@@ -60,9 +60,6 @@ MyMessage lightMsg(0, V_LIGHT);
|
|||||||
*/
|
*/
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Initialize library and add callback for incoming messages (signing is required)
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Register the LED Dimmable Light with the gateway
|
// Register the LED Dimmable Light with the gateway
|
||||||
present( 0, S_DIMMER );
|
present( 0, S_DIMMER );
|
||||||
|
|
||||||
@@ -80,7 +77,7 @@ void loop()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
if (message.type == V_LIGHT || message.type == V_DIMMER) {
|
if (message.type == V_LIGHT || message.type == V_DIMMER) {
|
||||||
|
|
||||||
// Retrieve the power or dim level from the incoming request message
|
// Retrieve the power or dim level from the incoming request message
|
||||||
|
|||||||
@@ -57,9 +57,6 @@ MyMessage dimmerMsg(CHILD_ID_LIGHT, V_DIMMER);
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Initialize library and add callback for incoming messages (signing is required)
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Send the Sketch Version Information to the Gateway
|
// Send the Sketch Version Information to the Gateway
|
||||||
sendSketchInfo(SN, SV);
|
sendSketchInfo(SN, SV);
|
||||||
|
|
||||||
@@ -86,7 +83,7 @@ void loop()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message)
|
void receive(const MyMessage &message)
|
||||||
{
|
{
|
||||||
if (message.type == V_LIGHT) {
|
if (message.type == V_LIGHT) {
|
||||||
Serial.println( "V_LIGHT command received..." );
|
Serial.println( "V_LIGHT command received..." );
|
||||||
|
|||||||
+1
-4
@@ -85,9 +85,6 @@ Bounce debouncer = Bounce();
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Initialize library and add callback for incoming messages (signing is required)
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Set knob button pin as input (with debounce)
|
// Set knob button pin as input (with debounce)
|
||||||
pinMode(KNOB_BUTTON_PIN, INPUT);
|
pinMode(KNOB_BUTTON_PIN, INPUT);
|
||||||
digitalWrite(KNOB_BUTTON_PIN, HIGH);
|
digitalWrite(KNOB_BUTTON_PIN, HIGH);
|
||||||
@@ -124,7 +121,7 @@ void loop()
|
|||||||
fadeStep();
|
fadeStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message)
|
void receive(const MyMessage &message)
|
||||||
{
|
{
|
||||||
if (message.type == V_LIGHT) {
|
if (message.type == V_LIGHT) {
|
||||||
// Incoming on/off command sent from controller ("1" or "0")
|
// Incoming on/off command sent from controller ("1" or "0")
|
||||||
|
|||||||
@@ -67,9 +67,6 @@ MyMessage pcMsg(CHILD_ID,V_VAR1);
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Initialize library and add callback for incoming messages (signing is required)
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Send the sketch version information to the gateway and Controller
|
// Send the sketch version information to the gateway and Controller
|
||||||
sendSketchInfo("Energy Meter", "1.0");
|
sendSketchInfo("Energy Meter", "1.0");
|
||||||
|
|
||||||
@@ -124,7 +121,7 @@ void loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
if (message.type==V_VAR1) {
|
if (message.type==V_VAR1) {
|
||||||
pulseCount = oldPulseCount = message.getLong();
|
pulseCount = oldPulseCount = message.getLong();
|
||||||
Serial.print("Received last pulse count from gw:");
|
Serial.print("Received last pulse count from gw:");
|
||||||
|
|||||||
@@ -64,64 +64,78 @@
|
|||||||
*
|
*
|
||||||
* Make sure to fill in your ssid and WiFi password below for ssid & pass.
|
* Make sure to fill in your ssid and WiFi password below for ssid & pass.
|
||||||
*/
|
*/
|
||||||
#define NO_PORTB_PINCHANGES
|
|
||||||
|
|
||||||
#include <SPI.h>
|
|
||||||
|
|
||||||
#include <MySigningNone.h>
|
|
||||||
#include <MySigningAtsha204Soft.h>
|
|
||||||
#include <MyTransportNRF24.h>
|
|
||||||
#include <MyTransportRFM69.h>
|
|
||||||
#include <EEPROM.h>
|
|
||||||
#include <MyHwESP8266.h>
|
|
||||||
#include <ESP8266WiFi.h>
|
#include <ESP8266WiFi.h>
|
||||||
|
|
||||||
#include <MyParserSerial.h>
|
|
||||||
#include <MySensor.h>
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "GatewayUtil.h"
|
|
||||||
|
// Enable debug prints to serial monitor
|
||||||
|
#define MY_DEBUG
|
||||||
|
|
||||||
|
// Enable and select radio type (if attached)
|
||||||
|
#define MY_RADIO_NRF24
|
||||||
|
//#define MY_RADIO_RFM69
|
||||||
|
|
||||||
|
// Gateway always enabled for ESP8266 by default
|
||||||
|
//#define MY_GATEWAY_ESP8266
|
||||||
|
|
||||||
|
// Enable to use UDP
|
||||||
|
#define MY_USE_UDP
|
||||||
|
|
||||||
|
#define MY_IP_ADDRESS 192,168,178,66 // If this is disabled, DHCP is used to retrieve address
|
||||||
|
// Renewal period if using DHCP
|
||||||
|
//#define MY_IP_RENEWAL_INTERVAL 60000
|
||||||
|
// The port to keep open on node server mode / or port to contact in client mode
|
||||||
|
#define MY_PORT 5003
|
||||||
|
|
||||||
|
// Controller ip address (enables client mode). Undefine this to act as sever.
|
||||||
|
#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 254
|
||||||
|
|
||||||
|
// The MAC address can be anything you want but should be unique on your network.
|
||||||
|
// Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
|
||||||
|
// Note that most of the Ardunio examples use "DEAD BEEF FEED" for the MAC address.
|
||||||
|
#define MY_MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
|
||||||
|
|
||||||
|
// Flash leds on rx/tx/err
|
||||||
|
#define MY_LEDS_BLINKING_FEATURE
|
||||||
|
// Set blinking period
|
||||||
|
#define MY_DEFAULT_LED_BLINK_PERIOD 300
|
||||||
|
|
||||||
|
// Enable inclusion mode
|
||||||
|
#define MY_INCLUSION_MODE_FEATURE
|
||||||
|
// Enable Inclusion mode button on gateway
|
||||||
|
#define MY_INCLUSION_BUTTON_FEATURE
|
||||||
|
// Set inclusion mode duration (in seconds)
|
||||||
|
#define MY_INCLUSION_MODE_DURATION 60
|
||||||
|
// Digital pin used for inclusion mode button
|
||||||
|
#define MY_INCLUSION_MODE_BUTTON_PIN 3
|
||||||
|
|
||||||
|
#define MY_DEFAULT_ERR_LED_PIN 7 // Error led pin
|
||||||
|
#define MY_DEFAULT_RX_LED_PIN 8 // Receive led pin
|
||||||
|
#define MY_DEFAULT_TX_LED_PIN 9 // the PCB, on board LED
|
||||||
|
|
||||||
|
|
||||||
|
// NEW
|
||||||
|
#define MY_ESP8266_MAX_CLIENTS 5 // how many clients should be able to telnet to this ESP8266
|
||||||
|
#define MY_ESP8266_SSID "MySSID"
|
||||||
|
#define MY_ESP8266_PASSWORD "MyVerySecretPassword"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define MAX_RECEIVE_LENGTH 100 // Max buffersize needed for messages coming from controller
|
||||||
|
#define MAX_SEND_LENGTH 120 // Max buffersize needed for messages destined for controller
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char string[MAX_RECEIVE_LENGTH];
|
||||||
|
uint8_t idx;
|
||||||
|
} inputBuffer;
|
||||||
|
|
||||||
|
|
||||||
|
#include <MySensor.h>
|
||||||
|
//#include <stdarg.h>
|
||||||
|
|
||||||
const char *ssid = "MySSID"; // cannot be longer than 32 characters!
|
const char *ssid = "MySSID"; // cannot be longer than 32 characters!
|
||||||
const char *pass = "MyVerySecretPassword"; //
|
const char *pass = "MyVerySecretPassword"; //
|
||||||
|
|
||||||
#define INCLUSION_MODE_TIME 1 // Number of minutes inclusion mode is enabled
|
|
||||||
#define INCLUSION_MODE_PIN 5 // Digital pin used for inclusion mode button
|
|
||||||
|
|
||||||
#define RADIO_CE_PIN 4 // radio chip enable
|
|
||||||
#define RADIO_SPI_SS_PIN 15 // radio SPI serial select
|
|
||||||
|
|
||||||
#ifdef WITH_LEDS_BLINKING
|
|
||||||
#define RADIO_ERROR_LED_PIN 7 // Error led pin
|
|
||||||
#define RADIO_RX_LED_PIN 8 // Receive led pin
|
|
||||||
#define RADIO_TX_LED_PIN 9 // the PCB, on board LED
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
// NRFRF24L01 radio driver (set low transmit power by default)
|
|
||||||
MyTransportNRF24 transport(RADIO_CE_PIN, RADIO_SPI_SS_PIN, RF24_PA_LEVEL_GW);
|
|
||||||
//MyTransportRFM69 transport;
|
|
||||||
|
|
||||||
|
|
||||||
// Message signing driver (signer needed if MY_SIGNING_FEATURE is turned on in MyConfig.h)
|
|
||||||
#ifdef MY_SIGNING_FEATURE
|
|
||||||
MySigningNone signer;
|
|
||||||
//MySigningAtsha204Soft signer;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Hardware profile
|
|
||||||
MyHwESP8266 hw;
|
|
||||||
|
|
||||||
// Construct MySensors library (signer needed if MY_SIGNING_FEATURE is turned on in MyConfig.h)
|
|
||||||
// To use LEDs blinking, uncomment WITH_LEDS_BLINKING in MyConfig.h
|
|
||||||
MySensor gw(transport, hw
|
|
||||||
#ifdef MY_SIGNING_FEATURE
|
|
||||||
, signer
|
|
||||||
#endif
|
|
||||||
#ifdef WITH_LEDS_BLINKING
|
|
||||||
, RADIO_RX_LED_PIN, RADIO_TX_LED_PIN, RADIO_ERROR_LED_PIN
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
#define IP_PORT 5003 // The port you want to open
|
#define IP_PORT 5003 // The port you want to open
|
||||||
#define MAX_SRV_CLIENTS 5 // how many clients should be able to telnet to this ESP8266
|
#define MAX_SRV_CLIENTS 5 // how many clients should be able to telnet to this ESP8266
|
||||||
@@ -155,7 +169,7 @@ void output(const char *fmt, ... )
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Setup console
|
/* // Setup console
|
||||||
hw_init();
|
hw_init();
|
||||||
|
|
||||||
Serial.println(); Serial.println();
|
Serial.println(); Serial.println();
|
||||||
@@ -175,17 +189,16 @@ void setup()
|
|||||||
setupGateway(INCLUSION_MODE_PIN, INCLUSION_MODE_TIME, output);
|
setupGateway(INCLUSION_MODE_PIN, INCLUSION_MODE_TIME, output);
|
||||||
|
|
||||||
// Initialize gateway at maximum PA level, channel 70 and callback for write operations
|
// Initialize gateway at maximum PA level, channel 70 and callback for write operations
|
||||||
gw.begin(incomingMessage, 0, true, 0);
|
begin(incomingMessage, 0, true, 0);
|
||||||
|
|
||||||
// start listening for clients
|
// start listening for clients
|
||||||
server.begin();
|
server.begin();
|
||||||
server.setNoDelay(true);
|
server.setNoDelay(true); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
gw.process();
|
/*
|
||||||
|
|
||||||
checkButtonTriggeredInclusion();
|
checkButtonTriggeredInclusion();
|
||||||
checkInclusionFinished();
|
checkInclusionFinished();
|
||||||
|
|
||||||
@@ -258,7 +271,7 @@ void loop() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -110,9 +110,6 @@
|
|||||||
#define MY_DEFAULT_RX_LED_PIN 8 // Receive led pin
|
#define MY_DEFAULT_RX_LED_PIN 8 // Receive led pin
|
||||||
#define MY_DEFAULT_TX_LED_PIN 9 // the PCB, on board LED
|
#define MY_DEFAULT_TX_LED_PIN 9 // the PCB, on board LED
|
||||||
|
|
||||||
#define MY_RADIO_CE_PIN 5 // radio chip enable
|
|
||||||
#define MY_RADIO_SPI_SS_PIN 6 // radio SPI serial select
|
|
||||||
|
|
||||||
#include <MySensor.h>
|
#include <MySensor.h>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ void setup()
|
|||||||
{
|
{
|
||||||
irrecv.enableIRIn(); // Start the ir receiver
|
irrecv.enableIRIn(); // Start the ir receiver
|
||||||
decoder.UseExtnBuf(Buffer);
|
decoder.UseExtnBuf(Buffer);
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Send the sketch version information to the gateway and Controller
|
// Send the sketch version information to the gateway and Controller
|
||||||
sendSketchInfo("IR Sensor", "1.0");
|
sendSketchInfo("IR Sensor", "1.0");
|
||||||
@@ -82,7 +81,7 @@ void loop()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
// We only expect one type of message from controller. But we better check anyway.
|
// We only expect one type of message from controller. But we better check anyway.
|
||||||
if (message.type==V_LIGHT) {
|
if (message.type==V_LIGHT) {
|
||||||
int incomingRelayStatus = message.getInt();
|
int incomingRelayStatus = message.getInt();
|
||||||
|
|||||||
@@ -206,7 +206,6 @@ void setup()
|
|||||||
lastTimeRun = lastTimeRun | loadState(i + 1); // assemble 4 bytes into an ussigned long epoch timestamp
|
lastTimeRun = lastTimeRun | loadState(i + 1); // assemble 4 bytes into an ussigned long epoch timestamp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setIncomingCallback(getVariables);
|
|
||||||
sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
|
sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
|
||||||
for (byte i = 0; i <= NUMBER_OF_VALVES; i++)
|
for (byte i = 0; i <= NUMBER_OF_VALVES; i++)
|
||||||
{
|
{
|
||||||
@@ -225,7 +224,7 @@ void setup()
|
|||||||
int clockCounter = 0;
|
int clockCounter = 0;
|
||||||
while (timeStatus() == timeNotSet && clockCounter < 21)
|
while (timeStatus() == timeNotSet && clockCounter < 21)
|
||||||
{
|
{
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
DEBUG_PRINTLN(F("Requesting time from Gateway:"));
|
DEBUG_PRINTLN(F("Requesting time from Gateway:"));
|
||||||
wait(1000);
|
wait(1000);
|
||||||
lcd.print(".");
|
lcd.print(".");
|
||||||
@@ -533,7 +532,7 @@ void slowToggleLED ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
void getVariables(const MyMessage &message)
|
void receive(const MyMessage &message)
|
||||||
{
|
{
|
||||||
boolean zoneTimeUpdate = false;
|
boolean zoneTimeUpdate = false;
|
||||||
if (message.isAck())
|
if (message.isAck())
|
||||||
@@ -835,7 +834,7 @@ void updateClock()
|
|||||||
lcd.setCursor(15, 0);
|
lcd.setCursor(15, 0);
|
||||||
lcd.write(byte(0));
|
lcd.write(byte(0));
|
||||||
clockUpdating = true;
|
clockUpdating = true;
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
lastVeraGetTime = millis();
|
lastVeraGetTime = millis();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -333,8 +333,6 @@ void setup()
|
|||||||
// Random SEED
|
// Random SEED
|
||||||
randomSeed(analogRead(0));
|
randomSeed(analogRead(0));
|
||||||
|
|
||||||
// Start the gateway
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
wait(LONG_WAIT);
|
wait(LONG_WAIT);
|
||||||
Serial.println("GW Started");
|
Serial.println("GW Started");
|
||||||
|
|
||||||
@@ -574,7 +572,7 @@ void loop()
|
|||||||
|
|
||||||
// Request time
|
// Request time
|
||||||
Serial.println("Request Time");
|
Serial.println("Request Time");
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
wait(LONG_WAIT);
|
wait(LONG_WAIT);
|
||||||
|
|
||||||
//Read Sensors
|
//Read Sensors
|
||||||
@@ -1196,7 +1194,7 @@ void custom(){
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
switch (message.type) {
|
switch (message.type) {
|
||||||
#ifdef ID_S_ARMED
|
#ifdef ID_S_ARMED
|
||||||
case V_ARMED:
|
case V_ARMED:
|
||||||
|
|||||||
@@ -29,8 +29,6 @@ MyMessage mPing(CHILD, V_VAR1); //Ping message
|
|||||||
MyMessage mPong(CHILD, V_VAR2); //Pong message
|
MyMessage mPong(CHILD, V_VAR2); //Pong message
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
present(CHILD, S_CUSTOM); //
|
present(CHILD, S_CUSTOM); //
|
||||||
|
|
||||||
sendSketchInfo( nodeTypeAsCharRepresentation( getNodeId() ), VSN );
|
sendSketchInfo( nodeTypeAsCharRepresentation( getNodeId() ), VSN );
|
||||||
@@ -63,7 +61,7 @@ void loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
|
|
||||||
LOG(F("Received %s from %s\n"), msgTypeAsCharRepresentation((mysensor_data)message.type), nodeTypeAsCharRepresentation(message.sender));
|
LOG(F("Received %s from %s\n"), msgTypeAsCharRepresentation((mysensor_data)message.type), nodeTypeAsCharRepresentation(message.sender));
|
||||||
|
|
||||||
|
|||||||
@@ -96,9 +96,6 @@ void setup() {
|
|||||||
// configure board to read RFID tags
|
// configure board to read RFID tags
|
||||||
nfc.SAMConfig();
|
nfc.SAMConfig();
|
||||||
|
|
||||||
// Add callback for incoming messages
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
sendSketchInfo("RFID Lock", "1.0");
|
sendSketchInfo("RFID Lock", "1.0");
|
||||||
present(CHILD_ID, S_LOCK);
|
present(CHILD_ID, S_LOCK);
|
||||||
|
|
||||||
@@ -169,7 +166,7 @@ void setLockState(bool state, bool doSend){
|
|||||||
lockStatus = state;
|
lockStatus = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
// We only expect one type of message from controller. But we better check anyway.
|
// We only expect one type of message from controller. But we better check anyway.
|
||||||
if (message.type==V_LOCK_STATUS) {
|
if (message.type==V_LOCK_STATUS) {
|
||||||
// Change relay state
|
// Change relay state
|
||||||
|
|||||||
@@ -62,9 +62,6 @@ int isShow;
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Add callback for incoming messages
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Present sketch (name, version)
|
// Present sketch (name, version)
|
||||||
sendSketchInfo(SN, SV);
|
sendSketchInfo(SN, SV);
|
||||||
|
|
||||||
@@ -130,7 +127,7 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message)
|
void receive(const MyMessage &message)
|
||||||
{
|
{
|
||||||
if (message.isAck())
|
if (message.isAck())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -145,9 +145,6 @@ void setup()
|
|||||||
pinMode(ledPin, OUTPUT);
|
pinMode(ledPin, OUTPUT);
|
||||||
digitalWrite(ledPin, HIGH);
|
digitalWrite(ledPin, HIGH);
|
||||||
//
|
//
|
||||||
//Let's get the controller talking to the Arduino
|
|
||||||
setIncomingCallback(getVariables);
|
|
||||||
|
|
||||||
sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
|
sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
|
||||||
wait(DWELL_TIME);
|
wait(DWELL_TIME);
|
||||||
present(CHILD_ID_RAIN_LOG, S_RAIN);
|
present(CHILD_ID_RAIN_LOG, S_RAIN);
|
||||||
@@ -161,7 +158,7 @@ void setup()
|
|||||||
unsigned long functionTimeout = millis();
|
unsigned long functionTimeout = millis();
|
||||||
while (timeStatus() == timeNotSet && millis() - functionTimeout < 30000UL)
|
while (timeStatus() == timeNotSet && millis() - functionTimeout < 30000UL)
|
||||||
{
|
{
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
DEBUG_PRINTLN(F("Getting Time"));
|
DEBUG_PRINTLN(F("Getting Time"));
|
||||||
wait(1000); // call once per second
|
wait(1000); // call once per second
|
||||||
DEBUG_PRINTLN(F("."));
|
DEBUG_PRINTLN(F("."));
|
||||||
@@ -322,7 +319,7 @@ void loop()
|
|||||||
DEBUG_PRINTLN(eepromIndex);
|
DEBUG_PRINTLN(eepromIndex);
|
||||||
saveState(eepromIndex, 0xFE);
|
saveState(eepromIndex, 0xFE);
|
||||||
saveState(eepromIndex + 1, 0xFE);
|
saveState(eepromIndex + 1, 0xFE);
|
||||||
requestTime(receiveTime); // sync the time every hour
|
requestTime(); // sync the time every hour
|
||||||
wait(DWELL_TIME);
|
wait(DWELL_TIME);
|
||||||
transmitRainData();
|
transmitRainData();
|
||||||
rainRate = 0;
|
rainRate = 0;
|
||||||
@@ -529,7 +526,7 @@ void transmitRainData(void)
|
|||||||
wait(DWELL_TIME);
|
wait(DWELL_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
void getVariables(const MyMessage &message)
|
void receive(const MyMessage &message)
|
||||||
{
|
{
|
||||||
if (message.sensor == CHILD_ID_RAIN_LOG)
|
if (message.sensor == CHILD_ID_RAIN_LOG)
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-2
@@ -68,7 +68,7 @@ void setup()
|
|||||||
setSyncProvider(RTC.get);
|
setSyncProvider(RTC.get);
|
||||||
|
|
||||||
// Request latest time from controller at startup
|
// Request latest time from controller at startup
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
|
|
||||||
// initialize the lcd for 16 chars 2 lines and turn on backlight
|
// initialize the lcd for 16 chars 2 lines and turn on backlight
|
||||||
lcd.begin(16,2);
|
lcd.begin(16,2);
|
||||||
@@ -93,7 +93,7 @@ void loop()
|
|||||||
|| (timeReceived && (now-lastRequest) > (60UL*1000UL*60UL))) {
|
|| (timeReceived && (now-lastRequest) > (60UL*1000UL*60UL))) {
|
||||||
// Request time from controller.
|
// Request time from controller.
|
||||||
Serial.println("requesting time");
|
Serial.println("requesting time");
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
lastRequest = now;
|
lastRequest = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,9 +46,6 @@
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Initialize library and add callback for incoming messages
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Send the sketch version information to the gateway and Controller
|
// Send the sketch version information to the gateway and Controller
|
||||||
sendSketchInfo("Relay", "1.0");
|
sendSketchInfo("Relay", "1.0");
|
||||||
|
|
||||||
@@ -69,7 +66,7 @@ void loop()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
// We only expect one type of message from controller. But we better check anyway.
|
// We only expect one type of message from controller. But we better check anyway.
|
||||||
if (message.type==V_LIGHT) {
|
if (message.type==V_LIGHT) {
|
||||||
// Change relay state
|
// Change relay state
|
||||||
|
|||||||
@@ -56,8 +56,6 @@ MyMessage msg(CHILD_ID,V_LIGHT);
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Send the sketch version information to the gateway and Controller
|
// Send the sketch version information to the gateway and Controller
|
||||||
sendSketchInfo("Relay & Button", "1.0");
|
sendSketchInfo("Relay & Button", "1.0");
|
||||||
|
|
||||||
@@ -98,7 +96,7 @@ void loop()
|
|||||||
oldValue = value;
|
oldValue = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
// We only expect one type of message from controller. But we better check anyway.
|
// We only expect one type of message from controller. But we better check anyway.
|
||||||
if (message.isAck()) {
|
if (message.isAck()) {
|
||||||
Serial.println("This is an ack from gateway");
|
Serial.println("This is an ack from gateway");
|
||||||
|
|||||||
@@ -98,8 +98,6 @@ void setup() {
|
|||||||
pinMode(programButton, INPUT);
|
pinMode(programButton, INPUT);
|
||||||
digitalWrite(programButton, HIGH); // Enable internal pull up
|
digitalWrite(programButton, HIGH); // Enable internal pull up
|
||||||
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
sendSketchInfo("Secret Knock", "1.0");
|
sendSketchInfo("Secret Knock", "1.0");
|
||||||
present(CHILD_ID, S_LOCK);
|
present(CHILD_ID, S_LOCK);
|
||||||
|
|
||||||
@@ -365,7 +363,7 @@ void chirp(int playTime, int delayTime){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
// We only expect one type of message from controller. But we better check anyway.
|
// We only expect one type of message from controller. But we better check anyway.
|
||||||
if (message.type==V_LOCK_STATUS) {
|
if (message.type==V_LOCK_STATUS) {
|
||||||
// Change relay state
|
// Change relay state
|
||||||
|
|||||||
@@ -62,11 +62,8 @@
|
|||||||
#define LOCK_LOCK 1 // GPIO value to write to lock attached lock
|
#define LOCK_LOCK 1 // GPIO value to write to lock attached lock
|
||||||
#define LOCK_UNLOCK 0 // GPIO value to write to unlock attached lock
|
#define LOCK_UNLOCK 0 // GPIO value to write to unlock attached lock
|
||||||
|
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Add callback for incoming messages (signing is required)
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
// Send the sketch version information to the gateway and Controller
|
// Send the sketch version information to the gateway and Controller
|
||||||
sendSketchInfo("Secure Lock", "1.0");
|
sendSketchInfo("Secure Lock", "1.0");
|
||||||
|
|
||||||
@@ -85,7 +82,7 @@ void loop()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
// We only expect one type of message from controller. But we better check anyway.
|
// We only expect one type of message from controller. But we better check anyway.
|
||||||
if (message.type==V_LOCK_STATUS && message.sensor<=NOF_LOCKS) {
|
if (message.type==V_LOCK_STATUS && message.sensor<=NOF_LOCKS) {
|
||||||
// Change relay state
|
// Change relay state
|
||||||
|
|||||||
@@ -55,9 +55,6 @@ bool attachedServo = false;
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
// Attach method for incoming messages
|
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// Send the sketch version information to the gateway and Controller
|
// Send the sketch version information to the gateway and Controller
|
||||||
sendSketchInfo("Servo", "1.0");
|
sendSketchInfo("Servo", "1.0");
|
||||||
|
|
||||||
@@ -76,7 +73,7 @@ void loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
myservo.attach(SERVO_DIGITAL_OUT_PIN);
|
myservo.attach(SERVO_DIGITAL_OUT_PIN);
|
||||||
attachedServo = true;
|
attachedServo = true;
|
||||||
if (message.type==V_DIMMER) { // This could be M_ACK_VARIABLE or M_SET_VARIABLE
|
if (message.type==V_DIMMER) { // This could be M_ACK_VARIABLE or M_SET_VARIABLE
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ void setup()
|
|||||||
sendSketchInfo("Clock", "1.0");
|
sendSketchInfo("Clock", "1.0");
|
||||||
|
|
||||||
// Request time from controller.
|
// Request time from controller.
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is called when a new time value was received
|
// This is called when a new time value was received
|
||||||
@@ -64,7 +64,7 @@ void loop()
|
|||||||
|| (timeReceived && (now-lastRequest) > (60UL*1000UL*60UL))) {
|
|| (timeReceived && (now-lastRequest) > (60UL*1000UL*60UL))) {
|
||||||
// Request time from controller.
|
// Request time from controller.
|
||||||
Serial.println("requesting time");
|
Serial.println("requesting time");
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
lastRequest = now;
|
lastRequest = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -131,7 +131,7 @@ void setup()
|
|||||||
sendSketchInfo("Scene Ctrl", "1.0");
|
sendSketchInfo("Scene Ctrl", "1.0");
|
||||||
present(CHILD_ID, S_SCENE_CONTROLLER);
|
present(CHILD_ID, S_SCENE_CONTROLLER);
|
||||||
// Request time from controller.
|
// Request time from controller.
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ void loop()
|
|||||||
|| (timeReceived && now-lastRequest > (unsigned long)60*1000*60)) {
|
|| (timeReceived && now-lastRequest > (unsigned long)60*1000*60)) {
|
||||||
// Request time from controller.
|
// Request time from controller.
|
||||||
Serial.println("requesting time");
|
Serial.println("requesting time");
|
||||||
requestTime(receiveTime);
|
requestTime();
|
||||||
lastRequest = now;
|
lastRequest = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,8 +76,6 @@ unsigned long lastPulse =0;
|
|||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
setIncomingCallback(incomingMessage);
|
|
||||||
|
|
||||||
// initialize our digital pins internal pullup resistor so one pulse switches from high to low (less distortion)
|
// initialize our digital pins internal pullup resistor so one pulse switches from high to low (less distortion)
|
||||||
pinMode(DIGITAL_INPUT_SENSOR, INPUT_PULLUP);
|
pinMode(DIGITAL_INPUT_SENSOR, INPUT_PULLUP);
|
||||||
|
|
||||||
@@ -156,7 +154,7 @@ void loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void incomingMessage(const MyMessage &message) {
|
void receive(const MyMessage &message) {
|
||||||
if (message.type==V_VAR1) {
|
if (message.type==V_VAR1) {
|
||||||
unsigned long gwPulseCount=message.getULong();
|
unsigned long gwPulseCount=message.getULong();
|
||||||
pulseCount += gwPulseCount;
|
pulseCount += gwPulseCount;
|
||||||
|
|||||||
@@ -19,6 +19,11 @@ requestTime KEYWORD2
|
|||||||
saveState KEYWORD2
|
saveState KEYWORD2
|
||||||
loadState KEYWORD2
|
loadState KEYWORD2
|
||||||
wait KEYWORD2
|
wait KEYWORD2
|
||||||
|
receive KEYWORD2
|
||||||
|
receiveTime KEYWORD2
|
||||||
|
loop KEYWORD2
|
||||||
|
setup KEYWORD2
|
||||||
|
presentation KEYWORD2
|
||||||
|
|
||||||
######################################
|
######################################
|
||||||
# Constants (LITERAL1)
|
# Constants (LITERAL1)
|
||||||
|
|||||||
Reference in New Issue
Block a user