static Kvrlib.Status setupBroadcast(Kvrlib.DiscoveryHnd discoveryHandle) { String buf = ""; Kvrlib.Status status; Kvrlib.Address[] addr_list = new Kvrlib.Address[20]; Int32 no_addrs = 0; Int32 i; status = Kvrlib.DiscoveryGetDefaultAddresses(out addr_list, Kvrlib.AddressTypeFlag.ALL); if (!status.Equals(Kvrlib.Status.OK)) { Kvrlib.GetErrorText(status, out buf); Console.WriteLine("kvrDiscoveryGetDefaultAddresses() FAILED - " + buf); return status; } if (no_addrs < addr_list.Length) { String tmp_addr = "192.168.3.66"; status = Kvrlib.AddressFromString(Kvrlib.AddressType.IPV4, out addr_list[no_addrs], tmp_addr); if (!status.Equals(Kvrlib.Status.OK)) { Console.WriteLine("ERROR: kvrAddressFromString(" + no_addrs + ", " + tmp_addr + ") failed"); return status; } else { no_addrs++; } } else { Console.WriteLine("NOTE: We don't have room for all devices in addr_list[" + addr_list.Length + "]"); } for (i = 0; i < no_addrs; i++ ) { status = Kvrlib.StringFromAddress(out buf, addr_list[i]); Console.WriteLine("Looking for device using: " + buf); } //Create address from string. Kvrlib.Address addressFromString; String addr_string = "127.0.0.1"; status = Kvrlib.AddressFromString(Kvrlib.AddressType.IPV4, out addressFromString, addr_string); if (!status.Equals(Kvrlib.Status.OK)) { Kvrlib.GetErrorText(status, out buf); Console.WriteLine("AddressFromString() FAILED - " + buf); return status; } Kvrlib.StringFromAddress(out addr_string, addressFromString); Console.WriteLine("Created address from string: " + addr_string); status = Kvrlib.DiscoverySetAddresses(discoveryHandle, addr_list); if (!status.Equals(Kvrlib.Status.OK)) { Kvrlib.GetErrorText(status, out buf); Console.WriteLine("DiscoverySetAddresses() FAILED - " + buf); return status; } return status; }
static int Main(string[] args) { String password = ""; string xml_config = ""; Kvrlib.Status kvrstat; Kvrlib.ConfigHnd configHandle = new Kvrlib.ConfigHnd(); Kvrlib.Address address = new Kvrlib.Address(); Kvrlib.CipherInfoElement cipherInfoElement = new Kvrlib.CipherInfoElement(); Int32 i; Int32 cur_profile; Int32 canlib_channel; Int32 no_profiles; object serial; object ean; Canlib.canStatus stat = new Canlib.canStatus(); Canlib.canInitializeLibrary(); Kvrlib.InitializeLibrary(); switch (args.Length) { case 0: listDevices(); return 0; case 1: canlib_channel = args[0][0] - '0'; break; default: listDevices(); return -1; } stat = Canlib.canGetChannelData(canlib_channel, Canlib.canCHANNELDATA_CARD_UPC_NO,out ean); stat = Canlib.canGetChannelData(canlib_channel, Canlib.canCHANNELDATA_CARD_SERIAL_NO, out serial); if (isAvailibleForConfig(canlib_channel, password)) { Console.WriteLine("Channel " + canlib_channel + " is availible for configuration"); } else { Console.WriteLine("Channel " + canlib_channel + " can not be opend for configuration"); Canlib.canUnloadLibrary(); return -1; } Canlib.canUnloadLibrary(); //---------------------------------------------------------------------------- // List number of profiles kvrstat = Kvrlib.ConfigNoProfilesGet(canlib_channel, out no_profiles); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Device does not support profiles " + kvrstat); return Convert.ToInt32(kvrstat); } Console.WriteLine("Device supports " + no_profiles + " profiles."); Kvrlib.ConfigActiveProfileGet(canlib_channel, out cur_profile); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Could not get active profile number " + kvrstat); return Convert.ToInt32(kvrstat); } Console.WriteLine("Active profile is: " + cur_profile); // Show profiles for (i = 0; i < no_profiles; i++) { kvrstat = Kvrlib.ConfigInfoGet(canlib_channel, i, out xml_config); if (kvrstat.Equals(Kvrlib.Status.BLANK)) { Console.WriteLine("Profile " + i + " is blank."); } else if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Could not read profile " + i); return Convert.ToInt32(kvrstat); } else { Console.WriteLine("Profile " + i + ":\n" + xml_config); } } //---------------------------------------------------------------------------- // Start configuration - read only kvrstat = Kvrlib.ConfigOpenEx(canlib_channel, Kvrlib.ConfigMode.R, password, out configHandle, cur_profile); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Could not start config " + kvrstat); return Convert.ToInt32(kvrstat); } // List available networks. This information could be // helpful when creating the XML configuration. kvrstat = doScanNetwork(configHandle); Kvrlib.ConfigClose(configHandle); //---------------------------------------------------------------------------- // Start configuration - read/write kvrstat = Kvrlib.ConfigOpen(canlib_channel, Kvrlib.ConfigMode.RW, password, out configHandle); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Could not start config " + kvrstat); return Convert.ToInt32(kvrstat); } kvrstat = doConfigure(configHandle); // Done! Kvrlib.ConfigClose(configHandle); // Wait for reboot if (waitForDevice(ean, serial, 10000) != 0) { //10s timeout Console.WriteLine("waitForDevice() failed."); return -1; } //---------------------------------------------------------------------------- // Start configuration - read only kvrstat = Kvrlib.ConfigOpen(canlib_channel, Kvrlib.ConfigMode.R, password, out configHandle); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Could not start config " + kvrstat); return Convert.ToInt32(kvrstat); } kvrstat = doTryConfigure(configHandle, 5, ean, serial); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("doTryConfiguration failed (" + kvrstat + ")"); return Convert.ToInt32(kvrstat); } Kvrlib.ConfigClose(configHandle); Console.WriteLine("\nDone!"); Console.WriteLine("Clear the last profile"); kvrstat = Kvrlib.ConfigActiveProfileSet(canlib_channel, no_profiles - 1); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Set profile " + (no_profiles - 1) + " failed (" + kvrstat + ")"); return Convert.ToInt32(kvrstat); } // Wait for reboot if (waitForDevice(ean, serial, 10000) != 0) { //10s timeout Console.WriteLine("waitForDevice() failed."); return -1; } eraseConfiguration(canlib_channel, password); // Wait for reboot if (waitForDevice(ean, serial, 10000) != 0) { //10s timeout Console.WriteLine("waitForDevice() failed."); return -1; } Console.WriteLine("Set profile 0 as active"); kvrstat = Kvrlib.ConfigActiveProfileSet(canlib_channel, 0); if (!kvrstat.Equals(Kvrlib.Status.OK)) { Console.WriteLine("Set profile " + 0 + " failed (" + kvrstat + ")"); return Convert.ToInt32(kvrstat); } Kvrlib.UnloadLibrary(); return 0; }