<?xml version="1.0" encoding="utf-16"?>
<!-- signature=0088971994407449446605290632443636251355 -->
<!-- created by: Global IP Telecommunications, April 01, 2006 -->

<device_definitions>
	<!-- debug element: a leading NO_ switches debug messages off -->
	<debug>NO_debug_device_definitions | NO_debug_read_device_definitions | NO_debug_device_events 
		| NO_debug_lan_discovery | NO_debug_spider | NO_debug_readout_of_settings | NO_debug_applying_of_settings
		| NO_debug_remoting_client | NO_debug_ras_functions | NO_debug_computation_of_settings</debug>
	<debug>debug_device_definitions | debug_read_device_definitions | debug_device_events
		| debug_lan_discovery | debug_spider | debug_readout_of_settings | debug_applying_of_settings
		| debug_remoting_client | debug_ras_functions | debug_computation_of_settings</debug>

	<!-- Sample: Netgear router -->
	<device>
		<device_id>Netgear RP614 Cable/DSL Router</device_id>
		<globals>
			<lan_device>
				<english>Netgear RP614 Cable/DSL Router</english>
				<german>Netgear RP614 Kabel/DSL Router</german>
				<french>Netgear RP614 cable/DSL router pour réseaux</french>
				<show_minimized>false</show_minimized>
			
				<!-- Manual for this device, e.g.  .\devices\device_docu\RP614v3_ds_08Dec04.pdf  -->
				<!-- or: http:// hyperlink into the internet. Both links are separated with a | character  -->
				<!-- If an internet connection exists, the http:// link is preferred -->
				<picture_button_hyperlink>RP614v3_ds_08Dec04.pdf | http://www.netgear.com/products/details/RP614.php</picture_button_hyperlink>
			</lan_device>

			<header_label>
				// strings can be pretty long here (3 lines with automatic line break)
				<english>Network router that can establish an internet connection</english>
				<german>Netzwerk Router, kann Internetverbindung herstellen</german>
				<french>Router pour réseaux, peut établir une connection avec l'internet</french>
			</header_label>
			<use_device_chkbox>
				<english>Use device</english>
				<german>Gerät verwenden</german>
				<french>Utiliser l'appareil</french>
					// use_device_chkbox: can be true, false or disabled. If disabled, the control appears in the checked state, but does not accept inputs
				<default_value>disabled</default_value>
			</use_device_chkbox>
			<username_label>
				<english>User name</english>
				<german>Benutzername</german>
				<french>Nom d'utilisateur</french>
				<default_value>admin</default_value>
			</username_label>
			<password_label>
				<english>Password</english>
				<german>Passwort</german>
				<french>Nom d'utilisateur</french>
				<default_value>password</default_value>
			</password_label>
			
			<IP_addr_label>
				<english>IP address</english>
				<german>IP Adresse</german>
				<french>Adresse IP</french>
				<example>
					[page:keywordform.html],[name:LANIPAddr],[LANbot_control:IP_address_textBox],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:value]
					<code>
					<!--
					using System;
					using System.Data;
					using System.Collections;
					using System.IO;
					using System.Windows.Forms;
					using System.Xml;
					using LanbotUtilities;
					using LanbotUtilities.Spider;

					namespace lanbot
					{
						public class helper_class : lanbot.Commands
						{
							public helper_class()
							{
							}

							public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								string						s;
								string						type_of_control="";
								HtmlFormContent[]	HtmlFrmCont=null;	// is set if the control has been found
								int								HtmlFrmCont_index=-1,HtmlFrmCont_count=-1;	// is set to something valid if the control has been found
								
								HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
								s=lan_devices[lan_device_index].spider.find_control_in_web_pages(dth[index_in_table].control_id_in_html_page,uri,ref type_of_control,ref HtmlFrmCont,
																																								 ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																								 ref lan_devices[lan_device_index].custom_regex_arr,
																																								 lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
								if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
									Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: URI=\"{0}\", Element=\"{1}\" read. Value=\"{2}\"",uri,dth[index_in_table].control_id_in_html_page,s));

									// save the data in the control now
								dt.Rows[1][index_in_table]=s;

								return (int)ERROR.NO_ERROR;
							}
							public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
							public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
							{
								return 0;
							}
						}
					}
					-->
					</code>
				</example>
			</IP_addr_label>
			<subnet_mask_label>
				<english>Subnet mask</english>
				<german>Subnetzmaske</german>
				<french>Masque subnet</french>
				<example>
					[page:lanform.html],[name:LANSubnetMask],[LANbot_control:subnet_mask_textBox],[in:value],[compute:lanbot.helper_class.Compute],[out:value]
				</example>
			</subnet_mask_label>

			<standard_gateway_label>
				<english>Standard gateway</english>
				<german>Standard gateway</german>
				<french>Passerelle standard</french>
				<default_value>disabled</default_value>
			</standard_gateway_label>

			<picture>/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU
FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABAAEADASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooo
oAKKKKACiiigAooooAKKwr3xLb295NbJDJJNEcMCQv5VUfxRL/BZqPq+f6UAdRRXIt4mvP4beEfX
J/rTG8Rai3RIR9EP+NFgOxorijrmqt91gPpGKYdY1fvKR/wBf8KdgO4ori4/Et7Af3727j/bIU/o
a0tN8W6fd3UVq8iR3EhCqFcOCfTjn9KVgMHx1pVz9oe6jjLRk7hImcr9fSsa0h1B7BJo57yQscYj
iR8D1O7FeskAjB5FUbjSbKeNkMPlg9TCxjP5rimnYDywQ6o84jnudViUkgtthQKPwyaU2Uvzebfa
qcNgZu9oI9eAMfSvURo2njraRMfVxu/nUq6dYp92zth9Il/wp8wHkstna8AyXMpyMiS8kPH500aP
aSkeXYiX5uc73yv5nmvY44Yo/wDVxon+6oFPo5gPH08OkLuGj5UEk4tGORzgdPpWr4a8MXkHiK0v
kshbWqj58qEJHBHHXqPSvS6KTdwCiiikAUUUUAFFFFABRRRQB//Z
			</picture>
			
			<regular_expression>
				<!-- a small number of pages (max. 16), separated by a | character or * if this
				regular expression shall be used for all pages
				This is followed by a pattern that is inside of a comment in order not to destroy
				the structure of the XML file due to all kinds of characters appearing.
				Example for a regular expression:
				(?:<table)(?<element>.*?)(?:</table>)
				 -->
				<page>lanform.html</page>
				<recognition_pattern>
					<!--
						(?:<table border =\"1\" cellpadding =\"0\" cellspacing =\"0\" width=\"100%\">)(?<element>.*?)(?:</table>)
					-->		
				</recognition_pattern>
				<extraction_pattern>
					<!--
						(?:<\s*td)(?<element>.*?)(?:<\s*/\s*td\s*>)
					-->		
				</extraction_pattern>
				<!-- HtmlFormContent_columns: number of columns of HtmlFormContent used to store extracted data -->		
				<HtmlFormContent_columns>5</HtmlFormContent_columns>

			</regular_expression>
			
		</globals>
		<function_block>
			<id>dhcp-server</id>
			<dhcp-server>
				<name>
					<english>DHCP server</english>
					<german>DHCP Server</german>
					<french>serveur DHCP</french>
				</name>
				<header_label>
					<english>Automatic assignment of IP addresses</english>
					<german>Automatische Vergabe von IP Adressen</german>
					<french>Attribution automatique des adresses IP</french>
				</header_label>
				<use_device_chkbox>
					<english>Use this function</english>
					<german>Funktion verwenden</german>
					<french>Utiliser cette fonction</french>
					<default_value>true</default_value>
					<example>
						[page:lanform.html],[name:DHCPServer],[LANbot_control:use_device_chkbox],[in:value],[compute:lanbot.helper_class.Compute],[out:value]
					</example>
				</use_device_chkbox>

			<!--	debug element: switches on certain types of debug messages.
				Allowed statements:
				debug_device_definitions (NO_debug_device_definitions):			log/don't log debug messages in device definition ojects
				debug_read_device_definitions (NO_debug_read_device_definitions):		log/don't log debug messages in device definition XML reader functions
				debug_device_events (NO_debug_device_events):					log/don't log debug messages in device definition event functions
			 -->
				<debug>debug_device_definitions | debug_read_device_definitions | debug_device_events
					| debug_lan_discovery | debug_spider | debug_readout_of_settings</debug>

				<start_IP_addr_label>
					<english>Start address</english>
					<german>Startadresse</german>
					<french>Première adresse</french>
					<example>
						[page:lanform.html],[name:],[LANbot_control:start_IP_address_textBox],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
						<code>
						<!--
						using System;
						using System.Data;
						using System.Collections;
						using System.IO;
						using System.Windows.Forms;
						using System.Xml;
						using LanbotUtilities;
						using LanbotUtilities.Spider;

						namespace lanbot
						{
							public class helper_class : lanbot.Commands
							{
								public helper_class()
								{
								}

								public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									string s,res;
									string type_of_control="";
									HtmlFormContent[]	HtmlFrmCont=null;	// is set if the control has been found
									int HtmlFrmCont_index=-1,HtmlFrmCont_count=-1;	// is set to something valid if the control has been found
									
									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PStart1",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=s;

									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PStart2",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=res+"."+s;

									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PStart3",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=res+"."+s;

									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PStart4",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=res+"."+s;

									if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
										Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: URI=\"{0}\", Element=\"{1}\" read. Value=\"{2}\"",uri,"PStart1.PStart2.PStart3.PStart4",res));

										// save the data in the control now
									dt.Rows[1][index_in_table]=res;

									return (int)ERROR.NO_ERROR;
								}
								public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
							}
						}
						-->
						</code>
					</example>
				</start_IP_addr_label>
				<stop_IP_addr_label>
					<english>Stop address</english>
					<german>Letzte Adresse</german>
					<french>Dernière adresse</french>
					<example>
						[page:lanform.html],[name:],[LANbot_control:stop_IP_address_textBox],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
						<code>
						<!--
						using System;
						using System.Data;
						using System.Collections;
						using System.IO;
						using System.Windows.Forms;
						using System.Xml;
						using LanbotUtilities;
						using LanbotUtilities.Spider;

						namespace lanbot
						{
							public class helper_class : lanbot.Commands
							{
								public helper_class()
								{
								}

								public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									string s,res;
									string type_of_control="";
									HtmlFormContent[]	HtmlFrmCont=null;	// is set if the control has been found
									int HtmlFrmCont_index=-1,HtmlFrmCont_count=-1;	// is set to something valid if the control has been found
									
									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PEnd1",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=s;

									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PEnd2",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=res+"."+s;

									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PEnd3",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=res+"."+s;

									HtmlFrmCont_index=-1; // we only search for names here, but if HtmlFrmCont_index is >=0, the field with the specified index is being analyzed
									s=lan_devices[lan_device_index].spider.find_control_in_web_pages("PEnd4",uri,ref type_of_control,ref HtmlFrmCont,
																																									ref HtmlFrmCont_index,ref HtmlFrmCont_count,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									res=res+"."+s;

									if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
										Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: URI=\"{0}\", Element=\"{1}\" read. Value=\"{2}\"",uri,"PEnd1.PEnd2.PEnd3.PEnd4",res));

										// save the data in the control now
									dt.Rows[1][index_in_table]=res;

									return (int)ERROR.NO_ERROR;
								}
								public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
							}
						}
						-->
						</code>
					</example>
				</stop_IP_addr_label>

				<dataGrid>
					// this router supports reservation for up to 20 IP address (no idea how many it really supports)
					<max_data_sets>20</max_data_sets>
					<english>IP address reservation - MAC address uniquely identifies a device@@@MAC Addresses@@@Device Names@@@IP Addresses to assign</english>
					<german>Reservierung von IP Adressen - MAC Addresse kennzeichnet Gerät zu 100%@@@MAC Adressen@@@Gerätenamen@@@zu vergebende IP Adressen</german>
					<french>Réservation des adresses IP - adresse MAC identifie un appareil à 100%@@@Adresses MAC@@@Noms des appareils@@@Adresses IP à distribuer</french>
					
					<example>
						[page:lanform.html],[name:],[LANbot_control:],[in:lanbot.helper_class.Read],[compute:lanbot.helper_class.Compute],[out:lanbot.helper_class.Write]
						<code>
						<!--
						using System;
						using System.Data;
						using System.Collections;
						using System.IO;
						using System.Windows.Forms;
						using System.Xml;
						using LanbotUtilities;
						using LanbotUtilities.Spider;

						namespace lanbot
						{
							public class helper_class : lanbot.Commands
							{
								public helper_class()
								{
								}

								public int ClickAt(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Read(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									string						s="";
									int								i,count=0;
									int								found=0;
									HtmlFormContent[]	HtmlFrmCont=null;	// is set if the control has been found
									int								HtmlFrmCont_start=-1,HtmlFrmCont_end=-1;	// is set to something valid if the control has been found
									

										// find "lbcustom0". There might be a number of entries  in test a function that will be important to analyze arrays									
									found=lan_devices[lan_device_index].spider.find_custom_extraction_results_in_web_page("lbcustom0",uri,ref HtmlFrmCont,
																																									ref HtmlFrmCont_start,ref HtmlFrmCont_end,
																																									ref lan_devices[lan_device_index].custom_regex_arr,
																																									lan_devices[lan_device_index].next_free_custom_regex_arr_slot);
									if (found<1) 
									{
										if (Cglobals.dbg_frm!=null) Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: URI=\"{0}\", Element=\"{1}\" not found",uri,"lbcustom0"));
										return (int)ERROR.ITEM_NOT_FOUND;																															
									}
										// there must be more than the header. If not, don't enter any data as there is none
									if (found>1)
									{					
										for (count=1;count<found;count++)
										{
											s=HtmlFrmCont[HtmlFrmCont_start+count].field1_content;
											i=s.LastIndexOf(">");
											s=s.Substring(i+1);
											if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
												Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: URI=\"{0}\", Element=\"{1}\", value=\"{2}\"",uri,"dt.Rows[count][\"IP_addresses\"]",s));
												// save the data in the control now
											dt.Rows[count]["IP_addresses"]=s;
											
											s=HtmlFrmCont[HtmlFrmCont_start+count].field2;
											i=s.LastIndexOf(">");
											s=s.Substring(i+1);
											if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
												Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: URI=\"{0}\", Element=\"{1}\", value=\"{2}\"",uri,"dt.Rows[count][\"device_names\"]",s));
												// save the data in the control now
											dt.Rows[count]["device_names"]=s;

											s=HtmlFrmCont[HtmlFrmCont_start+count].field2_content;
											i=s.LastIndexOf(">");
											s=s.Substring(i+1);
											if ((Cglobals.debug_mode & Cglobals.debug_readout_of_settings)>0) 
												Cglobals.dbg_frm.debugprint(System.String.Format("RUNTIME COMPILED CODE: URI=\"{0}\", Element=\"{1}\", value=\"{2}\"",uri,"dt.Rows[count][\"MAC_addresses\"]",s));
												// save the data in the control now
											dt.Rows[count]["MAC_addresses"]=s;
										} // for (count=0;count<found;count++)																								
									} // if (found>1)
									return (int)ERROR.NO_ERROR;
								}
								public int Compute(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
								public int Write(ref lan_device[] lan_devices,int lan_device_index,int num_of_lan_devices,ref DataTable dt,string uri,ref data_handling[] dth,int index_in_table) 
								{
									return 0;
								}
							}
						}
						-->
						</code>
					</example>
				</dataGrid>
			</dhcp-server>
		</function_block>
	</device>





	<device>
		<device_id>D-Link no_dev</device_id>
		<globals>
			<lan_device>
				<english>D-Link no_dev</english>
				<german>D-Link no_dev</german>
				<french>D-Link no_dev</french>
			</lan_device>
		</globals>
		<function_block>
			<id>dhcp-server</id>
			<dhcp-server>
				<name>
					<english>DHCP server</english>
					<german>DHCP Server</german>
					<french>serveur DHCP</french>
				</name>
			</dhcp-server>
		</function_block>
	</device>


</device_definitions>
