B.3 6lowpan api, Avr2070 – Atmel AVR2070 User Manual

Page 52

Advertising
background image

52

AVR2070

8240B-AVR-06/09

B.3 6LoWPAN API

This group of functions is used to send a UDP packet to a node either on the wireless
network (‘iplocal’) or somewhere outside the wireless network (‘ipglobal’). The source
and destination ports are set, the payload loaded, and finally the UDP packet is sent.
The Doxygen documentation provides specific examples.

• uint8_t

*

sixlowpan_hc01_udp_setup_ipglobal(void)

• void

sixlowpan_hc01_udp_setup_iplocal(uint16_t addr)

• void

sixlowpan_hc01_udp_setup_ports(uint16_t srcport, uint16_t destport)

• uint8_t

*

sixlowpan_hc01_udp_get_payloadptr(void)

• void

sixlowpan_hc01_udp_set_payloadsize(uint8_t size)

• void

sixlowpan_hc01_udp_send(void)

This function below is called on the AVR when a UDP frame is received. The UDP
payload is pointed to by payload and is of length payloadlen. After the frame is
processed, a message can be sent back to the source port and IP address by
copying a new payload into the payload pointer. The return value indicates how many
bytes to send back – a return of zero results in no response sent back. The
payloadmax parameter indicates the maximum allowable payload that could be sent.
This function is written by the user, an example is provided in the
sixlowpan_application_example.c file.

• uint8_t

sixlowpan_udp_usercall (uint16_t sourceport, uint16_t destport,

uint8_t * payload, uint8_t payloadlen, uint8_t payloadmax)

The following group of functions is used to send an ICMP Echo Request (ping) to a
remote IP address. The Doxygen documentation contains an example of how to use
this to ping an end node.

• uint8_t

*

sixlowpan_hc01_ping_setup_ipglobal (uint8_t sequence)

• void

sixlowpan_hc01_ping_send (void)

The next function is called when an ICMP Echo Response is received. The sequence
holds the sequence number of the returned ping.

• void

sixlowpan_ping_usercall (uint8_t sequence)

This function below handles an incoming RUM frame that is flagged as containing
6LoWPAN data. It copies the frame to another buffer, and calls the
sixlowpan_hc01_process() function on the AVR. This function performs any needed
actions – responding to Neighbor Solicitation, storing information from Router
Advertisements, responding to Echo Requests, and calling user functions if data is
received. The 6LoWPAN and IPv6 stack on the ARM device are based on uIPv6
integrated into Contiki. See

www.sics.se/contiki

and the RUM source code for

integration details. This process is shown for AVR devices in figure B-7 and for ARM
devices in figure B-8.

• void

sixlowpan_DataIndication(ftData * frame, uint8_t payloadlen)

Advertising