Configure Software Functional Specification


    Distribution: COMPANY CONFIDENTIAL

    Project:      Applications
    Document Ref: 2103,705
    Author(s):    Owen Love, Julian Smith
    Issue:        0.21
    Date:         13-Nov-96
    Last Issue:   0.20
  

Contents.


History

        0.01 OL 03-May-96 First created.
        0.02 OL 22-May-96 Added close button, changed printer page and
                          other changes.
        0.03 JS 23 May 96 Added info on implementation details.
        0.04 JS 30 May 96 Added info on browser not supporting
                          tables with GIFs properly.
                          Amended escaped strings to use
                          '%' rather than '\'.
        0.05 JS 30 May 96 Now creates new frames ok with STBWeb.
        0.06 OL 24-Jun-96 Add new pictures and support for help.
        0.07 OL 05-Jul-96 Added version page.
        0.08 OL 09-Jul-96 Feedback from MGB.
        0.09 OL 11-Jul-96 Updated pictures.
        0.10 OL 16-Jul-96 Added Modem and Monitor sections
        0.11 JS 16 Jul 96 Updated technical info.
        0.12 JS 22 Jul 96 Updated technical info.
        0.13 OL 29-Jul-96 Updated UI.
        0.14 OL 30-Jul-96 Feedback from MGB.
        0.15 JS 13 Aug 96 Updated technical info (STBWeb->NCFresco)
                          Added confirmation and reboot for
                          territory changes.
        0.16 OL 21-Aug-96 Updated monitor section.
        0.17 OL 17-Sep-96 Add features to monitor/modem sections.
        0.18 OL 23-Sep-96 Updated modem picture.
        0.19 OL 16-Oct-96 Added printer option for paper size.
        0.20 OL 23-Oct-96 Updated version picture.
        0.21 OL 13-Nov-96 Updated to released software.

Outstanding issues


Overview

This document contains the software functional specification for the NC configuration application to be included in the system ROM of the Network Computer Model 1. The settings made in this application will be saved in the NC's NVRAM. These settings will therefore be permanent (ie. still there after the machine is turned off) and will be local to each NC (ie. not user specific).

Italicised text is used where issues are still to be decided or where contents are liable to change.


Technical background

The configure application is a new application written as part of Network Computer Model 1 applications software.


User interface

The configuration user interface will be implemented using a series of HTML pages. On selecting the configuration option from their home page the configuration application (implemented as a ROM Module) will be run, this will create the HTML pages required for configuration. Users will then be shown the available configuration options in a frame along the top of the screen.

Clicking the help icon will display the Help pages while clicking the close icon will return the user to the HTML page that called the configure application.

A second frame, covering most of the screen will be below the frame containing the icons. Initially, this will be empty but selecting one of the icons will highlight it and change this main frame to show a HTML form giving the configuration options.

Printer Window

The printer window will allow users to configure their NC for the printer they have attached. On clicking the printer icon the main frame will display a HTML page similar to this:

Users will be able to choose the printer they have attached to the NC and whether they require color printing. A field will show the currently selected printer and a pop-up menu will give a list of available printers:

    No printer                   
    Canon BJ-10e, BJ-200, BJ300, BJ-330
    Canon BJC-600
    Epson FX-80, GX-80
    Epson FX-85, FX-86, FX-185, FX-286
    Epson Stylus 800, 1000
    Epson Stylus Color. Pro. Pro XL
    HP DeskJet Pro, 500, 510
    HP DeskJet 500C, 1200C
    HP DeskJet 660C
    HP PaintJet XL300
    HP LaserJet II
    HP LaserJet III
    HP LaserJet 4
    HP LaserJet 5
    PostScript

Users will then be able to select the paper size they require from the following:

    US Letter         US Legal         A4

On selecting the 'Save' button at the bottom of page a command line utility will be run which will interpret the users selections and store the settings in EEEPROM.

Region Window

The region window will allow users to provide control over the localised aspects of the NC and set the current time zone. Selecting the territory icon will display a HTML based form similar to this:

The territory section will allow users to select the current territory they are using. This will effect settings like the keyboard layout, character set, currency symbol, and date format. In NC Model 1 only two territories will be present.

