sysmodelgen bugfix when drawing collections next to nested packages. Major revision to validation script checklinks.pl (it's now reliable). joinsysdef.pl now reports errors on duplicate IDs.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SystemDefinition [
<!ELEMENT SystemDefinition ( systemModel )>
<!ATTLIST SystemDefinition
name CDATA #REQUIRED
schema CDATA #REQUIRED
>
<!-- all paths are relative to the environment variable specified by the root attribute, or SOURCEROOT if not. -->
<!-- System Model Section of DTD -->
<!ELEMENT systemModel (layer+)>
<!ELEMENT layer (block* | collection*)*>
<!-- Kernel Services, Base Services, OS Services, Etc -->
<!ATTLIST layer
name CDATA #REQUIRED
long-name CDATA #IMPLIED
levels NMTOKENS #IMPLIED
span CDATA #IMPLIED
>
<!ELEMENT block (subblock* | collection*)*>
<!-- Generic OS services, Comms Services, etc -->
<!ATTLIST block
levels NMTOKENS #IMPLIED
span CDATA #IMPLIED
level NMTOKEN #IMPLIED
name CDATA #REQUIRED
long-name CDATA #IMPLIED
>
<!ELEMENT subblock (collection)*>
<!-- Cellular Baseband Services, Networking Services, etc -->
<!ATTLIST subblock
name CDATA #REQUIRED
long-name CDATA #IMPLIED
>
<!ELEMENT collection (component)*>
<!-- Screen Driver, Content Handling, etc -->
<!ATTLIST collection
name CDATA #REQUIRED
long-name CDATA #IMPLIED
level NMTOKEN #IMPLIED
>
<!ELEMENT component (unit)*>
<!-- contains units or is a package or prebuilt -->
<!ATTLIST component
name CDATA #REQUIRED
long-name CDATA #IMPLIED
deprecated CDATA #IMPLIED
introduced CDATA #IMPLIED
contract CDATA #IMPLIED
plugin (Y|N) "N"
filter CDATA #IMPLIED
class NMTOKENS #IMPLIED
supports CDATA #IMPLIED
purpose ( optional | mandatory | development ) "optional"
>
<!ELEMENT unit EMPTY >
<!-- must be buildable (bld.inf) -->
<!-- bldFile may someday be removed in favour of mrp -->
<!ATTLIST unit
mrp CDATA #IMPLIED
filter CDATA #IMPLIED
bldFile CDATA #IMPLIED
root CDATA #IMPLIED
version NMTOKEN #IMPLIED
prebuilt NMTOKEN #IMPLIED
late (Y|N) #IMPLIED
priority CDATA #IMPLIED
>
]>
<SystemDefinition name="Symbian^4" schema="2.0.1">
<systemModel>
<layer name="mw" long-name="Middleware" levels="generic specific">
<block name="wirelessacc" level="specific" long-name="Wireless Access" levels="framework generic ui">
<collection name="hsfw_plat" long-name="HotSpot Framework Platform Interfaces" level="ui">
<component name="hotspot_framework_client_api" long-name="HotSpot Framework Client API" filter="s60" class="api">
<unit bldFile="/sf/mw/wirelessacc/hsfw_plat/hotspot_framework_client_api/group"/>
</component>
<component name="internet_connectivity_test_service_api" long-name="Internet Connectivity Test Service API" filter="s60" class="api">
<unit bldFile="/sf/mw/wirelessacc/hsfw_plat/internet_connectivity_test_service_api/group"/>
</component>
<component name="internet_connectivity_test_service_settings_api" long-name="Internet Connectivity Test Service Settings API" filter="s60" class="api">
<unit bldFile="/sf/mw/wirelessacc/hsfw_plat/internet_connectivity_test_service_settings_api/group"/>
</component>
<component name="hotspot_framework_client_plugin_api" long-name="HotSpot Framework Client Plugin API" filter="s60" class="api">
<unit bldFile="/sf/mw/wirelessacc/hsfw_plat/hotspot_framework_client_plugin_api/group"/>
</component>
</collection>
<collection name="hotspotfw" long-name="HotSpot Framework" level="framework">
<component name="hsserver" filter="s60" long-name="HotSpot Server" class="placeholder">
<!-- needs bld.inf extracted from the hotspotfw/group one, or this component should be removed-->
</component>
<component name="hsclient" filter="s60" long-name="HotSpot Client" class="placeholder">
<!-- needs bld.inf extracted from the hotspotfw/group one, or this component should be removed-->
</component>
<component name="internetconnectivitytestservice" filter="s60" long-name="Internet Connectivity Test Service" class="placeholder">
<!-- needs bld.inf un-#included from hotspotfw/group/bld.inf, or this component should be removed-->
<!-- <unit bldFile="hotspotfw/internetconnectivitytestservice/group"/> -->
</component>
<component name="ictsdialogs" filter="s60" long-name="Internet Connectivity Test Service Dialogs" deprecated="^3" class="placeholder">
<!-- needs bld.inf un-#included from hotspotfw/group/bld.inf, or this component should be removed-->
<!-- <unit bldFile="hotspotfw/ictsdialogs/group"/> -->
</component>
<component name="hspluginforagent" filter="s60" long-name="HotSpot Plugin for Agent" plugin="Y" class="placeholder">
<!-- needs bld.inf un-#included from hotspotfw/group/bld.inf, or this component should be removed-->
<!-- <unit bldFile="hotspotfw/hspluginforagent/group"/> -->
</component>
<component name="hsbrowser" filter="s60" long-name="HotSpot Browser" class="placeholder">
<!-- needs bld.inf un-#included from hotspotfw/group/bld.inf, or this component should be removed-->
<!-- <unit bldFile="hotspotfw/hsbrowser/group"/> -->
</component>
<component name="hotspotfw_build" filter="s60" long-name="Hotspot Framework Build">
<!-- should break up this bld.inf into the above components, or collapse them all into a single component -->
<unit bldFile="/sf/mw/wirelessacc/hotspotfw/group"/>
</component>
</collection>
<collection name="wlanutilities" long-name="WLAN Utilities" level="generic">
<component name="wlanutilities_build" long-name="WLAN Utilities Qt" introduced="^4" filter="s60">
<!-- is this uinit needed, or is it sufficient to uncomment the units in the below components? -->
<unit bldFile="/sf/mw/wirelessacc/wlanutilities"/>
</component>
<component name="wlanqtutilities" filter="s60" long-name="WLAN Qt Utilities" introduced="^4" class="placeholder">
<!--<unit bldFile="wlanutilities/wlanplugin/group" qt:proFile="wlanqtutilities.pro"/>-->
</component>
<component name="wlansniffer" filter="s60" long-name="WLAN Sniffer" class="placeholder">
<!--<unit bldFile="wlanutilities/wlansettingsui/group" qt:proFile="wlansniffer.pro"/>-->
</component>
<component name="wlanentryplugin" filter="s60" long-name="WLAN Entry Plugin" plugin="Y" class="placeholder">
<!--<unit bldFile="wlanutilities/wlansniffer/group" qt:proFile="wlanentryplugin.pro"/>-->
</component>
<component name="wlanindicatorplugin" filter="s60" long-name="WLAN Indicator Plugin" plugin="Y" class="placeholder">
<!--<unit bldFile="wlanutilities/wlanindicatorplugin/group" qt:proFile="wlanindicatorplugin.pro"/>-->
</component>
<component name="cpwlansettingsplugin" filter="s60" long-name="WLAN Settings Control Panel Plugin" introduced="^4" plugin="Y" class="placeholder">
<!--<unit bldFile="wlanutilities/cpwlansettingsplugin/group" qt:proFile="cpwlansettingsplugin.pro"/>-->
</component>
</collection>
</block>
</layer>
</systemModel>
</SystemDefinition>