Giter Club home page Giter Club logo

6lowpan_log's People

Contributors

jelledevleeschouwer avatar

Watchers

 avatar  avatar

6lowpan_log's Issues

Tasks

Times include unit testing

Testing environment (1,5 day)

  • Update geomess app to refactored API (1/3 day)
  • Setup unit tests for 6LoWPAN-module (1/2 hour)
  • Setup unit tests for IEEE802.15.4-module (1/2 hour)
  • Setup RaspberryPi with openlabs 802.15.4 RF module and Linux 6LoWPAN kernel (1 day)

pico_device (1 hour)

  • Update to refactored API with pico_802154_info (1 hour)

IEEE802.15.4 (9 hours)

Transmitting
  • Setup pico_protocol-interface for IEEE802.15.4 module (1/3 hour)
  • Update stack to choose between Ethernet or IEEE802.15.4 based on pico_ll_mode.(1/3 hour)
  • Function that translates the source IP address to a link layer address (1/2 hour)
  • Function that translates the destination IP address to a link layer address and provide extensibility so that the detination link layer address can later on be retrieved from the ND tables (2/3 hour)
  • Estimator function that returns the length the MAC header would be, based on SRC and DST ll-address. (10 min)
  • Estimator function that returns the length the Mesh header would be, based on SRC and DST ll-address. (10 min)
  • Estimator function that returns the lenght the LL_SEC header would be, based on the SRC and DST ll-address. (10 min)
  • Processing function that returns a buffer with the link layer MAC header to prepend before the frame.
    int pico_ll_mac_header(uint8_t *pico_ll_security_header(struct pico_frame *f, struct pico_802154_addr src, struct pico_802154_addr dst, uint8_t *len);
  • _Extensible processing function that returns a buffer with a mesh header_ to prepend before the 6LoWPAN-frame in a Mesh-Under topoly (10 min)
    uint8_t *pico_ll_mesh_header(struct pico_frame *f, struct pico_802154_addr src, struct pico_802154_addr dst, uint8_t *len);
  • _Extensible processing function that returns a buffer with a link layer security header_ to prepend before the frame when Link Layer Security if provided (10 min)
    uint8_t *pico_ll_security_header(struct pico_frame *f, struct pico_802154_addr src, struct pico_802154_addr dst, uint8_t *len);
  • Utility function that maps an IEEE802.15.4 address structure onto a flat buffer (1/2 hour)
  • Utility function that converts an IEEE802.15.4 address from host order into network order (2/3 hour)
  • Utility function that converts a MCAST IPv6 address into a link layer address, provide extensibility for a routing-over topology where the frame is sent to a unicast address instead of link layer broadcast. (10 min)
  • Utility function that converts a Link-Local IPv6 address into a IEEE802.15.4 address (2/3 hour)
Receiving
  • Utility function that retrieves the LL-addresses from a received frame (1/3 hour)
  • Utility function that maps a flat buffer onto an IEEE802.15.4 address structure (1/2 hour)
  • Utility function that converts an IEEE802.15.4 address from network order into host order (2/3 hour)
  • Incoming processing function that first passes the MAC payload to extensible processing functions like for Mesh-Under processing and Link Layer Security. Handles return type, frame could be either discarded, released or kept. Function also sets net_hdr-pointer of the frame to the beginning of the MAC payload for 6LoWPAN. (3/4 hour)
  • [Utility function that _compares two IEEE802.15.4 address_ structures (2/3 hour)]
After IPv6-ND
  • Update the function that translates the destination IP address to retrieve the link layer address from the ND tables (1/2 hour)

6LoWPAN (31,5 hours)

  • Setup pico_protocol-interface for 6LoWPAN module (1/3 hour)
  • Pull function that enqueues the frame for further processing in the incoming 6LoWPAN queue. pico_6lowpan_receive(...); (1/3 hour)
  • Outgoing processing function that tries to send the frame to the link layer and if that "failed", sends the frame through compression and fragmentation. lowpan_process_out(...); (1/3 hour)
  • Incoming processing function that checks for dispatch types and sends the frame through the proper processing layer, either fragmentation, decompression or both. (2/3 hour)
Compression
  • General compression function that stores NH-field before sending the payload through IPHC, NHC_EXTand NHC_UDP respectively. Afterwards it puts all the gathered inline buffers (+ 6LoWPAN Dispatch Headers) back in the frame and moves the rest of the frame at buf + original_len + PICO_UDPHDR_SIZE to buf + inline_len + inline_len_udp (1 hour)
  • IPHC compression function that alloc's an inline buffer, compresses all the fields and returns inline_buf, inline_len and original_len. (2/3 hour)
  • NHC_EXT compression function that compresses extension headers in the inline_buffer and returns new inline_len and final_next_header. (2/3 hour)
  • NHC_UDP compression function that allocs another inline buffer, compresses the UDP fields in that buffer and returns it together with inline_len_udp. (2/3 hour)
  • Compressor function for each IPv6 header field (3 hours)
  • Compressor function for each UDP header field (2 hours)
Decompression
  • General decompression function that grows the frame with PICO_UDPHDR_SIZE + PICO_SIZE_IP6HDR and sends the payload through decompression functions for IPHC, NHC_EXTand NHC_UDP respectively. (1,5 hours) Afterwards it;
  1. Moves the rest of the frame at buf + comp_ipv6_hdr_len + comp_ext_hdr_len + comp_udp_hdr_len to buf + PICO_SIZE_IP6HDR + comp_ext_hdr_len + PICO_UDPHDR_SIZE
  2. Moves the IPv6 extension headers to buf + PICO_SIZE_IP6HDR
  3. Copies decompressed_buf_udp to buf + PICO_SIZE_IP6HDR + comp_ext_hdr_len and also set transport_hdr to this location.
  4. Copies decompressed_buf_ipv6to buf.
  5. IPHC decompression function that allocs a decompression buffer of PICO_SIZE_IP6HDR, decompresses all the fields into that buffer and eventually returns that buffer together with comp_ipv6_hdr_len. (1 hour)
  6. NHC_EXT decompression function that decompresses all the extension headers inline in the frame-buffer and returns comp_ext_hdr_len + the next header field of the last extension header. (2 hours)
  7. NHC_UDP decompression function that allocs a decompression buffer of PICO_UDPHDR_SIZE, decompresses all the UDP fields into that buffer and eventually returns that buffer together with comp_udp_hdr_len.
  8. Decompression function for each IPv6 header field (3 hours)
  9. Decompression function for each UDP header field (2 hours)
    Fragmentation
  10. General function for sending initial fragment (1 hour)
  11. Function that calculates bytes_to_copy(initial fragment size) and offset_for_next_fragment(datagram offset). (1/2 hour)
  12. Function that creates a fragmentation cookie and inserts it in the cookie tree. (3/4 hour)
  13. Function that compares 2 frag-cookies. (2/3 hour)
  14. Function that looks for a frag-cookie in the tree. (2/3 hour)
  15. General function for sending subsequent fragments (1 hour)
  16. Function that deletes a cookie from the tree. (1/2 hour)
Defragmentation
  • General defragmentation function (2 hours)
  • Function to create datagram cookie with a pico_frame of certain size, tag, ... (1 hour)
  • Function that copies payload from received frame into datagram cookie at the correct offset (3/4 hour)
  • Function that finds a datagram cookie in the fragments tree. (1 hour)
  • Function that destroys a datagram cookie from the fragments tree. (1/2 hour)
  • Timer function that checks for stale datagram cookies in the fragments tree. (1 hour)

Total estimated time: 53,50 hours or 7 8h working days

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.