The time zone section will allow users to select the current time zone and whether daylight saving time is in operation. A field will show the currently selected time zone and a pop-up menu will give a list of available time zones:

   -11 hours (American Samoa)      -10 hours (Hawaii)
    -9 hours (Alaska)              -8 hours (USA Pacific)
    -7 hours (USA Mountain)        -6 hours (USA Central)
    -5 hours (USA Eastern)         -4 hours (Chile)
  -3.5 hours (Newfoundland)        -3 hours (Uruguay)
    -2 hours (Antarctica)          -1 hours (Cape Verde)
     0 hours (United Kingdom)      +1 hours (France)
    +2 hours (Greece)              +3 hours (Saudi Arabia)
  +3.5 hours (Iran)                +4 hours (Oman)
  +4.5 hours (Afghanistan)         +5 hours (Pakistan)
  +5.5 hours (India)               +5.75 hours (Nepal)
  +6.5 hours (Myanmar)             +7 hours (Cambodia)
    +8 hours (Australia Western)   +9 hours (Japan)
  +9.5 hours (Australia Central)   +10 hours (Australia Eastern)
   +11 hours (Solomon Islands)     +12 hours (New Zealand)

Clicking the 'Save' button will store the settings in EEEPROM.

If the user changes the territory, the NC will have to be rebooted for the changes to take effect. Hence a warning page will be opened, asking for confirmation.

If the user cancels the request, both the time-zone and the territory will be left unchanged. Otherwise the NC will be rebooted.

Modem Window

The modem window will allow users to configure their NC for the phone system it will use. On clicking the modem icon the main frame will display a HTML page similar to this:

Users will be able to choose the whether they require tone or pulse dialing, the local area code, the number they have to dial to obtain an outside line and if the phone system provides a second dial tone when an outside line is obtained. Users will also be able to choose how long they want their modem to remain connected to the server if no modem activity has taken place. A field will show the currently selected timeout and a pop-up menu will give a list of available options:

    3 minutes
    5 minutes
    10 minutes
    15 minutes
    30 minutes
    Never

On selecting the 'Save' button at the bottom of page a command line utility will be run which will interpret the users selections and store the settings in EEEPROM.

Monitor Window

The monitor window will allow users to configure their NC for the monitor they have attached. On clicking the monitor icon the main frame will display a HTML page similar to this:

Users will be able to choose the screen resolution and number of colors used on their monitor display. A field will show the currently selected display and a pop-up menu will give a list of available options:

    640 x 480 at 256 colors
    640 x 480 at 32,000 colors
    800 x 600 at 256 colors
    800 x 600 at 32,000 colors
    1024 x 768 at 256 colors

The list of available resolutions/colours will be dependant on the monitor and the whether the FE version of the ARM chip is being used. The option button labelled 'Use higher frame rate' will enable users with superior monitors to obtain a display of higher quality.

On selecting the 'Try' button the requested screen resolution will be displayed. To ensure the monitor can display this resolution another screen will appear asking users to either 'Save' or 'Cancel' their selection. This screen will time out after 5 seconds and return the resolution to the previous setting. On clicking the 'Save' buton a command line utility will be run which will interpret the users selections and store the settings in EEEPROM.

Version Window

The version window will display details of the current version numbers of the applications present in the NC Model 1 ROM. On clicking the version icon the main frame will display a HTML page similar to this:

The link on this page goes to file:/NCHelp:NCLicense/index.html which is the Oracle license and trademark information page.

Help Pages

The configure application will contain a link to the help page file:/NCHelp:NCConfig/index.html and the Web browser will use this to obtain and display the help pages. Using a system variable allows these pages to be customised and loaded from anywhere on the network rather than being in a fixed place. When the user has finished with the help pages they will be closed and control returned to the configure application.


External dependencies

A HTML page will have to present either in ROM or from the internet service provider to allow users to launch the configure application (probably from a users home page).


Product organisation

The application will be integrated into the RISC OS build tree so that the configure application can be built into the NC ROM.


Future enhancements

The following list gives some examples of additional functionality which could be incorporated in future releases:


Technical implementation details


Technical implementation - overview

The functionality required to implement the configuration HTML pages is provided by the 'NCConfig' module. The NCConfig module implements a single *command which generates HTML pages containing the required forms. Each of the forms in the generated pages make the browser run the *command in the same NCConfig module. This ensures consistency between the generated pages and the resulting actions.

Depending on the parameters set up by the particular form, the NCConfig module will either create a new HTML page, or update the internal NC configuration. NCConfig's *command handler returns a standard OS error if any problem occurs.


Technical implementation - Outstanding issues

Comfirmation page and reboot when territory is changed.

Technical implementation - Communication from NCConfig to browser

This is essentially about how NCConfig tells the browser to open a new page/frame

The original idea was for NCConfig to broadcast a Message_DataOpen for its created HTML page which the browser would pick up.

The two main problems with this are:

Hence a different method has been adopted: NCConfig simply sets the system variable <NCFresco$ReturnedFrames> to contain information on the generated pages. Thus the browser should unset this variable before calling the *command from a form-selection, and check its value when the *command returns.

To allow multiple-pages to be opened in response to a single form-selection, <NCFresco$ReturnedFrames> is specified as containing a list of space-separated blocks of information, each of which specifies a single HTML file to be opened.

