<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mauduit</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mauduit"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Mauduit"/>
	<updated>2026-05-09T09:42:49Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference10_talk:Concept_Voice_Recording_2014&amp;diff=40132</id>
		<title>Reference10 talk:Concept Voice Recording 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference10_talk:Concept_Voice_Recording_2014&amp;diff=40132"/>
		<updated>2016-01-12T13:13:34Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: New page: Hello  You say :  &amp;#039;&amp;#039; Reporting  The recording feature requires the innovaphone Reporting. Required Version 10, Build 10043, Version 11 recommended.&amp;#039;&amp;#039;  And a fexw line below &amp;#039;&amp;#039; Voice record...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello&lt;br /&gt;
&lt;br /&gt;
You say : &lt;br /&gt;
&#039;&#039;&lt;br /&gt;
Reporting&lt;br /&gt;
&lt;br /&gt;
The recording feature requires the innovaphone Reporting. Required Version 10, Build 10043, Version 11 recommended.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
And a fexw line below&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
Voice recording requires a Version 11 innovaphone PBX and a Version 11 Reporting tool. No compatibility with older versions is possible. PBX and/or Reporting can run on a gateway as well as on VMware.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
What&#039;s the good version ?&lt;br /&gt;
Where to find reporting Version 11 ?&lt;br /&gt;
&lt;br /&gt;
Regards&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference11r1:DHCP_client&amp;diff=37186</id>
		<title>Reference11r1:DHCP client</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference11r1:DHCP_client&amp;diff=37186"/>
		<updated>2015-03-20T07:35:52Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;innovaphone devices include a DHCP client which allows the IP interface to be configured from a DHCP server.  &lt;br /&gt;
