The C# sample code is attached for TNA configuration with 'TNA required' & by user.

The code test is done with 2.6.3.16 & 2.6.3.19 + N2 FW 1.2.0. 


For more information, please refer to the link - BS2_SetTNAConfig 



 public void TNAConfigTest(IntPtr sdkContext, UInt32 deviceID, bool isMasterDevice)
        {

            string ipAddress = "192.168.13.201";// "192.168.13.195";
            IntPtr ptrIPAddr = Marshal.StringToHGlobalAnsi(ipAddress);
            ushort port = 51211;
            uint deviceId = 0;

            IntPtr versionPtr = API.BS2_Version();
            Console.WriteLine("SDK version : {0}" + Marshal.PtrToStringAnsi(versionPtr));


            IntPtr context = IntPtr.Zero;
            context = API.BS2_AllocateContext();
            if (context == null) //Returns NULL when there is not enough system memory
            {

                //textBox1.Text = "No memory!";

                Console.WriteLine("No memory!");
            }
            else // if not, returns the allocated Context.
            {
                //textBox1.Text = "Allocate context successfully";

                Console.WriteLine("Allocate context successfully");

            }
            BS2ErrorCode result = (BS2ErrorCode)API.BS2_Initialize(context);
            if (result == BS2ErrorCode.BS_SDK_SUCCESS)
            {
                Console.WriteLine("Initialization succeeded");

            }
            else
            {
                Console.WriteLine("failed to initialize error code");
                //textBox1.Text = "failed to initialize error code";

            }
            result = (BS2ErrorCode)API.BS2_ConnectDeviceViaIP(context, ptrIPAddr, port, out deviceId);

            if (result == BS2ErrorCode.BS_SDK_SUCCESS)
            {
                Console.WriteLine("Connecting to device succeeded");
                Console.ReadKey();

            }
            else
            {
                Console.WriteLine("Connecting to device failed : {0}", result);
                Console.ReadKey();
            }


            BS2TNAConfig tnaConfig = Util.AllocateStructure<BS2TNAConfig>();
            tnaConfig.tnaInfo.tnaMode = 1; // by user
            tnaConfig.tnaInfo.tnaKey = 0; // not specified because of tnaMode = by user
            tnaConfig.tnaInfo.tnaRequired = 1;


            //label name - 2

            Array.Clear(tnaConfig.tnaExtInfo.tnaLabel, 0, BS2Environment.BS2_MAX_TNA_KEY * BS2Environment.BS2_MAX_TNA_LABEL_LEN);


            Console.WriteLine("Do you want to set 1st lebel name? [Y/n]");
            Console.Write(">>>> ");
            if (Util.IsYes())
            {
                Console.WriteLine("Enter the 1st label name");
                Console.Write(">>>> ");
                string lebelname = Console.ReadLine();
                if (lebelname.Length == 0)
                {
                    Console.WriteLine("[Warning] label name will be displayed as empty.");
                }
                else if (lebelname.Length > BS2Environment.BS2_MAX_TNA_LABEL_LEN)
                {
                    Console.WriteLine("The label name should less than {0} words.", BS2Environment.BS2_MAX_TNA_LABEL_LEN);
                    return;
                }
                else
                {
                    byte[] LabelNameArray = Encoding.UTF8.GetBytes(lebelname);
                    Array.Copy(LabelNameArray, tnaConfig.tnaExtInfo.tnaLabel, LabelNameArray.Length);
                }
            }


            result = (BS2ErrorCode)API.BS2_SetTNAConfig(context, deviceId, ref tnaConfig);
            if (result != BS2ErrorCode.BS_SDK_SUCCESS)
            {
                Console.WriteLine("Got error({0}).", result);

            }
            else
            {
                Console.WriteLine("TNA is configured successfully", result);
            }
        }