[Message Prev][Message
Next][Thread Prev][Thread Next][Message
Index][Thread Index]
Re: My list of possible xAP Enhancements
--------------070105070902040101070003
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Hi Neil,
I think that these wouldn't fall into BSC but into a (new) configuration
schema. Something which, from my viewpoint, is missing. This would allow
dumb/unconfigured devices to be attached to the network and remotely
configured.
The watchdog is a good idea - I think there needs to be some flexibility
as to whether it is seconds/minutes/hours/days since repeat messages
aren't something most xAP controllers/mappers perform. Therefore the
behaviour might be slightly different from your proposal in that once
sent a command with the watchdog entries, it will fallback when the
timers expire. So if the controller expects to turn off the watering
after, at most, 3 hours then the watchdog is set to that value but can
turn off after period up to that.
My preference is for the controller to perform the state restores rather
than the endpoint devices and can, if it wishes, keep persistent the
previous device states. Most endpoints aren't going to have the smarts
to know how long power was off. Of course, xAP isn't predicated on the
use of controllers but most installations use one.
Just as update on my current activities. I've started working on using
the PIC32 since the cost (£45) of the Ethernet board (Starter Kit) is
comparable to the Modtronix one but with a much better CPU - the
downside is the connector. The implementation is using Free RTOS, so
multitasking, and my first project is a colour touchscreen controller.
Lehane
Neil Wrightson wrote:
>
>
> Hi All,
>
> Below are the following points that I would like to see added to the
> xAP Schema.
>
>
> xAP Address renaming
> This is a means of changing the instance field and the Sub Address
field.
> Note - The UID does not change. This is specified by the manufacture
> of the product.
> The Logical human readable area of the message is what I propose that
> we allow the name changing of.
>
> To Change the Instance name of a device I suggest the following schema
> {
> v=12
> hop=1
> uid=FF123400
> class=xAPBSC.cmd
> source=ACME.Controller.Central
> target=ACME.Lighting.apartment
> }
> {
> InstanceRename=House
> }
>
> This would now mean that the device has been renamed to
> target=ACME.Lighting.House
>
>
> To Change the SubAddress name of a device I suggest the following
schema
> {
> v=12
> hop=1
> uid=FF123405
> class=xAPBSC.cmd
> source=ACME.Controller.Central
> target=ACME.Lighting.apartment:KitchenLight
> }
> {
> SubAddrRename=HallLight
> }
>
> This would now mean that this device SubAddress has been renamed to
> ACME.Lighting.apartment:HallLight
>
>
> Or would both of the above examples be better as a separate class
> {
> v=12
> hop=1
> uid=FF123400
> class=xAPBSC.rename
> source=ACME.Controller.Central
> target=ACME.Lighting.house
> }
>
> OR
>
> {
> v=12
> hop=1
> uid=FF123405
> class=xAPBSC.rename
> source=ACME.Controller.Central
> target=ACME.Lighting.apartment:KitchenLight
> }
>
>
>
> The other area I would like to look at are Watch Dog capabilities on
> the BSC outputs.
> For those that aren't familiar with the WatchDog terminology. A
> example should set the scene.
> I have a xAP device with a relay output that is used to control the
> watering system on my garden.
> An application on my server monitors the rain fall in the area via the
> internet weather.
> When it has been determined that the ground is probably too dry, it
> turns on the xAP devices relay.
> Half an hour later it turns the relay back off.
> Well it was supposed to , the network switch died and the server was
> unable to talk to the xAP Device and the garden has been watered for
> the next 6 hours until I got home and saw the mess.
>
> However, if I had watchdog facility in the xAP device hardware, it
> would have automatically turned the output off after a preset period.
>
> So in this instance the "WatchDog" functionality is a
software
> function in the xAP device, that monitors the xAP commands received
> and safely puts the outputs into a certain state.
>
> See _http://en.wikipedia.org/wiki/Watchdog_timer_
> <http://en.wikipedia.org/wiki/Watchdog_timer>
> <_http://en.wikipedia.org/wiki/Watchdog_timer_
> <http://en.wikipedia.org/wiki/Watchdog_timer>>
for some further
> information.
>
> So what I'm proposing, is the following functionality be added to the
> BSC commands and applies to each sub address.
> WD_Enable : Boolean ; //
> WD_Timer_Val : Byte ; // Seconds
> WD_Timeout_Val : Byte ; // 0/1/255
>
> WD_Enable
> If ON then this Sub address has watchdog functionality turned ON
>
> WD_Timer_Val
> This is how long to wait before changing the output to the
> WD_Timeout_Value
> This value is in seconds.
>
> In the watering example above, if the server sent a command to turn
> the device relay on every 120 seconds, than you would probably want
> the WD_Timer_Val set at 240 seconds.
>
> This allows a bit of time in case the server does a brief go slow.
> The draw back here is that the server needs to send an output command
> every two minutes for the half hour watering period, otherwise the
> watchdog kicks in and turns the output off.
>
> WD_Timeout_Val
> This is the value the device outputs when the watchdog state has been
> triggered for this device and sub address.
> A 0 or 1 to be used for a logic output or a value from 0..255 for an
> analogue output.
>
> Sometimes the output would be best set to ON, to turn on an ERROR lamp
> to indicate a fault or turn on minimal lighting when the server has
> died instead of leaving the house in darkness.
>
>
>
> The other BSC command is
> RestoreLastState : Boolean ; //
> RestoreLastStateTimer : Byte ; // Minutes
>
> The idea of this, is that when a xAP device experiences a brief (say
> 30 second) power loss, it restores itself to the last known state.
>
> I.e. the 240VAC mains into the house was briefly interrupted, it would
> be preferable if the light outputs went back to their last known
state.
>
> RestoreLastState
> If ON then the specified sub address is restored to its prior state
>
>
> RestoreLastStateTimer
> If this value is 0 then the output is restored to its previous value
> regardless of how long the power was off.
> If the value is greater than 0 and it is less than (the last known
> time - the current time) then the output is restored to its last state
> else left off.
>
>
>
> Xap-TimeStamp
> Send a timestamp message to the network at pre-defined periods.
> This is used to synchronize any devices that are not capable of NTP.
>
>
>
> Regards,
>
> Neil Wrightson.
> N.W.Electronics
> ABN 76 768 513 867
> Embedded Controllers and Home Automation Products
> Skype : Neil_Wrightson
> Web : _www.nwe.net.au_ <file://www.nwe.net.au>
>
>
--------------070105070902040101070003
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<head>
<style type="text/css">
<!--
/* start of attachment style */
.ygrp-photo-title{
clear: both;
font-size: smaller;
height: 15px;
overflow: hidden;
text-align: center;
width: 75px;
}
div.ygrp-photo{
background-position: center;
background-repeat: no-repeat;
background-color: white;
border: 1px solid black;
height: 62px;
width: 62px;
}
div.photo-title
a,
div.photo-title a:active,
div.photo-title a:hover,
div.photo-title a:visited {
text-decoration: none;
}
div.attach-table div.attach-row {
clear: both;
}
div.attach-table div.attach-row div {
float: left;
/* margin: 2px;*/
}
p {
clear: both;
padding: 15px 0 3px 0;
overflow: hidden;
}
div.ygrp-file {
width: 30px;
valign: middle;
}
div.attach-table div.attach-row div div a {
text-decoration: none;
}
div.attach-table div.attach-row div div span {
font-weight: normal;
}
div.ygrp-file-title {
font-weight: bold;
}
/* end of attachment style */
-->
</style>
</head>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<!-- **begin egp html banner** -->
<br><br>
<!-- **end egp html banner** -->
Hi Neil,<br>
I think that these wouldn't fall into BSC but into a (new)
configuration schema. Something which, from my viewpoint, is missing.
This would allow dumb/unconfigured devices to be attached to the
network and remotely configured.<br>
<br>
The watchdog is a good idea - I think there needs to be some
flexibility as to whether it is seconds/minutes/hours/days since repeat
messages aren't something most xAP controllers/mappers perform.
Therefore the behaviour might be slightly different from your proposal
in that once sent a command with the watchdog entries, it will fallback
when the timers expire. So if the controller expects to turn off the
watering after, at most, 3 hours then the watchdog is set to that value
but can turn off after period up to that.<br>
<br>
My preference is for the controller to perform the state restores
rather than the endpoint devices and can, if it wishes, keep persistent
the previous device states. Most endpoints aren't going to have the
smarts to know how long power was off. Of course, xAP isn't predicated
on the use of controllers but most installations use one.<br>
<br>
Just as update on my current activities. I've started working on using
the PIC32 since the cost (£45) of the Ethernet board (Starter
Kit) is
comparable to the Modtronix one but with a much better CPU - the
downside is the connector. The implementation is using Free RTOS, so
multitasking, and my first project is a colour touchscreen
controller.<br>
<br>
Lehane<br>
<br>
<br>
<br>
Neil Wrightson wrote:
<blockquote
cite="mid:9C0171DCCD4B472E83975812F5D6A20A@xxxxxxx"
type="cite"><span style="display:
none;"> </span>
<div id="ygrp-text">
<p><!-- Converted from text/rtf format -->
</p>
<p><span lang="en-au"><font face="Arial"
size="2">Hi All,</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2"> </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Below are the
following points that I would like to see added to the xAP
Schema.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2"> </font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">xAP Address renaming</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">This is a means of
changing the instance field and the Sub Address
field.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Note - The UID does
not change. This is specified by the manufacture of the
product.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">The Logical human
readable area of the message is what I propose that we allow the name
changing of.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2"> </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">To Change the Instance
name of a device I suggest the following schema</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">{</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">v=12</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">hop=1</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">uid=FF123400</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">class=xAPBSC.<wbr>cmd</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">source=ACME.<wbr>Controller.<wbr>Central</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">target=ACME.<wbr>Lighting.<wbr>apartment</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">}</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">{</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">InstanceRename=<wbr>House</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">}</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2"> </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">This would now mean
that the device has been renamed to </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">target=ACME.<wbr>Lighting.<wbr>House</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2"> </font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">To Change the
SubAddress name of a device I suggest the following
schema</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">{</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">v=12</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">hop=1</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">uid=FF123405</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">class=xAPBSC.<wbr>cmd</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">source=ACME.<wbr>Controller.<wbr>Central</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">target=ACME.<wbr>Lighting.<wbr>apartment:<wbr>KitchenLight</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">}</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">{</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">SubAddrRename=<wbr>HallLight</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">}</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">This would now mean
that this device SubAddress has been renamed to
</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">ACME.Lighting.<wbr>apartment:<wbr>HallLight</font></span>
</p>
<br>
<p><span lang="en-au"><font face="Arial"
size="2">Or would both of
the above examples be better as a separate class</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">{</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">v=12</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">hop=1</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">uid=FF123400</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">class=xAPBSC.<wbr>rename</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">source=ACME.<wbr>Controller.<wbr>Central</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">target=ACME.<wbr>Lighting.<wbr>house</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">}</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">OR</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">{</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">v=12</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">hop=1</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">uid=FF123405</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">class=xAPBSC.<wbr>rename</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">source=ACME.<wbr>Controller.<wbr>Central</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">target=ACME.<wbr>Lighting.<wbr>apartment:<wbr>KitchenLight</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">}</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2"> </font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">The other area I
would like to look at are Watch Dog capabilities on the BSC
outputs.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">For those that aren’t
familiar with the WatchDog terminology. A example should set the
scene.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">I have a xAP device
with a relay output that is used to control the watering system on my
garden.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">An application on my
server monitors the rain fall in the area via the internet
weather.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">When it has been
determined that the ground is probably too dry, it turns on the xAP
devices relay.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Half an hour later it
turns the relay back off. </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Well it was supposed
to , the network switch died and the server was unable to talk to the
xAP Device and the garden has been watered for the next 6 hours until I
got home and saw the mess.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">However, if I had
watchdog facility in the xAP device hardware, it would have
automatically turned the output off after a preset
period.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">So in this instance
the “WatchDog” functionality is a software function in
the xAP device,
that monitors the xAP commands received and safely puts the outputs
into a certain state. </font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">See </font></span><a
moz-do-not-send="true"
href="http://en.wikipedia.org/wiki/Watchdog_timer"><span
lang="en-au"><u><font
color="#0000ff" face="Arial" size="2">http://en.wikipedia<wbr>.org/wiki/<wbr>Watchdog_<wbr>timer</font></u></span></a><span
lang="en-au"><font face="Arial"
size="2"> <</font></span><a
moz-do-not-send="true"
href="http://en.wikipedia.org/wiki/Watchdog_timer"><span
lang="en-au"><u><font
color="#0000ff" face="Arial" size="2">http://en.wikipedia<wbr>.org/wiki/<wbr>Watchdog_<wbr>timer</font></u></span></a><span
lang="en-au"><font face="Arial"
size="2">> for some further
information.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">So what I’m
proposing, is the following functionality be added to the BSC commands
and applies to each sub address.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">
WD_Enable
: Boolean ; //</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">
WD_Timer_Val
: Byte ; //
Seconds</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">
WD_Timeout_Val
: Byte ; //
0/1/255</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">WD_Enable</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">If ON then this Sub
address has watchdog functionality turned ON</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2"> WD_Timer_Val</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">This is how long to
wait before changing the output to the
WD_Timeout_Value</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">This value is in
seconds.</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">In the watering
example above, if the server sent a command to turn the device relay on
every 120 seconds, than you would probably want the WD_Timer_Val set at
240 seconds.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">This allows a bit
of time in case the server does a brief go slow.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">The draw back here is
that the server needs to send an output command every two minutes for
the half hour watering period, otherwise the watchdog kicks in and
turns the output off.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">WD_Timeout_Val
</font></span><br>
<span lang="en-au"><font face="Arial"
size="2">This is the value the
device outputs when the watchdog state has been triggered for this
device and sub address. </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">A 0 or 1 to be used
for a logic output or a value from 0..255 for an analogue
output.</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">Sometimes the
output would be best set to ON, to turn on an ERROR lamp to indicate a
fault or turn on minimal lighting when the server has died instead of
leaving the house in darkness.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2"> </font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">The other BSC
command is</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">
RestoreLastState
: Boolean ; //</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">
RestoreLastStateTim<wbr>er :
Byte ; // Minutes</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">The idea of this,
is that when a xAP device experiences a brief (say 30 second) power
loss, it restores itself to the last known
state.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">I.e. the 240VAC
mains into the house was briefly interrupted, it would be preferable if
the light outputs went back to their last known
state.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2">RestoreLastState
</font></span><br>
<span lang="en-au"><font face="Arial"
size="2">If ON then the
specified sub address is restored to its prior
state</font></span>
</p>
<br>
<p><span lang="en-au"><font face="Arial"
size="2">RestoreLastStateTim<wbr>er</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">If this value is 0
then the output is restored to its previous value regardless of how
long the power was off.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">If the value is
greater than 0 and it is less than (the last known time - the current
time) then the output is restored to its last state else left
off.</font></span></p>
<p><span lang="en-au"><font face="Arial"
size="2"> </font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">Xap-TimeStamp</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Send a timestamp
message to the network at pre-defined periods.</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">This is used to
synchronize any devices that are not capable of NTP.
</font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2"> </font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">Regards, </font></span>
</p>
<p><span lang="en-au"><font face="Arial"
size="2">Neil Wrightson. </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">N.W.Electronics </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">ABN 76 768 513 867 </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Embedded Controllers
and Home Automation Products </font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Skype : Neil_Wrightson
</font></span>
<br>
<span lang="en-au"><font face="Arial"
size="2">Web :
</font></span><a
moz-do-not-send="true"
href="file://www.nwe.net.au"><span
lang="en-au"><u><font
color="#0000ff" face="Arial"
size="2">www.nwe.net.<wbr>au</font></u></span></a><span
lang="en-au"><font face="Arial"
size="2"> </font></span>
</p>
</div>
<!-- end group email --></blockquote>
<br>
<!-- **begin egp html banner** -->
<br>
<br>
<!-- **end egp html banner** -->
<div width="1" style="color: white; clear:
both;"/>__._,_.___</div>
<!-- Start Recommendations -->
<!-- End Recommendations -->
<!-- **begin egp html banner** -->
<img src="http://geo.yahoo.com/serv?s=97476590/grpId=9629476/grpspId=1705007709/msgId=2091/stime=1268651100"
width="1" height="1"> <br>
<!-- **end egp html banner** -->
<!-- **begin egp html banner** -->
<br>
<div style="font-family: verdana; font-size: 77%; border-top: 1px
solid #666; padding: 5px 0;" >
Your email settings: Individual EmailTraditional <br>
<a href="http://groups.yahoo.com/group/xAP_developer/join;_ylc=X3oDMTJmN3Y5MTk4BF9TAzk3NDc2NTkwBGdycElkAzk2Mjk0NzYEZ3Jwc3BJZAMxNzA1MDA3NzA5BHNlYwNmdHIEc2xrA3N0bmdzBHN0aW1lAzEyNjg2NTExMDA-">Change
settings via the Web</a> (Yahoo! ID required) <br>
Change settings via email: <a href="mailto:xAP_developer-digest@xxxxxxx?subject=Email
Delivery: Digest">Switch delivery to Daily Digest</a> <a
href = "mailto:xAP_developer-fullfeatured@xxxxxxx?subject=Change
Delivery Format: Fully Featured">Switch to Fully Featured</a>
<br>
<a href="http://groups.yahoo.com/group/xAP_developer;_ylc=X3oDMTJkNHQ4cW1kBF9TAzk3NDc2NTkwBGdycElkAzk2Mjk0NzYEZ3Jwc3BJZAMxNzA1MDA3NzA5BHNlYwNmdHIEc2xrA2hwZgRzdGltZQMxMjY4NjUxMTAw">
Visit Your Group
</a>
<a href="http://docs.yahoo.com/info/terms/">
Yahoo! Groups Terms of Use
</a>
<a href="mailto:xAP_developer-unsubscribe@xxxxxxx?subject=Unsubscribe">
Unsubscribe
</a>
<br>
</div>
<br>
<!-- **end egp html banner** -->
<div style="color: white; clear:
both;"/>__,_._,___</div>
</body>
</html>
--------------070105070902040101070003--
xAP_Development Main Index |
xAP_Development Thread Index |
xAP_Development Home |
Archives Home
|