Each block of information contains the URL of the HTML file and, optionally, the name of the frame which the HTML file should be put into, using the standard HTML variablename1=variablevalue1&variablename2=variablevalue2&... system. The two relevant variable names are url for the URL of the HTML file to open, and target for information on the target frame this file is for.

ie:

NCFresco$ReturnedFrames = url=[&target=] url=[&target=] ...

For example, an individual information block could be:

url=file:/ADFS::JSmith.$.!Boot.Resources.!Scrap.ScrapDirs.ScrapDir.2fxa4685b00&target=Config_Bottom

To open a new page with multile frames, one would make a master page with filenames for each of its frames, and specify just this master page.

To allow the browser to deal with the data using existing code, the information is actually in the encoding used in HTML 'get' forms, so all non-alphanumeric characters are escaped. Thus the above example would be:

url=file:/ADFS%3a%3aJSmith%2f%24%2f%21BOOT%2fResources%2f%21Scrap%2fScrapDirs%2fScrapDir%2fxa4685b00&target=Config%5fBottom

Technical implementation - Communication from browser to NCConfig

This is about how the browser, running configuration forms, communicates with the NCConfig module.

All communication from browser to the config module is via a single *command, *NCConfig_Configure. When it initialises, the module effectively does:

   *set Alias$URLOpen_NCConfig_Configure NCConfig_Configure %*0

This allows a form looking like:

   form method="get" action="NCConfig_Configure:"

- to run *NCConfig_Configure followed by the form variables. This is a NCFresco/RISC OS-specific protocol.

For example, the configuration page which sets the territory has form looking like:


 <form method="get" action="NCConfig_Configure:">
        <input       type=hidden     name=context    value="SetTerritory">
        
        
        <p><h1>   Territory       </h1>
        <blockquote>
                <p>  <input name="territory"      type=radio      value="0"       checked>        United Kingdom
                <p>  <input name="territory"      type=radio      value="1"       >       United States of America
        </blockquote>
        
        <p><h1>   Time zone       </h1>
        <blockquote>
                <p><select name="timezone">
                        <option  value="-11">          -11    hours (American Samoa)
                        <option  value="-10">          -10    hours (Hawaii)
[...]
                        <option  value="12">    12    hours (New Zealand)
                </select>
        </blockquote>
        
        <p><p><p><input type=submit value="Set values">
 </form>

An example *command resulting from this form is:

   *NCConfig_Configure NCConfig_Configure:?context=SetTerritory&territory=1&timezone=%2d10

The browser encodes all non-alphanumerics into %xx where 'xx' is two hex digits, so the arguments in this example are context=SetTerritory, territory=1, timezone=-10.

(Note, the browser prefixes the arguments with NCConfig_Configure: - this is not used by *NCConfig_Configure - it ignores everything before the first '?'.)

All HTML form commands sent to *NCConfig_Configure have the first parameter context, which is used by the module to decide what the *command is for.

An alternative would be to make each form run a different *command (eg on to generate a printer/territory-config page, one to accept a printer-choice etc etc), and have the module implement each of these as a separate *command. This was not done because it would involve setting more than one Alias$URLOpen_* system variable and makes the module slightly more complex.

Depending on the value of context, NCConfig will use the remaining variables to create a new page, or set the NC configuration.

Note that all string-comparisons used when scanning the variables are case-insensitive.

Currently recognised commands arguments are as follows. Note that they have to be in the specified order:

context=FirstPage
This creates the initial page.

context=ConfigApp, action=(string)
This is called when the user clicks on the available configuration-options section at the top of the configuration page. The close-icon tells the browser to go back directly without any intervention by NCConfig, using the special NCFresco-specific <a href="NCFrescoInternal:Back"> link. For the other icons, 'action' is one of: 'Territory', 'Printer'.

NCConfig_Configure will create the relevant configuration page for the browser to open in the bottom frame of the configuration screen (see above for details of how NCConfig_Configure communicates with the browser).

context=SetPrinter, Name=(int), Colour=(string)
This is called when the user chooses a printer. 'Name' is an integer which identifies the printer to the NCConfig module (it refers to a printer ID in the Printers:Supported file).

'Colour' is either "yes" or "no".

context=SetTerritory, territory=(int), timezone=(int), {DST}
This is called when the user chooses a territory and time-zone.

'territory' is the RISC OS territory number.

'timezone' is an integer number representing the chosen timezone in units of 1/100 hr.

If 'DST' is present (its value is irrelevent), daylight-saving-time is set.

context=SetModem, pulse (yes/no), prefix (number)}, {wait}

This is called when the user chooses modem-settings. prefix is the number to prefix all calls with (eg '9' to get an outside line. Only the first digit is used. If 'wait' is present (its value is irrelevent), the NC is configured to wait for a dialling tone.