86 lines
1.8 KiB
C
86 lines
1.8 KiB
C
#ifndef __PING_H__
|
|
#define __PING_H__
|
|
#include "lwip/ip_addr.h"
|
|
#include "lwip/icmp.h"
|
|
/**
|
|
* PING_USE_SOCKETS: Set to 1 to use sockets, otherwise the raw api is used
|
|
*/
|
|
#ifndef PING_USE_SOCKETS
|
|
#define PING_USE_SOCKETS LWIP_SOCKET
|
|
#endif
|
|
|
|
/**
|
|
* PING_DEBUG: Enable debugging for PING.
|
|
*/
|
|
#ifndef PING_DEBUG
|
|
#define PING_DEBUG LWIP_DBG_OFF
|
|
#endif
|
|
|
|
/** ping receive timeout - in milliseconds */
|
|
#ifndef PING_RCV_TIMEO
|
|
#define PING_RCV_TIMEO 1000
|
|
#endif
|
|
|
|
/** ping delay - in milliseconds */
|
|
#ifndef PING_COARSE
|
|
#define PING_COARSE 1000
|
|
#endif
|
|
|
|
/** ping identifier - must fit on a u16_t */
|
|
#ifndef PING_ID
|
|
#define PING_ID 0xAFAF
|
|
#endif
|
|
|
|
/** ping additional data size to include in the packet */
|
|
#ifndef PING_DATA_SIZE
|
|
#define PING_DATA_SIZE 32
|
|
#endif
|
|
|
|
/** ping result action - no default action */
|
|
#ifndef PING_RESULT
|
|
#define PING_RESULT(ping_ok)
|
|
#endif
|
|
|
|
#define DEFAULT_PING_MAX_COUNT 4
|
|
#define PING_TIMEOUT_MS 1000
|
|
|
|
typedef void (* ping_recv_function)(void* arg, void *pdata);
|
|
typedef void (* ping_sent_function)(void* arg, void *pdata);
|
|
|
|
struct ping_option{
|
|
uint32 count;
|
|
uint32 ip;
|
|
uint32 coarse_time;
|
|
ping_recv_function recv_function;
|
|
ping_sent_function sent_function;
|
|
void* reverse;
|
|
};
|
|
|
|
struct ping_msg{
|
|
struct ping_option *ping_opt;
|
|
struct raw_pcb *ping_pcb;
|
|
uint32 ping_start;
|
|
uint32 ping_sent;
|
|
uint32 timeout_count;
|
|
uint32 max_count;
|
|
uint32 sent_count;
|
|
uint32 coarse_time;
|
|
};
|
|
|
|
struct ping_resp{
|
|
uint32 total_count;
|
|
uint32 resp_time;
|
|
uint32 seqno;
|
|
uint32 timeout_count;
|
|
uint32 bytes;
|
|
uint32 total_bytes;
|
|
uint32 total_time;
|
|
sint8 ping_err;
|
|
};
|
|
|
|
bool ping_start(struct ping_option *ping_opt);
|
|
bool ping_regist_recv(struct ping_option *ping_opt, ping_recv_function ping_recv);
|
|
bool ping_regist_sent(struct ping_option *ping_opt, ping_sent_function ping_sent);
|
|
|
|
#endif /* __PING_H__ */
|