Use this mode if you do not run an OS on your system. #define NO_SYS to 1. Feed incoming packets to netif->input(pbuf, netif) function from mainloop, not from interrupt context. You can allocate a Packet buffers (PBUF) in interrupt context and put them into a queue which is processed from mainloop.
Call sys_check_timeouts() periodically in the mainloop.
Porting: implement all functions in Time, Critical sections and Compiler/platform abstraction.
You can only use "raw" APIs in this mode.
Sample code:
void
eth_mac_irq()
{
if(p != NULL) {
if(!queue_try_put(&queue, p)) {
}
}
}
{
LINK_STATS_INC(link.xmit);
int unicast = ((p->
payload[0] & 0x01) == 0);
if (unicast) {
} else {
}
lock_interrupts();
unlock_interrupts();
}
static void
{
}
{
}
void
main(void)
{
while(1) {
if(link_state_changed()) {
if(link_is_up()) {
} else {
}
}
lock_interrupts();
struct pbuf* p = queue_try_get(&queue);
unlock_interrupts();
if(p != NULL) {
LINK_STATS_INC(link.recv);
int unicast = ((p->
payload[0] & 0x01) == 0);
if (unicast) {
} else {
}
}
}
}
}
err_t etharp_output(struct netif *netif, struct pbuf *q, const ip4_addr_t *ipaddr)
Definition etharp.c:792
err_t ethip6_output(struct netif *netif, struct pbuf *q, const ip6_addr_t *ip6addr)
Definition ethip6.c:79
err_t dhcp_start(struct netif *netif)
Definition dhcp.c:810
void httpd_init(void)
Definition httpd.c:2697
s8_t err_t
Definition err.h:96
@ ERR_OK
Definition err.h:55
#define IP4_ADDR_ANY
Definition ip_addr.h:417
char * ip4addr_ntoa(const ip_addr_t *addr)
Definition ip.c:79
void lwip_init(void)
Definition init.c:342
err_t netif_input(struct pbuf *p, struct netif *inp)
Definition netif.c:228
void sys_check_timeouts(void)
Definition timeouts.c:352
#define SMEMCPY(dst, src, len)
Definition opt.h:145
#define NETIF_FLAG_ETHERNET
Definition netif.h:101
#define NETIF_FLAG_ETHARP
Definition netif.h:97
#define NETIF_FLAG_MLD6
Definition netif.h:107
#define NETIF_FLAG_IGMP
Definition netif.h:104
#define NETIF_FLAG_BROADCAST
Definition netif.h:87
void netif_create_ip6_linklocal_address(struct netif *netif, u8_t from_mac_48bit)
Definition netif.c:1551
#define MIB2_STATS_NETIF_ADD(n, x, val)
Definition snmp.h:110
#define MIB2_STATS_NETIF_INC(n, x)
Definition snmp.h:105
#define MIB2_INIT_NETIF(netif, type, speed)
Definition snmp.h:119
struct netif * netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input)
Definition netif.c:287
void netif_set_link_down(struct netif *netif)
Definition netif.c:1056
void netif_set_default(struct netif *netif)
Definition netif.c:849
void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback)
Definition netif.c:987
void netif_set_link_up(struct netif *netif)
Definition netif.c:1018
void netif_set_up(struct netif *netif)
Definition netif.c:871
struct pbuf * pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)
Definition pbuf.c:226
u8_t pbuf_free(struct pbuf *p)
Definition pbuf.c:729
u16_t pbuf_copy_partial(const struct pbuf *buf, void *dataptr, u16_t len, u16_t offset)
Definition pbuf.c:1061
err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len)
Definition pbuf.c:1236
@ PBUF_POOL
Definition pbuf.h:167
@ PBUF_RAW
Definition pbuf.h:111
u8_t flags
Definition netif.h:354
char name[2]
Definition netif.h:356
netif_output_fn output
Definition netif.h:303
netif_input_fn input
Definition netif.h:297
netif_output_ip6_fn output_ip6
Definition netif.h:314
u16_t mtu
Definition netif.h:344
netif_linkoutput_fn linkoutput
Definition netif.h:308
u8_t hwaddr[6U]
Definition netif.h:350
u8_t hwaddr_len
Definition netif.h:352
u16_t tot_len
Definition pbuf.h:200
void * payload
Definition pbuf.h:191