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
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.
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.
The configure application is a new application written as part of Network Computer Model 1 applications software.
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.
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.
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.
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.
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.
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.
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.
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).
The application will be integrated into the RISC OS build tree so that the configure application can be built into the NC ROM.
The following list gives some examples of additional functionality which could be incorporated in future releases:
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.
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:
Wimp_SendMessage
.
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
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.