Documentation for old sdks

Hi everyone,

I am looking for the documentation of SDK4.2.11. For instance, those concerning network stuffs…

I had a look on the obsolete documentation section but did not find it…

its because it’s not really “obsolete”.

from .NET Micro Framework – GHI Electronics you can see the 4.3 links, and even a document that has the 4.1 USBizi era doco. It would make sense to have a "
If you’re looking for the SDK reference for 4.2, click here" link, I agree, but it’s not that hard to work out either. Click the link to the 4.3 GHI extensions, and change the “4.3” in the URI to 4.2 and then pick Premium or OSHW to get in the right reference.

The library reference is installed with the software

I know that library reference is installed with the sdk. but this gives not a full example on how to manage network as :https://www.ghielectronics.com/docs/30/networking.

I am looking for the same document but for the 4.2.11 version.

In the 4.1 days we didn’t have anything outside the reference, but we tried to explain as much as we can in the reference.

Why are you talking about 4.1? I am looking for the documentation (not the library ref) that was existing for the 4.2.

It shouldn’t be that hard to obtain documentation about 4.2 not the library reference only.

Unfortunately we have moved on to 4.3 and 4.2 is not recommended for any new designs. Documentation will always reflect the latest and the references will always be available for old SDKs.

Pffff it’s a pain… if not a shame!
4.2 is still needed for those who can not install VS2012 or VS2013.
Thus we can’t work with G400 unless upgrading VS version which involve to upgrade Operating System and change my computer.
2 days for this answer… a waste of time. :wall:
If library reference is the only documentation available for previous SDK, then you have to include more information in the chm file!!!

I am sorry you feel that way. 4.2 and even 4.1 SDKs are still available to download with available reference documentation. However any other tutorials on our website will always reflect the latest software.

While this maybe useful to some, we thought about this a lot and decided that a clean and clear documentation is the best approach, especially to new users. After all, we do not have unlimited resources :slight_smile:

VM does not work for strange USB driver reason… on this needs also a new licence for the operating system.

The doc side by side is The solution why deleting the old one???

You did it for some obsolete parts but not for networking. I do not have unlimited ressources neither! I bought a G400 6 month ago. It was during the period when we move from 4.1 to 4.2 sdk. I have never use it! and won’t… if this is not a shame what is it?

Sorry to be rude but this is not the first time I am disappointed by such things. Bugs can exist I know and sometime there’s nothing else to do than upgrading. However network is supposed to work (a little bit) on G400 and 4.2 sdk and I just want to run a simple test since wednesday and I can’t due to a serious lack of documentation!

So what’s wrong with this?


using System;
using System.Net;
using System.Text;
using System.Threading;
using Microsoft.SPOT;
using GHI.Premium.Net;
using Microsoft.SPOT.Net;
using Microsoft.SPOT.Net.NetworkInformation;
namespace TEST_ETH_G400
{


    public class Program
    {
        static public EthernetBuiltIn ebi = new EthernetBuiltIn();
        public static void Main()
        {
            ebi.Open();
            GHI.Premium.Net.NetworkInterfaceExtension.AssignNetworkingStackTo(ebi);
            NetworkInterface[] netif = NetworkInterface.GetAllNetworkInterfaces();
            
            if (netif[0].IsDhcpEnabled)
            {
                netif[0].RenewDhcpLease();
            }
            else
            {
                netif[0].EnableDhcp();
            }

            while (true)
            {
                Thread.Sleep(1);
            }
        }
    }
}

Ok let’s try to solve the daily problem!

The constraints: A g400 with 4.2., A dhcp server somewhere in the network. I want to ping the G400.

How to do?

Looking at the library ref does not explain anything even I am not considering myself as a beginners… informations are not enough! let’s go I have a 4.2 based EMX code let’s adapt it:


using System;
using System.Net;
using System.Text;
using System.Threading;
using Microsoft.SPOT;
using GHI.Premium.Net;
using Microsoft.SPOT.Net;
using Microsoft.SPOT.Net.NetworkInformation;
namespace TEST_ETH_G400
{


    public class Program
    {
        static public bool cable_connected = false;
        static public bool ethernet_last_status = false;
        static public EthernetBuiltIn ebi = new EthernetBuiltIn();
        static public ManualResetEvent NetworkAvailablityBlocking = null;
        public static NetworkInterface[] netif = NetworkInterface.GetAllNetworkInterfaces();
        public static void Main()
        {
            ebi.Open();
            GHI.Premium.Net.NetworkInterfaceExtension.AssignNetworkingStackTo(ebi);

            NetworkAvailablityBlocking = new ManualResetEvent(false);
            ebi.NetworkAddressChanged += new NetworkInterfaceExtension.NetworkAddressChangedEventHandler(_NetworkAddressChanged);
            ebi.CableConnectivityChanged += new EthernetBuiltIn.CableConnectivityChangedEventHandler(ebi_CableConnectivityChanged);
            NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(_NetworkAvailabilityChanged);
            if (!ebi.IsCableConnected)
            {
                Debug.Print("Cable is not connected!");
                NetworkAvailablityBlocking.Reset();
                {
                    if (!ebi.IsCableConnected)
                    {
                        Debug.Print("Cable is not connected!");
                        Debug.Print("Still waiting.");
                    }

                }
            }
            else
            {
                Debug.Print("Ethernet cable is connected!");
                cable_connected = true;
            }


            while (true)
            {
                Thread.Sleep(1000);
                Debug.Print("Alive");
            }
        }

