TODO for 0cpm Firmerware ======================== The current code is a demonstration of a core principle, an alpha level implementation that does work. It demonstrates a way of getting an IPv6 address anywhere, so as to enable embedded firmware to be written as IPv6-only software. The framework presented requires no network stack from the supporting OS, and indeed it can be built directly on hardware after adding drivers for specific chips. The current code contains a few things that may or may not be so good in the end. After gaining some experience, it is good to have a good look at: * The mem[] array is untyped, calling for lots of cast commands. This is not handy, and a result of the BPF-style architecture for netinput. (The original idea was to do the entire processing in that style, but it turned out not to be sufficiently flexible for that.) * Must join multicast addresses for local addresses, as described in http://tools.ietf.org/html/rfc4291 section 2.7.1, ff02::1:ff00:0/102 for solicited-node address. WIDE DHCPv6 server actually needs this. Also join ff02::1 as the all-nodes address. * The netdb module is underdeveloped. The bindings are not used as they could be, there is no neighbour or ARP cache, there is no storage for servers for dns, ntp, sip-proxy. * tic55x's int.c driver: work out conditions for hibernation sleep. In hibernation, also shutdown the codec. * SIP handling: + UAC-tract: move from dialog-function to method-name + replace fixed offsets (sip + 8) with a startline parser routine + match client transactions for a given dialog - correct timing and counts for client's initiation rituals - ensure proper termination of dialogs (always have a timeout) - handle SIP response codes from remote UASs - handle SIP requests from remote UACs - wrap distinction between request & response in a parser function - process incoming requests (such as an INVITE) - route headers * create & use a irqtimer_stop_completely() that halts prepared fire() * handle packet fragmentation * test RTP sound playback. The retrocast tools can help with that: basicast /etc/hosts 2001:980:420a:1:020b:82ff:fe19:a0f4 32768