&lt;br /&gt;
In addition to that, telephone devices allow configuring a number of settings via special DHCP vendor options.&lt;br /&gt;
&lt;br /&gt;
Here is how the DHCP client works.&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* All innovaphone devices, &lt;br /&gt;
&lt;br /&gt;
V11r1 and later&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
&lt;br /&gt;
The innovaphone devices do support auto configuration via standard DHCP options. &lt;br /&gt;
&lt;br /&gt;
They additionally support some innovaphone vendor specific options to effect some VoIP specific configuration.  &lt;br /&gt;
&lt;br /&gt;
Some of them are generic; some of them are specific to phone devices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
&lt;br /&gt;
To use vendor specific DHCP options, a DHCP server that supports such options is required. &lt;br /&gt;
&lt;br /&gt;
Most popular DHCP server implementations such as the Microsoft Windows DHCP service and the Linux dhcpd do so.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
For the DHCP server to support vendor specific options, the options must be made known to the server.  &lt;br /&gt;
&lt;br /&gt;
Consult the accompanying documentation which comes with your DHCP server implementation how to do this.&lt;br /&gt;
&lt;br /&gt;
==== Supported Options ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|+ &lt;br /&gt;
| Name || Data type || Array ||	Code || Meaning || How to code&lt;br /&gt;
|-&lt;br /&gt;
| H323 gatekeeper || IP address || Yes || 200 || Defines the IP address of both the primary and the alternate gatekeeper for the device.  This is only required, if gatekeeper discovery is not feasible&lt;br /&gt;
|&lt;br /&gt;
This is an array of IP addresses.  Put the primary gatekeepers IP into the first entry, the alternate gatekeepers IP into the second entry.  Further entries are ignored.&lt;br /&gt;
|-&lt;br /&gt;
| H323 gatekeeper id || String || No || 201 || The gatekeeper id of the gatekeeper the device likes to register with.  Usually required only if several gatekeepers are running and a particular one must be chosen during gatekeeper discovery&lt;br /&gt;
|&lt;br /&gt;
Type the gatekeeper id as configured in the gateway or PBX configuration into the string field.&lt;br /&gt;
|-&lt;br /&gt;
| POSIX TZ&amp;lt;ref name=blabber&amp;gt;This option is in fact identical to the standard DHCP option number 88 (TZ).  However, various DHCP servers do not support this option, so it is provided as a redundant vendor specific option. If your DHCP server supports option 88, the vendor specific option is not needed.&amp;lt;/ref&amp;gt; || String || No || 202 || Defines both the time zone and the daylight saving time information.&lt;br /&gt;
|&lt;br /&gt;
Enter the correct TZ string into the string field as you would configure it in the devices configuration applet.  See chapter 9.1.3 of the VoIP Gateways Version 5 manual.&lt;br /&gt;
&lt;br /&gt;
This option is in fact identical to the standard DHCP option number 88 (TZ). However, various DHCP servers do not support this option, so it is provided as a redundant vendor specific option. If your DHCP server supports option 88, the vendor specific option is not needed. &lt;br /&gt;
|-&lt;br /&gt;
| Default coder || String || No || 203  || Defines the preferred coders for H.245 coder negotiation, as well as the packet size when sending RTP packets and the use of CNG and VAD.&lt;br /&gt;
|&lt;br /&gt;
This string option must contain the value of the “/coder” option in the phone configuration file, e.g. &#039;&#039;&#039;G729A,40,esx&#039;&#039;&#039;. After a “/” the value of the “/lcoder” option can be added to this string (since V6.00 sr1-hotfix3). &#039;&#039;&#039;G729A,60/G711A,30&#039;&#039;&#039; for example defines G729A as the general coder and G711A as the coder to be used in networks considered local. Additional options are: e - Exclusive, s - Silence Compression, x0 - AES128/32, x1 - AES128/80, x2 - AES192/32, x3 - AES192/80, x4 - AES256/32, x5 - AES256/80, k0 - SDES-DTLS, k1 - DTLS-SDES, k2 - SDES, k3 - DTLS, k4 - no encryption, n - No DTMF Detection.&lt;br /&gt;
If the x and k options are not set the default (SDES-DTLS and AES128/32) is used. &lt;br /&gt;
&lt;br /&gt;
In addition to the preference for the general coder, the preference for the local network coder can be specified here (since V6.00 SR1-hotfix3). G729A,60/G711A,30 for example defines G729A as the general coder and G711A as the local network coder. &lt;br /&gt;
&lt;br /&gt;
Since V9-hotfix2 it&#039;s possible to define a list of potentially used coders.&lt;br /&gt;
Single entries as described above can be combined and are separated by a semicolon &#039;;&#039;.&lt;br /&gt;
&lt;br /&gt;
This may lead to a string like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;G729A,60,x;G723-53,60,x/G722,30;G711A,30&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This kind of setting can be used as well for the general (remote) as for the local coder.&lt;br /&gt;
The list entries will be negotiated in reverse order (from right to left), the first coder which fits to the phone will be used.&lt;br /&gt;
&lt;br /&gt;
In case of an empty list or no match, the default remote or local coder will be used.&lt;br /&gt;
Default remote coder is always G729, default local coder is the best one for the specific phone (G.722 for IP222/232/241; G.711A for older models), with no further preferences set (no SRTP, no DTMF).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Language || String || No || 204  || Defines the user interface language&lt;br /&gt;
|&lt;br /&gt;
This string must contain the value of the &#039;&#039;&#039;/lang&#039;&#039;&#039; option in the phone configuration file, e.g. &#039;&#039;&#039;eng&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Location || String || No || 205 || Defines the various PBX access numbers (country code etc.) for the device.&lt;br /&gt;
|&lt;br /&gt;
This string must contain the &#039;&#039;&#039;/cc&#039;&#039;&#039; (Country Code), &#039;&#039;&#039;/ac&#039;&#039;&#039; (Area Code), &#039;&#039;&#039;/ntp&#039;&#039;&#039; (National Prefix), &#039;&#039;&#039;/itp&#039;&#039;&#039; (International Prefix), &#039;&#039;&#039;/col&#039;&#039;&#039; (Trunk Line Prefix) and &#039;&#039;&#039;/pbx&#039;&#039;&#039; (PBX Subscriber Number or comma separated MSN Numbers) parameters for dialing location configuration. Optional value is &#039;&#039;&#039;/len&#039;&#039;&#039; to set the maximum internal number length. Example: &#039;&#039;&#039;/cc 49 /ac 7031 /ntp 0 /itp 00 /col 0 /pbx 73009 /len 3&#039;&#039;&#039;. Although, to save bytes, you may omit the slashes (&#039;&#039;&#039;/&#039;&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
| VLAN ID || Word (16bit) || No || 206 || The 802.1q VLAN ID for traffic sent and received by the device&lt;br /&gt;
|&lt;br /&gt;
Enter the numerical ID into the 16bit edit field&lt;br /&gt;
|-&lt;br /&gt;
| VLAN Priority || Byte (8bit) || No || 207  || The 802.1p VLAN priority for traffic sent by the device&lt;br /&gt;
|&lt;br /&gt;
Enter the numerical priority into the 8bit edit field&lt;br /&gt;
|-&lt;br /&gt;
| TOS Bits || String || No || 208 || The values for the IP TOS/DSCP field in the IP header of UDP-RTP and TCP-signalling packets sent by the device (Bit 0..2 &#039;precedence&#039;, bit 3..6 &#039;type of service&#039;)&lt;br /&gt;
|&lt;br /&gt;
Enter the comma separated numerical priorities into the string field.  You may prefix with &#039;&#039;&#039;0x&#039;&#039;&#039; to specify hexadecimal numbers (or &#039;&#039;&#039;0&#039;&#039;&#039; to specify octal numbers).  The default for RTP packets is 0xb8 (RFC 3246 - Expedited Forwarding), for signalling packets it is 0x68 (RFC 3246 - Assured Forwarding).  0xb8,0x68 for example defines the default values &lt;br /&gt;
|-&lt;br /&gt;
| Enbloc dialling || Byte (8bit) || No || 209  || The number of seconds dialled digits are kept in the phone before they are sent en-bloc to the gatekeeper&lt;br /&gt;
|&lt;br /&gt;
Enter the number of seconds into the 8bit edit field.  A value of &#039;&#039;&#039;0&#039;&#039;&#039; indicates that en-bloc dialling is turned off and digits are sent to the gatekeeper as they are dialled&lt;br /&gt;
|-&lt;br /&gt;
| Dialtone type || Byte (8bit) || No || 210  || The type of dialtone to generate locally&lt;br /&gt;
|&lt;br /&gt;
Enter the numeric dialtone type (&#039;&#039;&#039;0&#039;&#039;&#039; - EUROPE-PBX, &#039;&#039;&#039;1&#039;&#039;&#039; - EUROPE-PUBLIC, &#039;&#039;&#039;2&#039;&#039;&#039; - US, &#039;&#039;&#039;3&#039;&#039;&#039; - UK, &#039;&#039;&#039;10&#039;&#039;&#039; - ITALY-PBX, &#039;&#039;&#039;4&#039;&#039;&#039; - ITALY-PUBLIC, &#039;&#039;&#039;5&#039;&#039;&#039; - CZECH-PBX, &#039;&#039;&#039;6&#039;&#039;&#039; - CZECH-PUBLIC, &#039;&#039;&#039;7&#039;&#039;&#039; - SWEDEN, &#039;&#039;&#039;8&#039;&#039;&#039; - FRANCE, &#039;&#039;&#039;9&#039;&#039;&#039; - SWISS, &#039;&#039;&#039;11&#039;&#039;&#039; - BELGIUM, &#039;&#039;&#039;12&#039;&#039;&#039; - NETHERLANDS, &#039;&#039;&#039;13&#039;&#039;&#039; - NORWAY, &#039;&#039;&#039;14&#039;&#039;&#039; - DENMARK, &#039;&#039;&#039;15&#039;&#039;&#039; - GERMANY, &#039;&#039;&#039;16&#039;&#039;&#039; - SPAIN, &#039;&#039;&#039;17&#039;&#039;&#039; - FINLAND, &#039;&#039;&#039;18&#039;&#039;&#039; - AUSTRIA, &#039;&#039;&#039;19&#039;&#039;&#039; - IRELAND, &#039;&#039;&#039;20&#039;&#039;&#039; - AUSTRALIA, &#039;&#039;&#039;21&#039;&#039;&#039; - NEWZEALAND, &#039;&#039;&#039;22&#039;&#039;&#039; - MALAYSIA, &#039;&#039;&#039;23&#039;&#039;&#039; - TURKEY, &#039;&#039;&#039;24&#039;&#039;&#039; - RUSSIA, &#039;&#039;&#039;25&#039;&#039;&#039; - SOUTH AFRICA, &#039;&#039;&#039;26&#039;&#039;&#039; - BRAZIL&lt;br /&gt;
)&lt;br /&gt;
|-&lt;br /&gt;
| Faststart || Byte (8bit) || No || 211 || Disable/Enable the H245 faststart procedure&lt;br /&gt;
|&lt;br /&gt;
To disable enter &#039;&#039;&#039;0&#039;&#039;&#039;, otherwise enter &#039;&#039;&#039;1&#039;&#039;&#039; into the 8bit edit field&lt;br /&gt;
|-&lt;br /&gt;
| H245-Tunnelling	|| Byte (8bit) || No || 212 || Disable/Enable H245 tunneling&lt;br /&gt;
|&lt;br /&gt;
To disable enter &#039;&#039;&#039;0&#039;&#039;&#039;, otherwise enter &#039;&#039;&#039;1&#039;&#039;&#039; into the 8bit edit field&lt;br /&gt;
|-&lt;br /&gt;
| Clock type || Byte (8bit) || No || 213  || Define format of date and time display&lt;br /&gt;
|&lt;br /&gt;
Enter the numeric clock type  (&#039;&#039;&#039;0&#039;&#039;&#039; – &#039;&#039;dd&#039;&#039;.&#039;&#039;mm&#039;&#039;.&#039;&#039;yy&#039;&#039; &#039;&#039;hh&#039;&#039;:&#039;&#039;mm&#039;&#039;, 24 hour clock; &#039;&#039;&#039;1&#039;&#039;&#039; – &#039;&#039;mm&#039;&#039;/&#039;&#039;dd&#039;&#039; &#039;&#039;hh&#039;&#039;:&#039;&#039;mm&#039;&#039; &#039;&#039;xm&#039;&#039;, 12 hour am/pm clock)&lt;br /&gt;
|-&lt;br /&gt;
| Static Routes || String || No || 214  || Static routes to be added to the routes already defined in the device configuration &lt;br /&gt;
|&lt;br /&gt;
The string (max 127 characters) must contain comma separated route definitions in the form &#039;&#039;&#039;address:mask:gateway&#039;&#039;&#039; where&lt;br /&gt;
&#039;&#039;address&#039;&#039;, &#039;&#039;mask&#039;&#039; and &#039;&#039;gateway&#039;&#039; are expected in dotted decimal notation, &#039;&#039;mask&#039;&#039; (but not the colon) can be left off in a host route&lt;br /&gt;
|-&lt;br /&gt;
| Update URL || String || No || 215 || URL to retrieve update commands from. This is identical to the /url option parameter of the UP1 module&lt;br /&gt;
|&lt;br /&gt;
Complete URL as in &#039;&#039;&#039;&amp;lt;nowiki&amp;gt;http://192.168.0.10/file.txt&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;. No symbolic host names are supported&lt;br /&gt;
|-&lt;br /&gt;
| Update Poll Interval || Word (16bit) || No || 216  || Standard poll interval in minutes. This is identical to the &#039;&#039;&#039;/poll&#039;&#039;&#039; option parameter of the UP1 module&lt;br /&gt;
|&lt;br /&gt;
Interval in minutes &lt;br /&gt;
|-&lt;br /&gt;
| LDAP directory || String || No || 217  || Defines the various Parameters required to access an LDAP directory &lt;br /&gt;
| Following parameters can be provided &#039;&#039;&#039;-addr&#039;&#039;&#039; (LDAP Server Address), &#039;&#039;&#039;-port&#039;&#039;&#039; (LDAP Port), &#039;&#039;&#039;-base&#039;&#039;&#039; (Search Base), &#039;&#039;&#039;-attr&#039;&#039;&#039; (Name Attributes), &#039;&#039;&#039;-phone&#039;&#039;&#039; (Number Attruibutes), &#039;&#039;&#039;-sort1st&#039;&#039;&#039; (Sort Results by 1st LDAP name attribute), &#039;&#039;&#039;-hold&#039;&#039;&#039; (Hold Server Connection), &#039;&#039;&#039;-mode&#039;&#039;&#039; (Mode), &#039;&#039;&#039;-dn&#039;&#039;&#039; (Username) &#039;&#039;&#039;-pw&#039;&#039;&#039; (Password), &#039;&#039;&#039;-obj&#039;&#039;&#039; (LDAP Object Filter).&lt;br /&gt;
|-&lt;br /&gt;
| Local Networks || String || No || 218 || Defines the networks to be considered local in coder negotiation.&lt;br /&gt;
|&lt;br /&gt;
The string (max. 253 characters) must contain a list of networks in form of comma separated &#039;&#039;&#039;address:mask&#039;&#039;&#039; pairs, for example &#039;&#039;&#039;192.168.1.0:255.255.255.0,192.168.2.0:255.255.255.0&#039;&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| STUN Server&amp;lt;ref name=blubber&amp;gt;Support for domain names may not be available in V11r1 already but will be added later.&amp;lt;/ref&amp;gt; || String || No || 219 || Defines the IP addresses or domain names of STUN servers.&lt;br /&gt;
|&lt;br /&gt;
The string (max 127 characters) must contain comma separated STUN server addresses in the form &#039;&#039;&#039;address:port&#039;&#039;&#039; or &#039;&#039;&#039;domain:port&#039;&#039;&#039; where&lt;br /&gt;
&#039;&#039;address&#039;&#039; is expected in dotted decimal notation and &#039;&#039;port&#039;&#039; as decimal number. &#039;&#039;port&#039;&#039; (and the preceeding colon) can be left off, in this case the default port is used.&lt;br /&gt;
|-&lt;br /&gt;
| VoIP Protocol || String || No || 220 || The VoIP Protocl to be used for the Primary Registration (User-1) of a VoIP telephone.&lt;br /&gt;
|&lt;br /&gt;
One of the following strings may be specified here: H.323, H.323/TCP, H.323/TLS, SIP/UDP, SIP/TCP, SIP/TLS.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows Server DHCP ====&lt;br /&gt;
In this section, the installation of innovaphone vendor options is demonstrated using a Microsoft Windows 2000 DHCP server.&lt;br /&gt;
&lt;br /&gt;
First you need to create a new vendor class.  &lt;br /&gt;
&lt;br /&gt;
Use the &#039;&#039;Define Vendor Class…&#039;&#039; / &#039;&#039;Herstellerklasse definieren&#039;&#039; menu entry on the DHCP server’s context menu&lt;br /&gt;
&lt;br /&gt;
[[Image:How_to_use_the_innovaphone_DHCP_client_Dhcp1_conv.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a new vendor class as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:How_to_use_the_innovaphone_DHCP_client_Dhcp2_conv.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Anzeigename / Display name || innovaphone&lt;br /&gt;
|-&lt;br /&gt;
| Beschreibung / Description || innovaphone VoIP Options&lt;br /&gt;
|-&lt;br /&gt;
| Kennung / ID || (ASCII) 1.3.6.1.4.1.6666&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Add the innovaphone options.  Use the &#039;&#039;Configure predefined options&#039;&#039; /  &#039;&#039;Vordefinierte Optionen einstellen&#039;&#039; entry in the DHCP server’s context menu&lt;br /&gt;
&lt;br /&gt;
[[Image:How_to_use_the_innovaphone_DHCP_client_Dhcp3_conv.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Select the innovaphone option class and add the innovaphone specific options according to the table above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:How_to_use_the_innovaphone_DHCP_client_Dhcp4_conv.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To configure innovaphone vendor specific options for a specific scope, use the &#039;&#039;Configure options&#039;&#039; / &#039;&#039;Optionen konfigurieren&#039;&#039; entry in the scopes context menu.&lt;br /&gt;
&lt;br /&gt;
[[Image:DHow_to_use_the_innovaphone_DHCP_client_hcp5_conv.JPG‎]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Select innovaphone in the Advanced / Erweitert tab sheet.&lt;br /&gt;
&lt;br /&gt;
[[Image:How_to_use_the_innovaphone_DHCP_client_Dhcp7_conv.JPG‎ ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tick the options you want to provide and edit the respective values.&lt;br /&gt;
&lt;br /&gt;
[[Image:How_to_use_the_innovaphone_DHCP_client_Dhcp6_conv.JPG‎ ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To do the above automatically, just save the following code as innovaphone_dhcp.cmd and execute it at your DHCP Server.&lt;br /&gt;
&lt;br /&gt;
[[Media:Innovaphone_dhcp_option.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code powershell&amp;gt;&lt;br /&gt;
netsh Dhcp Server Add Class &amp;quot;innovaphone&amp;quot; &amp;quot;innovaphone VoIP Options&amp;quot; 312e332e362e312e342e312e36363636 1 b&lt;br /&gt;
netsh Dhcp Server Add Optiondef 200 &amp;quot;H323 gatekeeper&amp;quot; IPADDRESS 1 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Defines the IP address of both the primary and the alternate gatekeeper for the device. This is only required, if gatekeeper discovery is not feasible&amp;quot; 0.0.0.0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 201 &amp;quot;H323 gatekeeper id&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;The gatekeeper id of the gatekeeper the device likes to register with. Usually required only if several gatekeepers are running and a particular one must be chosen during gatekeeper discovery&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 202 &amp;quot;POSIX TZ&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Defines both the time zone and the daylight saving time information.&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 203 &amp;quot;Default coder&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Defines the preferred coders for H.245 coder negotiation, as well as the packet size when sending RTP packets and the use of CNG and VAD&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 204 &amp;quot;Language&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Defines the user interface language&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 205 &amp;quot;Location&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Defines the various PBX access numbers (country code etc.) for the device&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 206 &amp;quot;VLAN ID&amp;quot; WORD 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;The 802.1q VLAN ID for traffic sent and received by the device&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 207 &amp;quot;VLAN Priority&amp;quot; BYTE 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;The 802.1p VLAN priority for traffic sent by the device&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 208 &amp;quot;TOS Bits&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;The value for the IP TOS field in the IP header of voice traffic sent by the device&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 209 &amp;quot;Enbloc dialling&amp;quot; BYTE 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;The number of seconds dialled digits are kept in the phone before they are sent en-bloc to the gatekeeper&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 210 &amp;quot;Dialtone type&amp;quot; BYTE 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;The type of dialtone to generate locally&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 211 &amp;quot;Faststart&amp;quot; BYTE 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Disable/Enable the H245 faststart procedure&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 212 &amp;quot;H245-Tunnelling&amp;quot; BYTE 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Disable/Enable H245 tunneling&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 213 &amp;quot;Clock type&amp;quot; BYTE 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Define format of date and time display&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 214 &amp;quot;Static Routes&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Static routes to be added to the routes already defined in the device configuration&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 215 &amp;quot;Update URL&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;URL to retrieve update commands from. This is identical to the /url option parameter of the UP1 module&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 216 &amp;quot;Update Poll Interval&amp;quot; WORD 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Standard poll interval in minutes. This is identical to the /poll option parameter of the UP1 module&amp;quot; 0&lt;br /&gt;
netsh Dhcp Server Add Optiondef 217 &amp;quot;LDAP directory&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Defines the various Parameters required to access an LDAP directory&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
netsh Dhcp Server Add Optiondef 218 &amp;quot;Local Networks&amp;quot; STRING 0 vendor=&amp;quot;innovaphone&amp;quot; comment=&amp;quot;Defines the networks to be considered local in coder negotiation&amp;quot; &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ISC DHCP Server for Linux====&lt;br /&gt;
The ISC DHCP Server is a standard DHCP daemon on many Linux distributions. Here is a sample configuration that provides vendor specific options for innovaphone devices:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code bash&amp;gt;&lt;br /&gt;
option space innovaphone;&lt;br /&gt;
option innovaphone.h323-gatekeeper code 200 = array of ip-address;&lt;br /&gt;
option innovaphone.h323-gatekeeper-id code 201 = text;&lt;br /&gt;
option innovaphone.posix-tz code 202 = text;&lt;br /&gt;
option innovaphone.default-coder code 203 = text;&lt;br /&gt;
option innovaphone.language code 204 = text;&lt;br /&gt;
option innovaphone.location code 205 = text;&lt;br /&gt;
option innovaphone.vlan-id code 206 = unsigned integer 16;&lt;br /&gt;
option innovaphone.vlan-prio code 207 = unsigned integer 8;&lt;br /&gt;
option innovaphone.tos-bits code 208 = text;&lt;br /&gt;
option innovaphone.enbloc-dialing code 209 = unsigned integer 8;&lt;br /&gt;
option innovaphone.dialtone-type code 210 = unsigned integer 8;&lt;br /&gt;
option innovaphone.faststart code 211 = unsigned integer 8;&lt;br /&gt;
option innovaphone.h245-tunneling code 212 = unsigned integer 8;&lt;br /&gt;
option innovaphone.clock-type code 213 = unsigned integer 8;&lt;br /&gt;
option innovaphone.static-routes code 214 = text;&lt;br /&gt;
option innovaphone.update-url code 215 = text;&lt;br /&gt;
option innovaphone.update-poll-interval code 216 = unsigned integer 16;&lt;br /&gt;
option innovaphone.ldap-directory code 217 = text;&lt;br /&gt;
option innovaphone.local-networks code 218 = text;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
class &amp;quot;innovaphone&amp;quot; {&lt;br /&gt;
    match if option vendor-class-identifier = &amp;quot;1.3.6.1.4.1.6666&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pool {&lt;br /&gt;
    #&lt;br /&gt;
    # Options for phones&lt;br /&gt;
    #&lt;br /&gt;
    allow members of &amp;quot;innovaphone&amp;quot;;&lt;br /&gt;
    range 172.21.49.1 172.21.49.127;&lt;br /&gt;
    vendor-option-space innovaphone;&lt;br /&gt;
    option innovaphone.h323-gatekeeper 172.21.48.5;&lt;br /&gt;
    option innovaphone.posix-tz &amp;quot;CET-1CEST-2,M3.5.0/2,M10.5.0/3&amp;quot;;&lt;br /&gt;
    option innovaphone.default-coder &amp;quot;G729,60,e&amp;quot;;&lt;br /&gt;
    option innovaphone.language &amp;quot;deu&amp;quot;;&lt;br /&gt;
    option innovaphone.vlan-id 0x10; &lt;br /&gt;
    option innovaphone.tos-bits &amp;quot;0x10&amp;quot;;&lt;br /&gt;
    option innovaphone.update-url &amp;quot;http://172.16.100.200/v6/cmds.txt&amp;quot;;&lt;br /&gt;
    option innovaphone.update-poll-interval 0x168;&lt;br /&gt;
    option innovaphone.ldap-directory &amp;quot;-addr 172.21.48.1 -port 712 -base dc=meta \&lt;br /&gt;
       -attr sn,givenName,company -phone telephoneNumber:D,homePhone:P,mobile:M,:@ -mail mail&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using ISC-DHCP on IPxx10 linux application plateform you will need to add these line on your dhcpd.conf file.&lt;br /&gt;
&amp;lt;code bash&amp;gt; &lt;br /&gt;
    host selfmac {&lt;br /&gt;
    #&lt;br /&gt;
    # Find the mac address of your IPxx10Linux AP with ifconfig command&lt;br /&gt;
    # And replace the following mac with yours to prevent ISC dhcp offer at itself&lt;br /&gt;
    # If you do not, you will loose your Application platform&lt;br /&gt;
    #&lt;br /&gt;
    hardware ethernet 86:be:09:65:d3:53 ;&lt;br /&gt;
    deny booting ;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Determining option values with V6 and later===&lt;br /&gt;
In V6 (from SR1), there is [[Howto:Valid_values_for_innovaphone_DHCP_verndor_options | a simple method available ]] to paste the values from a phones web GUI.&lt;br /&gt;
&lt;br /&gt;
===Determining LDAP options===&lt;br /&gt;
&lt;br /&gt;
To determine a proper configuration for option 217 (LDAP), you best proceed as follows:&lt;br /&gt;
&lt;br /&gt;
*Take a phone and configure it with static IP address&lt;br /&gt;
*Tweak the LDAP settings (&#039;&#039;Registration 1 / Directories / Extern&#039;&#039;) as desired&lt;br /&gt;
*take output string of following URL on your IP phone: &amp;lt;code&amp;gt;http://x.x.x.x/!mod cmd PHONE DIR ldap-config&amp;lt;/code&amp;gt;&lt;br /&gt;
*and set option 217 on DHCP-Server to the string shown&lt;br /&gt;
&lt;br /&gt;
With V6 and later firmware, you can determine the values (as all other DHCP values) using the phones [[Reference9:Phone/State/DHCP-Options|DHCP-Options page]] (for V6, V7 and V8 [[Reference:Administration/Phone/DHCP-Options|DHCP-Options page]].&lt;br /&gt;
&lt;br /&gt;
Please note that myPBX will not evaluate the LDAP DHCP vendor option.  It is thus recommended to deploy the directory settings as part of the users &#039;&#039;Phone&#039;&#039; config entry (&#039;&#039;Directories&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
===Disabling the DHCP client===&lt;br /&gt;
In certain circumstances, it is convenient to partly disable the DHCP client.  This way, the device still gets its IP address from the DHCP server, however, additional settings possibly supplied by the DHCP server are ignored.  This is especially useful if in a given setup, some devices are to be configured differently but the majority is still configured by DHCP.&lt;br /&gt;
&lt;br /&gt;
This can be achieved using the following config file options&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&#039;&#039;&#039;config change UP1 /no-dhcp&#039;&#039;&#039;&lt;br /&gt;
|the update server uses the config files configuration even though there is a configuration supplied from DHCP (innovaphone vendor options &amp;quot;Update URL [215]&amp;quot; and &amp;quot;Update Poll Interval [216]&amp;quot; are ignored).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;config change DHCPn /no-vlan&#039;&#039;&#039;&lt;br /&gt;
|the VLAN settings use the config files configuration even though there is a configuration supplied from DHCP (innovaphone vendor options &amp;quot;VLAN ID [206]&amp;quot; and &amp;quot;VLAN Priority [207]&amp;quot; are ignored)... &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;config change DHCPn /no-vendor&#039;&#039;&#039;&lt;br /&gt;
|all innovaphone vendor options are ignored.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Known Problems with lengthy options===&lt;br /&gt;
The minimum space available for options in a BOOTP/DHCP record is 312 byte. There are some extension mechanisms but only a few DHCP servers support it. The Windows 2000 DHCP server for example does not, but silently truncates options not fitting in this 312 byte space. Thus it’s nearly impossible to distribute the LDAP directory configuration with a Windows 2000 server but it’s no problem with the DHCP Server built into each innovaphone device.  &lt;br /&gt;
&lt;br /&gt;
===Known Problems with VLAN Configurations===&lt;br /&gt;
The handling of the 802.1q VLAN ID is a bit tricky.  If not hard configured otherwise, the IP200 will request a DHCP lease using the Ethernet switch ports default VLAN ID (that is, it will not send any VLAN header).  It will thus receive a DHCP offer dedicated to devices on that VLAN.  If this offer includes a VLAN ID option, the IP200 will not accept the offered lease, set the VLAN ID to the value received in the otherwise disregarded offer and start the DHCP process all over again.  Now, the DHCP request will be issued on a new VLAN ID.  Therefore, the DHCP server will now send an offer dedicated for devices on that new VLAN.  This will most probably be a different DHCP scope.&lt;br /&gt;
&lt;br /&gt;
As a consequence, DHCP options of IP200’s on a non-default VLAN must be configured twice.  The VLAN ID option itself must be configured in the default VLANs DHCP scope.  All other options must be configured in the new VLANs DHCP scope.  &lt;br /&gt;
&lt;br /&gt;
Be sure to configure the VLAN in both scopes identically.  If not, the DHCP client process will never terminate, since it will always detect a changed VLAN ID, set the VLAN ID and restart the DHCP process.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Here is how DHCP leases are handled in detail:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
*First Boot&lt;br /&gt;
The client will broadcast a DHCP DISCOVER, expecting an OFFER from the server including all requested parameters. If the client intends to use the offered lease, it will issue a request for the offered lease. Once it receives an ACK for the lease requested, it will configure itself accordingly.  All lease information is stored in the devices config file using the /laddr option (unless suppressed using /no-keep).&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
*Re-boot&lt;br /&gt;
If there is lease information (in the /laddr config file option), the client will broadcast requests for the same lease again.  If there is no answer within 30 seconds, the device will configure itself using the parameters in /laddr.  It will nevertheless continue to request this lease from the DHCP server again (every 30 seconds, a broadcast will be sent).&lt;br /&gt;
&lt;br /&gt;
If the server acknowledges the old lease, the client will check for changes in the DHCP options and re-configure itself accordingly.  Changed options will be saved in the config file.&lt;br /&gt;
&lt;br /&gt;
If the server rejects the lease using a NAK, the client will forget about the lease and continue to operate like it does for the first boot.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*First boot with VLAN ID option received&lt;br /&gt;
&lt;br /&gt;
If an offered lease includes the VLAN-ID option and the ID proposed differs from the VLAN ID the devices currently operates with (that is, from the id configured in the devices configuration), the device will change its VLAN ID to the one received in the VLAN-ID option.  It will not request the lease though.  Instead, it will continue to send DISCOVER requests on the new VLAN ID.  If a lease is obtained there, all lease information is stored in the config file as usual.&lt;br /&gt;
&lt;br /&gt;
You can disable the VLAN-ID processing using the &#039;&#039;&#039;/no-vlan&#039;&#039;&#039; option.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
*Reboot with VLAN ID&lt;br /&gt;
&lt;br /&gt;
If the device finds lease information in the config file at boot time and if there is a VLAN ID different from the devices current VLAN-ID, it will re-configure itself to the new VLAN ID and try to request the saved lease as usual.   If the lease is rejected with a NAK by the server, the device will re-configure itself to the pre-configured VLAN ID and try to DISCOVER a new lease as usual.&lt;br /&gt;
&lt;br /&gt;
====VLAN set with LLDP====&lt;br /&gt;
&lt;br /&gt;
From version 10, VLAN is also set with LLDP if provided by the switch, see [[Reference10:Interfaces/ETH/VLAN]].&lt;br /&gt;
&lt;br /&gt;
===Changing configuration options set by DHCP options===&lt;br /&gt;
&lt;br /&gt;
If a device has been configured by DHCP, you cannot change those parameters.  Any attempt to do so will issue a “Reset required” message.&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference9:Concept_USB_Headset&amp;diff=35833</id>
		<title>Reference9:Concept USB Headset</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference9:Concept_USB_Headset&amp;diff=35833"/>
		<updated>2014-11-07T13:34:32Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept9|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
The IP222 and IP232 telephones provide USB ports. This document describes how to install, configure and use USB headsets on these phones.&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
*	IP222 and IP232&lt;br /&gt;
Firmware V9hotfix7 and later.&lt;br /&gt;
&lt;br /&gt;
USB Headset Support is &#039;&#039;in beta as of V9hotfix7&#039;&#039; and should thus not be used in production environments!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; USB Headsets supported by the &#039;&#039;&#039;innovaphone SoftwarePhone&#039;&#039;&#039; can be found [http://wiki.innovaphone.com/index.php?title=Reference9:Concept_USB_Headset_For_SoftwarePhone here].&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Disclaimer===&lt;br /&gt;
Only the devices listed here has been tested or will be tested by innovaphone AG, therefore only these headsets are supported by us. But nevertheless you could not be sure, every device with the same label or the same part number will work in the same way, because of different product codes or modified firmware. So it is recommended to test the headset before buying.&lt;br /&gt;
&lt;br /&gt;
It is also a good idea, to install the software attached to the headset on the PC and first connect the device to the PC to update the firmware and to pick out the specifications before using the headset with the phone.&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Follow the vendor setup directions for using the headset with a PC but connect the USB plug of the headset to an USB slot of the IP2x2 phone.&lt;br /&gt;
There is no need to install any vendor provided PC software.&lt;br /&gt;
&lt;br /&gt;
Some headsets are designed to be connected both to a telephone via DHSG, AEI or a similar protocol and to a PC via USB.&lt;br /&gt;
In this case you must also set up the headset for use with a PC, sometimes a special keypress is required to fix this setting.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
An USB headset is detected and automatically enabled as soon as it is connected to one of the phones a USB ports.&lt;br /&gt;
&lt;br /&gt;
Enabling the headset has the following effects:&lt;br /&gt;
*	a headset icon is displayed in the phone status line&lt;br /&gt;
*	a normal inbound call is indicated by a ring tone in the headset (if this is supported by the headset)&lt;br /&gt;
*	an automatically connected inbound call ((announcement, broadcast) is connected to the headset (not to the speaker as usual)&lt;br /&gt;
*	a call initiated by pressing the &#039;&#039;Redial&#039;&#039; key while browsing a call list or a directory is connected to the headset&lt;br /&gt;
*	a call initiated by pressing the &#039;&#039;Redial&#039;&#039; in indirect dialling mode is connected to the headset&lt;br /&gt;
&lt;br /&gt;
Before V9hotfix9 it&#039;s was necessary to enable the headset explicitely at the telephone either by setting &amp;quot;Menu/Phone Setup/Headset: On&amp;quot; or by a &#039;&#039;Headset&#039;&#039; function key with &#039;&#039;Mode: Enable&#039;&#039;. This is obsolete now.&lt;br /&gt;
&lt;br /&gt;
===Call control===&lt;br /&gt;
The IP2x2 telephones don&#039;t provide a hardware key to control the headset but if required a &#039;&#039;Headset&#039;&#039; function key with &#039;&#039;Mode: Control&#039;&#039; can be defined to setup/accept calls via headset directly on the telephone.&lt;br /&gt;
Headset call control can be performed in different ways:&lt;br /&gt;
*	by the &#039;&#039;Talk&#039;&#039; key on the headsets base station&lt;br /&gt;
*	by the &#039;&#039;Talk&#039;&#039; key on the headset itself&lt;br /&gt;
*	by the &#039;&#039;Headset:Control&#039;&#039; function key&lt;br /&gt;
*	by the &#039;&#039;Redial&#039;&#039; key (outbound calls only)&lt;br /&gt;
&lt;br /&gt;
Some headsets require that all call control is performed by a &#039;&#039;Talk&#039;&#039; key, otherwise the media connection between base and headset gets lost.&lt;br /&gt;
Call control by a &#039;&#039;Talk&#039;&#039; key works only if the headset is known to the firmware!&lt;br /&gt;
&lt;br /&gt;
Before V9hotfix9 setting up outbound calls via a &#039;&#039;Talk&#039;&#039; key was disabled and had to be to be enabled via the WEB interface by checking &amp;quot;Phone/Preferences/Start Outbound Call on Electronic Hook Switch (EHS) Signal&amp;quot;. This is obsolete now.&lt;br /&gt;
&lt;br /&gt;
====Outbound Calls====&lt;br /&gt;
*	enter a number and press &#039;&#039;Redial&#039;&#039;&lt;br /&gt;
*	select an entry in a call list or a directory and press &#039;&#039;Redial&#039;&#039;&lt;br /&gt;
*	press a &#039;&#039;Talk&#039;&#039; key and enter the number (if this function is enabled)&lt;br /&gt;
*	press the &#039;&#039;Headset:Control&#039;&#039; function key and enter the number&lt;br /&gt;
&lt;br /&gt;
To drop the call press a &#039;&#039;Talk&#039;&#039; key, the &#039;&#039;Disconnect&#039;&#039; key or the &#039;&#039;Headset:Control&#039;&#039; function key.&lt;br /&gt;
&lt;br /&gt;
====Inbound Calls====&lt;br /&gt;
To accept an inbound call press a &#039;&#039;Talk&#039;&#039; key or the &#039;&#039;Headset:Control&#039;&#039; function key.&lt;br /&gt;
To drop the call press a &#039;&#039;Talk&#039;&#039; key, the &#039;&#039;Disconnect&#039;&#039; or the the &#039;&#039;Headset:Control&#039;&#039; function key.&lt;br /&gt;
&lt;br /&gt;
===Headset Volume control===&lt;br /&gt;
====Speaker Volume====&lt;br /&gt;
Usually the headset provides it&#039;s own speaker volume control and this should be preferred.&lt;br /&gt;
The phone volume control can be used when the range of the headset volume control is not sufficient.&lt;br /&gt;
&lt;br /&gt;
====Microphone Volume====&lt;br /&gt;
&lt;br /&gt;
Usually there is no need to change the phones default gain for the headset microphone signal.&lt;br /&gt;
But there are rare cases where the microphone signal is too strong or even more rarely too weak.&lt;br /&gt;
In this cases the gain can be changed by config commands entered in the browser address line:  &lt;br /&gt;
&lt;br /&gt;
   config add AC-DSP0 HEADSET /InputGain &#039;&#039;gain&#039;&#039;&lt;br /&gt;
   config activate&lt;br /&gt;
   config write&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gain&#039;&#039; values from 1 to 63 can be configured (1/2 dB steps). A value of 32 means 0dB, lower values mean attenuation, higher values amplification.&lt;br /&gt;
The default value is 40 i.e. 8dB amplification.&lt;br /&gt;
&lt;br /&gt;
====Microphone Mute====&lt;br /&gt;
Usually the headset provides it&#039;s own &#039;&#039;Mute&#039;&#039; button and this should be preferred.&lt;br /&gt;
The phones &#039;&#039;Mute&#039;&#039; function is independent of the headset function, i.e. a headset muted via its own button can be unmuted only via this buton but not at the phone.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
Monitor Mode does not work with USB headsets, i.e. the telephone speaker cannot switched on in addition to the headset.&lt;br /&gt;
&lt;br /&gt;
==Supported Headsets==&lt;br /&gt;
&lt;br /&gt;
===Abbreviations===&lt;br /&gt;
&lt;br /&gt;
PN  = Part Number as printed on the package (P/N: or PN: or Part No or ...)&lt;br /&gt;
&lt;br /&gt;
ID  = USB procuct id as read from the device (idProduct)&lt;br /&gt;
&lt;br /&gt;
YES = feature tested and fully operational&lt;br /&gt;
&lt;br /&gt;
NO  = feature not supported by innovaphone&lt;br /&gt;
&lt;br /&gt;
N/A = device does not provide functionality&lt;br /&gt;
&lt;br /&gt;
===Jabra (GN Netcom)===&lt;br /&gt;
Jabra Link 14201-30 (ID 0x0925) connects the headsets DHSG ports with the USB interface of the telephone&lt;br /&gt;
&lt;br /&gt;
====wireless====&lt;br /&gt;
=====&#039;&#039;&#039;GN 9350e (PN 9356-607-401, ID 0x9350)&#039;&#039;&#039;=====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|connected&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |Jabra Link 14201-30 to DHSG port&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |directly to USB&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;The media channel between base and headset can be activated/deactivated only by the headset or the base but not by the phone&amp;lt;br/&amp;gt;&lt;br /&gt;
End of Sales 30.06.2013, End of Life 30.06.2015 for EMEA und APAC&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Pro 9450&#039;&#039;&#039;=====&lt;br /&gt;
Pro 9450 (PN 9450-25-507-101, ID 0x1021)&amp;lt;br&amp;gt;&lt;br /&gt;
Pro 9450 Duo EMA (PN 9450-29-707-101, ID 0x1022)&amp;lt;br&amp;gt;&lt;br /&gt;
(since V9hotfix12)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|connected&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |Jabra Link 14201-30 to DHSG port&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |directly to USB&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 4&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 4&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Call last number dialed &amp;lt;br/&amp;gt; (mobile phones and supported softphones only)&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Pro 9460 (PN 9460-25-707-101, ID 0x1041)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix12)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|connected&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |Jabra Link 14201-30 to DHSG port&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |directly to USB&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 4&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 6&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Call last number dialed &amp;lt;br/&amp;gt; (mobile phones and supported softphones only)&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Pro 9470 (PN 9470-26-904-101, ID 0x1042)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix12)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|connected&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |Jabra Link 14201-30 to DHSG port&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |directly to USB&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 4&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 6&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Call last number dialed &amp;lt;br/&amp;gt; (mobile phones and supported softphones only)&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;GO 6470 (PN 6470-15-207-501, ID 0x1003,0x1004,  Firmware 4.5.17)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix12)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|connected&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |Jabra Link 14201-30 to DHSG port&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |directly to USB&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 4&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 6&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Call last number dialed &amp;lt;br/&amp;gt; (mobile phones and supported softphones only)&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Pro 920 (PN 920-25-508-1)&#039;&#039;&#039;=====&lt;br /&gt;
connected with &#039;&#039;&#039;Jabra Link 14201-30&#039;&#039;&#039; to &#039;&#039;&#039;DHSG&#039;&#039;&#039; port&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=====&#039;&#039;&#039;Pro 930 (PN 930-25-509-101, ID 0x1016, 0x1017)&#039;&#039;&#039;=====&lt;br /&gt;
(ID 0x1016 since V9hotfix12, ID 0x1017 since V9hotfix24)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Pro 935 BT&#039;&#039;&#039;=====&lt;br /&gt;
PN 935-15-509-201 200614 Version A, ID 0x1037 (Alpha3 - For Evaluation only)&amp;lt;br/&amp;gt;&lt;br /&gt;
PN 935-15-509-201 261114 Version A, ID 0x1037 &amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix35)&amp;lt;br/&amp;gt;&lt;br /&gt;
A double tap on the headset talk button when phone is idle does not work as expected.  &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;GO 660 (PN 5078-228-209, ID 0x0320)&#039;&#039;&#039;=====&lt;br /&gt;
The Jabra GO 660 Bluetooth headset system consists of the Jabra EXTREME™ headset&amp;lt;br/&amp;gt;&lt;br /&gt;
and the Jabra LINK 320 USB Bluetooth adapter.&amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix12)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;SUPREME UC / MOTION UC&#039;&#039;&#039;=====&lt;br /&gt;
SUPREME UC (PN 5078-230-310)&amp;lt;br/&amp;gt;&lt;br /&gt;
The Jabra SUPREME UC Bluetooth headset system consists of the Jabra SUPREME™ headset (tested firmware version 2.5.2)&amp;lt;br/&amp;gt;&lt;br /&gt;
and the Jabra LINK 360 USB Bluetooth adapter, ID 0xa346.&amp;lt;br/&amp;gt;&lt;br /&gt;
MOTION UC (PN 6640-906-140)&amp;lt;br/&amp;gt;&lt;br /&gt;
The Jabra MOTION UC Bluetooth headset system consists of the Jabra MOTION headset (tested firmware version 1.36.2)&amp;lt;br/&amp;gt;&lt;br /&gt;
and the Jabra LINK 360 USB Bluetooth adapter, ID 0xa346 (tested firmware version 1.14.0).&amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix13)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number dialled&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;GO 6430 (PN 6430-17-20-201, ID 0xa342, Firmware 5.4.17)&#039;&#039;&#039;=====&lt;br /&gt;
The Jabra GO 6430 Bluetooth headset system consists of the Jabra GO 6430 headset&amp;lt;br/&amp;gt;&lt;br /&gt;
and the Jabra LINK 350 USB Bluetooth adapter.&amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix13)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number dialled&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=====&#039;&#039;&#039;EVOLVE 65 UC &amp;amp; Link 360&#039;&#039;&#039;=====&lt;br /&gt;
The Jabra EVOLVE 65 UC Stereo Bluetooth headset package (PN 6599-829-409 - 10/04/15 Version A - Stereo UC &amp;amp; Link 360)&amp;lt;br/&amp;gt;&lt;br /&gt;
consists of the Jabra EVOLVE 65 UC Stereo headset (ID , tested firmware version 1.5.6)&amp;lt;br/&amp;gt;&lt;br /&gt;
and the Jabra LINK 360 USB Bluetooth adapter(ID 0xa346, tested firmware version 1.2.2).&amp;lt;br/&amp;gt;&lt;br /&gt;
The Jabra EVOLVE 65 UC Stereo headset can also be used as a corded USB headset.&amp;lt;br/&amp;gt; &lt;br /&gt;
(since v9hotfix43/v10sr17)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;	# Long Press&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES		# Tap&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES		# Tap&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;	# Long Press&lt;br /&gt;
|-&lt;br /&gt;
| Toggle between active and held call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;	# Long Press&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;	# Double Tap&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number dialled&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt; Double Tap&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt; Press (hold 1-2 seconds)&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt; 3&amp;lt;/sup&amp;gt; Touch Red Handset Icon&amp;lt;br/&amp;gt;&lt;br /&gt;
N/A&amp;lt;sup&amp;gt; 4&amp;lt;/sup&amp;gt; Double Tap - not supported by DHSG &amp;lt;br/&amp;gt;&lt;br /&gt;
N/A&amp;lt;sup&amp;gt; 5&amp;lt;/sup&amp;gt; Press (hold 1-2 seconds) - not supported by DHSG&amp;lt;br/&amp;gt;&lt;br /&gt;
N/A&amp;lt;sup&amp;gt; 6&amp;lt;/sup&amp;gt; Not transfered to the Phone&amp;lt;br/&amp;gt;&lt;br /&gt;
N/A&amp;lt;sup&amp;gt; 7&amp;lt;/sup&amp;gt; Not available via Touch Screen Menu&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====corded====&lt;br /&gt;
=====&#039;&#039;&#039;BIZ 2300 USB&#039;&#039;&#039;=====&lt;br /&gt;
BIZ 2300 USB UC Mono (PN 2393-829-109 ID 0x2301) &amp;lt;br/&amp;gt;&lt;br /&gt;
(since v10sr6 / v9hotfix32)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Press Flash button when there is a connected and a waiting call&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;BIZ 2400 USB&#039;&#039;&#039;=====&lt;br /&gt;
BIZ 2400 USB Mono (PN 2496-829-104, ID 0x2400) &amp;lt;br/&amp;gt;&lt;br /&gt;
BIZ 2400 MS USB Mono (PN 2496-823-104, ID 0x2401) &amp;lt;br/&amp;gt;&lt;br /&gt;
BIZ 2400 USB Duo (PN 2499-829-104, ID 0x91c) &amp;lt;br/&amp;gt;&lt;br /&gt;
BIZ 2400 USB OC (PN 2499-823-104, ID 0x090a) &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;LINK 280 (PN 280-09, ID 0x0910)&#039;&#039;&#039;=====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=====&#039;&#039;&#039;Jabra SPEAK 410 / 510&#039;&#039;&#039;=====&lt;br /&gt;
Jabra SPEAK 510 UC (PN 7510-209, ID 0x0410,0x0412) &amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix24) &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra Speak 510 mit Bluetooth Dongle Link 360 (PN 7510-409 - &amp;quot;refer info from partner&amp;quot;)&amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra SPEAK 410 (PN 7410-209, ID 0x0420) &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Jabra UC VOICE 550 / 750&#039;&#039;&#039;=====&lt;br /&gt;
Jabra UC VOICE 550 Mono (PN 5593-829-209, ID 0x0031) &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra UC VOICE 550 Duo (PN 5599-829-209, ID 0x0030) &amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix12) &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra UC VOICE 750 MS Duo (PN 7599-823-109, ID 0x0752) &amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix24) &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please Note&#039;&#039;&#039;: Headsets with &#039;&#039;&#039;Version A&#039;&#039;&#039; printed on the package have IDs different to the non-A versions even if the part numbers do not differ. &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra UC VOICE 550 Mono (PN 5593-829-209 02/26/13 Version A, ID 0x034b) &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra UC VOICE 550 Duo (PN 5599-829-209 06/12/13 Version A, ID 0x0349) &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra UC VOICE 550 MS Duo (PN 5599-823-109 02/26/13 Version A - optimized for Lync, ID 0348) &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra UC VOICE 750 Mono Drk (PN 7593-829-409 28/08/13 Version A, ID 034f) &amp;lt;br/&amp;gt; &lt;br /&gt;
Jabra UC VOICE 750 MS Duo Drk (PN 7599-823-309 28/08/13 Version A - optimized for Lync, ID 034c) &amp;lt;br/&amp;gt;&lt;br /&gt;
(since V10 SR5 / V9 hotfix 31) &amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra UC VOICE 750 MS Duo Drk (PN 7599-829-409 29/12/14 Version A, ID 034d) &amp;lt;br/&amp;gt;&lt;br /&gt;
(since V10 SR15 / V9 hotfix 41) &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=====&#039;&#039;&#039;EVOLVE 65 UC&#039;&#039;&#039;=====&lt;br /&gt;
From Jabra EVOLVE 65 UC Stereo Bluetooth headset package (PN 6599-829-409 - 10/04/15 Version A - Stereo UC &amp;amp; Link 360)&amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra EVOLVE 65 UC Stereo (ID 0x030b, tested firmware version 1.5.6)&amp;lt;br/&amp;gt;&lt;br /&gt;
(since v9hotfix43/v10sr17)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Toggle between active and held call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number dialled&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=====&#039;&#039;&#039;EVOLVE 40 / 80&#039;&#039;&#039;=====&lt;br /&gt;
Jabra EVOLVE 40 MS Stereo - (PN 6399-823-109 - 10/04/15 Version A - ID 0x0305, tested firmware version 1.2.0)&amp;lt;br/&amp;gt;&lt;br /&gt;
Jabra EVOLVE 80 UC Stereo - (PN 7899-829-209 - 04/02/15 Version A - ID 0x0306, tested firmware version 1.1.6)&amp;lt;br/&amp;gt;&lt;br /&gt;
(since v9hotfix43/v10sr17)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Toggle between active and held call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number dialled&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Double Tap&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Press (hold 1-2 seconds)&amp;lt;br/&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Plantronics===&lt;br /&gt;
Plantronics APU-70 (PN 83 018-01, USB ID 0x0410) connects the EHS port at headset base with the USB port of the telephone&lt;br /&gt;
&lt;br /&gt;
====wireless====&lt;br /&gt;
=====&#039;&#039;&#039;Voyager PRO UC / Legend UC&#039;&#039;&#039;=====&lt;br /&gt;
Voyager Legend UC (PN 87670-02) &amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix24) &amp;lt;br/&amp;gt;&lt;br /&gt;
Voyager PRO UC v2 (PN 38885-02) &amp;lt;br/&amp;gt;&lt;br /&gt;
Open phone line on target phone from headset supported since V9hotfix24 &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Call back last call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Initiate phones voice dialling&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Reconnect lost connection&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Savi W430&#039;&#039;&#039;=====&lt;br /&gt;
Headset connected via Plantronics D100 USB/Bluetooth adapter (ID 0xab01)&amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix12) &amp;lt;br/&amp;gt;&lt;br /&gt;
Attention! Since V9hotfix23 only D100 adapters with a firmware Version greater or equal 0118 will work correctly. &amp;lt;br/&amp;gt;&lt;br /&gt;
In case of problems use Plantronics Update Manager to update your D100 adapters to the latest firmware version. &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Savi W440A (PN 83359-02)&#039;&#039;&#039;=====&lt;br /&gt;
Headset connected via Plantronics D100 USB/Bluetooth adapter (ID 0xab01)&amp;lt;br/&amp;gt;&lt;br /&gt;
Attention! Since V9hotfix23 only D100 adapters with a firmware Version greater or equal 0118 will work correctly. &amp;lt;br/&amp;gt;&lt;br /&gt;
In case of problems use Plantronics Update Manager to update your D100 adapters to the latest firmware version. &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Savi 740 / 745&#039;&#039;&#039;=====&lt;br /&gt;
Savi 740 (PN 83542-12, ID 0xac01)&amp;lt;br&amp;gt;&lt;br /&gt;
Savi 745 (PN 86507-03, ID 0xac01)&amp;lt;br&amp;gt;&lt;br /&gt;
(since V9hotfix14)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|connected&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |Plantronics APU-70 to DHSG port&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |directly to USB&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
N/A&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Press volume up or down at least 1,5 seconds (not supported by DHSG)&amp;lt;br/&amp;gt;&lt;br /&gt;
NO&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Press volume up or down at least 1,5 seconds (not passed to the phone)&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Calisto 620 (PN 86700-02)&#039;&#039;&#039;=====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Speakerphone&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Mute button present but did not work on tested sample&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Calisto P835 (PN 85335-03)&#039;&#039;&#039;=====&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====corded====&lt;br /&gt;
=====&#039;&#039;&#039;DA 45 / DA45 with EncorePro HW301N&#039;&#039;&#039;=====&lt;br /&gt;
DA 45 PN 77559-42 ID 0xaa05&amp;lt;br/&amp;gt;&lt;br /&gt;
(DA45 Firmware Version 90 supported since V9hotfix24)&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Long press on Talk button when there is a connected and a waiting call&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Blackwire C320 / C520&#039;&#039;&#039;=====&lt;br /&gt;
Blackwire C320 (PN 85619-02, ID 0xc00f)&amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix23)&amp;lt;br/&amp;gt;&lt;br /&gt;
Blackwire C520 (PN 88861-01, ID 0xc017)&amp;lt;br/&amp;gt;&lt;br /&gt;
(since V9hotfix24)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Long press on Talk button when there is a connected and a waiting call&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Blackwire C420 (PN 82632-05 ID 0xaa14)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix24)&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Long press on Talk button when there is a connected and a waiting call&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Blackwire C435 (PN 85800-05, ID 0xaa12)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix12) &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
=====&#039;&#039;&#039;Blackwire C620 (PN 81965-42 ID 0xaa00)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix24)&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Long press on Talk button when there is a connected and a waiting call&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Blackwire C720 (PN 87670-02, ID 0x010a)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix23) &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | not tested&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Calisto P420 USB SPEAKERPHONE (PN 82136-02 ID 0xd101)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix12) &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sennheiser===&lt;br /&gt;
&lt;br /&gt;
Sennheiser CEHS-CI 02 (Prod. Code 504533, ID 0x0925) connects EHS port at headset base with the USB port of the telephone&lt;br /&gt;
&lt;br /&gt;
====wireless====&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;DW Office (PN 504300, ID 0x740a)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix13)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Base&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|connected&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |CEHS-CI 02 to EHS port&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot; colspan=&amp;quot;3&amp;quot; |directly to USB&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number &amp;lt;br/&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Long press on Talk button when there is a connected and a waiting call&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Long press on Talk button when phone is idle&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;Presence UC ML, Presence Headset + USB-Bluetooth dongle BTD 800 USB (PN 504575, ID 0x002d)&#039;&#039;&#039;=====&lt;br /&gt;
(since v10sr6 / v9hotfix32) &amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Put current call on hold, and accept incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Flash between calls&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
NO&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Long press on Talk button (1 sec) is not reported to phone when there is a connected call&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Long press on Talk button (1 sec) when phone is ringing&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; Double tap on Talk button when there is a connected and a waiting call&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; Double tap on Talk button when phone is idle&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====corded====&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;&#039;UUSB8 (Art. no. 504004, ID 0x0008)&#039;&#039;&#039;=====&lt;br /&gt;
(since V9hotfix13)&amp;lt;br/&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Mute&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Reject incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 1&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Redial last number&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&amp;lt;sup&amp;gt; 2&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Long press on Talk button when phone is ringing&amp;lt;br/&amp;gt;&lt;br /&gt;
YES&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; Long press on Talk button when phone is idle&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Unsupported Headsets==&lt;br /&gt;
&lt;br /&gt;
Sometimes new headsets are relased which are very similar to one of the already supported headsets.&lt;br /&gt;
But if the signature (vendor/product) of the headset is unknown to the firmware the call control functions&lt;br /&gt;
of the headset are without effect.&amp;lt;br/&amp;gt;&lt;br /&gt;
Unsupported corded headsets may be used then as plain audio devices where&lt;br /&gt;
call control is solely performed by the phone but wireless headsets usually will not work this way.&lt;br /&gt;
&lt;br /&gt;
If adviced so by support or by the manufacturer such an unsupported headset can be mapped to a supported headset&lt;br /&gt;
of similar properties.&lt;br /&gt;
&lt;br /&gt;
  vars create KEYS0/HID-MAP p &amp;lt;map&amp;gt;[,&amp;lt;map&amp;gt;]...&lt;br /&gt;
&lt;br /&gt;
maps the new signature to an existing one. &#039;&#039;&#039;&amp;lt;map&amp;gt;&#039;&#039;&#039; format is&lt;br /&gt;
&lt;br /&gt;
  manufacturer:product=manufacturer:product&lt;br /&gt;
&lt;br /&gt;
The second &#039;&#039;&#039;manufacturer:product&#039;&#039;&#039; tuple is the signature of an already supported headset,&lt;br /&gt;
&#039;&#039;manufacturer&#039;&#039; and &#039;&#039;product&#039;&#039; are plain 4 digit hex numbers without a &amp;quot;0x&amp;quot; prefix.&lt;br /&gt;
More maps can be specified separated by a comma.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
If there is for example a new Jabra headset with a ID 0xa34a which is very similar to the &#039;&#039;Jabra SUPREME UC&#039;&#039; the map would be&lt;br /&gt;
&lt;br /&gt;
  vars create KEYS0/HID-MAP p 0b0e:a34a=0b0e:a346&lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;0b0e&#039;&#039; ist the Jabra ManufacturerId and a346 is the ID of &#039;&#039;Jabra SUPREME UC&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Another Example how to detect the correct ID:&lt;br /&gt;
&lt;br /&gt;
We know a Jabra Speak 510 with ID 0420 and if the ID of his device is xxxx the correct command would be&lt;br /&gt;
  &lt;br /&gt;
  vars create KEYS0/HID-MAP p 0b0e:xxxx=0b0e:0420&lt;br /&gt;
&lt;br /&gt;
How to find xxxx? Unplug Headset, Clear trace buffer, Plug Headset, take a trace, look for a line like&lt;br /&gt;
&lt;br /&gt;
  USB-DEVICE vendor=0b0e &#039;Jabra&#039; product=xxxx &#039;Jabra Speak 510&#039; release=0118&lt;br /&gt;
&lt;br /&gt;
==3rd Party tested Headsets ==&lt;br /&gt;
&lt;br /&gt;
These are reports we received from customers.  We provide those &amp;quot;as is&amp;quot; (that is, we did not verify the data and this is in no way a promise that such headsets would work).&lt;br /&gt;
&lt;br /&gt;
{{Template:3rd Party Input}}&lt;br /&gt;
&lt;br /&gt;
=== Plantronics Blackwire C310 / C320 ===&lt;br /&gt;
The following headsets were reported to work with the settings provided for the Blackwire C320 PN 85619-02, ID 0xc00f:&amp;lt;br/&amp;gt;&lt;br /&gt;
Blackwire C320 - Binaural - Firmware H4.HM, ID 0xc024)&amp;lt;br/&amp;gt;&lt;br /&gt;
Blackwire C310 - Monaural - Firmware E4.GM, ID 0xc022)&amp;lt;br/&amp;gt;&lt;br /&gt;
Blackwire C310 - Monaural - Firmware L3.GK, ID 0xc00e)&amp;lt;br/&amp;gt;&lt;br /&gt;
This mappings included in firmware since v9hotfix43/v10sr17&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Plantronics Blackwire C520 ID 0xc01b ===&lt;br /&gt;
&lt;br /&gt;
vars create KEYS0/HID-MAP p 047f:c01b=047f:c017&lt;br /&gt;
&lt;br /&gt;
=== Jabra speak 510 MS with part number 7510-109 ===&lt;br /&gt;
&lt;br /&gt;
I&#039;ve tried the Jabra speak 510 MS with part number 7510-109 with the following line&lt;br /&gt;
&lt;br /&gt;
!vars create KEYS0/HID-MAP p 0b0e:0422=0b0e:0420&lt;br /&gt;
&lt;br /&gt;
The result tests&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;border-collapse:collapse&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operation&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Phone&#039;&#039;&#039;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Headset&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| Open phone line on target phone&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Answer incoming call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| End current call&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
| Volume&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | YES&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30228</id>
		<title>Howto:Printer driver solution for innovaphone faxserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30228"/>
		<updated>2013-07-10T09:12:44Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* Innovaphone Faxserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: Faxserver, Fax printer drivers --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Most of faxserver server solution of the market comes with a printer drivers. This driver add a new printer in the windows printer list. &lt;br /&gt;