        public static void claim()
        {
            Debug.Print("Claim IP Adress");
            if (!netif[0].IsDhcpEnabled)
                netif[0].EnableDhcp();// This function is blocking
            else
            {
                netif[0].RenewDhcpLease();// This function is blocking
            }
            printinfo();
        }



        public static void printinfo()
        {
            Debug.Print("Ethernet activated: " + ebi.IsActivated.ToString());
            Debug.Print("Ethernet interface open: " + ebi.IsOpen.ToString());
            Debug.Print("Ethernet cable connected " + ebi.IsCableConnected.ToString());
            Debug.Print("NetworkInterfaceType " + ebi.NetworkInterface.NetworkInterfaceType);
            Debug.Print("Network settings:");
            Debug.Print("IP Address: " + ebi.NetworkInterface.IPAddress);
            Debug.Print("Subnet Mask: " + ebi.NetworkInterface.SubnetMask);
            Debug.Print("Default Getway: " + ebi.NetworkInterface.GatewayAddress);
            Debug.Print("Is DhCp enabled: " + ebi.NetworkInterface.IsDhcpEnabled);
            Debug.Print("Is DynamicDnsEnabled enabled: " + ebi.NetworkInterface.IsDynamicDnsEnabled);
            Debug.Print("Number of DNS servers:" + ebi.NetworkInterface.DnsAddresses.Length);
            for (int i = 0; i < ebi.NetworkInterface.DnsAddresses.Length; i++)
                Debug.Print("DNS Server " + i.ToString() + ":" + ebi.NetworkInterface.DnsAddresses[i]);
        }


        public static void _NetworkAddressChanged(object sender, EventArgs e)
        {
            Debug.Print("_NetworkAddressChanged Event ");
            Debug.Print("New address for The built-in Ethernet Network Interface ");
            printinfo();
            cable_connected = ebi.IsCableConnected;
            Debug.Print("------------------------------------------------------");

        }

        public static void ebi_CableConnectivityChanged(object sender, EthernetBuiltIn.CableConnectivityEventArgs e)
        {
            if (ebi.IsCableConnected)
            {
                Debug.Print("Cable connected event");
                claim();
                cable_connected = true;

            }
            else
            {
                Debug.Print("Cable disconnected event");

                cable_connected = false;

            }
        }

        public static void _NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
        {
            Debug.Print("NetworkChange_NetworkAvailabilityChanged " + sender.ToString() + "\t" + e.IsAvailable.ToString());
            if (e.IsAvailable)
            {
                if (ebi.IsCableConnected)
                {
                    if (ethernet_last_status != true)
                    {
                        ethernet_last_status = true;
                        NetworkAvailablityBlocking.Set();
                    }
                    else
                    { ethernet_last_status = false; }
                }
                else
                { ethernet_last_status = false; }
            }
            else
            { ethernet_last_status = false; }
        }
    }
}

I can’t ping the platform

I see the DHCP Discover, Offer, 2X request followed by 2X NAK… the a bunch of request discover, nak etc…

I finally obtain ACK but the some Offer discover etc… but still can’t ping

DHCP is one area I would strongly suggest you consider moving forward to 4.3 and not stay on 4.2, just because of DHCP. So much improvement - there are situations where DHCP responses would never be picked up by lwIP so you can never get on the network. It seems like you’re talking commercial pressures and therefore commercial products, I’d hate you to find that you drop a device in a customer network only to find their DHCP server is one of the bad ones.

And yes I understand your pain about needing to upgrade your OS installation, but the networking in 4.2 to me seems like a bigger potential pain.

And for additional “documentation” there are plenty of threads in here that talk about working with networking, and many codeshare examples too.

@ Andre I am sure GHI are suggesting they don’t have resources (people) to manage old and outdated content. I agree that it’s painful to see valuable information disappear, but I also see the need to streamline the documentation for current products and in particular to make it simple for beginners to get access to, and understand, the core info they need to get moving in the right direction. Perhaps a compromise is that GHI could start a “legacy documentation” post somewhere in the forum to capture a snapshot of that old info before it goes to the bit-pile-in-the-sky

@ Brett - we always listen and try to improve. We well keep this in mind next time we need to change the documentation.

Let’s go for a new desktop a new os a new version of visual studio, I hope this is the good choice.