Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cproject190
-rw-r--r--.settings/language.settings.xml36
-rw-r--r--src/Configuration.h4
-rw-r--r--src/DriveMovement.h8
-rw-r--r--src/Duet/EMAC/arch/cc.h (renamed from Libraries/EMAC/arch/cc.h)0
-rw-r--r--src/Duet/EMAC/arch/perf.h (renamed from Libraries/EMAC/arch/perf.h)0
-rw-r--r--src/Duet/EMAC/conf_eth.h106
-rw-r--r--src/Duet/EMAC/ethernet_phy.c (renamed from Libraries/EMAC/ethernet_phy.c)0
-rw-r--r--src/Duet/EMAC/ethernet_phy.h (renamed from Libraries/EMAC/ethernet_phy.h)0
-rw-r--r--src/Duet/EMAC/ethernet_sam.c (renamed from Libraries/EMAC/ethernet_sam.c)0
-rw-r--r--src/Duet/EMAC/ethernet_sam.h (renamed from Libraries/EMAC/ethernet_sam.h)0
-rw-r--r--src/Duet/EMAC/ethernetif.c (renamed from Libraries/EMAC/ethernetif.c)0
-rw-r--r--src/Duet/EMAC/ethernetif.h (renamed from Libraries/EMAC/ethernetif.h)0
-rw-r--r--src/Duet/EMAC/mini_ip.h (renamed from Libraries/EMAC/mini_ip.h)0
-rw-r--r--src/Duet/EMAC/rmii.h (renamed from Libraries/EMAC/rmii.h)0
-rw-r--r--src/Duet/Lwip/CHANGELOG (renamed from Libraries/Lwip/CHANGELOG)0
-rw-r--r--src/Duet/Lwip/FILES (renamed from Libraries/Lwip/FILES)0
-rw-r--r--src/Duet/Lwip/README (renamed from Libraries/Lwip/README)0
-rw-r--r--src/Duet/Lwip/contrib/apps/mdns/mdns_responder.c (renamed from Libraries/Lwip/contrib/apps/mdns/mdns_responder.c)0
-rw-r--r--src/Duet/Lwip/contrib/apps/mdns/mdns_responder.h (renamed from Libraries/Lwip/contrib/apps/mdns/mdns_responder.h)0
-rw-r--r--src/Duet/Lwip/contrib/apps/netbios/netbios.c (renamed from Libraries/Lwip/contrib/apps/netbios/netbios.c)0
-rw-r--r--src/Duet/Lwip/contrib/apps/netbios/netbios.h (renamed from Libraries/Lwip/contrib/apps/netbios/netbios.h)0
-rw-r--r--src/Duet/Lwip/doc/FILES (renamed from Libraries/Lwip/doc/FILES)0
-rw-r--r--src/Duet/Lwip/doc/contrib.txt (renamed from Libraries/Lwip/doc/contrib.txt)0
-rw-r--r--src/Duet/Lwip/doc/rawapi.txt (renamed from Libraries/Lwip/doc/rawapi.txt)0
-rw-r--r--src/Duet/Lwip/doc/savannah.txt (renamed from Libraries/Lwip/doc/savannah.txt)0
-rw-r--r--src/Duet/Lwip/doc/snmp_agent.txt (renamed from Libraries/Lwip/doc/snmp_agent.txt)0
-rw-r--r--src/Duet/Lwip/doc/sys_arch.txt (renamed from Libraries/Lwip/doc/sys_arch.txt)0
-rw-r--r--src/Duet/Lwip/lwip/CHANGELOG (renamed from Libraries/Lwip/lwip/CHANGELOG)0
-rw-r--r--src/Duet/Lwip/lwip/COPYING (renamed from Libraries/Lwip/lwip/COPYING)0
-rw-r--r--src/Duet/Lwip/lwip/FILES (renamed from Libraries/Lwip/lwip/FILES)0
-rw-r--r--src/Duet/Lwip/lwip/README (renamed from Libraries/Lwip/lwip/README)0
-rw-r--r--src/Duet/Lwip/lwip/UPGRADING (renamed from Libraries/Lwip/lwip/UPGRADING)0
-rw-r--r--src/Duet/Lwip/lwip/doc/FILES (renamed from Libraries/Lwip/lwip/doc/FILES)0
-rw-r--r--src/Duet/Lwip/lwip/doc/contrib.txt (renamed from Libraries/Lwip/lwip/doc/contrib.txt)0
-rw-r--r--src/Duet/Lwip/lwip/doc/rawapi.txt (renamed from Libraries/Lwip/lwip/doc/rawapi.txt)0
-rw-r--r--src/Duet/Lwip/lwip/doc/savannah.txt (renamed from Libraries/Lwip/lwip/doc/savannah.txt)0
-rw-r--r--src/Duet/Lwip/lwip/doc/snmp_agent.txt (renamed from Libraries/Lwip/lwip/doc/snmp_agent.txt)0
-rw-r--r--src/Duet/Lwip/lwip/doc/sys_arch.txt (renamed from Libraries/Lwip/lwip/doc/sys_arch.txt)0
-rw-r--r--src/Duet/Lwip/lwip/src/FILES (renamed from Libraries/Lwip/lwip/src/FILES)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/api_lib.c (renamed from Libraries/Lwip/lwip/src/api/api_lib.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/api_msg.c (renamed from Libraries/Lwip/lwip/src/api/api_msg.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/err.c (renamed from Libraries/Lwip/lwip/src/api/err.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/netbuf.c (renamed from Libraries/Lwip/lwip/src/api/netbuf.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/netdb.c (renamed from Libraries/Lwip/lwip/src/api/netdb.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/netifapi.c (renamed from Libraries/Lwip/lwip/src/api/netifapi.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/sockets.c (renamed from Libraries/Lwip/lwip/src/api/sockets.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/api/tcpip.c (renamed from Libraries/Lwip/lwip/src/api/tcpip.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/def.c (renamed from Libraries/Lwip/lwip/src/core/def.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/dhcp.c (renamed from Libraries/Lwip/lwip/src/core/dhcp.c)6
-rw-r--r--src/Duet/Lwip/lwip/src/core/dns.c (renamed from Libraries/Lwip/lwip/src/core/dns.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/autoip.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/autoip.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/icmp.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/icmp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/igmp.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/igmp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/inet.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/inet.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/inet_chksum.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/inet_chksum.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/ip.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/ip.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/ip_addr.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/ip_addr.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv4/ip_frag.c (renamed from Libraries/Lwip/lwip/src/core/ipv4/ip_frag.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv6/README (renamed from Libraries/Lwip/lwip/src/core/ipv6/README)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv6/icmp6.c (renamed from Libraries/Lwip/lwip/src/core/ipv6/icmp6.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv6/inet6.c (renamed from Libraries/Lwip/lwip/src/core/ipv6/inet6.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv6/ip6.c (renamed from Libraries/Lwip/lwip/src/core/ipv6/ip6.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/ipv6/ip6_addr.c (renamed from Libraries/Lwip/lwip/src/core/ipv6/ip6_addr.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/lwip_init.c (renamed from Libraries/Lwip/lwip/src/core/lwip_init.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/lwip_timers_141.c (renamed from Libraries/Lwip/lwip/src/core/lwip_timers_141.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/mem.c (renamed from Libraries/Lwip/lwip/src/core/mem.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/memp.c (renamed from Libraries/Lwip/lwip/src/core/memp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/netif.c (renamed from Libraries/Lwip/lwip/src/core/netif.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/pbuf.c (renamed from Libraries/Lwip/lwip/src/core/pbuf.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/raw.c (renamed from Libraries/Lwip/lwip/src/core/raw.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/snmp/asn1_dec.c (renamed from Libraries/Lwip/lwip/src/core/snmp/asn1_dec.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/snmp/asn1_enc.c (renamed from Libraries/Lwip/lwip/src/core/snmp/asn1_enc.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/snmp/mib2.c (renamed from Libraries/Lwip/lwip/src/core/snmp/mib2.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/snmp/mib_structs.c (renamed from Libraries/Lwip/lwip/src/core/snmp/mib_structs.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/snmp/msg_in.c (renamed from Libraries/Lwip/lwip/src/core/snmp/msg_in.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/snmp/msg_out.c (renamed from Libraries/Lwip/lwip/src/core/snmp/msg_out.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/stats.c (renamed from Libraries/Lwip/lwip/src/core/stats.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/sys.c (renamed from Libraries/Lwip/lwip/src/core/sys.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/tcp.c (renamed from Libraries/Lwip/lwip/src/core/tcp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/tcp_in.c (renamed from Libraries/Lwip/lwip/src/core/tcp_in.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/tcp_out.c (renamed from Libraries/Lwip/lwip/src/core/tcp_out.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/core/udp.c (renamed from Libraries/Lwip/lwip/src/core/udp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxyfile.doxygen (renamed from Libraries/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxyfile.doxygen)0
-rw-r--r--src/Duet/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxygen_module_mainpage.h (renamed from Libraries/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxygen_module_mainpage.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/autoip.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/autoip.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/icmp.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/icmp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/igmp.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/igmp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/inet.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/inet.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/inet_chksum.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/inet_chksum.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/ip.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip_addr.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/ip_addr.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip_frag.h (renamed from Libraries/Lwip/lwip/src/include/ipv4/lwip/ip_frag.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv6/lwip/icmp.h (renamed from Libraries/Lwip/lwip/src/include/ipv6/lwip/icmp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv6/lwip/inet.h (renamed from Libraries/Lwip/lwip/src/include/ipv6/lwip/inet.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv6/lwip/ip.h (renamed from Libraries/Lwip/lwip/src/include/ipv6/lwip/ip.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/ipv6/lwip/ip_addr.h (renamed from Libraries/Lwip/lwip/src/include/ipv6/lwip/ip_addr.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/api.h (renamed from Libraries/Lwip/lwip/src/include/lwip/api.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/api_msg.h (renamed from Libraries/Lwip/lwip/src/include/lwip/api_msg.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/arch.h (renamed from Libraries/Lwip/lwip/src/include/lwip/arch.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/debug.h (renamed from Libraries/Lwip/lwip/src/include/lwip/debug.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/def.h (renamed from Libraries/Lwip/lwip/src/include/lwip/def.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/dhcp.h (renamed from Libraries/Lwip/lwip/src/include/lwip/dhcp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/dns.h (renamed from Libraries/Lwip/lwip/src/include/lwip/dns.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/err.h (renamed from Libraries/Lwip/lwip/src/include/lwip/err.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/init.h (renamed from Libraries/Lwip/lwip/src/include/lwip/init.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/mem.h (renamed from Libraries/Lwip/lwip/src/include/lwip/mem.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/memp.h (renamed from Libraries/Lwip/lwip/src/include/lwip/memp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/memp_std.h (renamed from Libraries/Lwip/lwip/src/include/lwip/memp_std.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/netbuf.h (renamed from Libraries/Lwip/lwip/src/include/lwip/netbuf.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/netdb.h (renamed from Libraries/Lwip/lwip/src/include/lwip/netdb.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/netif.h (renamed from Libraries/Lwip/lwip/src/include/lwip/netif.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/netifapi.h (renamed from Libraries/Lwip/lwip/src/include/lwip/netifapi.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/opt.h (renamed from Libraries/Lwip/lwip/src/include/lwip/opt.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/pbuf.h (renamed from Libraries/Lwip/lwip/src/include/lwip/pbuf.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/raw.h (renamed from Libraries/Lwip/lwip/src/include/lwip/raw.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/sio.h (renamed from Libraries/Lwip/lwip/src/include/lwip/sio.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/snmp.h (renamed from Libraries/Lwip/lwip/src/include/lwip/snmp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/snmp_asn1.h (renamed from Libraries/Lwip/lwip/src/include/lwip/snmp_asn1.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/snmp_msg.h (renamed from Libraries/Lwip/lwip/src/include/lwip/snmp_msg.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/snmp_structs.h (renamed from Libraries/Lwip/lwip/src/include/lwip/snmp_structs.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/sockets.h (renamed from Libraries/Lwip/lwip/src/include/lwip/sockets.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/stats.h (renamed from Libraries/Lwip/lwip/src/include/lwip/stats.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/sys.h (renamed from Libraries/Lwip/lwip/src/include/lwip/sys.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/tcp.h (renamed from Libraries/Lwip/lwip/src/include/lwip/tcp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/tcp_impl.h (renamed from Libraries/Lwip/lwip/src/include/lwip/tcp_impl.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/tcpip.h (renamed from Libraries/Lwip/lwip/src/include/lwip/tcpip.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/timers.h (renamed from Libraries/Lwip/lwip/src/include/lwip/timers.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/lwip/udp.h (renamed from Libraries/Lwip/lwip/src/include/lwip/udp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/netif/etharp.h (renamed from Libraries/Lwip/lwip/src/include/netif/etharp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/netif/ppp_oe.h (renamed from Libraries/Lwip/lwip/src/include/netif/ppp_oe.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/include/netif/slipif.h (renamed from Libraries/Lwip/lwip/src/include/netif/slipif.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/FILES (renamed from Libraries/Lwip/lwip/src/netif/FILES)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/etharp.c (renamed from Libraries/Lwip/lwip/src/netif/etharp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ethernetif.c (renamed from Libraries/Lwip/lwip/src/netif/ethernetif.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/auth.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/auth.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/auth.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/auth.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/chap.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/chap.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/chap.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/chap.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/chpms.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/chpms.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/chpms.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/chpms.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/fsm.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/fsm.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/fsm.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/fsm.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/ipcp.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/ipcp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/ipcp.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/ipcp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/lcp.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/lcp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/lcp.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/lcp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/magic.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/magic.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/magic.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/magic.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/md5.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/md5.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/md5.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/md5.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/pap.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/pap.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/pap.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/pap.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/ppp.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/ppp.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/ppp.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/ppp.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/ppp_impl.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/ppp_impl.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/ppp_oe.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/ppp_oe.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/pppdebug.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/pppdebug.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/randm.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/randm.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/randm.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/randm.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/vj.c (renamed from Libraries/Lwip/lwip/src/netif/ppp/vj.c)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/ppp/vj.h (renamed from Libraries/Lwip/lwip/src/netif/ppp/vj.h)0
-rw-r--r--src/Duet/Lwip/lwip/src/netif/slipif.c (renamed from Libraries/Lwip/lwip/src/netif/slipif.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/core/test_mem.c (renamed from Libraries/Lwip/lwip/test/unit/core/test_mem.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/core/test_mem.h (renamed from Libraries/Lwip/lwip/test/unit/core/test_mem.h)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/etharp/test_etharp.c (renamed from Libraries/Lwip/lwip/test/unit/etharp/test_etharp.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/etharp/test_etharp.h (renamed from Libraries/Lwip/lwip/test/unit/etharp/test_etharp.h)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/lwip_check.h (renamed from Libraries/Lwip/lwip/test/unit/lwip_check.h)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/lwip_unittests.c (renamed from Libraries/Lwip/lwip/test/unit/lwip_unittests.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/lwipopts.h (renamed from Libraries/Lwip/lwip/test/unit/lwipopts.h)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/tcp/tcp_helper.c (renamed from Libraries/Lwip/lwip/test/unit/tcp/tcp_helper.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/tcp/tcp_helper.h (renamed from Libraries/Lwip/lwip/test/unit/tcp/tcp_helper.h)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/tcp/test_tcp.c (renamed from Libraries/Lwip/lwip/test/unit/tcp/test_tcp.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/tcp/test_tcp.h (renamed from Libraries/Lwip/lwip/test/unit/tcp/test_tcp.h)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/tcp/test_tcp_oos.c (renamed from Libraries/Lwip/lwip/test/unit/tcp/test_tcp_oos.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/tcp/test_tcp_oos.h (renamed from Libraries/Lwip/lwip/test/unit/tcp/test_tcp_oos.h)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/udp/test_udp.c (renamed from Libraries/Lwip/lwip/test/unit/udp/test_udp.c)0
-rw-r--r--src/Duet/Lwip/lwip/test/unit/udp/test_udp.h (renamed from Libraries/Lwip/lwip/test/unit/udp/test_udp.h)0
-rw-r--r--src/Duet/Lwip/lwipopts.h (renamed from Libraries/Lwip/lwipopts.h)0
-rw-r--r--src/Duet/Network.cpp (renamed from src/Network.cpp)0
-rw-r--r--src/Duet/Network.h (renamed from src/Network.h)0
-rw-r--r--src/Duet/Pins_duet.h (renamed from src/Pins_duet.h)14
-rw-r--r--src/Duet/Webserver.cpp (renamed from src/Webserver.cpp)0
-rw-r--r--src/Duet/Webserver.h (renamed from src/Webserver.h)0
-rw-r--r--src/GCodes.cpp23
-rw-r--r--src/GCodes.h1
-rw-r--r--src/Libraries/.gitignore (renamed from Libraries/.gitignore)0
-rw-r--r--src/Libraries/Fatfs/00readme.txt (renamed from Libraries/Fatfs/00readme.txt)0
-rw-r--r--src/Libraries/Fatfs/ccsbcs.c (renamed from Libraries/Fatfs/ccsbcs.c)0
-rw-r--r--src/Libraries/Fatfs/conf_fatfs.h (renamed from Libraries/Fatfs/conf_fatfs.h)0
-rw-r--r--src/Libraries/Fatfs/diskio.c (renamed from Libraries/Fatfs/diskio.c)0
-rw-r--r--src/Libraries/Fatfs/diskio.h (renamed from Libraries/Fatfs/diskio.h)0
-rw-r--r--src/Libraries/Fatfs/fattime_rtc.c (renamed from Libraries/Fatfs/fattime_rtc.c)0
-rw-r--r--src/Libraries/Fatfs/ff.c (renamed from Libraries/Fatfs/ff.c)0
-rw-r--r--src/Libraries/Fatfs/ff.h (renamed from Libraries/Fatfs/ff.h)0
-rw-r--r--src/Libraries/Fatfs/ffconf.h (renamed from Libraries/Fatfs/ffconf.h)0
-rw-r--r--src/Libraries/Fatfs/integer.h (renamed from Libraries/Fatfs/integer.h)0
-rw-r--r--src/Libraries/Flash/DueFlashStorage.cpp (renamed from Libraries/Flash/DueFlashStorage.cpp)16
-rw-r--r--src/Libraries/Flash/DueFlashStorage.h (renamed from Libraries/Flash/DueFlashStorage.h)12
-rw-r--r--src/Libraries/MAX31855/MAX31855.cpp (renamed from Libraries/MAX31855/MAX31855.cpp)24
-rw-r--r--src/Libraries/MAX31855/MAX31855.h (renamed from Libraries/MAX31855/MAX31855.h)5
-rw-r--r--src/Libraries/MCP4461/MCP4461.cpp (renamed from Libraries/MCP4461/MCP4461.cpp)112
-rw-r--r--src/Libraries/MCP4461/MCP4461.h (renamed from Libraries/MCP4461/MCP4461.h)0
-rw-r--r--src/Pins.h11
-rw-r--r--src/Platform.cpp202
-rw-r--r--src/Platform.h13
206 files changed, 503 insertions, 280 deletions
diff --git a/.cproject b/.cproject
index cbd2d0e5..b161db47 100644
--- a/.cproject
+++ b/.cproject
@@ -28,11 +28,11 @@
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.729788515" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
<tool commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="cdt.managedbuild.tool.gnu.cross.c.compiler.220085372" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1490670229" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.debugging.level.1765216517" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.misc.verbose.1564280355" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose" value="false" valueType="boolean"/>
- <option id="gnu.c.compiler.option.misc.other.96683616" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -std=gnu99 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500" valueType="string"/>
- <option id="gnu.c.compiler.option.include.paths.187319219" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1490670229" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.1765216517" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.misc.verbose.1564280355" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+ <option id="gnu.c.compiler.option.misc.other.96683616" name="Other flags" superClass="gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-c -std=gnu99 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500" valueType="string"/>
+ <option id="gnu.c.compiler.option.include.paths.187319219" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/cores/arduino}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/system/libsam}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/system/CMSIS/Device/ATMEL}&quot;"/>
@@ -41,11 +41,11 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/system/libsam/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/system/CMSIS/Device/ATMEL/sam3xa/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Storage}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip/lwip/src/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/EMAC}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/Lwip}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/Lwip/lwip/src/include}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/EMAC}&quot;"/>
</option>
- <option id="gnu.c.compiler.option.preprocessor.def.symbols.2036576066" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.2036576066" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAM3X8E__"/>
<listOptionValue builtIn="false" value="F_CPU=84000000"/>
<listOptionValue builtIn="false" value="USBCON"/>
@@ -72,11 +72,11 @@
</inputType>
</tool>
<tool command="g++" id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1703390221" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
- <option id="gnu.cpp.compiler.option.optimization.level.1076886860" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.debugging.level.1252771497" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.other.verbose.526148117" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose" value="false" valueType="boolean"/>
- <option id="gnu.cpp.compiler.option.other.other.1337488452" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -std=gnu++11 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib --param max-inline-insns-single=500" valueType="string"/>
- <option id="gnu.cpp.compiler.option.include.paths.148186010" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <option id="gnu.cpp.compiler.option.optimization.level.1076886860" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1252771497" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.other.verbose.526148117" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+ <option id="gnu.cpp.compiler.option.other.other.1337488452" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" useByScannerDiscovery="false" value="-c -std=gnu++11 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib --param max-inline-insns-single=500" valueType="string"/>
+ <option id="gnu.cpp.compiler.option.include.paths.148186010" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/cores/arduino}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Wire}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/system/libsam}&quot;"/>
@@ -84,15 +84,16 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/system/CMSIS/CMSIS/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/variants/duet}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/system/libsam/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Storage}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/EMAC}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Fatfs}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/MAX31855}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/MCP4461}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Flash}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/Lwip}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/EMAC}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/Fatfs}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/MAX31855}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/MCP4461}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/Flash}&quot;"/>
</option>
- <option id="gnu.cpp.compiler.option.preprocessor.def.1913656094" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1913656094" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAM3X8E__"/>
<listOptionValue builtIn="false" value="F_CPU=84000000"/>
<listOptionValue builtIn="false" value="USBCON"/>
@@ -105,7 +106,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
- <entry excluding="Libraries/Lwip/lwip/src/core/ipv6|Libraries/Lwip/lwip/test|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/as_gcc|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_atmel|DuetArduinoCore/system/CMSIS/Device/ARM|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_arm|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/iar|DuetArduinoCore/system/CMSIS/CMSIS/Lib/ARM|DuetArduinoCore/system/CMSIS/CMSIS/DSP_Lib|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4.h|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3u|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3n|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM4|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM0|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3sd8" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ <entry excluding="src/Duet/Lwip/lwip/src/core/ipv6|src/Duet/Lwip/lwip/test|src/DuetNG|Libraries/Lwip/lwip/src/core/ipv6|Libraries/Lwip/lwip/test|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/as_gcc|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_atmel|DuetArduinoCore/system/CMSIS/Device/ARM|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_arm|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/iar|DuetArduinoCore/system/CMSIS/CMSIS/Lib/ARM|DuetArduinoCore/system/CMSIS/CMSIS/DSP_Lib|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4.h|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3u|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3n|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM4|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM0|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3sd8" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
@@ -138,34 +139,30 @@
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.230262206" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
<tool commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="cdt.managedbuild.tool.gnu.cross.c.compiler.278237460" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.710346403" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.debugging.level.836865552" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.misc.verbose.431575256" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose" value="false" valueType="boolean"/>
- <option id="gnu.c.compiler.option.misc.other.660952665" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -std=gnu99 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500" valueType="string"/>
- <option id="gnu.c.compiler.option.include.paths.2080437508" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.710346403" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.836865552" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.misc.verbose.431575256" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+ <option id="gnu.c.compiler.option.misc.other.660952665" name="Other flags" superClass="gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-c -std=gnu99 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500" valueType="string"/>
+ <option id="gnu.c.compiler.option.include.paths.2080437508" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/cores/arduino}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Storage}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/utils}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/components/memory/sd_mmc}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/services/storage/ctrl_access}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/emac}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/hsmci}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/rstc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/rtc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/source/templates}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/header_files}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/preprocessor}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/thirdparty/CMSIS/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/variants/duet}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SD_HSMCI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SPI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip/lwip/src/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/EMAC}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/Lwip}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/Lwip/lwip/src/include}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/EMAC}&quot;"/>
</option>
- <option id="gnu.c.compiler.option.preprocessor.def.symbols.571434619" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.571434619" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAM3X8E__"/>
<listOptionValue builtIn="false" value="F_CPU=84000000"/>
<listOptionValue builtIn="false" value="CORE_NG"/>
@@ -183,48 +180,46 @@
<option id="gnu.cpp.link.option.libs.1995000942" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
<listOptionValue builtIn="false" value="${CoreName}"/>
</option>
- <option id="gnu.cpp.link.option.flags.1670739910" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-Os -Wl,--gc-sections -Wl,--fatal-warnings -mcpu=cortex-m3 -T${workspace_loc:/CoreDuet/variants/duet/linker_scripts/gcc/flash.ld} -Wl,-Map,${workspace_loc:/${ProjName}/${ConfigName}}/${ProjName}.map" valueType="string"/>
+ <option id="gnu.cpp.link.option.flags.1670739910" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-Os -Wl,--gc-sections -Wl,--fatal-warnings -mcpu=cortex-m3 -T${workspace_loc:/${CoreName}/variants/duet/linker_scripts/gcc/flash.ld} -Wl,-Map,${workspace_loc:/${ProjName}/${ConfigName}}/${ProjName}.map" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1491196930" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool command="g++" id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1261470824" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
- <option id="gnu.cpp.compiler.option.optimization.level.1078688101" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.debugging.level.1332396113" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.other.verbose.1151170522" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose" value="false" valueType="boolean"/>
- <option id="gnu.cpp.compiler.option.other.other.184134051" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -std=gnu++11 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib --param max-inline-insns-single=500" valueType="string"/>
- <option id="gnu.cpp.compiler.option.include.paths.1285689288" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <option id="gnu.cpp.compiler.option.optimization.level.1078688101" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1332396113" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.other.verbose.1151170522" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+ <option id="gnu.cpp.compiler.option.other.other.184134051" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" useByScannerDiscovery="false" value="-c -std=gnu++11 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib --param max-inline-insns-single=500" valueType="string"/>
+ <option id="gnu.cpp.compiler.option.include.paths.1285689288" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/cores/arduino}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Wire}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Storage}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/utils}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/components/memory/sd_mmc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/services/clock}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/efc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/emac}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/hsmci}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/pmc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/spi}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/twi}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/services/flash_efc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/source/templates}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/header_files}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/preprocessor}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/thirdparty/CMSIS/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/variants/duet}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/EMAC}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Fatfs}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SD_HSMCI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SPI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/MAX31855}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/MCP4461}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Flash}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/Lwip}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Duet/EMAC}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/Fatfs}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/MAX31855}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/MCP4461}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/Flash}&quot;"/>
</option>
- <option id="gnu.cpp.compiler.option.preprocessor.def.1548770846" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1548770846" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAM3X8E__"/>
<listOptionValue builtIn="false" value="F_CPU=84000000"/>
<listOptionValue builtIn="false" value="CORE_NG"/>
@@ -234,8 +229,20 @@
</tool>
</toolChain>
</folderInfo>
+ <folderInfo id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.526880734" name="/" resourcePath="SAM4E_CoreNG/src/DuetNG">
+ <toolChain id="cdt.managedbuild.toolchain.gnu.cross.exe.release.926404456" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.exe.release" unusedChildren="">
+ <option id="cdt.managedbuild.option.gnu.cross.path.1742191832.1774372332" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path.1742191832"/>
+ <option id="cdt.managedbuild.option.gnu.cross.prefix.1660769040.767637411" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix.1660769040"/>
+ <tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.136472656" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler.278237460"/>
+ <tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1623207673" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1261470824"/>
+ <tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1934437009" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker.831729502"/>
+ <tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1026465204" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker.77650722"/>
+ <tool id="cdt.managedbuild.tool.gnu.cross.archiver.838880941" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver.586905748"/>
+ <tool id="cdt.managedbuild.tool.gnu.cross.assembler.1412887396" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler.163742171"/>
+ </toolChain>
+ </folderInfo>
<sourceEntries>
- <entry excluding="Libraries/Lwip/lwip/src/core/ipv6|Libraries/Lwip/lwip/test|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/as_gcc|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_atmel|DuetArduinoCore/system/CMSIS/Device/ARM|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_arm|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/iar|DuetArduinoCore/system/CMSIS/CMSIS/Lib/ARM|DuetArduinoCore/system/CMSIS/CMSIS/DSP_Lib|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4.h|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3u|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3n|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM4|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM0|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3sd8" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ <entry excluding="SAM4E_CoreNG/src/DuetNG|src/Duet/Lwip/lwip/src/core/ipv6|src/Duet/Lwip/lwip/test|src/DuetNG|Libraries/Lwip/lwip/src/core/ipv6|Libraries/Lwip/lwip/test|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/as_gcc|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_atmel|DuetArduinoCore/system/CMSIS/Device/ARM|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_arm|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/iar|DuetArduinoCore/system/CMSIS/CMSIS/Lib/ARM|DuetArduinoCore/system/CMSIS/CMSIS/DSP_Lib|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4.h|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3u|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3n|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM4|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM0|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3sd8" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
@@ -268,36 +275,31 @@
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.769576359" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
<tool commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="cdt.managedbuild.tool.gnu.cross.c.compiler.242253222" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
- <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1507087276" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.debugging.level.861326742" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
- <option id="gnu.c.compiler.option.misc.verbose.2125396829" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose" value="false" valueType="boolean"/>
- <option id="gnu.c.compiler.option.misc.other.1007303238" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -std=gnu99 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500" valueType="string"/>
- <option id="gnu.c.compiler.option.include.paths.1527974989" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1507087276" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.861326742" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.misc.verbose.2125396829" name="Verbose (-v)" superClass="gnu.c.compiler.option.misc.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+ <option id="gnu.c.compiler.option.misc.other.1007303238" name="Other flags" superClass="gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-c -std=gnu99 -mcpu=cortex-m4 -mthumb -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500" valueType="string"/>
+ <option id="gnu.c.compiler.option.include.paths.1527974989" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/cores/arduino}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Storage}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/utils}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/components/memory/sd_mmc}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/services/storage/ctrl_access}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/services/ioport}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/hsmci}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/rstc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/rtc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/source/templates}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam4e/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/header_files}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/preprocessor}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/thirdparty/CMSIS/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/variants/duetNG}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SD_HSMCI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SPI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip/lwip/src/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/EMAC}&quot;"/>
</option>
- <option id="gnu.c.compiler.option.preprocessor.def.symbols.1695995740" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
- <listOptionValue builtIn="false" value="__SAM3X8E__"/>
- <listOptionValue builtIn="false" value="F_CPU=84000000"/>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.1695995740" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="__SAM4E8E__"/>
+ <listOptionValue builtIn="false" value="F_CPU=120000000"/>
<listOptionValue builtIn="false" value="CORE_NG"/>
+ <listOptionValue builtIn="false" value="DUET_NG"/>
<listOptionValue builtIn="false" value="printf=iprintf"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.763992947" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
@@ -312,50 +314,48 @@
<option id="gnu.cpp.link.option.libs.698547262" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
<listOptionValue builtIn="false" value="${CoreName}"/>
</option>
- <option id="gnu.cpp.link.option.flags.337829872" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-Os -Wl,--gc-sections -Wl,--fatal-warnings -mcpu=cortex-m3 -T${workspace_loc:/CoreDuet/variants/duet/linker_scripts/gcc/flash.ld} -Wl,-Map,${workspace_loc:/${ProjName}/${ConfigName}}/${ProjName}.map" valueType="string"/>
+ <option id="gnu.cpp.link.option.flags.337829872" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-Os -Wl,--gc-sections -Wl,--fatal-warnings -mcpu=cortex-m3 -T${workspace_loc:/${CoreName}/variants/duetNG/linker_scripts/gcc/flash.ld} -Wl,-Map,${workspace_loc:/${ProjName}/${ConfigName}}/${ProjName}.map" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.557435524" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool command="g++" id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1263200833" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
- <option id="gnu.cpp.compiler.option.optimization.level.402804038" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.debugging.level.919930419" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
- <option id="gnu.cpp.compiler.option.other.verbose.34932857" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose" value="false" valueType="boolean"/>
- <option id="gnu.cpp.compiler.option.other.other.549139443" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -std=gnu++11 -mcpu=cortex-m3 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib --param max-inline-insns-single=500" valueType="string"/>
- <option id="gnu.cpp.compiler.option.include.paths.251815634" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <option id="gnu.cpp.compiler.option.optimization.level.402804038" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.more" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.919930419" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.other.verbose.34932857" name="Verbose (-v)" superClass="gnu.cpp.compiler.option.other.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"/>
+ <option id="gnu.cpp.compiler.option.other.other.549139443" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" useByScannerDiscovery="false" value="-c -std=gnu++11 -mcpu=cortex-m4 -mthumb -ffunction-sections -fdata-sections -fno-threadsafe-statics -fno-rtti -fno-exceptions -nostdlib --param max-inline-insns-single=500" valueType="string"/>
+ <option id="gnu.cpp.compiler.option.include.paths.251815634" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/cores/arduino}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Wire}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/libraries/Storage}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/utils}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/components/memory/sd_mmc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/services/clock}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/common/services/ioport}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/efc}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/hsmci}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/pmc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/spi}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/drivers/twi}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/services/flash_efc}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/include}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam3x/source/templates}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/cmsis/sam4e/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/header_files}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/sam/utils/preprocessor}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/asf/thirdparty/CMSIS/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${CoreName}/variants/duetNG}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Lwip}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/EMAC}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Fatfs}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SD_HSMCI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/SPI}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/MAX31855}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/MCP4461}&quot;"/>
- <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/Libraries/Flash}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/DuetNG}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/Fatfs}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/MAX31855}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/MCP4461}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Libraries/Flash}&quot;"/>
</option>
- <option id="gnu.cpp.compiler.option.preprocessor.def.1610427238" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
- <listOptionValue builtIn="false" value="__SAM3X8E__"/>
- <listOptionValue builtIn="false" value="F_CPU=84000000"/>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1610427238" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="__SAM4E8E__"/>
+ <listOptionValue builtIn="false" value="F_CPU=120000000"/>
<listOptionValue builtIn="false" value="CORE_NG"/>
+ <listOptionValue builtIn="false" value="DUET_NG"/>
<listOptionValue builtIn="false" value="printf=iprintf"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.151249281" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
@@ -363,7 +363,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
- <entry excluding="Libraries/Lwip/lwip/src/core/ipv6|Libraries/Lwip/lwip/test|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/as_gcc|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_atmel|DuetArduinoCore/system/CMSIS/Device/ARM|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_arm|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/iar|DuetArduinoCore/system/CMSIS/CMSIS/Lib/ARM|DuetArduinoCore/system/CMSIS/CMSIS/DSP_Lib|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4.h|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3u|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3n|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM4|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM0|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3sd8" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+ <entry excluding="SAM4E_CoreNG/src/Duet|src/Duet|Libraries/EMAC|Libraries/Lwip|Libraries/Lwip/lwip/src/core/ipv6|Libraries/Lwip/lwip/test|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/as_gcc|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_atmel|DuetArduinoCore/system/CMSIS/Device/ARM|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/gcc_arm|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3xa/source/iar|DuetArduinoCore/system/CMSIS/CMSIS/Lib/ARM|DuetArduinoCore/system/CMSIS/CMSIS/DSP_Lib|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4.h|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam4s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3u|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3s|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3n|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM4|DuetArduinoCore/system/CMSIS/Device/ARM/ARMCM0|DuetArduinoCore/system/CMSIS/Device/ATMEL/sam3sd8" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
new file mode 100644
index 00000000..a324ff33
--- /dev/null
+++ b/.settings/language.settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+ <configuration id="cdt.managedbuild.config.gnu.cross.exe.release.516195201" name="ReleaseWithCoreDuet">
+ <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+ <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+ <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+ <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+ <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1158727986141128527" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+ <language-scope id="org.eclipse.cdt.core.gcc"/>
+ <language-scope id="org.eclipse.cdt.core.g++"/>
+ </provider>
+ </extension>
+ </configuration>
+ <configuration id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850" name="SAM3X_CoreNG">
+ <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+ <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+ <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+ <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+ <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1158727986141128527" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+ <language-scope id="org.eclipse.cdt.core.gcc"/>
+ <language-scope id="org.eclipse.cdt.core.g++"/>
+ </provider>
+ </extension>
+ </configuration>
+ <configuration id="cdt.managedbuild.config.gnu.cross.exe.release.516195201.976458850.241502451" name="SAM4E_CoreNG">
+ <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+ <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+ <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+ <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+ <provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1158727986141128527" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+ <language-scope id="org.eclipse.cdt.core.gcc"/>
+ <language-scope id="org.eclipse.cdt.core.g++"/>
+ </provider>
+ </extension>
+ </configuration>
+</project>
diff --git a/src/Configuration.h b/src/Configuration.h
index 6aabd1d4..06649681 100644
--- a/src/Configuration.h
+++ b/src/Configuration.h
@@ -30,11 +30,11 @@ Licence: GPL
#endif
#ifndef VERSION
-#define VERSION "1.10+4"
+#define VERSION "1.11-beta1"
#endif
#ifndef DATE
-#define DATE "2016-03-30"
+#define DATE "2016-04-08"
#endif
#define AUTHORS "reprappro, dc42, zpl, t3p3, dnewman"
diff --git a/src/DriveMovement.h b/src/DriveMovement.h
index 0c00d262..4520d36b 100644
--- a/src/DriveMovement.h
+++ b/src/DriveMovement.h
@@ -43,7 +43,7 @@ public:
// Parameters common to Cartesian, delta and extruder moves
- // The following only need to be stored per-drive if we are supporting elasticity compensation
+ // The following only need to be stored per-drive if we are supporting pressure advance
uint64_t twoDistanceToStopTimesCsquaredDivA;
uint32_t startSpeedTimesCdivA;
int32_t accelClocksMinusAccelDistanceTimesCdivTopSpeed; // this one can be negative
@@ -65,7 +65,7 @@ public:
// Parameters unique to a style of move (Cartesian, delta or extruder). Currently, extruders and Cartesian moves use the same parameters.
union MoveParams
{
- struct CartesianParameters // Parameters for Cartesian and extruder movement, including extruder pre-compensation
+ struct CartesianParameters // Parameters for Cartesian and extruder movement, including extruder pressure advance
{
// The following don't depend on how the move is executed, so they could be set up in Init()
uint64_t twoCsquaredTimesMmPerStepDivA; // 2 * clock^2 * mmPerStepInHyperCuboidSpace / acceleration
@@ -73,10 +73,10 @@ public:
// The following depend on how the move is executed, so they must be set up in Prepare()
uint32_t accelStopStep; // the first step number at which we are no longer accelerating
uint32_t decelStartStep; // the first step number at which we are decelerating
- uint32_t reverseStartStep; // the first step number for which we need to reverse direction to to elastic compensation
+ uint32_t reverseStartStep; // the first step number for which we need to reverse direction due to pressure advance
uint32_t mmPerStepTimesCdivtopSpeed; // mmPerStepInHyperCuboidSpace * clock / topSpeed
- // The following only need to be stored per-drive if we are supporting elasticity compensation
+ // The following only need to be stored per-drive if we are supporting pressure advance
int64_t fourMaxStepDistanceMinusTwoDistanceToStopTimesCsquaredDivA; // this one can be negative
} cart;
diff --git a/Libraries/EMAC/arch/cc.h b/src/Duet/EMAC/arch/cc.h
index 7e00c367..7e00c367 100644
--- a/Libraries/EMAC/arch/cc.h
+++ b/src/Duet/EMAC/arch/cc.h
diff --git a/Libraries/EMAC/arch/perf.h b/src/Duet/EMAC/arch/perf.h
index 936ea4af..936ea4af 100644
--- a/Libraries/EMAC/arch/perf.h
+++ b/src/Duet/EMAC/arch/perf.h
diff --git a/src/Duet/EMAC/conf_eth.h b/src/Duet/EMAC/conf_eth.h
new file mode 100644
index 00000000..2908966a
--- /dev/null
+++ b/src/Duet/EMAC/conf_eth.h
@@ -0,0 +1,106 @@
+ /**
+ * \file
+ *
+ * \brief EMAC (Ethernet MAC) driver for SAM.
+ *
+ * Copyright (c) 2011-2012 Atmel Corporation. All rights reserved.
+ *
+ * \asf_license_start
+ *
+ * \page License
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an
+ * Atmel microcontroller product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * \asf_license_stop
+ *
+ */
+
+
+
+#ifndef CONF_EMAC_H_INCLUDED
+#define CONF_EMAC_H_INCLUDED
+
+#include "Arduino.h"
+
+/** EMAC PHY address */
+#define BOARD_EMAC_PHY_ADDR 2
+/*! EMAC RMII mode */
+#define BOARD_EMAC_MODE_RMII 1
+
+// dc42, 2014-06-01.
+// The following #defines are not used, so I have commented them out.
+// The ones in hardware/arduino/sam/system/libsam/source/emac.c get used instead, and they need to be changed to these values (32 and 8).
+
+/** Number of buffer for RX */
+//#define EMAC_RX_BUFFERS (32)
+
+/** Number of buffer for TX */
+//#define EMAC_TX_BUFFERS (8)
+
+
+/** MAC PHY operation max retry count */
+#define MAC_PHY_RETRY_MAX 1000000
+
+/** MAC address definition. The MAC address must be unique on the network. */
+#define ETHERNET_CONF_ETHADDR0 0xBE
+#define ETHERNET_CONF_ETHADDR1 0xEF
+#define ETHERNET_CONF_ETHADDR2 0xDE
+#define ETHERNET_CONF_ETHADDR3 0xAD
+#define ETHERNET_CONF_ETHADDR4 0xFE
+#define ETHERNET_CONF_ETHADDR5 0xED
+
+/** WAN Address: 192.168.0.2 */
+/* The IP address being used. */
+//*******************************************************************************************
+// Commented out by AB - see ethernet_sam.c
+
+//#define ETHERNET_CONF_IPADDR0 192
+//#define ETHERNET_CONF_IPADDR1 168
+//#define ETHERNET_CONF_IPADDR2 1
+//#define ETHERNET_CONF_IPADDR3 14
+//
+///** WAN gateway: 192.168.0.1 */
+///** The gateway address being used. */
+//#define ETHERNET_CONF_GATEWAY_ADDR0 192
+//#define ETHERNET_CONF_GATEWAY_ADDR1 168
+//#define ETHERNET_CONF_GATEWAY_ADDR2 1
+//#define ETHERNET_CONF_GATEWAY_ADDR3 1
+//
+///** The network mask being used. */
+//#define ETHERNET_CONF_NET_MASK0 255
+//#define ETHERNET_CONF_NET_MASK1 255
+//#define ETHERNET_CONF_NET_MASK2 255
+//#define ETHERNET_CONF_NET_MASK3 0
+
+//********************************************************************************************
+
+/** Ethernet MII/RMII mode */
+#define ETH_PHY_MODE BOARD_EMAC_MODE_RMII
+
+#endif /* CONF_EMAC_H_INCLUDED */
diff --git a/Libraries/EMAC/ethernet_phy.c b/src/Duet/EMAC/ethernet_phy.c
index 3dc30111..3dc30111 100644
--- a/Libraries/EMAC/ethernet_phy.c
+++ b/src/Duet/EMAC/ethernet_phy.c
diff --git a/Libraries/EMAC/ethernet_phy.h b/src/Duet/EMAC/ethernet_phy.h
index 64c565a4..64c565a4 100644
--- a/Libraries/EMAC/ethernet_phy.h
+++ b/src/Duet/EMAC/ethernet_phy.h
diff --git a/Libraries/EMAC/ethernet_sam.c b/src/Duet/EMAC/ethernet_sam.c
index 0cb0f1d8..0cb0f1d8 100644
--- a/Libraries/EMAC/ethernet_sam.c
+++ b/src/Duet/EMAC/ethernet_sam.c
diff --git a/Libraries/EMAC/ethernet_sam.h b/src/Duet/EMAC/ethernet_sam.h
index 52274ef8..52274ef8 100644
--- a/Libraries/EMAC/ethernet_sam.h
+++ b/src/Duet/EMAC/ethernet_sam.h
diff --git a/Libraries/EMAC/ethernetif.c b/src/Duet/EMAC/ethernetif.c
index 06da4868..06da4868 100644
--- a/Libraries/EMAC/ethernetif.c
+++ b/src/Duet/EMAC/ethernetif.c
diff --git a/Libraries/EMAC/ethernetif.h b/src/Duet/EMAC/ethernetif.h
index 0b639a75..0b639a75 100644
--- a/Libraries/EMAC/ethernetif.h
+++ b/src/Duet/EMAC/ethernetif.h
diff --git a/Libraries/EMAC/mini_ip.h b/src/Duet/EMAC/mini_ip.h
index 459eb50d..459eb50d 100644
--- a/Libraries/EMAC/mini_ip.h
+++ b/src/Duet/EMAC/mini_ip.h
diff --git a/Libraries/EMAC/rmii.h b/src/Duet/EMAC/rmii.h
index 24ffee3b..24ffee3b 100644
--- a/Libraries/EMAC/rmii.h
+++ b/src/Duet/EMAC/rmii.h
diff --git a/Libraries/Lwip/CHANGELOG b/src/Duet/Lwip/CHANGELOG
index 6e27a66b..6e27a66b 100644
--- a/Libraries/Lwip/CHANGELOG
+++ b/src/Duet/Lwip/CHANGELOG
diff --git a/Libraries/Lwip/FILES b/src/Duet/Lwip/FILES
index 66253196..66253196 100644
--- a/Libraries/Lwip/FILES
+++ b/src/Duet/Lwip/FILES
diff --git a/Libraries/Lwip/README b/src/Duet/Lwip/README
index a62cc4f3..a62cc4f3 100644
--- a/Libraries/Lwip/README
+++ b/src/Duet/Lwip/README
diff --git a/Libraries/Lwip/contrib/apps/mdns/mdns_responder.c b/src/Duet/Lwip/contrib/apps/mdns/mdns_responder.c
index 48c68d90..48c68d90 100644
--- a/Libraries/Lwip/contrib/apps/mdns/mdns_responder.c
+++ b/src/Duet/Lwip/contrib/apps/mdns/mdns_responder.c
diff --git a/Libraries/Lwip/contrib/apps/mdns/mdns_responder.h b/src/Duet/Lwip/contrib/apps/mdns/mdns_responder.h
index df618268..df618268 100644
--- a/Libraries/Lwip/contrib/apps/mdns/mdns_responder.h
+++ b/src/Duet/Lwip/contrib/apps/mdns/mdns_responder.h
diff --git a/Libraries/Lwip/contrib/apps/netbios/netbios.c b/src/Duet/Lwip/contrib/apps/netbios/netbios.c
index ef6be804..ef6be804 100644
--- a/Libraries/Lwip/contrib/apps/netbios/netbios.c
+++ b/src/Duet/Lwip/contrib/apps/netbios/netbios.c
diff --git a/Libraries/Lwip/contrib/apps/netbios/netbios.h b/src/Duet/Lwip/contrib/apps/netbios/netbios.h
index 2c73f781..2c73f781 100644
--- a/Libraries/Lwip/contrib/apps/netbios/netbios.h
+++ b/src/Duet/Lwip/contrib/apps/netbios/netbios.h
diff --git a/Libraries/Lwip/doc/FILES b/src/Duet/Lwip/doc/FILES
index 05d356f4..05d356f4 100644
--- a/Libraries/Lwip/doc/FILES
+++ b/src/Duet/Lwip/doc/FILES
diff --git a/Libraries/Lwip/doc/contrib.txt b/src/Duet/Lwip/doc/contrib.txt
index 780268f3..780268f3 100644
--- a/Libraries/Lwip/doc/contrib.txt
+++ b/src/Duet/Lwip/doc/contrib.txt
diff --git a/Libraries/Lwip/doc/rawapi.txt b/src/Duet/Lwip/doc/rawapi.txt
index bd452cf9..bd452cf9 100644
--- a/Libraries/Lwip/doc/rawapi.txt
+++ b/src/Duet/Lwip/doc/rawapi.txt
diff --git a/Libraries/Lwip/doc/savannah.txt b/src/Duet/Lwip/doc/savannah.txt
index e3178997..e3178997 100644
--- a/Libraries/Lwip/doc/savannah.txt
+++ b/src/Duet/Lwip/doc/savannah.txt
diff --git a/Libraries/Lwip/doc/snmp_agent.txt b/src/Duet/Lwip/doc/snmp_agent.txt
index 2653230f..2653230f 100644
--- a/Libraries/Lwip/doc/snmp_agent.txt
+++ b/src/Duet/Lwip/doc/snmp_agent.txt
diff --git a/Libraries/Lwip/doc/sys_arch.txt b/src/Duet/Lwip/doc/sys_arch.txt
index 38377b66..38377b66 100644
--- a/Libraries/Lwip/doc/sys_arch.txt
+++ b/src/Duet/Lwip/doc/sys_arch.txt
diff --git a/Libraries/Lwip/lwip/CHANGELOG b/src/Duet/Lwip/lwip/CHANGELOG
index af68299e..af68299e 100644
--- a/Libraries/Lwip/lwip/CHANGELOG
+++ b/src/Duet/Lwip/lwip/CHANGELOG
diff --git a/Libraries/Lwip/lwip/COPYING b/src/Duet/Lwip/lwip/COPYING
index e23898b5..e23898b5 100644
--- a/Libraries/Lwip/lwip/COPYING
+++ b/src/Duet/Lwip/lwip/COPYING
diff --git a/Libraries/Lwip/lwip/FILES b/src/Duet/Lwip/lwip/FILES
index 66253196..66253196 100644
--- a/Libraries/Lwip/lwip/FILES
+++ b/src/Duet/Lwip/lwip/FILES
diff --git a/Libraries/Lwip/lwip/README b/src/Duet/Lwip/lwip/README
index a62cc4f3..a62cc4f3 100644
--- a/Libraries/Lwip/lwip/README
+++ b/src/Duet/Lwip/lwip/README
diff --git a/Libraries/Lwip/lwip/UPGRADING b/src/Duet/Lwip/lwip/UPGRADING
index 6501107a..6501107a 100644
--- a/Libraries/Lwip/lwip/UPGRADING
+++ b/src/Duet/Lwip/lwip/UPGRADING
diff --git a/Libraries/Lwip/lwip/doc/FILES b/src/Duet/Lwip/lwip/doc/FILES
index 05d356f4..05d356f4 100644
--- a/Libraries/Lwip/lwip/doc/FILES
+++ b/src/Duet/Lwip/lwip/doc/FILES
diff --git a/Libraries/Lwip/lwip/doc/contrib.txt b/src/Duet/Lwip/lwip/doc/contrib.txt
index 39596fca..39596fca 100644
--- a/Libraries/Lwip/lwip/doc/contrib.txt
+++ b/src/Duet/Lwip/lwip/doc/contrib.txt
diff --git a/Libraries/Lwip/lwip/doc/rawapi.txt b/src/Duet/Lwip/lwip/doc/rawapi.txt
index 8c190305..8c190305 100644
--- a/Libraries/Lwip/lwip/doc/rawapi.txt
+++ b/src/Duet/Lwip/lwip/doc/rawapi.txt
diff --git a/Libraries/Lwip/lwip/doc/savannah.txt b/src/Duet/Lwip/lwip/doc/savannah.txt
index 409905b1..409905b1 100644
--- a/Libraries/Lwip/lwip/doc/savannah.txt
+++ b/src/Duet/Lwip/lwip/doc/savannah.txt
diff --git a/Libraries/Lwip/lwip/doc/snmp_agent.txt b/src/Duet/Lwip/lwip/doc/snmp_agent.txt
index 2653230f..2653230f 100644
--- a/Libraries/Lwip/lwip/doc/snmp_agent.txt
+++ b/src/Duet/Lwip/lwip/doc/snmp_agent.txt
diff --git a/Libraries/Lwip/lwip/doc/sys_arch.txt b/src/Duet/Lwip/lwip/doc/sys_arch.txt
index 847cd777..847cd777 100644
--- a/Libraries/Lwip/lwip/doc/sys_arch.txt
+++ b/src/Duet/Lwip/lwip/doc/sys_arch.txt
diff --git a/Libraries/Lwip/lwip/src/FILES b/src/Duet/Lwip/lwip/src/FILES
index 952aeabb..952aeabb 100644
--- a/Libraries/Lwip/lwip/src/FILES
+++ b/src/Duet/Lwip/lwip/src/FILES
diff --git a/Libraries/Lwip/lwip/src/api/api_lib.c b/src/Duet/Lwip/lwip/src/api/api_lib.c
index c0f00438..c0f00438 100644
--- a/Libraries/Lwip/lwip/src/api/api_lib.c
+++ b/src/Duet/Lwip/lwip/src/api/api_lib.c
diff --git a/Libraries/Lwip/lwip/src/api/api_msg.c b/src/Duet/Lwip/lwip/src/api/api_msg.c
index 9fd8be6e..9fd8be6e 100644
--- a/Libraries/Lwip/lwip/src/api/api_msg.c
+++ b/src/Duet/Lwip/lwip/src/api/api_msg.c
diff --git a/Libraries/Lwip/lwip/src/api/err.c b/src/Duet/Lwip/lwip/src/api/err.c
index 877c1235..877c1235 100644
--- a/Libraries/Lwip/lwip/src/api/err.c
+++ b/src/Duet/Lwip/lwip/src/api/err.c
diff --git a/Libraries/Lwip/lwip/src/api/netbuf.c b/src/Duet/Lwip/lwip/src/api/netbuf.c
index 4ffe3d6f..4ffe3d6f 100644
--- a/Libraries/Lwip/lwip/src/api/netbuf.c
+++ b/src/Duet/Lwip/lwip/src/api/netbuf.c
diff --git a/Libraries/Lwip/lwip/src/api/netdb.c b/src/Duet/Lwip/lwip/src/api/netdb.c
index 2a00f829..2a00f829 100644
--- a/Libraries/Lwip/lwip/src/api/netdb.c
+++ b/src/Duet/Lwip/lwip/src/api/netdb.c
diff --git a/Libraries/Lwip/lwip/src/api/netifapi.c b/src/Duet/Lwip/lwip/src/api/netifapi.c
index 74bbbc27..74bbbc27 100644
--- a/Libraries/Lwip/lwip/src/api/netifapi.c
+++ b/src/Duet/Lwip/lwip/src/api/netifapi.c
diff --git a/Libraries/Lwip/lwip/src/api/sockets.c b/src/Duet/Lwip/lwip/src/api/sockets.c
index 676c44bb..676c44bb 100644
--- a/Libraries/Lwip/lwip/src/api/sockets.c
+++ b/src/Duet/Lwip/lwip/src/api/sockets.c
diff --git a/Libraries/Lwip/lwip/src/api/tcpip.c b/src/Duet/Lwip/lwip/src/api/tcpip.c
index c3d98163..c3d98163 100644
--- a/Libraries/Lwip/lwip/src/api/tcpip.c
+++ b/src/Duet/Lwip/lwip/src/api/tcpip.c
diff --git a/Libraries/Lwip/lwip/src/core/def.c b/src/Duet/Lwip/lwip/src/core/def.c
index 9e37814e..9e37814e 100644
--- a/Libraries/Lwip/lwip/src/core/def.c
+++ b/src/Duet/Lwip/lwip/src/core/def.c
diff --git a/Libraries/Lwip/lwip/src/core/dhcp.c b/src/Duet/Lwip/lwip/src/core/dhcp.c
index efd7dac5..9b3b2f13 100644
--- a/Libraries/Lwip/lwip/src/core/dhcp.c
+++ b/src/Duet/Lwip/lwip/src/core/dhcp.c
@@ -1705,8 +1705,12 @@ dhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type)
ip_addr_set_zero(&dhcp->msg_out->siaddr);
ip_addr_set_zero(&dhcp->msg_out->giaddr);
for (i = 0; i < DHCP_CHADDR_LEN; i++) {
- /* copy netif hardware address, pad with zeroes */
+ /* copy netif hardware address, pad with zeroes */
+#if 1 // dc42 change to avoid gcc warning of array index out of bounds - looks like a gcc bug to me
+ dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len && i < NETIF_MAX_HWADDR_LEN) ? netif->hwaddr[i] : 0/* pad byte*/;
+#else
dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;
+#endif
}
for (i = 0; i < DHCP_SNAME_LEN; i++) {
dhcp->msg_out->sname[i] = 0;
diff --git a/Libraries/Lwip/lwip/src/core/dns.c b/src/Duet/Lwip/lwip/src/core/dns.c
index 097882a9..097882a9 100644
--- a/Libraries/Lwip/lwip/src/core/dns.c
+++ b/src/Duet/Lwip/lwip/src/core/dns.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/autoip.c b/src/Duet/Lwip/lwip/src/core/ipv4/autoip.c
index 64ef6b52..64ef6b52 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/autoip.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/autoip.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/icmp.c b/src/Duet/Lwip/lwip/src/core/ipv4/icmp.c
index 57a22d56..57a22d56 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/icmp.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/icmp.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/igmp.c b/src/Duet/Lwip/lwip/src/core/ipv4/igmp.c
index 88041996..88041996 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/igmp.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/igmp.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/inet.c b/src/Duet/Lwip/lwip/src/core/ipv4/inet.c
index 51e0d0d0..51e0d0d0 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/inet.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/inet.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/inet_chksum.c b/src/Duet/Lwip/lwip/src/core/ipv4/inet_chksum.c
index cdaddc07..cdaddc07 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/inet_chksum.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/inet_chksum.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/ip.c b/src/Duet/Lwip/lwip/src/core/ipv4/ip.c
index 8aa1b6d6..8aa1b6d6 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/ip.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/ip.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/ip_addr.c b/src/Duet/Lwip/lwip/src/core/ipv4/ip_addr.c
index 65b43e84..65b43e84 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/ip_addr.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/ip_addr.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv4/ip_frag.c b/src/Duet/Lwip/lwip/src/core/ipv4/ip_frag.c
index 98b160a0..98b160a0 100644
--- a/Libraries/Lwip/lwip/src/core/ipv4/ip_frag.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv4/ip_frag.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv6/README b/src/Duet/Lwip/lwip/src/core/ipv6/README
index 36200048..36200048 100644
--- a/Libraries/Lwip/lwip/src/core/ipv6/README
+++ b/src/Duet/Lwip/lwip/src/core/ipv6/README
diff --git a/Libraries/Lwip/lwip/src/core/ipv6/icmp6.c b/src/Duet/Lwip/lwip/src/core/ipv6/icmp6.c
index 4fcc8955..4fcc8955 100644
--- a/Libraries/Lwip/lwip/src/core/ipv6/icmp6.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv6/icmp6.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv6/inet6.c b/src/Duet/Lwip/lwip/src/core/ipv6/inet6.c
index c3de85c0..c3de85c0 100644
--- a/Libraries/Lwip/lwip/src/core/ipv6/inet6.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv6/inet6.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv6/ip6.c b/src/Duet/Lwip/lwip/src/core/ipv6/ip6.c
index ad59b725..ad59b725 100644
--- a/Libraries/Lwip/lwip/src/core/ipv6/ip6.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv6/ip6.c
diff --git a/Libraries/Lwip/lwip/src/core/ipv6/ip6_addr.c b/src/Duet/Lwip/lwip/src/core/ipv6/ip6_addr.c
index 2da6cea4..2da6cea4 100644
--- a/Libraries/Lwip/lwip/src/core/ipv6/ip6_addr.c
+++ b/src/Duet/Lwip/lwip/src/core/ipv6/ip6_addr.c
diff --git a/Libraries/Lwip/lwip/src/core/lwip_init.c b/src/Duet/Lwip/lwip/src/core/lwip_init.c
index f9a86fb8..f9a86fb8 100644
--- a/Libraries/Lwip/lwip/src/core/lwip_init.c
+++ b/src/Duet/Lwip/lwip/src/core/lwip_init.c
diff --git a/Libraries/Lwip/lwip/src/core/lwip_timers_141.c b/src/Duet/Lwip/lwip/src/core/lwip_timers_141.c
index d7cdbf5b..d7cdbf5b 100644
--- a/Libraries/Lwip/lwip/src/core/lwip_timers_141.c
+++ b/src/Duet/Lwip/lwip/src/core/lwip_timers_141.c
diff --git a/Libraries/Lwip/lwip/src/core/mem.c b/src/Duet/Lwip/lwip/src/core/mem.c
index e6281f13..e6281f13 100644
--- a/Libraries/Lwip/lwip/src/core/mem.c
+++ b/src/Duet/Lwip/lwip/src/core/mem.c
diff --git a/Libraries/Lwip/lwip/src/core/memp.c b/src/Duet/Lwip/lwip/src/core/memp.c
index 4136b3ef..4136b3ef 100644
--- a/Libraries/Lwip/lwip/src/core/memp.c
+++ b/src/Duet/Lwip/lwip/src/core/memp.c
diff --git a/Libraries/Lwip/lwip/src/core/netif.c b/src/Duet/Lwip/lwip/src/core/netif.c
index a197cdb9..a197cdb9 100644
--- a/Libraries/Lwip/lwip/src/core/netif.c
+++ b/src/Duet/Lwip/lwip/src/core/netif.c
diff --git a/Libraries/Lwip/lwip/src/core/pbuf.c b/src/Duet/Lwip/lwip/src/core/pbuf.c
index e34f3e8f..e34f3e8f 100644
--- a/Libraries/Lwip/lwip/src/core/pbuf.c
+++ b/src/Duet/Lwip/lwip/src/core/pbuf.c
diff --git a/Libraries/Lwip/lwip/src/core/raw.c b/src/Duet/Lwip/lwip/src/core/raw.c
index 74a21ade..74a21ade 100644
--- a/Libraries/Lwip/lwip/src/core/raw.c
+++ b/src/Duet/Lwip/lwip/src/core/raw.c
diff --git a/Libraries/Lwip/lwip/src/core/snmp/asn1_dec.c b/src/Duet/Lwip/lwip/src/core/snmp/asn1_dec.c
index 1d565820..1d565820 100644
--- a/Libraries/Lwip/lwip/src/core/snmp/asn1_dec.c
+++ b/src/Duet/Lwip/lwip/src/core/snmp/asn1_dec.c
diff --git a/Libraries/Lwip/lwip/src/core/snmp/asn1_enc.c b/src/Duet/Lwip/lwip/src/core/snmp/asn1_enc.c
index 64dfc5f6..64dfc5f6 100644
--- a/Libraries/Lwip/lwip/src/core/snmp/asn1_enc.c
+++ b/src/Duet/Lwip/lwip/src/core/snmp/asn1_enc.c
diff --git a/Libraries/Lwip/lwip/src/core/snmp/mib2.c b/src/Duet/Lwip/lwip/src/core/snmp/mib2.c
index 4775ba99..4775ba99 100644
--- a/Libraries/Lwip/lwip/src/core/snmp/mib2.c
+++ b/src/Duet/Lwip/lwip/src/core/snmp/mib2.c
diff --git a/Libraries/Lwip/lwip/src/core/snmp/mib_structs.c b/src/Duet/Lwip/lwip/src/core/snmp/mib_structs.c
index 2f185cb4..2f185cb4 100644
--- a/Libraries/Lwip/lwip/src/core/snmp/mib_structs.c
+++ b/src/Duet/Lwip/lwip/src/core/snmp/mib_structs.c
diff --git a/Libraries/Lwip/lwip/src/core/snmp/msg_in.c b/src/Duet/Lwip/lwip/src/core/snmp/msg_in.c
index be940c62..be940c62 100644
--- a/Libraries/Lwip/lwip/src/core/snmp/msg_in.c
+++ b/src/Duet/Lwip/lwip/src/core/snmp/msg_in.c
diff --git a/Libraries/Lwip/lwip/src/core/snmp/msg_out.c b/src/Duet/Lwip/lwip/src/core/snmp/msg_out.c
index 485f076a..485f076a 100644
--- a/Libraries/Lwip/lwip/src/core/snmp/msg_out.c
+++ b/src/Duet/Lwip/lwip/src/core/snmp/msg_out.c
diff --git a/Libraries/Lwip/lwip/src/core/stats.c b/src/Duet/Lwip/lwip/src/core/stats.c
index 2c5d7937..2c5d7937 100644
--- a/Libraries/Lwip/lwip/src/core/stats.c
+++ b/src/Duet/Lwip/lwip/src/core/stats.c
diff --git a/Libraries/Lwip/lwip/src/core/sys.c b/src/Duet/Lwip/lwip/src/core/sys.c
index 21884600..21884600 100644
--- a/Libraries/Lwip/lwip/src/core/sys.c
+++ b/src/Duet/Lwip/lwip/src/core/sys.c
diff --git a/Libraries/Lwip/lwip/src/core/tcp.c b/src/Duet/Lwip/lwip/src/core/tcp.c
index 20125586..20125586 100644
--- a/Libraries/Lwip/lwip/src/core/tcp.c
+++ b/src/Duet/Lwip/lwip/src/core/tcp.c
diff --git a/Libraries/Lwip/lwip/src/core/tcp_in.c b/src/Duet/Lwip/lwip/src/core/tcp_in.c
index d0ae7da7..d0ae7da7 100644
--- a/Libraries/Lwip/lwip/src/core/tcp_in.c
+++ b/src/Duet/Lwip/lwip/src/core/tcp_in.c
diff --git a/Libraries/Lwip/lwip/src/core/tcp_out.c b/src/Duet/Lwip/lwip/src/core/tcp_out.c
index 8a3910f3..8a3910f3 100644
--- a/Libraries/Lwip/lwip/src/core/tcp_out.c
+++ b/src/Duet/Lwip/lwip/src/core/tcp_out.c
diff --git a/Libraries/Lwip/lwip/src/core/udp.c b/src/Duet/Lwip/lwip/src/core/udp.c
index 470c9060..470c9060 100644
--- a/Libraries/Lwip/lwip/src/core/udp.c
+++ b/src/Duet/Lwip/lwip/src/core/udp.c
diff --git a/Libraries/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxyfile.doxygen b/src/Duet/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxyfile.doxygen
index 5af1b79c..5af1b79c 100644
--- a/Libraries/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxyfile.doxygen
+++ b/src/Duet/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxyfile.doxygen
diff --git a/Libraries/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxygen_module_mainpage.h b/src/Duet/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxygen_module_mainpage.h
index 26566747..26566747 100644
--- a/Libraries/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxygen_module_mainpage.h
+++ b/src/Duet/Lwip/lwip/src/doxygen/thirdparty.lwip.141/doxygen_module_mainpage.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/autoip.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/autoip.h
index 225be946..225be946 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/autoip.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/autoip.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/icmp.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/icmp.h
index 3962a965..3962a965 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/icmp.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/icmp.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/igmp.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/igmp.h
index 811c2bb8..811c2bb8 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/igmp.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/igmp.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/inet.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/inet.h
index cbc96e6a..cbc96e6a 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/inet.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/inet.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/inet_chksum.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/inet_chksum.h
index bbf96e8c..bbf96e8c 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/inet_chksum.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/inet_chksum.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/ip.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip.h
index 41b44d95..41b44d95 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/ip.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/ip_addr.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip_addr.h
index 0b710d42..0b710d42 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/ip_addr.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip_addr.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv4/lwip/ip_frag.h b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip_frag.h
index 543d85d2..543d85d2 100644
--- a/Libraries/Lwip/lwip/src/include/ipv4/lwip/ip_frag.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv4/lwip/ip_frag.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv6/lwip/icmp.h b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/icmp.h
index 87e9ffd9..87e9ffd9 100644
--- a/Libraries/Lwip/lwip/src/include/ipv6/lwip/icmp.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/icmp.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv6/lwip/inet.h b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/inet.h
index de1a0b63..de1a0b63 100644
--- a/Libraries/Lwip/lwip/src/include/ipv6/lwip/inet.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/inet.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv6/lwip/ip.h b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/ip.h
index a01cfc65..a01cfc65 100644
--- a/Libraries/Lwip/lwip/src/include/ipv6/lwip/ip.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/ip.h
diff --git a/Libraries/Lwip/lwip/src/include/ipv6/lwip/ip_addr.h b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/ip_addr.h
index b2d8ae56..b2d8ae56 100644
--- a/Libraries/Lwip/lwip/src/include/ipv6/lwip/ip_addr.h
+++ b/src/Duet/Lwip/lwip/src/include/ipv6/lwip/ip_addr.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/api.h b/src/Duet/Lwip/lwip/src/include/lwip/api.h
index 3f0b005c..3f0b005c 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/api.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/api.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/api_msg.h b/src/Duet/Lwip/lwip/src/include/lwip/api_msg.h
index 43be3a7c..43be3a7c 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/api_msg.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/api_msg.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/arch.h b/src/Duet/Lwip/lwip/src/include/lwip/arch.h
index 4d6df773..4d6df773 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/arch.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/arch.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/debug.h b/src/Duet/Lwip/lwip/src/include/lwip/debug.h
index 8bd97ca6..8bd97ca6 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/debug.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/debug.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/def.h b/src/Duet/Lwip/lwip/src/include/lwip/def.h
index b5521c5f..b5521c5f 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/def.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/def.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/dhcp.h b/src/Duet/Lwip/lwip/src/include/lwip/dhcp.h
index 73de29fa..73de29fa 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/dhcp.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/dhcp.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/dns.h b/src/Duet/Lwip/lwip/src/include/lwip/dns.h
index 69f6d00a..69f6d00a 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/dns.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/dns.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/err.h b/src/Duet/Lwip/lwip/src/include/lwip/err.h
index 634d2cc3..634d2cc3 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/err.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/err.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/init.h b/src/Duet/Lwip/lwip/src/include/lwip/init.h
index 37566f60..37566f60 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/init.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/init.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/mem.h b/src/Duet/Lwip/lwip/src/include/lwip/mem.h
index 4a5d4bb4..4a5d4bb4 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/mem.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/mem.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/memp.h b/src/Duet/Lwip/lwip/src/include/lwip/memp.h
index 4ff72816..4ff72816 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/memp.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/memp.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/memp_std.h b/src/Duet/Lwip/lwip/src/include/lwip/memp_std.h
index 461ed1ac..461ed1ac 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/memp_std.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/memp_std.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/netbuf.h b/src/Duet/Lwip/lwip/src/include/lwip/netbuf.h
index 7d247d71..7d247d71 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/netbuf.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/netbuf.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/netdb.h b/src/Duet/Lwip/lwip/src/include/lwip/netdb.h
index 47d42b48..47d42b48 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/netdb.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/netdb.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/netif.h b/src/Duet/Lwip/lwip/src/include/lwip/netif.h
index 70a19a75..70a19a75 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/netif.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/netif.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/netifapi.h b/src/Duet/Lwip/lwip/src/include/lwip/netifapi.h
index 33318efa..33318efa 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/netifapi.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/netifapi.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/opt.h b/src/Duet/Lwip/lwip/src/include/lwip/opt.h
index e2f93fe3..e2f93fe3 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/opt.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/opt.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/pbuf.h b/src/Duet/Lwip/lwip/src/include/lwip/pbuf.h
index 59167410..59167410 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/pbuf.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/pbuf.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/raw.h b/src/Duet/Lwip/lwip/src/include/lwip/raw.h
index 8b533308..8b533308 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/raw.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/raw.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/sio.h b/src/Duet/Lwip/lwip/src/include/lwip/sio.h
index 28ae2f22..28ae2f22 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/sio.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/sio.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/snmp.h b/src/Duet/Lwip/lwip/src/include/lwip/snmp.h
index 323c749a..323c749a 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/snmp.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/snmp.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/snmp_asn1.h b/src/Duet/Lwip/lwip/src/include/lwip/snmp_asn1.h
index 605fa3f1..605fa3f1 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/snmp_asn1.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/snmp_asn1.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/snmp_msg.h b/src/Duet/Lwip/lwip/src/include/lwip/snmp_msg.h
index c96795df..c96795df 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/snmp_msg.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/snmp_msg.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/snmp_structs.h b/src/Duet/Lwip/lwip/src/include/lwip/snmp_structs.h
index 3da3d67d..3da3d67d 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/snmp_structs.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/snmp_structs.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/sockets.h b/src/Duet/Lwip/lwip/src/include/lwip/sockets.h
index 959507b6..959507b6 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/sockets.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/sockets.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/stats.h b/src/Duet/Lwip/lwip/src/include/lwip/stats.h
index a8078e35..a8078e35 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/stats.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/stats.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/sys.h b/src/Duet/Lwip/lwip/src/include/lwip/sys.h
index 45935d21..45935d21 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/sys.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/sys.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/tcp.h b/src/Duet/Lwip/lwip/src/include/lwip/tcp.h
index 52752ada..52752ada 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/tcp.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/tcp.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/tcp_impl.h b/src/Duet/Lwip/lwip/src/include/lwip/tcp_impl.h
index e1bb93da..e1bb93da 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/tcp_impl.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/tcp_impl.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/tcpip.h b/src/Duet/Lwip/lwip/src/include/lwip/tcpip.h
index 6690906c..6690906c 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/tcpip.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/tcpip.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/timers.h b/src/Duet/Lwip/lwip/src/include/lwip/timers.h
index 824f22e6..824f22e6 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/timers.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/timers.h
diff --git a/Libraries/Lwip/lwip/src/include/lwip/udp.h b/src/Duet/Lwip/lwip/src/include/lwip/udp.h
index 57370253..57370253 100644
--- a/Libraries/Lwip/lwip/src/include/lwip/udp.h
+++ b/src/Duet/Lwip/lwip/src/include/lwip/udp.h
diff --git a/Libraries/Lwip/lwip/src/include/netif/etharp.h b/src/Duet/Lwip/lwip/src/include/netif/etharp.h
index 85acb143..85acb143 100644
--- a/Libraries/Lwip/lwip/src/include/netif/etharp.h
+++ b/src/Duet/Lwip/lwip/src/include/netif/etharp.h
diff --git a/Libraries/Lwip/lwip/src/include/netif/ppp_oe.h b/src/Duet/Lwip/lwip/src/include/netif/ppp_oe.h
index 27b2f077..27b2f077 100644
--- a/Libraries/Lwip/lwip/src/include/netif/ppp_oe.h
+++ b/src/Duet/Lwip/lwip/src/include/netif/ppp_oe.h
diff --git a/Libraries/Lwip/lwip/src/include/netif/slipif.h b/src/Duet/Lwip/lwip/src/include/netif/slipif.h
index 1687eead..1687eead 100644
--- a/Libraries/Lwip/lwip/src/include/netif/slipif.h
+++ b/src/Duet/Lwip/lwip/src/include/netif/slipif.h
diff --git a/Libraries/Lwip/lwip/src/netif/FILES b/src/Duet/Lwip/lwip/src/netif/FILES
index 099dbf3e..099dbf3e 100644
--- a/Libraries/Lwip/lwip/src/netif/FILES
+++ b/src/Duet/Lwip/lwip/src/netif/FILES
diff --git a/Libraries/Lwip/lwip/src/netif/etharp.c b/src/Duet/Lwip/lwip/src/netif/etharp.c
index 4742a2fb..4742a2fb 100644
--- a/Libraries/Lwip/lwip/src/netif/etharp.c
+++ b/src/Duet/Lwip/lwip/src/netif/etharp.c
diff --git a/Libraries/Lwip/lwip/src/netif/ethernetif.c b/src/Duet/Lwip/lwip/src/netif/ethernetif.c
index 8ec40be1..8ec40be1 100644
--- a/Libraries/Lwip/lwip/src/netif/ethernetif.c
+++ b/src/Duet/Lwip/lwip/src/netif/ethernetif.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/auth.c b/src/Duet/Lwip/lwip/src/netif/ppp/auth.c
index 0fd87a37..0fd87a37 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/auth.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/auth.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/auth.h b/src/Duet/Lwip/lwip/src/netif/ppp/auth.h
index a8069ec4..a8069ec4 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/auth.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/auth.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/chap.c b/src/Duet/Lwip/lwip/src/netif/ppp/chap.c
index f10e27d2..f10e27d2 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/chap.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/chap.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/chap.h b/src/Duet/Lwip/lwip/src/netif/ppp/chap.h
index fedcab8d..fedcab8d 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/chap.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/chap.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/chpms.c b/src/Duet/Lwip/lwip/src/netif/ppp/chpms.c
index 81a887b8..81a887b8 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/chpms.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/chpms.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/chpms.h b/src/Duet/Lwip/lwip/src/netif/ppp/chpms.h
index df070fb3..df070fb3 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/chpms.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/chpms.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/fsm.c b/src/Duet/Lwip/lwip/src/netif/ppp/fsm.c
index e8a254ed..e8a254ed 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/fsm.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/fsm.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/fsm.h b/src/Duet/Lwip/lwip/src/netif/ppp/fsm.h
index 8d41b5f5..8d41b5f5 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/fsm.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/fsm.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/ipcp.c b/src/Duet/Lwip/lwip/src/netif/ppp/ipcp.c
index f0ab2e0e..f0ab2e0e 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/ipcp.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/ipcp.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/ipcp.h b/src/Duet/Lwip/lwip/src/netif/ppp/ipcp.h
index de03f460..de03f460 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/ipcp.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/ipcp.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/lcp.c b/src/Duet/Lwip/lwip/src/netif/ppp/lcp.c
index 54f758aa..54f758aa 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/lcp.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/lcp.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/lcp.h b/src/Duet/Lwip/lwip/src/netif/ppp/lcp.h
index b9201eeb..b9201eeb 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/lcp.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/lcp.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/magic.c b/src/Duet/Lwip/lwip/src/netif/ppp/magic.c
index 3732a424..3732a424 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/magic.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/magic.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/magic.h b/src/Duet/Lwip/lwip/src/netif/ppp/magic.h
index eba70d20..eba70d20 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/magic.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/magic.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/md5.c b/src/Duet/Lwip/lwip/src/netif/ppp/md5.c
index dc3cc751..dc3cc751 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/md5.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/md5.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/md5.h b/src/Duet/Lwip/lwip/src/netif/ppp/md5.h
index e129533f..e129533f 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/md5.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/md5.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/pap.c b/src/Duet/Lwip/lwip/src/netif/ppp/pap.c
index 5fb9f886..5fb9f886 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/pap.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/pap.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/pap.h b/src/Duet/Lwip/lwip/src/netif/ppp/pap.h
index c99a2040..c99a2040 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/pap.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/pap.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/ppp.c b/src/Duet/Lwip/lwip/src/netif/ppp/ppp.c
index 8e8fae9f..8e8fae9f 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/ppp.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/ppp.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/ppp.h b/src/Duet/Lwip/lwip/src/netif/ppp/ppp.h
index 08d6e62d..08d6e62d 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/ppp.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/ppp.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/ppp_impl.h b/src/Duet/Lwip/lwip/src/netif/ppp/ppp_impl.h
index 89aea60b..89aea60b 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/ppp_impl.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/ppp_impl.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/ppp_oe.c b/src/Duet/Lwip/lwip/src/netif/ppp/ppp_oe.c
index fdf52ae2..fdf52ae2 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/ppp_oe.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/ppp_oe.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/pppdebug.h b/src/Duet/Lwip/lwip/src/netif/ppp/pppdebug.h
index 81349971..81349971 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/pppdebug.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/pppdebug.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/randm.c b/src/Duet/Lwip/lwip/src/netif/ppp/randm.c
index b736091f..b736091f 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/randm.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/randm.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/randm.h b/src/Duet/Lwip/lwip/src/netif/ppp/randm.h
index a0984b02..a0984b02 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/randm.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/randm.h
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/vj.c b/src/Duet/Lwip/lwip/src/netif/ppp/vj.c
index 40fdad13..40fdad13 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/vj.c
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/vj.c
diff --git a/Libraries/Lwip/lwip/src/netif/ppp/vj.h b/src/Duet/Lwip/lwip/src/netif/ppp/vj.h
index fad12136..fad12136 100644
--- a/Libraries/Lwip/lwip/src/netif/ppp/vj.h
+++ b/src/Duet/Lwip/lwip/src/netif/ppp/vj.h
diff --git a/Libraries/Lwip/lwip/src/netif/slipif.c b/src/Duet/Lwip/lwip/src/netif/slipif.c
index 3c1db193..3c1db193 100644
--- a/Libraries/Lwip/lwip/src/netif/slipif.c
+++ b/src/Duet/Lwip/lwip/src/netif/slipif.c
diff --git a/Libraries/Lwip/lwip/test/unit/core/test_mem.c b/src/Duet/Lwip/lwip/test/unit/core/test_mem.c
index d3a5d540..d3a5d540 100644
--- a/Libraries/Lwip/lwip/test/unit/core/test_mem.c
+++ b/src/Duet/Lwip/lwip/test/unit/core/test_mem.c
diff --git a/Libraries/Lwip/lwip/test/unit/core/test_mem.h b/src/Duet/Lwip/lwip/test/unit/core/test_mem.h
index 13803edc..13803edc 100644
--- a/Libraries/Lwip/lwip/test/unit/core/test_mem.h
+++ b/src/Duet/Lwip/lwip/test/unit/core/test_mem.h
diff --git a/Libraries/Lwip/lwip/test/unit/etharp/test_etharp.c b/src/Duet/Lwip/lwip/test/unit/etharp/test_etharp.c
index cbbc9502..cbbc9502 100644
--- a/Libraries/Lwip/lwip/test/unit/etharp/test_etharp.c
+++ b/src/Duet/Lwip/lwip/test/unit/etharp/test_etharp.c
diff --git a/Libraries/Lwip/lwip/test/unit/etharp/test_etharp.h b/src/Duet/Lwip/lwip/test/unit/etharp/test_etharp.h
index 96e00c3b..96e00c3b 100644
--- a/Libraries/Lwip/lwip/test/unit/etharp/test_etharp.h
+++ b/src/Duet/Lwip/lwip/test/unit/etharp/test_etharp.h
diff --git a/Libraries/Lwip/lwip/test/unit/lwip_check.h b/src/Duet/Lwip/lwip/test/unit/lwip_check.h
index e27f55ae..e27f55ae 100644
--- a/Libraries/Lwip/lwip/test/unit/lwip_check.h
+++ b/src/Duet/Lwip/lwip/test/unit/lwip_check.h
diff --git a/Libraries/Lwip/lwip/test/unit/lwip_unittests.c b/src/Duet/Lwip/lwip/test/unit/lwip_unittests.c
index 4f537e66..4f537e66 100644
--- a/Libraries/Lwip/lwip/test/unit/lwip_unittests.c
+++ b/src/Duet/Lwip/lwip/test/unit/lwip_unittests.c
diff --git a/Libraries/Lwip/lwip/test/unit/lwipopts.h b/src/Duet/Lwip/lwip/test/unit/lwipopts.h
index 88e76d7a..88e76d7a 100644
--- a/Libraries/Lwip/lwip/test/unit/lwipopts.h
+++ b/src/Duet/Lwip/lwip/test/unit/lwipopts.h
diff --git a/Libraries/Lwip/lwip/test/unit/tcp/tcp_helper.c b/src/Duet/Lwip/lwip/test/unit/tcp/tcp_helper.c
index dd550f1b..dd550f1b 100644
--- a/Libraries/Lwip/lwip/test/unit/tcp/tcp_helper.c
+++ b/src/Duet/Lwip/lwip/test/unit/tcp/tcp_helper.c
diff --git a/Libraries/Lwip/lwip/test/unit/tcp/tcp_helper.h b/src/Duet/Lwip/lwip/test/unit/tcp/tcp_helper.h
index 4a72c935..4a72c935 100644
--- a/Libraries/Lwip/lwip/test/unit/tcp/tcp_helper.h
+++ b/src/Duet/Lwip/lwip/test/unit/tcp/tcp_helper.h
diff --git a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp.c b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp.c
index 6fd5be50..6fd5be50 100644
--- a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp.c
+++ b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp.c
diff --git a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp.h b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp.h
index f1c4a463..f1c4a463 100644
--- a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp.h
+++ b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp.h
diff --git a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp_oos.c b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp_oos.c
index 764de1c4..764de1c4 100644
--- a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp_oos.c
+++ b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp_oos.c
diff --git a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp_oos.h b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp_oos.h
index 5e411f00..5e411f00 100644
--- a/Libraries/Lwip/lwip/test/unit/tcp/test_tcp_oos.h
+++ b/src/Duet/Lwip/lwip/test/unit/tcp/test_tcp_oos.h
diff --git a/Libraries/Lwip/lwip/test/unit/udp/test_udp.c b/src/Duet/Lwip/lwip/test/unit/udp/test_udp.c
index a2f02af0..a2f02af0 100644
--- a/Libraries/Lwip/lwip/test/unit/udp/test_udp.c
+++ b/src/Duet/Lwip/lwip/test/unit/udp/test_udp.c
diff --git a/Libraries/Lwip/lwip/test/unit/udp/test_udp.h b/src/Duet/Lwip/lwip/test/unit/udp/test_udp.h
index 93353682..93353682 100644
--- a/Libraries/Lwip/lwip/test/unit/udp/test_udp.h
+++ b/src/Duet/Lwip/lwip/test/unit/udp/test_udp.h
diff --git a/Libraries/Lwip/lwipopts.h b/src/Duet/Lwip/lwipopts.h
index 2a4cfc2a..2a4cfc2a 100644
--- a/Libraries/Lwip/lwipopts.h
+++ b/src/Duet/Lwip/lwipopts.h
diff --git a/src/Network.cpp b/src/Duet/Network.cpp
index 51419ea4..51419ea4 100644
--- a/src/Network.cpp
+++ b/src/Duet/Network.cpp
diff --git a/src/Network.h b/src/Duet/Network.h
index 3cee3d45..3cee3d45 100644
--- a/src/Network.h
+++ b/src/Duet/Network.h
diff --git a/src/Pins_duet.h b/src/Duet/Pins_duet.h
index 30195b75..04307085 100644
--- a/src/Pins_duet.h
+++ b/src/Duet/Pins_duet.h
@@ -93,6 +93,9 @@ const Pin Z_PROBE_PIN = 10; // Analogue pin number
const Pin Z_PROBE_MOD_PIN = 52; // Digital pin number to turn the IR LED on (high) or off (low) on Duet v0.6 and v1.0 (PB21)
const Pin Z_PROBE_MOD_PIN07 = X12; // Digital pin number to turn the IR LED on (high) or off (low) on Duet v0.7 and v0.8.5 (PC10)
+// Pin number that the DAC that controls the second extruder motor current on the Duet 0.8.5 is connected to
+const int Dac0DigitalPin = 66; // Arduino Due pin number corresponding to DAC0 output pin
+
// COOLING FANS
const size_t NUM_FANS = 2;
@@ -150,4 +153,15 @@ const size_t NUM_PINS_ALLOWED = 72;
const uint32_t IAP_FLASH_START = 0x000F0000;
const uint32_t IAP_FLASH_END = 0x000FFFFF;
+// Timer allocation
+#define NETWORK_TC (TC1)
+#define NETWORK_TC_CHAN (1)
+#define NETWORK_TC_IRQN TC4_IRQn
+#define NETWORK_TC_HANDLER TC4_Handler
+
+#define STEP_TC (TC1)
+#define STEP_TC_CHAN (0)
+#define STEP_TC_IRQN TC3_IRQn
+#define STEP_TC_HANDLER TC3_Handler
+
#endif
diff --git a/src/Webserver.cpp b/src/Duet/Webserver.cpp
index 8106d2e7..8106d2e7 100644
--- a/src/Webserver.cpp
+++ b/src/Duet/Webserver.cpp
diff --git a/src/Webserver.h b/src/Duet/Webserver.h
index 3ec60303..3ec60303 100644
--- a/src/Webserver.h
+++ b/src/Duet/Webserver.h
diff --git a/src/GCodes.cpp b/src/GCodes.cpp
index c3d60874..1df0387f 100644
--- a/src/GCodes.cpp
+++ b/src/GCodes.cpp
@@ -1905,6 +1905,23 @@ void GCodes::SetMACAddress(GCodeBuffer *gb)
}
}
+bool GCodes::ChangeMicrostepping(size_t drive, int microsteps, int mode) const
+{
+ bool dummy;
+ unsigned int oldSteps = platform->GetMicrostepping(drive, dummy);
+ bool success = platform->SetMicrostepping(drive, microsteps, mode);
+ if (success)
+ {
+ // We changed the microstepping, so adjust the steps/mm to compensate
+ float stepsPerMm = platform->DriveStepsPerUnit(drive);
+ if (stepsPerMm > 0)
+ {
+ platform->SetDriveStepsPerUnit(drive, stepsPerMm * (float)microsteps / (float)oldSteps);
+ }
+ }
+ return success;
+}
+
// Handle sending a reply back to the appropriate interface(s).
// Note that 'reply' may be empty. If it isn't, then we need to append newline when sending it.
void GCodes::HandleReply(GCodeBuffer *gb, bool error, const char* reply)
@@ -2727,7 +2744,7 @@ bool GCodes::HandleMcode(GCodeBuffer* gb, StringRef& reply)
}
else
{
- fileResponse->cat("NONE");
+ fileResponse->cat("NONE\n");
}
}
@@ -3940,7 +3957,7 @@ bool GCodes::HandleMcode(GCodeBuffer* gb, StringRef& reply)
{
seen = true;
int microsteps = gb->GetIValue();
- if (!platform->SetMicrostepping(axis, microsteps, interp))
+ if (!ChangeMicrostepping(axis, microsteps, interp))
{
platform->MessageF(GENERIC_MESSAGE, "Drive %c does not support %dx microstepping%s\n",
axisLetters[axis], microsteps, (interp) ? " with interpolation" : "");
@@ -3956,7 +3973,7 @@ bool GCodes::HandleMcode(GCodeBuffer* gb, StringRef& reply)
gb->GetLongArray(eVals, eCount);
for (size_t e = 0; e < eCount; e++)
{
- if (!platform->SetMicrostepping(AXES + e, (int)eVals[e], interp))
+ if (!ChangeMicrostepping(AXES + e, (int)eVals[e], interp))
{
platform->MessageF(GENERIC_MESSAGE, "Drive E%u does not support %dx microstepping%s\n",
e, (int)eVals[e], (interp) ? " with interpolation" : "");
diff --git a/src/GCodes.h b/src/GCodes.h
index a3de3c9d..bf808a69 100644
--- a/src/GCodes.h
+++ b/src/GCodes.h
@@ -174,6 +174,7 @@ private:
void SetPositions(float positionNow[DRIVES]); // Set the current position to be this
const char *TranslateEndStopResult(EndStopHit es); // Translate end stop result to text
bool RetractFilament(bool retract); // Retract or un-retract filaments
+ bool ChangeMicrostepping(size_t drive, int microsteps, int mode) const; // Change microstepping on the specified drive
Platform* platform; // The RepRap machine
Webserver* webserver; // The webserver class
diff --git a/Libraries/.gitignore b/src/Libraries/.gitignore
index b25c15b8..b25c15b8 100644
--- a/Libraries/.gitignore
+++ b/src/Libraries/.gitignore
diff --git a/Libraries/Fatfs/00readme.txt b/src/Libraries/Fatfs/00readme.txt
index cfcdd4a2..cfcdd4a2 100644
--- a/Libraries/Fatfs/00readme.txt
+++ b/src/Libraries/Fatfs/00readme.txt
diff --git a/Libraries/Fatfs/ccsbcs.c b/src/Libraries/Fatfs/ccsbcs.c
index 5508d436..5508d436 100644
--- a/Libraries/Fatfs/ccsbcs.c
+++ b/src/Libraries/Fatfs/ccsbcs.c
diff --git a/Libraries/Fatfs/conf_fatfs.h b/src/Libraries/Fatfs/conf_fatfs.h
index 94c30c5c..94c30c5c 100644
--- a/Libraries/Fatfs/conf_fatfs.h
+++ b/src/Libraries/Fatfs/conf_fatfs.h
diff --git a/Libraries/Fatfs/diskio.c b/src/Libraries/Fatfs/diskio.c
index e302eed0..e302eed0 100644
--- a/Libraries/Fatfs/diskio.c
+++ b/src/Libraries/Fatfs/diskio.c
diff --git a/Libraries/Fatfs/diskio.h b/src/Libraries/Fatfs/diskio.h
index 9573e6ec..9573e6ec 100644
--- a/Libraries/Fatfs/diskio.h
+++ b/src/Libraries/Fatfs/diskio.h
diff --git a/Libraries/Fatfs/fattime_rtc.c b/src/Libraries/Fatfs/fattime_rtc.c
index fc8d1df1..fc8d1df1 100644
--- a/Libraries/Fatfs/fattime_rtc.c
+++ b/src/Libraries/Fatfs/fattime_rtc.c
diff --git a/Libraries/Fatfs/ff.c b/src/Libraries/Fatfs/ff.c
index 881f546b..881f546b 100644
--- a/Libraries/Fatfs/ff.c
+++ b/src/Libraries/Fatfs/ff.c
diff --git a/Libraries/Fatfs/ff.h b/src/Libraries/Fatfs/ff.h
index 960837f8..960837f8 100644
--- a/Libraries/Fatfs/ff.h
+++ b/src/Libraries/Fatfs/ff.h
diff --git a/Libraries/Fatfs/ffconf.h b/src/Libraries/Fatfs/ffconf.h
index 5dcd900a..5dcd900a 100644
--- a/Libraries/Fatfs/ffconf.h
+++ b/src/Libraries/Fatfs/ffconf.h
diff --git a/Libraries/Fatfs/integer.h b/src/Libraries/Fatfs/integer.h
index 16ad4082..16ad4082 100644
--- a/Libraries/Fatfs/integer.h
+++ b/src/Libraries/Fatfs/integer.h
diff --git a/Libraries/Flash/DueFlashStorage.cpp b/src/Libraries/Flash/DueFlashStorage.cpp
index 6e671c1b..48003ddc 100644
--- a/Libraries/Flash/DueFlashStorage.cpp
+++ b/src/Libraries/Flash/DueFlashStorage.cpp
@@ -8,13 +8,25 @@ void DueFlashStorage::read(uint32_t address, void *data, uint32_t dataLength)
bool DueFlashStorage::write(uint32_t address, const void *data, uint32_t dataLength)
{
- if ((uint32_t)FLASH_START + address < IFLASH1_ADDR)
+ if ((uint32_t)FLASH_START + address <
+#ifdef DUET_NG
+ IFLASH_ADDR
+#else
+ IFLASH1_ADDR
+#endif
+ )
{
FLASH_DEBUG("Flash write address too low");
return false;
}
- if ((uint32_t)FLASH_START + address + dataLength > IFLASH1_ADDR + IFLASH1_SIZE)
+ if ((uint32_t)FLASH_START + address + dataLength >
+#ifdef DUET_NG
+ IFLASH_ADDR + IFLASH_SIZE
+#else
+ IFLASH1_ADDR + IFLASH1_SIZE
+#endif
+ )
{
FLASH_DEBUG("Flash write address too high");
return false;
diff --git a/Libraries/Flash/DueFlashStorage.h b/src/Libraries/Flash/DueFlashStorage.h
index 51785964..c93f11a9 100644
--- a/Libraries/Flash/DueFlashStorage.h
+++ b/src/Libraries/Flash/DueFlashStorage.h
@@ -18,12 +18,24 @@ Further modified up by David Crocker
#include <Arduino.h>
#include "flash_efc.h"
+#ifdef DUET_NG
+
+// 1Kb of data
+#define FLASH_DATA_LENGTH ((IFLASH_PAGE_SIZE/sizeof(byte))*4)
+
+// Choose a start address close to the top of the Flash 1 memory space
+#define FLASH_START ((uint8_t *)(IFLASH_ADDR + IFLASH_SIZE - FLASH_DATA_LENGTH))
+
+#else
+
// 1Kb of data
#define FLASH_DATA_LENGTH ((IFLASH1_PAGE_SIZE/sizeof(byte))*4)
// Choose a start address close to the top of the Flash 1 memory space
#define FLASH_START ((uint8_t *)(IFLASH1_ADDR + IFLASH1_SIZE - FLASH_DATA_LENGTH))
+#endif
+
//#define FLASH_DEBUG(x) Serial.print(x);
#define FLASH_DEBUG(x)
diff --git a/Libraries/MAX31855/MAX31855.cpp b/src/Libraries/MAX31855/MAX31855.cpp
index 1206ddc1..396df7e8 100644
--- a/Libraries/MAX31855/MAX31855.cpp
+++ b/src/Libraries/MAX31855/MAX31855.cpp
@@ -45,6 +45,12 @@
// dan.newman@mtbaldy.us
// GPL v3
+#ifdef DUET_NG
+# define MAX_SPI SPI
+#else
+# define MAX_SPI SPI0
+#endif
+
#define PERIPHERAL_CHANNEL_ID 3
#define PERIPHERAL_CHANNEL_CS_PIN 78 // NPCS3
@@ -83,7 +89,7 @@ void MAX31855::Init(uint8_t cs)
device.cs = cs; // Chip select
device.id = PERIPHERAL_CHANNEL_ID; // Peripheral channel
device.bits = SPI_CSR_BITS_16_BIT; // 16 bit data transfers
- spi_master_init(SPI0, device.cs, -1);
+ spi_master_init(MAX_SPI, device.cs);
initialized = true;
}
}
@@ -95,7 +101,7 @@ spi_status_t MAX31855::readRaw(uint16_t *raw) const
for (uint8_t i = 0; i < 2; i++)
{
uint32_t timeout = SPI_TIMEOUT;
- while (!spi_is_tx_ready(SPI0))
+ while (!spi_is_tx_ready(MAX_SPI))
{
if (!timeout--)
{
@@ -103,10 +109,10 @@ spi_status_t MAX31855::readRaw(uint16_t *raw) const
}
}
- SPI0->SPI_TDR = (i != 1) ? 0x00000000 : 0x00000000 | SPI_TDR_LASTXFER;
+ MAX_SPI->SPI_TDR = (i != 1) ? 0x00000000 : 0x00000000 | SPI_TDR_LASTXFER;
timeout = SPI_TIMEOUT;
- while (!spi_is_rx_ready(SPI0))
+ while (!spi_is_rx_ready(MAX_SPI))
{
if (!timeout--)
{
@@ -114,7 +120,7 @@ spi_status_t MAX31855::readRaw(uint16_t *raw) const
}
}
- *raw++ = SPI0->SPI_RDR;
+ *raw++ = MAX_SPI->SPI_RDR;
}
return SPI_OK;
@@ -125,11 +131,11 @@ MAX31855_error MAX31855::getTemperature(float *t) const
// Assume properly initialized
// Ensure that the configuration is as needed; another SPI0 consumer
// may have changed the bus speed and/or timing delays.
- spi_master_setup_device(SPI0, &device, 0, MAX31855_MAX_FREQ, 0);
- spi_set_transfer_delay(SPI0, device.id, MAX31855_DLYBS, MAX31855_DLYBCT);
+ spi_master_setup_device(MAX_SPI, &device, 0, MAX31855_MAX_FREQ, 0);
+ spi_set_transfer_delay(MAX_SPI, device.id, MAX31855_DLYBS, MAX31855_DLYBCT);
// Select the device; enable CS (set it LOW)
- spi_select_device(SPI0, &device);
+ spi_select_device(MAX_SPI, &device);
// Read in 32 bits
uint16_t raw[2];
@@ -139,7 +145,7 @@ MAX31855_error MAX31855::getTemperature(float *t) const
}
// Deselect the device; disable CS (set it HIGH)
- spi_deselect_device(SPI0, &device);
+ spi_deselect_device(MAX_SPI, &device);
if ((raw[0] & 0x02) || (raw[1] & 0x08))
{
diff --git a/Libraries/MAX31855/MAX31855.h b/src/Libraries/MAX31855/MAX31855.h
index 84945740..1ac8bd13 100644
--- a/Libraries/MAX31855/MAX31855.h
+++ b/src/Libraries/MAX31855/MAX31855.h
@@ -2,7 +2,7 @@
#define MAX31855_H
#include "Arduino.h"
-#include "spi_master.h"
+#include "spi_master.h" // for spi_status_t
enum MAX31855_error {
MAX31855_OK = 0, // Success
@@ -23,8 +23,9 @@ public:
private:
spi_status_t readRaw(uint16_t *r) const;
- bool initialized;
+
struct spi_device device;
+ bool initialized;
};
#endif //MAX31855_H
diff --git a/Libraries/MCP4461/MCP4461.cpp b/src/Libraries/MCP4461/MCP4461.cpp
index 77c93864..f1fd1647 100644
--- a/Libraries/MCP4461/MCP4461.cpp
+++ b/src/Libraries/MCP4461/MCP4461.cpp
@@ -17,6 +17,12 @@ GPL v3
#include <stdio.h>
#include <Wire.h>
+#ifdef DUET_NG
+# define MCP_WIRE Wire
+#else
+# define MCP_WIRE Wire1
+#endif
+
//ensure you call begin() before any other functions but note
//begin can only be called once for all MCP* objects as it initialises
//the local master through the Wire library
@@ -28,7 +34,7 @@ MCP4461::MCP4461() {
//initialise the I2C interface as master ie local address is 0
void MCP4461::begin() {
- Wire1.begin();
+ MCP_WIRE.begin();
}
//set the MCP4461 address
@@ -61,10 +67,10 @@ void MCP4461::setVolatileWiper(uint8_t wiper, uint16_t wiper_value){
}
c_byte |= MCP4461_WRITE;
//send command byte
- Wire1.beginTransmission(_mcp4461_address);
- Wire1.write(c_byte);
- Wire1.write(d_byte);
- Wire1.endTransmission(); //do not release bus
+ MCP_WIRE.beginTransmission(_mcp4461_address);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
+ MCP_WIRE.endTransmission(); //do not release bus
}
void MCP4461::setNonVolatileWiper(uint8_t wiper, uint16_t wiper_value){
@@ -92,10 +98,10 @@ void MCP4461::setNonVolatileWiper(uint8_t wiper, uint16_t wiper_value){
}
c_byte |= MCP4461_WRITE;
//send command byte
- Wire1.beginTransmission(_mcp4461_address);
- Wire1.write(c_byte);
- Wire1.write(d_byte);
- Wire1.endTransmission(); //do not release bus
+ MCP_WIRE.beginTransmission(_mcp4461_address);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
+ MCP_WIRE.endTransmission(); //do not release bus
delay(20); //allow the write to complete (this is wasteful - better to check if the write has completed)
}
@@ -108,30 +114,30 @@ void MCP4461::setVolatileWipers(uint16_t wiper_value){
uint8_t c_byte;
if (value > 0xFF)c_byte = 0x1; //the 8th data bit is 1
else c_byte =0;
- Wire1.beginTransmission(_mcp4461_address);
+ MCP_WIRE.beginTransmission(_mcp4461_address);
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_VW0;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
if (value > 0xFF) c_byte = 0x1;
else c_byte =0;
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_VW1;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
if (value > 0xFF) c_byte = 0x1;
else c_byte =0;
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_VW2;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
if (value > 0xFF) c_byte = 0x1;
else c_byte =0;
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_VW3;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
- Wire1.endTransmission();
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
+ MCP_WIRE.endTransmission();
}
//set all the wipers in one transmission, more verbose but quicker than multiple calls to
@@ -143,33 +149,33 @@ void MCP4461::setNonVolatileWipers(uint16_t wiper_value){
uint8_t c_byte;
if (value > 0xFF)c_byte = 0x1; //the 8th data bit is 1
else c_byte =0;
- Wire1.beginTransmission(_mcp4461_address);
+ MCP_WIRE.beginTransmission(_mcp4461_address);
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_NVW0;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
delay(20); //allow the write to complete (this is wasteful - better to check if the write has completed)
if (value > 0xFF) c_byte = 0x1;
else c_byte =0;
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_NVW1;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
delay(20);
if (value > 0xFF) c_byte = 0x1;
else c_byte =0;
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_NVW2;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
delay(20);
if (value > 0xFF) c_byte = 0x1;
else c_byte =0;
c_byte |= MCP4461_WRITE;
c_byte |= MCP4461_NVW3;
- Wire1.write(c_byte);
- Wire1.write(d_byte);
- Wire1.endTransmission();
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.write(d_byte);
+ MCP_WIRE.endTransmission();
delay(20);
}
@@ -195,15 +201,15 @@ uint16_t MCP4461::getNonVolatileWiper(uint8_t wiper){
}
c_byte |= MCP4461_READ;
//send command byte
- Wire1.beginTransmission(_mcp4461_address);
- Wire1.write(c_byte);
- Wire1.endTransmission(false); //do not release bus
- Wire1.requestFrom((uint8_t)_mcp4461_address,(uint8_t)2);
+ MCP_WIRE.beginTransmission(_mcp4461_address);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.endTransmission(false); //do not release bus
+ MCP_WIRE.requestFrom((uint8_t)_mcp4461_address,(uint8_t)2);
//read the register
int i = 0;
- while(Wire1.available())
+ while(MCP_WIRE.available())
{
- ret |= Wire1.read();
+ ret |= MCP_WIRE.read();
if (i==0) ret = ret<<8;
i++;
}
@@ -232,15 +238,15 @@ uint16_t MCP4461::getVolatileWiper(uint8_t wiper){
}
c_byte |= MCP4461_READ;
//send command byte
- Wire1.beginTransmission(_mcp4461_address);
- Wire1.write(c_byte);
- Wire1.endTransmission(false); //do not release bus
- Wire1.requestFrom((uint8_t)_mcp4461_address,(uint8_t)2);
+ MCP_WIRE.beginTransmission(_mcp4461_address);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.endTransmission(false); //do not release bus
+ MCP_WIRE.requestFrom((uint8_t)_mcp4461_address,(uint8_t)2);
//read the register
int i = 0;
- while(Wire1.available())
+ while(MCP_WIRE.available())
{
- ret |= Wire1.read();
+ ret |= MCP_WIRE.read();
if (i==0) ret = ret<<8;
i++;
}
@@ -255,15 +261,15 @@ uint16_t MCP4461::getStatus(){
c_byte |= MCP4461_STATUS;
c_byte |= MCP4461_READ;
//send command byte
- Wire1.beginTransmission(_mcp4461_address);
- Wire1.write(c_byte);
- Wire1.endTransmission(false); //do not release bus
- Wire1.requestFrom((uint8_t)_mcp4461_address, (uint8_t)2);
+ MCP_WIRE.beginTransmission(_mcp4461_address);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.endTransmission(false); //do not release bus
+ MCP_WIRE.requestFrom((uint8_t)_mcp4461_address, (uint8_t)2);
//read the register
int i = 0;
- while(Wire1.available())
+ while(MCP_WIRE.available())
{
- ret |= Wire1.read();
+ ret |= MCP_WIRE.read();
if (i==0) ret = ret<<8;
i++;
}
@@ -286,15 +292,15 @@ void MCP4461::toggleWiper(uint8_t wiper){
c_byte |= MCP4461_READ;
}
//send command byte
- Wire1.beginTransmission(_mcp4461_address);
- Wire1.write(c_byte);
- Wire1.endTransmission(false); //do not release bus
- Wire1.requestFrom((uint8_t)_mcp4461_address,(uint8_t)2);
+ MCP_WIRE.beginTransmission(_mcp4461_address);
+ MCP_WIRE.write(c_byte);
+ MCP_WIRE.endTransmission(false); //do not release bus
+ MCP_WIRE.requestFrom((uint8_t)_mcp4461_address,(uint8_t)2);
//read the register
int i = 0;
- while(Wire1.available())
+ while(MCP_WIRE.available())
{
- tcon |= Wire1.read();
+ tcon |= MCP_WIRE.read();
if (i==0) tcon = tcon<<8;
i++;
}
diff --git a/Libraries/MCP4461/MCP4461.h b/src/Libraries/MCP4461/MCP4461.h
index 6b3e85cf..6b3e85cf 100644
--- a/Libraries/MCP4461/MCP4461.h
+++ b/src/Libraries/MCP4461/MCP4461.h
diff --git a/src/Pins.h b/src/Pins.h
index 82441dac..de9738e0 100644
--- a/src/Pins.h
+++ b/src/Pins.h
@@ -4,14 +4,19 @@
// Load Pins_<platform>.h
#if !defined(PLATFORM)
-#define PLATFORM duet
+# if defined(__SAM3X8E__)
+# define PLATFORM Duet
+# elif defined(__SAM4E8E__)
+# define PLATFORM DuetNG
+# else
+# error Unknown platform
+# endif
#endif
#define P_EXPAND(x) x
#define P_CONCAT(x,y) P_EXPAND(x)y
#define P_STR(x) #x
#define P_XSTR(x) P_STR(x)
-#define P_INCLUDE_FILE P_XSTR(P_CONCAT(Pins_,P_CONCAT(PLATFORM,.h)))
+#define P_INCLUDE_FILE P_XSTR(P_CONCAT(PLATFORM,P_CONCAT(/Pins_,P_CONCAT(PLATFORM,.h))))
#include P_INCLUDE_FILE
-
#endif // PINS_H__
diff --git a/src/Platform.cpp b/src/Platform.cpp
index ae6c03f2..dd4a194e 100644
--- a/src/Platform.cpp
+++ b/src/Platform.cpp
@@ -22,15 +22,18 @@
#include "RepRapFirmware.h"
#include "DueFlashStorage.h"
+#ifdef CORE_NG
+# include "sam/drivers/tc/tc.h"
+#endif
+
#ifdef EXTERNAL_DRIVERS
-#include "ExternalDrivers.h"
+# include "ExternalDrivers.h"
#endif
extern char _end;
extern "C" char *sbrk(int i);
const uint8_t memPattern = 0xA5;
-const int Dac0DigitalPin = 66; // Arduino Due pin number corresponding to DAC0 output pin
static uint32_t fanInterruptCount = 0; // accessed only in ISR, so no need to declare it volatile
const uint32_t fanMaxInterruptCount = 32; // number of fan interrupts that we average over
@@ -60,24 +63,12 @@ void setup()
*heapend++ = memPattern;
}
-#if 0
- watchdogDisable();
- pinMode(39, OUTPUT);
-#else
reprap.Init();
-#endif
}
void loop()
{
-#if 0
- digitalWrite(39, HIGH);
- delay(500);
- digitalWrite(39, LOW);
- delay(500);
-#else
reprap.Spin();
-#endif
}
extern "C"
@@ -90,11 +81,6 @@ extern "C"
}
}
-// This used to overrides the weak function in CoreDuet, but now CoreDuet no longer calls it so we don't need it
-//void watchdogSetup(void)
-//{
-//}
-
//*************************************************************************************************
// PidParameters class
@@ -298,13 +284,15 @@ void Platform::Init()
{
if (heatOnPins[heater] >= 0)
{
- digitalWrite(heatOnPins[heater], HIGH); // turn the heater off
+ digitalWrite(heatOnPins[heater], (HEAT_ON) ? LOW : HIGH); // turn the heater off
pinMode(heatOnPins[heater], OUTPUT);
}
- analogReadResolution(12);
- thermistorAdcChannels[heater] = PinToAdcChannel(tempSensePins[heater]); // Translate the Arduino Due Analog pin number to the SAM ADC channel number
+ AnalogChannelNumber chan = PinToAdcChannel(tempSensePins[heater]); // translate the Arduino Due Analog pin number to the SAM ADC channel number
+ thermistorAdcChannels[heater] = chan;
+ AnalogInEnableChannel(chan, true);
+
SetThermistorNumber(heater, heater); // map the thermistor straight through
- thermistorFilters[heater].Init(analogRead(tempSensePins[heater]));
+ thermistorFilters[heater].Init(0);
}
SetTemperatureLimit(DEFAULT_TEMPERATURE_LIMIT);
@@ -410,29 +398,39 @@ void Platform::InitZProbe()
{
zProbeOnFilter.Init(0);
zProbeOffFilter.Init(0);
+
+#ifdef DUET_NG
+ zProbeModulationPin = Z_PROBE_MOD_PIN;
+#else
zProbeModulationPin = (board == BoardType::Duet_07 || board == BoardType::Duet_085) ? Z_PROBE_MOD_PIN07 : Z_PROBE_MOD_PIN;
+#endif
switch (nvData.zProbeType)
{
case 1:
case 2:
+ AnalogInEnableChannel(zProbeAdcChannel, true);
pinMode(zProbeModulationPin, OUTPUT);
digitalWrite(zProbeModulationPin, HIGH); // enable the IR LED
break;
case 3:
+ AnalogInEnableChannel(zProbeAdcChannel, true);
pinMode(zProbeModulationPin, OUTPUT);
- digitalWrite(zProbeModulationPin, LOW); // enable the alternate sensor
+ digitalWrite(zProbeModulationPin, LOW); // enable the alternate sensor
break;
case 4:
+ AnalogInEnableChannel(zProbeAdcChannel, false);
pinMode(endStopPins[E0_AXIS], INPUT_PULLUP);
break;
case 5:
- break; //TODO
+ AnalogInEnableChannel(zProbeAdcChannel, false);
+ break; //TODO (DeltaProbe)
default:
+ AnalogInEnableChannel(zProbeAdcChannel, false);
break;
}
}
@@ -644,7 +642,12 @@ void Platform::ResetNvData()
ARRAY_INIT(nvData.ipAddress, IP_ADDRESS);
ARRAY_INIT(nvData.netMask, NET_MASK);
ARRAY_INIT(nvData.gateWay, GATE_WAY);
+
+#ifdef DUET_NG
+ memset(nvData.macAddress, 0xFF, sizeof(nvData.macAddress));
+#else
ARRAY_INIT(nvData.macAddress, MAC_ADDRESS);
+#endif
nvData.zProbeType = 0; // Default is to use no Z probe switch
ARRAY_INIT(nvData.zProbeAxes, Z_PROBE_AXES);
@@ -1006,7 +1009,7 @@ void Platform::SoftwareReset(uint16_t reason)
{
if (reason != (uint16_t)SoftwareResetReason::user)
{
- if (!SERIAL_MAIN_DEVICE.canWrite())
+ if (SERIAL_MAIN_DEVICE.canWrite() == 0)
{
reason |= (uint16_t)SoftwareResetReason::inUsbOutput; // if we are resetting because we are stuck in a Spin function, record whether we are trying to send to USB
}
@@ -1014,9 +1017,9 @@ void Platform::SoftwareReset(uint16_t reason)
{
reason |= (uint16_t)SoftwareResetReason::inLwipSpin;
}
- if (!SERIAL_AUX_DEVICE.canWrite()
+ if (SERIAL_AUX_DEVICE.canWrite() == 0
#ifdef SERIAL_AUX2_DEVICE
- || !SERIAL_AUX2_DEVICE.canWrite()
+ || SERIAL_AUX2_DEVICE.canWrite() == 0
#endif
)
{
@@ -1044,21 +1047,9 @@ void Platform::SoftwareReset(uint16_t reason)
// Interrupts
-#ifdef CORE_NG
-# include "sam/drivers/tc/tc.h"
-
-# define TC_GetStatus(_a, _b) tc_get_status(_a, _b)
-# define TC_Configure(_a, _b, _c) tc_init(_a, _b, _c)
-# define TC_Start(_a, _b) tc_start(_a, _b)
-# define TC_SetRA(_a, _b, _c) tc_write_ra(_a, _b, _c)
-# define TC_SetRB(_a, _b, _c) tc_write_rb(_a, _b, _c)
-# define TC_SetRC(_a, _b, _c) tc_write_rc(_a, _b, _c)
-# define TC_ReadCV(_a, _b) tc_read_cv(_a, _b)
-#endif
-
-void TC3_Handler()
+void STEP_TC_HANDLER()
{
- TC1->TC_CHANNEL[0].TC_IDR = TC_IER_CPAS; // disable the interrupt
+ STEP_TC->TC_CHANNEL[STEP_TC_CHAN].TC_IDR = TC_IER_CPAS; // disable the interrupt
#ifdef MOVE_DEBUG
++numInterruptsExecuted;
lastInterruptTime = Platform::GetInterruptClocks();
@@ -1068,13 +1059,15 @@ void TC3_Handler()
// __disable_irq();
}
-void TC4_Handler()
+#ifndef DUET_NG
+void NETWORK_TC_HANDLER()
{
- TC_GetStatus(TC1, 1);
+ tc_get_status(NETWORK_TC, NETWORK_TC_CHAN);
// __enable_irq(); // allow nested interrupts
reprap.GetNetwork()->Interrupt();
// __disable_irq();
}
+#endif
void FanInterrupt()
{
@@ -1094,31 +1087,38 @@ void Platform::InitialiseInterrupts()
{
// Set the tick interrupt to the highest priority. We need to to monitor the heaters and kick the watchdog.
NVIC_SetPriority(SysTick_IRQn, 0); // set priority for tick interrupts - highest, because it kicks the watchdog
+
+#ifdef DUET_NG
+ NVIC_SetPriority(UART0_IRQn, 1); // set priority for UART interrupt - must be higher than step interrupt
+#else
NVIC_SetPriority(UART_IRQn, 1); // set priority for UART interrupt - must be higher than step interrupt
+#endif
// Timer interrupt for stepper motors
// The clock rate we use is a compromise. Too fast and the 64-bit square roots take a long time to execute. Too slow and we lose resolution.
// We choose a clock divisor of 32, which gives us 0.38us resolution. The next option is 128 which would give 1.524us resolution.
pmc_set_writeprotect(false);
- pmc_enable_periph_clk((uint32_t) TC3_IRQn);
- TC_Configure(TC1, 0, TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK3);
- TC1 ->TC_CHANNEL[0].TC_IDR = ~(uint32_t)0; // interrupts disabled for now
- TC_Start(TC1, 0);
- TC_GetStatus(TC1, 0); // clear any pending interrupt
- NVIC_SetPriority(TC3_IRQn, 2); // set high priority for this IRQ; it's time-critical
- NVIC_EnableIRQ(TC3_IRQn);
-
+ pmc_enable_periph_clk((uint32_t) STEP_TC_IRQN);
+ tc_init(STEP_TC, STEP_TC_CHAN, TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK3);
+ STEP_TC->TC_CHANNEL[STEP_TC_CHAN].TC_IDR = ~(uint32_t)0; // interrupts disabled for now
+ tc_start(STEP_TC, 0);
+ tc_get_status(STEP_TC, STEP_TC_CHAN); // clear any pending interrupt
+ NVIC_SetPriority(STEP_TC_IRQN, 2); // set high priority for this IRQ; it's time-critical
+ NVIC_EnableIRQ(STEP_TC_IRQN);
+
+#ifndef DUET_NG
// Timer interrupt to keep the networking timers running (called at 16Hz)
- pmc_enable_periph_clk((uint32_t) TC4_IRQn);
- TC_Configure(TC1, 1, TC_CMR_WAVE | TC_CMR_WAVSEL_UP_RC | TC_CMR_TCCLKS_TIMER_CLOCK2);
+ pmc_enable_periph_clk((uint32_t) NETWORK_TC_IRQN);
+ tc_init(NETWORK_TC, NETWORK_TC_CHAN, TC_CMR_WAVE | TC_CMR_WAVSEL_UP_RC | TC_CMR_TCCLKS_TIMER_CLOCK2);
uint32_t rc = (VARIANT_MCK/8)/16; // 8 because we selected TIMER_CLOCK2 above
- TC_SetRA(TC1, 1, rc/2); // 50% high, 50% low
- TC_SetRC(TC1, 1, rc);
- TC_Start(TC1, 1);
- TC1 ->TC_CHANNEL[1].TC_IER = TC_IER_CPCS;
- TC1 ->TC_CHANNEL[1].TC_IDR = ~TC_IER_CPCS;
- NVIC_SetPriority(TC4_IRQn, 4); // step interrupt is more time-critical than this one
- NVIC_EnableIRQ(TC4_IRQn);
+ tc_write_ra(NETWORK_TC, NETWORK_TC_CHAN, rc/2); // 50% high, 50% low
+ tc_write_rc(NETWORK_TC, NETWORK_TC_CHAN, rc);
+ tc_start(NETWORK_TC, NETWORK_TC_CHAN);
+ NETWORK_TC ->TC_CHANNEL[NETWORK_TC_CHAN].TC_IER = TC_IER_CPCS;
+ NETWORK_TC ->TC_CHANNEL[NETWORK_TC_CHAN].TC_IDR = ~TC_IER_CPCS;
+ NVIC_SetPriority(NETWORK_TC_IRQN, 4); // step interrupt is more time-critical than this one
+ NVIC_EnableIRQ(NETWORK_TC_IRQN);
+#endif
// Interrupt for 4-pin PWM fan sense line
if (coolingFanRpmPin >= 0)
@@ -1136,8 +1136,10 @@ void Platform::InitialiseInterrupts()
#if 0 // not used
void Platform::DisableInterrupts()
{
- NVIC_DisableIRQ(TC3_IRQn);
- NVIC_DisableIRQ(TC4_IRQn);
+ NVIC_DisableIRQ(STEP_IRQN);
+#ifdef DUET_NG
+ NVIC_DisableIRQ(NETWORK_IRQN);
+#endif
}
#endif
@@ -1451,7 +1453,7 @@ void Platform::SetHeaterPwm(size_t heater, uint8_t power)
if (heatOnPins[heater] >= 0)
{
uint16_t freq = (reprap.GetHeat()->UseSlowPwm(heater)) ? SlowHeaterPwmFreq : NormalHeaterPwmFreq;
- analogWriteDuet(heatOnPins[heater], (HEAT_ON == 0) ? 255 - power : power, freq);
+ AnalogWrite(heatOnPins[heater], (HEAT_ON) ? power : 255 - power, freq);
}
}
@@ -1640,25 +1642,33 @@ void Platform::UpdateMotorCurrent(size_t drive)
}
else
{
+#ifndef DUET_NG
if (board == BoardType::Duet_085)
{
+#endif
// Extruder 0 is on DAC channel 0
if (driver == 4)
{
- analogWrite(DAC0, dac);
+#ifdef DUET_NG
+ AnalogWrite(DAC1, dac);
+#else
+ AnalogWrite(DAC0, dac);
+#endif
}
else
{
mcpExpansion.setNonVolatileWiper(potWipes[driver-1], pot);
mcpExpansion.setVolatileWiper(potWipes[driver-1], pot);
}
+#ifndef DUET_NG
}
else
{
mcpExpansion.setNonVolatileWiper(potWipes[driver], pot);
mcpExpansion.setVolatileWiper(potWipes[driver], pot);
}
- }
+#endif
+ }
#ifdef EXTERNAL_DRIVERS
}
#endif
@@ -1800,8 +1810,13 @@ void Platform::InitFans()
{
for (size_t i = 0; i < NUM_FANS; ++i)
{
- // The cooling fan 0 output pin gets inverted if HEAT_ON == 0 on a Duet 0.4, 0.6 or 0.7
- fans[i].Init(COOLING_FAN_PINS[i], !HEAT_ON && (board == BoardType::Duet_06 || board == BoardType::Duet_07));
+ fans[i].Init(COOLING_FAN_PINS[i],
+ !HEAT_ON
+#ifndef DUET_NG
+ // The cooling fan 0 output pin gets inverted if HEAT_ON == 0 on a Duet 0.4, 0.6 or 0.7
+ && (board == BoardType::Duet_06 || board == BoardType::Duet_07)
+#endif
+ );
}
if (NUM_FANS > 1)
@@ -1905,7 +1920,7 @@ void Platform::Fan::Refresh()
{
invert = !invert;
}
- analogWriteDuet(pin, (invert) ? (255 - p) : p, freq);
+ AnalogWrite(pin, (invert) ? (255 - p) : p, freq);
}
}
@@ -2266,6 +2281,9 @@ void Platform::SetBoardType(BoardType bt)
{
if (bt == BoardType::Auto)
{
+#ifdef DUET_NG
+ board = BoardType::DuetNG_08;
+#else
// Determine whether this is a Duet 0.6 or a Duet 0.8.5 board.
// If it is a 0.85 board then DAC0 (AKA digital pin 67) is connected to ground via a diode and a 2.15K resistor.
// So we enable the pullup (value 150K-150K) on pin 67 and read it, expecting a LOW on a 0.8.5 board and a HIGH on a 0.6 board.
@@ -2273,6 +2291,7 @@ void Platform::SetBoardType(BoardType bt)
pinMode(Dac0DigitalPin, INPUT_PULLUP);
board = (digitalRead(Dac0DigitalPin)) ? BoardType::Duet_06 : BoardType::Duet_085;
pinMode(Dac0DigitalPin, INPUT); // turn pullup off
+#endif
}
else
{
@@ -2291,9 +2310,13 @@ const char* Platform::GetElectronicsString() const
{
switch (board)
{
+#ifdef DUET_NG
+ case BoardType::DuetNG_08: return "DuetNG 0.8";
+#else
case BoardType::Duet_06: return "Duet 0.6";
case BoardType::Duet_07: return "Duet 0.7";
case BoardType::Duet_085: return "Duet 0.85";
+#endif
default: return "Unidentified";
}
}
@@ -2415,9 +2438,9 @@ char Platform::ReadFromSource(const SerialSource source)
// Must be called with interrupts disabled,
/*static*/ bool Platform::ScheduleInterrupt(uint32_t tim)
{
- TC_SetRA(TC1, 0, tim); // set up the compare register
- TC_GetStatus(TC1, 0); // clear any pending interrupt
- int32_t diff = (int32_t)(tim - TC_ReadCV(TC1, 0)); // see how long we have to go
+ tc_write_ra(TC1, 0, tim); // set up the compare register
+ tc_get_status(TC1, 0); // clear any pending interrupt
+ int32_t diff = (int32_t)(tim - tc_read_cv(TC1, 0)); // see how long we have to go
if (diff < (int32_t)DDA::minInterruptInterval) // if less than about 2us or already passed
{
return true; // tell the caller to simulate an interrupt instead
@@ -2435,7 +2458,6 @@ char Platform::ReadFromSource(const SerialSource source)
// Process a 1ms tick interrupt
// This function must be kept fast so as not to disturb the stepper timing, so don't do any floating point maths in here.
// This is what we need to do:
-// 0. Kick the watchdog.
// 1. Kick off a new ADC conversion.
// 2. Fetch and process the result of the last ADC conversion.
// 3a. If the last ADC conversion was for the Z probe, toggle the modulation output if using a modulated IR sensor.
@@ -2457,8 +2479,7 @@ void Platform::Tick()
if (DoThermistorAdc(currentHeater))
{
ThermistorAveragingFilter& currentFilter = const_cast<ThermistorAveragingFilter&>(thermistorFilters[currentHeater]);
- currentFilter.ProcessReading(GetAdcReading(thermistorAdcChannels[heaterTempChannels[currentHeater]]));
- StartAdcConversion(zProbeAdcChannel);
+ currentFilter.ProcessReading(AnalogInReadChannel(thermistorAdcChannels[heaterTempChannels[currentHeater]]));
if (currentFilter.IsValid() && (configuredHeaters & (1 << currentHeater)) != 0)
{
uint32_t sum = currentFilter.GetSum();
@@ -2477,7 +2498,6 @@ void Platform::Tick()
// periodically called by PID::Spin() where temperature fault handling is taken care of. However, we
// must guard against overly long delays between successive calls of PID::Spin().
// Do not call Time() here, it isn't safe. We use millis() instead.
- StartAdcConversion(zProbeAdcChannel);
if ((millis() - reprap.GetHeat()->GetLastSampleTime(currentHeater)) > maxPidSpinDelay)
{
SetHeaterPwm(currentHeater, 0);
@@ -2496,13 +2516,9 @@ void Platform::Tick()
case 2: // last conversion started was the Z probe, with IR LED on
const_cast<ZProbeAveragingFilter&>(zProbeOnFilter).ProcessReading(GetRawZProbeReading());
- if (DoThermistorAdc(currentHeater))
+ if (nvData.zProbeType == 2) // if using a modulated IR sensor
{
- StartAdcConversion(thermistorAdcChannels[heaterTempChannels[currentHeater]]); // read a thermistor
- }
- if (nvData.zProbeType == 2) // if using a modulated IR sensor
- {
- digitalWrite(zProbeModulationPin, LOW); // turn off the IR emitter
+ digitalWrite(zProbeModulationPin, LOW); // turn off the IR emitter
}
++tickState;
break;
@@ -2512,17 +2528,16 @@ void Platform::Tick()
// no break
case 0: // this is the state after initialisation, no conversion has been started
default:
- if (DoThermistorAdc(currentHeater))
- {
- StartAdcConversion(thermistorAdcChannels[heaterTempChannels[currentHeater]]); // read a thermistor
- }
- if (nvData.zProbeType == 2) // if using a modulated IR sensor
+ if (nvData.zProbeType == 2) // if using a modulated IR sensor
{
digitalWrite(zProbeModulationPin, HIGH); // turn on the IR emitter
}
tickState = 1;
break;
}
+
+ AnalogInStartConversion();
+
#ifdef TIME_TICK_ISR
uint32_t now2 = micros();
if (now2 - now > errorCodeBits)
@@ -2532,19 +2547,6 @@ void Platform::Tick()
#endif
}
-/*static*/ uint16_t Platform::GetAdcReading(EAnalogChannel chan)
-{
- uint16_t rslt = (uint16_t) adc_get_channel_value(ADC, (adc_channel_num_t)(int)chan);
- adc_disable_channel(ADC, (adc_channel_num_t)(int)chan);
- return rslt;
-}
-
-/*static*/ void Platform::StartAdcConversion(EAnalogChannel chan)
-{
- adc_enable_channel(ADC, (adc_channel_num_t)(int)chan);
- adc_start(ADC );
-}
-
// Pragma pop_options is not supported on this platform
//#pragma GCC pop_options
diff --git a/src/Platform.h b/src/Platform.h
index caa92041..7bb0c73b 100644
--- a/src/Platform.h
+++ b/src/Platform.h
@@ -175,9 +175,13 @@ const size_t FILE_BUFFER_SIZE = 256;
enum class BoardType : uint8_t
{
Auto = 0,
+#ifdef DUET_NG
+ DuetNG_08 = 1
+#else
Duet_06 = 1,
Duet_07 = 2,
Duet_085 = 3
+#endif
};
enum class EndStopHit
@@ -828,16 +832,13 @@ private:
// checking has already been performed.
uint8_t heaterTempChannels[HEATERS];
- EAnalogChannel thermistorAdcChannels[HEATERS];
- EAnalogChannel zProbeAdcChannel;
+ AnalogChannelNumber thermistorAdcChannels[HEATERS];
+ AnalogChannelNumber zProbeAdcChannel;
uint32_t thermistorOverheatSums[HEATERS];
uint8_t tickState;
size_t currentHeater;
int debugCode;
- static uint16_t GetAdcReading(EAnalogChannel chan);
- static void StartAdcConversion(EAnalogChannel chan);
-
// Hotend configuration
float filamentWidth;
float nozzleDiameter;
@@ -1246,7 +1247,7 @@ inline uint16_t Platform::GetRawZProbeReading() const
}
else
{
- return GetAdcReading(zProbeAdcChannel);
+ return AnalogInReadChannel(zProbeAdcChannel);
}
}