diff --git a/README.md b/README.md index eaa2e5e..95c8be1 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ![VSCP logo](./images/logo_100.png) -**Specification reversion:** ${/var/document-version} - ${/var/creation-time} +**Specification version:** ${/var/document-version} - ${/var/creation-time} [HISTORY](./vscp_specification_history.md) Specification is [here](https://docs.vscp.org) @@ -14,7 +14,7 @@ Apart from going through this document You can read all about and download VSCP **VSCP is free.** Free to use. Free to change. Free to do whatever you want to do with it. VSCP is not owned by anyone. VSCP will stay free and gratis forever. -Author 2000-2020 Åke Hedman, [Grodans Paradis AB](https://www.grodansparadis.com), [akhe@grodansparadis.com](akhe@grodansparadis.com) +Author 2000-2022 Åke Hedman, [Grodans Paradis AB](https://www.grodansparadis.com), [akhe@grodansparadis.com](akhe@grodansparadis.com) This document is licensed under [Creative Commons BY 4.0](https://creativecommons.org/licenses/by/4.0/) and can be freely copied, redistributed, remixed, transformed, built upon as long as you give credits to the author. diff --git a/variables.xml b/variables.xml index e3291b4..1c187bf 100644 --- a/variables.xml +++ b/variables.xml @@ -1,4 +1,4 @@ - 2021-10-05 16:46 - 1.12.5 + 2022-01-13 09:24 + 1.13.0 diff --git a/vscp_module_description_file.md b/vscp_module_description_file.md index 6e296e3..e1bc6c4 100644 --- a/vscp_module_description_file.md +++ b/vscp_module_description_file.md @@ -1,30 +1,37 @@ # Module Description File -The VSCP registers 0xE0-0xFF specifies the Module Description File URL (without “http://”` or `“https://” which is implied). The file is in XML or JSON format and defines a modules functionality, registers and events. The intended use is for application software to be able to get information about a node and its functionality in an automated way. +The Module Description File (MDF) is a file that describes a general hardware module. The format of the file can be used to describe any logical or physical device. After parsing the MDF a higher level device (a machine) or user (a human) know how to configure and handle the described module. - * A XML coded MDF file shall start with a '<'. It is allowed to have white space before this character. - * A JSON coded MDF file shall start with a '{'. It is allowed to have white space before this character. +All VSCP modules have an area in memory that is common to all devices that contains the URL for the MDF. This area can be read and then the MDF can be downloaded and parsed. -On Level II devices this information can be available in the configuration data and be locally stored on the node. If language tags are missing for a name or a description or in an other place where they are valid English should be assumed. +The file should be UTF-8 encoded and contain either **XML** or **JSON** data. -**Coding:** UTF-8 +**numbers** All numbers can be set as decimal(no prefix), hexadecimal(prefix with 0x), octal(prefix with 0o) or binary(prefix with 0b). -## Real life file examples -### Kelvin NTC10K - -The Kelvin NTC10K is one of [Grodans Paradis AB's](https://www.grodansparadis.com/) modules and it has it's product page [here](https://www.grodansparadis.com/kelvinntc10k/kelvin_ntc10ka.html). The MDF file for this modules is [here](https://www.eurosource.se/ntc10KA_1.xml). +## The content of a MDF file -### Paris relay module +The MDF file have the following general structure: -The Paris module is another module from Grodans Paradis AB and it is documented [here](https://www.grodansparadis.com/paris/paris.html). The MDF file for this modules is [here](https://www.eurosource.se/paris_010.xml). + - **General module information** such as model, version etc. + - **Manufacturer**: Info about the maker of the module such as name, address, phone number, etc. + - **Files**: A list oif files related to the module. This can be firmare, pictures, videos, manuals etc. + - **bootloader information**: Info on how to load firmware to the module. + - **registers**: A list of byte wide registers the module have. + - **remote variables**: A list of remote variables the module have. Remote variables was called *abstractions* in previous versions of the specification. + - **events**: A list of events (and there format) the module can generate/receive. + - **decision matrix**: Describes the decision matrix for the module if it have one. + - **setup**: Is macros to setup and configure and control a module using wizard like interfacec. ## XML Format Specification +### Format notes -##### Notes +#### Register definitions +Register definitions must be available for all nodes (if the module have registers defined). -Register definitions must be available for all nodes (if it has registers defined). A register which does not have a an abstraction defined will be handled with a default abstraction constructed from its offset as +#### Automatic remote variables +A register which does not have a a remote variable defined to describe it in a high level way will have a default remote variable constructed from its offset as register''offset'' @@ -32,1472 +39,3222 @@ for example register1 -The type will always be “uint8_t” in this case +The type for the remote variable in this case will always be “uint8_t” + +#### Newlines +“\n” can be used to define a new line in descriptive text. It will be translated in an appropriate way by the renderer. -“\n” can be used for a new line in text. +## File overall structure -If you want to insert HTML as content use a construct like this ```xml - - -