&lt;br /&gt;
This printer can be use on any application to print document with a custom interface to add the target fax number.&lt;br /&gt;
&lt;br /&gt;
Innovaphone Fax server doesn&#039;t propose that kind of solution. So this article describe how to add this feature on Innovaphone Faxserver with PDFcreator application&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
PDFcreator application is compliant with Windows 7/8/wista/xp/2000/NT&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
Before using that feature you will need to install [http://www.pdfforge.org/download PDFcreator] application.&lt;br /&gt;
Follow all the steps of the installation process.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
This application comme allready configured. Nothing to do for the configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Using that application with Innovaphone Faxserver===&lt;br /&gt;
&lt;br /&gt;
On your document application, click on print menu and select the new pdfcreator printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:printer_application.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Print your document and you will have the following windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:PDF_Creator.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click on Email and this will open your email application. Just add the target URI like faxnumber@your.domain.faxserver.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mail_Interface.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s all !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Related Articles == --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30227</id>
		<title>Howto:Printer driver solution for innovaphone faxserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30227"/>
		<updated>2013-07-10T09:01:27Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* Innovaphone Faxserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: enter keywords, foreign translations and/or synoyms not appearing in the article here for better search results --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Most of faxserver server solution of the market comes with a printer drivers. This driver add a new printer in the windows printer list. &lt;br /&gt;
&lt;br /&gt;
This printer can be use on any application to print document with a custom interface to add the target fax number.&lt;br /&gt;
&lt;br /&gt;
Innovaphone Fax server doesn&#039;t propose that kind of solution. So this article describe how to add this feature on Innovaphone Faxserver with PDFcreator application&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
PDFcreator application is compliant with Windows 7/8/wista/xp/2000/NT&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
Before using that feature you will need to install [http://www.pdfforge.org/download PDFcreator] application.&lt;br /&gt;
Follow all the steps of the installation process.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
This application comme allready configured. Nothing to do for the configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Using that application with Innovaphone Faxserver===&lt;br /&gt;
&lt;br /&gt;
On your document application, click on print menu and select the new pdfcreator printer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:printer_application.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Print your document and you will have the following windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:PDF_Creator.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Click on Email and this will open your email application. Just add the target URI like faxnumber@your.domain.faxserver.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Mail_Interface.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That&#039;s all !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Related Articles == --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30226</id>
		<title>Howto:Printer driver solution for innovaphone faxserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30226"/>
		<updated>2013-07-10T09:00:17Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* Innovaphone Faxserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: enter keywords, foreign translations and/or synoyms not appearing in the article here for better search results --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Most of faxserver server solution of the market comes with a printer drivers. This driver add a new printer in the windows printer list. &lt;br /&gt;
&lt;br /&gt;
This printer can be use on any application to print document with a custom interface to add the target fax number.&lt;br /&gt;
&lt;br /&gt;
Innovaphone Fax server doesn&#039;t propose that kind of solution. So this article describe how to add this feature on Innovaphone Faxserver with PDFcreator application&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
PDFcreator application is compliant with Windows 7/8/wista/xp/2000/NT&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Before use that feature you will need to install [http://www.pdfforge.org/download PDFcreator] application.&lt;br /&gt;
Follow all the steps of the installation process.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
This application comme allready configured. Nothing to do for the configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Using that application with Innovaphone Faxserver===&lt;br /&gt;
On your document application, click on print menu and select the new pdfcreator printer.&lt;br /&gt;
&lt;br /&gt;
[[Image:printer_application.png]]&lt;br /&gt;
&lt;br /&gt;
Print your document and you will have the following windows.&lt;br /&gt;
&lt;br /&gt;
[[Image:PDF_Creator.png]]&lt;br /&gt;
&lt;br /&gt;
Click on Email and this will open your email application. Just add the target URI like faxnumber@your.domain.faxserver.com&lt;br /&gt;
&lt;br /&gt;
[[Image:Mail_Interface.png]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s all !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Related Articles == --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Mail_Interface.png&amp;diff=30225</id>
		<title>File:Mail Interface.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Mail_Interface.png&amp;diff=30225"/>
		<updated>2013-07-10T08:59:19Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:PDF_Creator.png&amp;diff=30224</id>
		<title>File:PDF Creator.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:PDF_Creator.png&amp;diff=30224"/>
		<updated>2013-07-10T08:58:47Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Printer_application.png&amp;diff=30223</id>
		<title>File:Printer application.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Printer_application.png&amp;diff=30223"/>
		<updated>2013-07-10T08:58:11Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30222</id>
		<title>Howto:Printer driver solution for innovaphone faxserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30222"/>
		<updated>2013-07-10T08:57:16Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* Innovaphone Faxserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: enter keywords, foreign translations and/or synoyms not appearing in the article here for better search results --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Most of faxserver server solution of the market comes with a printer drivers. This driver add a new printer in the windows printer list. &lt;br /&gt;
&lt;br /&gt;
This printer can be use on any application to print document with a custom interface to add the target fax number.&lt;br /&gt;
&lt;br /&gt;
Innovaphone Fax server doesn&#039;t propose that kind of solution. So this article describe how to add this feature on Innovaphone Faxserver with PDFcreator application&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
PDFcreator application is compliant with Windows 7/8/wista/xp/2000/NT&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Before use that feature you will need to install [http://www.pdfforge.org/download PDFcreator] application.&lt;br /&gt;
Follow all the steps of the installation process.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
This application comme allready configured. Nothing to do for the configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Using that application with Innovaphone Faxserver===&lt;br /&gt;
On your document application, click on print menu and select the new pdfcreator printer.&lt;br /&gt;
[[Image:printer_application.png]]&lt;br /&gt;
&lt;br /&gt;
Print your document and you will have the following windows.&lt;br /&gt;
[[Image:PDF_Creator.png]]&lt;br /&gt;
&lt;br /&gt;
Click on Email and this will open your email application. Just add the target URI like faxnumber@your.domain.faxserver.com&lt;br /&gt;
[[Image:Mail_Interface.png]]&lt;br /&gt;
&lt;br /&gt;
That&#039;s all !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Related Articles == --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30218</id>
		<title>Howto:Printer driver solution for innovaphone faxserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30218"/>
		<updated>2013-07-10T08:28:09Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* Innovaphone Faxserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: enter keywords, foreign translations and/or synoyms not appearing in the article here for better search results --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Most of faxserver server solution of the market comes with a printer drivers. This driver add a new printer in the windows printer list. &lt;br /&gt;
&lt;br /&gt;
This printer can be use on any application to print document with a custom interface to add the target fax number.&lt;br /&gt;
&lt;br /&gt;
Innovaphone Fax server doesn&#039;t propose that kind of solution. So this article describe how to add this feature on Innovaphone Faxserver with PDFcreator application&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
PDFcreator application is compliant with Windows 7/8/wista/xp/2000/NT&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
Before use that feature you will need to install [http://www.pdfforge.org/download PDFcreator] application.&lt;br /&gt;
Follow all the steps of the installation process.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
This application comme allready configured. Nothing to do for the configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Using that application with Innovaphone Faxserver===&lt;br /&gt;
On your document application, click on print menu and select the new pdfcreator printer.&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
Print your document and you will have the following windows.&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
Click on Email and this will open your email application. Just add the target URI like faxnumber@your.domain.faxserver.com&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
That all !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Related Articles == --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30217</id>
		<title>Howto:Printer driver solution for innovaphone faxserver</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Printer_driver_solution_for_innovaphone_faxserver&amp;diff=30217"/>
		<updated>2013-07-10T07:45:25Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: New page: ==Applies To== This information applies to  * Innovaphone Faxserver  &amp;lt;!-- Keywords: enter keywords, foreign translations and/or synoyms not appearing in the article here for better search ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* Innovaphone Faxserver&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: enter keywords, foreign translations and/or synoyms not appearing in the article here for better search results --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
===System Requirements===&lt;br /&gt;
===Installation===&lt;br /&gt;
===Configuration===&lt;br /&gt;
===Known Problems===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Related Articles == --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto_talk:Effect_arbitrary_Configuration_Changes_using_a_HTTP_Command_Line_Client_or_from_an_Update&amp;diff=29971</id>
		<title>Howto talk:Effect arbitrary Configuration Changes using a HTTP Command Line Client or from an Update</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto_talk:Effect_arbitrary_Configuration_Changes_using_a_HTTP_Command_Line_Client_or_from_an_Update&amp;diff=29971"/>
		<updated>2013-06-18T09:45:49Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: New page: Hello,   Is there any solution for the PBX password ?  Here is the command line coming from from the syslog :   PBX submit-password /cmd submit-password /xsl pbx_password.xsl /pwd ******* ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hello, &lt;br /&gt;
&lt;br /&gt;
Is there any solution for the PBX password ?&lt;br /&gt;
&lt;br /&gt;
Here is the command line coming from from the syslog : &lt;br /&gt;
&lt;br /&gt;
PBX submit-password /cmd submit-password /xsl pbx_password.xsl /pwd ******* /pwd1 ******* /save OK /userid admin&lt;br /&gt;
&lt;br /&gt;
regards&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto_talk:Maintaining_a_Phone_Directory_in_the_PBX&amp;diff=28378</id>
		<title>Howto talk:Maintaining a Phone Directory in the PBX</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto_talk:Maintaining_a_Phone_Directory_in_the_PBX&amp;diff=28378"/>
		<updated>2013-02-08T14:04:30Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: New page: Does it work on IP1202 Dect handset ?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Does it work on IP1202 Dect handset ?&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20222</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20222"/>
		<updated>2011-03-01T15:39:36Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Known Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:3rd Party Input}}&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s useful to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts in the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format, for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
content=&amp;quot;5&amp;quot; for the refresh time&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provides the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following scripts, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password in these two scripts.&lt;br /&gt;
&lt;br /&gt;
===Additional files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an example of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B1 Master IP;111;222;1;192.168.0.5;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B2;555;666;2;192.168.0.6;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;R1-1;150;250;65;;;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Each line represents one radio point.&lt;br /&gt;
For Base Stations, the line begins with Bxxx&lt;br /&gt;
For Repeater, the line begins with Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field is separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP address, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP address and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use NAT feature of the PBX on my network and cells are only reachable through the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
It&#039;s important to respect the repeater ID as described in the documentation. For example repeater 1 on B1 must have ID 65.&lt;br /&gt;
&lt;br /&gt;
If you have repeater attached to another repeater, it will be drawn as attach to the same cell.&lt;br /&gt;
&lt;br /&gt;
The master IP adress must have the ID 1.&lt;br /&gt;
&lt;br /&gt;
It works in single cell solution.&lt;br /&gt;
&lt;br /&gt;
You must have basic authentification on DECT Cells.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20217</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20217"/>
		<updated>2011-03-01T14:48:54Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Known Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
content=&amp;quot;5&amp;quot; for the refresh time&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an exemple of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B1 Master IP;111;222;1;192.168.0.5;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B2;555;666;2;192.168.0.6;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;R1-1;150;250;65;;;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Each line present one radio point.&lt;br /&gt;
For Cells, the line begin by Bxxx&lt;br /&gt;
For Repeater, the line begin by Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field are separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP address, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP adresse and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use Nat feature of the PBX on my network and cells are only reachable thru the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
&lt;br /&gt;
It&#039;s important to respect the repeater ID as describe on the documentation. For exemple repeater 1 on B1 must have ID 65.&lt;br /&gt;
&lt;br /&gt;
If you have repeater attached to another repeater, it will be drawn as attach to the same cell.&lt;br /&gt;
&lt;br /&gt;
The master IP adress must have the ID 1.&lt;br /&gt;
&lt;br /&gt;
It works in single cell solution.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20216</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20216"/>
		<updated>2011-03-01T14:31:59Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* PHP scripts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
content=&amp;quot;5&amp;quot; for the refresh time&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an exemple of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B1 Master IP;111;222;1;192.168.0.5;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B2;555;666;2;192.168.0.6;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;R1-1;150;250;65;;;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Each line present one radio point.&lt;br /&gt;
For Cells, the line begin by Bxxx&lt;br /&gt;
For Repeater, the line begin by Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field are separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP address, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP adresse and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use Nat feature of the PBX on my network and cells are only reachable thru the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20215</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20215"/>
		<updated>2011-03-01T14:31:00Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* additionals files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an exemple of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B1 Master IP;111;222;1;192.168.0.5;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B2;555;666;2;192.168.0.6;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;R1-1;150;250;65;;;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Each line present one radio point.&lt;br /&gt;
For Cells, the line begin by Bxxx&lt;br /&gt;
For Repeater, the line begin by Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field are separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP address, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP adresse and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use Nat feature of the PBX on my network and cells are only reachable thru the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20214</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20214"/>
		<updated>2011-03-01T14:30:08Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* additionals files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an exemple of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B1 Master IP;111;222;1;192.168.0.5;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;B2;555;666;2;192.168.0.6;80;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;R1-1;150;250;65;;;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Each line present one radio point.&lt;br /&gt;
For Cells, the line begin by Bxxx&lt;br /&gt;
For Repeater, the line begin by Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field are separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP adress, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP adresse and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use Nat feature of the PBX on my network and cells are only reachable thru the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20213</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20213"/>
		<updated>2011-03-01T14:29:32Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* additionals files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an exemple of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;p&amp;gt;B1 Master IP;111;222;1;192.168.0.5;80;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;B2;555;666;2;192.168.0.6;80;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;R1-1;150;250;65;;;&amp;lt;/p&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Each line present one radio point.&lt;br /&gt;
For Cells, the line begin by Bxxx&lt;br /&gt;
For Repeater, the line begin by Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field are separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP adress, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP adresse and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use Nat feature of the PBX on my network and cells are only reachable thru the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20212</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20212"/>
		<updated>2011-03-01T14:28:51Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* additionals files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an exemple of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
B1 Master IP;111;222;1;192.168.0.5;80;&amp;lt;p&amp;gt;&lt;br /&gt;
B2;555;666;2;192.168.0.6;80;&amp;lt;p&amp;gt;&lt;br /&gt;
R1-1;150;250;65;;;&amp;lt;p&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Each line present one radio point.&lt;br /&gt;
For Cells, the line begin by Bxxx&lt;br /&gt;
For Repeater, the line begin by Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field are separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP adress, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP adresse and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use Nat feature of the PBX on my network and cells are only reachable thru the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20211</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20211"/>
		<updated>2011-03-01T14:28:12Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* additionals files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mention at the beginning you will need two files, one for the map and one for cells positionning on the map.&lt;br /&gt;
&lt;br /&gt;
So here is an exemple of the text file &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
B1 Master IP;111;222;1;192.168.0.5;80;&lt;br /&gt;
B2;555;666;2;192.168.0.6;80;&lt;br /&gt;
R1-1;150;250;65;;;&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
Each line present one radio point.&lt;br /&gt;
For Cells, the line begin by Bxxx&lt;br /&gt;
For Repeater, the line begin by Rxxx. You can add information after the R or B, it will be drawn to the map.&lt;br /&gt;
&lt;br /&gt;
Each field are separated by &#039;;&#039;, the first field is the name, second is the X position on the jpg (in pixel), the third is the Y position, then you will find the real ID of the access point, then the IP adress, and at the end the http port.&lt;br /&gt;
&lt;br /&gt;
Note that for repeater IP adresse and port have no sense ! leave it empty. You must have one &#039;;&#039; at the end of each line.&lt;br /&gt;
&lt;br /&gt;
You must specify the http port because I use Nat feature of the PBX on my network and cells are only reachable thru the IPBX.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Exemple.jpg&amp;diff=20210</id>
		<title>File:Exemple.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Exemple.jpg&amp;diff=20210"/>
		<updated>2011-03-01T14:12:01Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20209</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20209"/>
		<updated>2011-03-01T14:11:41Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* additionals files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
For the caption on the map you will need the files &#039;&#039;&#039;cartouche.jpg&#039;&#039;&#039;&lt;br /&gt;
[[Image:Exemple.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20208</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20208"/>
		<updated>2011-03-01T14:10:28Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* PHP scripts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
===additionals files===&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20207</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20207"/>
		<updated>2011-03-01T14:07:38Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* PHP scripts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will also need the two following script, one to get get the sync map and one to get the sync level between each cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getsync.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
// la fonction getsync permet de récupérer le chemin de synchro entre les bornes&lt;br /&gt;
// les paramètres passés sont l&#039;adresse ip de la borne master IP (B1)&lt;br /&gt;
// et le port pour se connecter en http et récupérer les infos sur la B1 Master IP&lt;br /&gt;
// cette fonction retourne un tableau orgénisé de la façon suivante&lt;br /&gt;
//  (id(id,primaire, secondaire, synchro sur, perte totale desynchro),id(...))&lt;br /&gt;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&lt;br /&gt;
function getsync($ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/GW-DECT/MASTER/mod_cmd.xml?cmd=xml-radios&amp;amp;xsl=dectmaster_radios.xsl&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) $xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
	$retour=array();&lt;br /&gt;
	foreach ($xml-&amp;gt;radio as $radio)&lt;br /&gt;
		{&lt;br /&gt;
		//if (isset($radio-&amp;gt;sync))&lt;br /&gt;
			{&lt;br /&gt;
			$id=strval($radio[&#039;id&#039;]);&lt;br /&gt;
			$prim=strval($radio-&amp;gt;sync[&#039;prim&#039;]);&lt;br /&gt;
			$alt=strval($radio-&amp;gt;sync[&#039;alt&#039;]);&lt;br /&gt;
			$state=strval($radio-&amp;gt;sync[&#039;state&#039;]);&lt;br /&gt;
			$lostcount=strval($radio-&amp;gt;sync[&#039;lost-count&#039;]);&lt;br /&gt;
			if ($prim&amp;lt;&amp;gt;&amp;quot;&amp;quot;) $retour[$id]=array($id,$prim,$alt,$state,$lostcount);&lt;br /&gt;
			unset ($id);&lt;br /&gt;
			unset ($prim);&lt;br /&gt;
			unset ($alt);&lt;br /&gt;
			unset ($state);&lt;br /&gt;
			unset ($lostcount);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	return ($retour);&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;getlevel.php&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function getlevel($tab,$id,$ip,$port)&lt;br /&gt;
	{&lt;br /&gt;
	$user=&amp;quot;myuser&amp;quot;;&lt;br /&gt;
	$password=&amp;quot;mypass&amp;quot;;&lt;br /&gt;
	$authHeader = (&#039;Basic &#039; . base64_encode($user . &#039;:&#039; . $password));&lt;br /&gt;
	$r = new HttpRequest(&#039;http://&#039;.$ip.&#039;/DECT/mod_cmd.xml?cmd=xml-other-bases&#039;, HttpRequest::METH_GET);&lt;br /&gt;
	$r-&amp;gt;addHeaders(array(&#039;Authorization&#039; =&amp;gt; $authHeader));&lt;br /&gt;
	$r-&amp;gt;setOptions(array(&#039;port&#039;=&amp;gt;$port));&lt;br /&gt;
	try &lt;br /&gt;
		{&lt;br /&gt;
		$r-&amp;gt;send();&lt;br /&gt;
		if ($r-&amp;gt;getResponseCode()==&amp;quot;200&amp;quot;) &lt;br /&gt;
			{&lt;br /&gt;
			$xmlreply=$r-&amp;gt;getResponseBody();&lt;br /&gt;
			$xmlreply=str_replace(&amp;quot;r-b&amp;quot;,&amp;quot;rb&amp;quot;,$xmlreply);&lt;br /&gt;
			}&lt;br /&gt;
		else echo &amp;quot;NOK&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
	catch (HttpException $ex) {}&lt;br /&gt;
	unset ($r);&lt;br /&gt;
	if ($xmlreply==&amp;quot;&amp;lt;dect error=\&amp;quot;Dect system is not ready.\&amp;quot;/&amp;gt;&amp;quot;) return ($tab);&lt;br /&gt;
	else&lt;br /&gt;
		{&lt;br /&gt;
		$xml = new SimpleXMLElement($xmlreply);&lt;br /&gt;
		foreach ($xml-&amp;gt;otherbases-&amp;gt;base as $base)&lt;br /&gt;
			{&lt;br /&gt;
			$rpn=intval($base[&#039;rpn&#039;]);&lt;br /&gt;
			$rssi=intval($base[&#039;rssi&#039;]);&lt;br /&gt;
			$tab[]=(array($id,$rpn,$rssi));&lt;br /&gt;
			}	&lt;br /&gt;
		return ($tab);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change the user/password onthese two script.&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20206</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20206"/>
		<updated>2011-03-01T14:00:49Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Related Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20205</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20205"/>
		<updated>2011-03-01T14:00:39Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Known Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20204</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20204"/>
		<updated>2011-03-01T14:00:15Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Known Problems=&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20203</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20203"/>
		<updated>2011-03-01T13:58:19Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Related Articles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Known Problems=&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
= Related Articles =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20202</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20202"/>
		<updated>2011-03-01T13:57:59Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Known Problems */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Known Problems=&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20201</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20201"/>
		<updated>2011-03-01T13:55:43Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* PHP scripts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The second one, named &#039;&#039;&#039;draw.php&#039;&#039;&#039;, provide the jpg with the map and each cells point drawn on and the link state.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
include &#039;getsync.php&#039;;&lt;br /&gt;
include &#039;getlevel.php&#039;;&lt;br /&gt;
header(&amp;quot;Content-type: image/jpg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
function drawBorne($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 30, 30, 255);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 20, 20, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+8),($y+8),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawRepeater($img,$nom,$x,$y)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de l&#039;ellipse&lt;br /&gt;
	$col_ellipse = imagecolorallocate($img, 200, 0, 0);&lt;br /&gt;
	// On dessine l&#039;ellipse&lt;br /&gt;
	imagefilledellipse($img, $x, $y, 15, 15, $col_ellipse);&lt;br /&gt;
	imagestring($img,3,($x+6),($y+6),$nom,$col_ellipse);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheRepeater($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 2);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlechePrimBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 0, 255, 0);&lt;br /&gt;
	imagesetthickness($img, 3);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, $col);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
function drawFlecheAltBorne($img,$x1,$y1,$x2,$y2,$col)&lt;br /&gt;
	{&lt;br /&gt;
	// Choix de la couleur de la fleche&lt;br /&gt;
	//$col_fleche = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
	imagesetthickness($img, 4);&lt;br /&gt;
	$style = Array(&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                $col,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT,&lt;br /&gt;
                IMG_COLOR_TRANSPARENT&lt;br /&gt;
                );&lt;br /&gt;
	imagesetstyle($img, $style);&lt;br /&gt;
	imageline($img, $x1, $y1, $x2, $y2, IMG_COLOR_STYLED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// pour définir les différentes couleurs d&#039;alarme sur les synchro&lt;br /&gt;
function definecolor($level,$img,$f)&lt;br /&gt;
	{&lt;br /&gt;
	if ($level==&amp;quot;&amp;quot;) $col = imagecolorallocate($img, 0, 0, 0);&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		if (($level)&amp;lt;=27) $col = imagecolorallocate($img, 255, 0, 0);&lt;br /&gt;
		if (($level&amp;gt;27)And($level&amp;lt;=30)) $col = imagecolorallocate($img, 255, 153, 51);&lt;br /&gt;
		if (($level&amp;gt;30)And($level&amp;lt;35)) $col = imagecolorallocate($img, 200, 255, 50);&lt;br /&gt;
		if (($level)&amp;gt;=35) $col = imagecolorallocate($img, 0, 153, 0);&lt;br /&gt;
		}&lt;br /&gt;
	//$f=fopen (&#039;debug.txt&#039;,&#039;a+&#039;);&lt;br /&gt;
	fwrite ($f,&#039;Level&#039;.$level.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
	//fclose ($f);&lt;br /&gt;
	return ($col);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
//création de l&#039;image&lt;br /&gt;
$im=imagecreatefromjpeg($_GET[&#039;site&#039;].&amp;quot;.jpg&amp;quot;);&lt;br /&gt;
$cartouche=imagecreatefromjpeg(&amp;quot;cartouche.jpg&amp;quot;);&lt;br /&gt;
imagecopymerge($im,$cartouche,0,0,0,0,300,100,100);&lt;br /&gt;
//initialisation du tableau qui recevra la lecture du fichier de conf 00000_000.txt&lt;br /&gt;
$valeur=array();&lt;br /&gt;
// lecture des ID présent et des positions&lt;br /&gt;
$filename=$_GET[&#039;site&#039;].&amp;quot;.txt&amp;quot;;&lt;br /&gt;
$file=fopen($filename,&#039;r&#039;);&lt;br /&gt;
&lt;br /&gt;
while (!feof($file)) &lt;br /&gt;
	{&lt;br /&gt;
	list($nom,$x,$y,$id,$ip,$port,)= explode(&amp;quot;;&amp;quot;,fgets($file, 8192));&lt;br /&gt;
	$valeur[$id]=array($nom,$x,$y,$id,$ip,$port);&lt;br /&gt;
	}&lt;br /&gt;
fclose ($file);	&lt;br /&gt;
&lt;br /&gt;
// pour debug	&lt;br /&gt;
$f=fopen (&#039;debug.txt&#039;,&#039;w+&#039;);&lt;br /&gt;
&lt;br /&gt;
// on récupères les levels de toutes les bornes dans un tableau de tableau &lt;br /&gt;
$level=array();&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]!=&amp;quot;&amp;quot;) $level=getlevel($level,$val[3],$val[4],$val[5]);&lt;br /&gt;
	if ($val[3]==1) $sync=getsync(strval($val[4]),intval($val[5]));&lt;br /&gt;
	}&lt;br /&gt;
unset($val);&lt;br /&gt;
&lt;br /&gt;
//Pour toute les valeurs du fichier de conf : on récupère et trace les synchro borne et répéteur&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[4]==&amp;quot;&amp;quot;)&lt;br /&gt;
		{&lt;br /&gt;
		if ($val[3]&amp;gt;8) $borne=$val[3]-(64*(int)($val[3]/64)); else $borne=1;&lt;br /&gt;
		foreach ($level as $testlevel)&lt;br /&gt;
			{&lt;br /&gt;
			$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
			if ($testlevel[0]==$borne &amp;amp;&amp;amp; $testlevel[1]==$val[3]) &lt;br /&gt;
				{&lt;br /&gt;
				$levelprim=$testlevel[2];&lt;br /&gt;
				break 1;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		unset ($testlevel);&lt;br /&gt;
		drawFlecheRepeater($im,$val[1],$val[2],$valeur[strval($borne)][1],$valeur[strval($borne)][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
		}&lt;br /&gt;
	else &lt;br /&gt;
		{&lt;br /&gt;
		foreach ($sync as $b)&lt;br /&gt;
			{&lt;br /&gt;
			if ($val[3]==$b[0])&lt;br /&gt;
				{&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelprim=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[1]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelprim=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				unset ($testlevel);&lt;br /&gt;
				foreach ($level as $testlevel)&lt;br /&gt;
					{&lt;br /&gt;
					$levelalt=&amp;quot;&amp;quot;;&lt;br /&gt;
					if ($testlevel[0]==$val[3] And $testlevel[1]==$b[2]) &lt;br /&gt;
						{&lt;br /&gt;
						$levelalt=$testlevel[2];&lt;br /&gt;
						break 1;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				fwrite ($f,&amp;quot;B=&amp;quot;.$b[0].&amp;quot; pri=&amp;quot;.$b[1].&amp;quot; alt=&amp;quot;.$b[2].&amp;quot; levelprim=&amp;quot;.$levelprim.&amp;quot; levelalt=&amp;quot;.$levelalt.&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
				if ($b[1]&amp;lt;&amp;gt;$b[2])&lt;br /&gt;
					{&lt;br /&gt;
					drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[1]][1],$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
					drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2],$valeur[$b[2]][1],$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
					}&lt;br /&gt;
				else &lt;br /&gt;
					{&lt;br /&gt;
					if ((abs(intval($valeur[$b[1]][1])-intval($valeur[$b[0]][1])))&amp;lt;(abs((intval($valeur[$b[1]][2]))-intval($valeur[$b[0]][2]))))&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1]+2,$valeur[$b[0]][2],$valeur[$b[1]][1]+2,$valeur[$b[1]][2],definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1]-2,$valeur[$b[0]][2],$valeur[$b[2]][1]-2,$valeur[$b[2]][2],definecolor($levelalt,$im,$f));&lt;br /&gt;
						}&lt;br /&gt;
					else&lt;br /&gt;
						{&lt;br /&gt;
						drawFlechePrimBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]+2,$valeur[$b[1]][1],$valeur[$b[1]][2]+2,definecolor($levelprim,$im,$f));&lt;br /&gt;
						drawFlecheAltBorne($im,$valeur[$b[0]][1],$valeur[$b[0]][2]-2,$valeur[$b[2]][1],$valeur[$b[2]][2]-2,definecolor($levelalt,$im,$f));&lt;br /&gt;
						}	&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
unset ($val);&lt;br /&gt;
&lt;br /&gt;
//fclose ($f);&lt;br /&gt;
foreach ($valeur as $val)&lt;br /&gt;
	{&lt;br /&gt;
	if ($val[0][0]==&amp;quot;B&amp;quot;||$val[0][0]==&amp;quot;b&amp;quot;) drawBorne($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	if ($val[0][0]==&amp;quot;R&amp;quot;||$val[0][0]==&amp;quot;r&amp;quot;) drawRepeater($im,$val[0],$val[1],$val[2]);&lt;br /&gt;
	}&lt;br /&gt;
imagejpeg($im);&lt;br /&gt;
imagedestroy($im);&lt;br /&gt;
imagedestroy ($cartouche);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20200</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20200"/>
		<updated>2011-03-01T13:47:07Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* PHP script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
===PHP scripts===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20199</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20199"/>
		<updated>2011-03-01T13:46:53Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* PHP script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
===PHP script===&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20198</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20198"/>
		<updated>2011-03-01T13:46:09Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
==PHP script==&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map. Put these following scripts on the same directory.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20197</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20197"/>
		<updated>2011-03-01T13:44:31Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map.&lt;br /&gt;
&lt;br /&gt;
The first one, named &#039;&#039;&#039;index.php&#039;&#039;&#039;, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20196</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20196"/>
		<updated>2011-03-01T13:43:55Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* =Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map.&lt;br /&gt;
&lt;br /&gt;
The first one, named index.php, is to be called by the browser with the site ID in http GET format : for example : http://mysite/index.php?site=myDECTcoverage&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20195</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20195"/>
		<updated>2011-03-01T13:43:29Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* =Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration=&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map.&lt;br /&gt;
&lt;br /&gt;
The first one, named index.php, is to be called by the browser with the site ID in http GET format : for example : [http://mysite/index.php?site=myDECTcoverage]&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20194</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20194"/>
		<updated>2011-03-01T13:40:37Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* =Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration=&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map.&lt;br /&gt;
&lt;br /&gt;
The first one, named index.php, is to be called by the browser with the site ID in http GET format : for example : &amp;lt;code http&amp;gt;http://mysite/index.php?site=myDECTcoverage&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20193</id>
		<title>Howto:DECT Graphical Real Time Display</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:DECT_Graphical_Real_Time_Display&amp;diff=20193"/>
		<updated>2011-03-01T13:39:04Z</updated>

		<summary type="html">&lt;p&gt;Mauduit: /* =Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* IP1200&lt;br /&gt;
Build 70300.35 and earlier.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: DECT graphical real time display --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&lt;br /&gt;
In multicell network, it&#039;s usefull to have a map of all the cells in a single view with all the sync link state in real time display.&lt;br /&gt;
&lt;br /&gt;
[[Image:SummaryDECTGRTD.jpg]]&lt;br /&gt;
&lt;br /&gt;
==System Requirements==&lt;br /&gt;
&lt;br /&gt;
For that you will need an apache server with PHP 5 at least.&lt;br /&gt;
&lt;br /&gt;
You will have to activate the following extensions :&lt;br /&gt;
&lt;br /&gt;
php_http, &lt;br /&gt;
php_gd2&lt;br /&gt;
&lt;br /&gt;
You must have an access to the cells from the apache server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You must have a map of your building in jpg format with the name &#039;&#039;&#039;myDECTcoverage.jpg&#039;&#039;&#039;, and you will need a txt file with a description of each cells point with the name &#039;&#039;&#039;myDECTcoverage.txt&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Configuration=&lt;br /&gt;
&lt;br /&gt;
You will need four php script to get this map.&lt;br /&gt;
&lt;br /&gt;
The first one, named index.php, is to be called by the browser with the site ID in http GET format : for example : http:\\mysite\index.php?site=myDECTcoverage&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code php&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo &#039;&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; content=&amp;quot;5&amp;quot;; url=&amp;quot;index.php&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
echo &#039;&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;&#039;;&lt;br /&gt;
echo &amp;quot;&amp;lt;img src=&#039;draw.php?site=&amp;quot;.$_GET[&#039;site&#039;].&amp;quot;&#039;/&amp;gt;&amp;quot;;&lt;br /&gt;
echo &#039;&amp;lt;/BODY&amp;gt;&amp;lt;/html&amp;gt;&#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
…&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*[[Main_Page|wiki-innovaphone]]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Mauduit</name></author>
	</entry>
</feed>