MSLS

Mobile Skiing Location System

portable information

e-mail: info@msls.biz
MSLS software about current Version: V1.0
 

 

Skiing System

Dpdl

mslsMapBuilder

Screen-Shots

 

 

news 

future implementations

 

 

 

 Dpdl(TM)

Dynamic Packet Definition Language

Author: Armin Costa

e-mail: armincosta@msls.biz

Dpdl is a scripting language which can be used to easily  implement a vast variety of Services on the MSLS platform and on other software products based on Dpdl. 

A full documented API, Dpdl libs itself and other related tools (MapBuilder, Data-Submission Tools, etc. ), will be available soon for Developers.

Dpdl has been designed to be applied especially in Mobile Devices and Embedded Systems (PDAs ....), but runs as well on other platforms ( the same Service for example runs in an Internet Browser).

* A very useful Feature, is the possibility to bind actual Data with the  ".map" file, designed  with our Map-builder Tool -->   mslsMapBuilder . This makes it possible to implement in very short time a data-service that is being visualized graphically.

Compared to other standards like XML, Dpdl has the following advantages:

- easy to use

- enhenced binding possibilities with the MSLS-MapBuilder-Format in order to visualize information graphically ( see the Skiing System as example ).

- basic build in GUI-Construction (Graphical User Interface) which, controlled by language data-constraints, can provide a very powerful Service-Architecture.

- high execution rates ( search for a phone-number in a packet with more than 1200 triple data-entries takes at most 0,8 seconds --> this may depend on how the User controls the search and on how the specific Dpdl-Script has been implented.

- high data compression ( 1200 random data-entries --> full name, phone nr., e-mail   in ca. 22 kb )

- scalability between different platforms

- Encryption, Integrity and Authentication supported

- the same Dpdl-script is used for data Encoding, Decoding and for Data

Submission

- data source specification (typically a database or Vectors)

- supports all basic Types ( int, string, byte, Image, class , float, short, Object

- on all platforms, except on Mobile-Phones, due to missing Serialization API,  there is also the possibility to define a class-loading and excecution mechanism in the MSLS-Services.

------------------------------------------------------------------------------------------------

4 Dpdl Examples

A simple Phone-Book A street-Finder App

(easy intergration with GPS )

Results -->

Results -->

 

A simple Weekly-Event Calendar A Service to locate Shops, Hotels etc.

Results -->  

Results -->

 

Here as example a basic Dpdl-script implementing a Phone-Book on a Mobile Phone --> the PDA version may look slightly different due to the possibility to scale up the search results by just altering the numer in the CHUNK definition.

 NOTE: For Dpdl-scripts, you may probably want to use a C++ Syntax Highlighter
------------------- Author: Armin Costa

  Dpdl -  EXAMPLE:  Public Phone-Book


call(dpdlInterpreter)
::module dpdl_PHONEBOOK
::module_SPEC 23452
::model 836
::dpdlVersion 1.0

OPTIONS {
      TARGET = MOBILE_PHONE & PDA
      KVM = 1.0
      ZIP = true
      CHECKSUM = true
      SIGNATURE = true
      ENCRYPTION(RSA) = true
}

#defineDpdlEncoding UTF-8
#defineDpdlDecoding UTF-8

#defineDB phone_bz | 129.124.89.2 | root root

#defineSQL query_ SELECT * FROM PHONE_BZ

#defineCSS-StyleSheet phoneB_css phone_display.css

import extern SystemData;
import virtual DATA none {
    class BolzanoPhone volatile phoneB_css {
             MAP::string const name;
             MAP::string using phoneNR;
             MAP::string using e-mail;
            #defineGUI Default <Brunico_PhoneBook> <please_enter_name_and_surname_here:>
      }
}
#defineD BolzanoPhone src phone_bz SQL query_ {
        CHUNK entry [6];
        entry.content { name , phoneNR , e-mail }
        entry.name TAG(0xef) const (string) = 20;
        entry.phoneNR TAG(0xefe) (string) = 15;
        entry.e-mail TAG(0xefee) (string) = 30;
}

 

Dpdl -  EXAMPLE:  searchable Train- , Bus-Schedules


call(dpdlInterpreter)
::module dpdl_TRAIN_BUS
::module_SPEC 34565
::model 836
::dpdlVersion 1.0

OPTIONS {
     TARGET = MOBILE_PHONE & PDA
     KVM = 1.0
     ZIP = true
    CHECKSUM = true
    SIGNATURE = true
    ENCRYPTION(RSA) = true
}

#defineDpdlEncoding UTF-8
#defineDpdlDecoding UTF-8

#defineDB db_bz | 129.124.89.2 | root root

#defineSQL query_Trains SELECT * FROM BZ_Train
#defineSQL query_Buses SELECT * FROM BZ_Buses
#defineSQL query_stops SELECT * FROM BZ_stops

#defineDpdlService service_ID Http 129.283.48.3 7903

#defineCSS-StyleSheet train_css train_display.css

import extern SystemData;

/*
virtual User Data-Space --> Data can be combined easily with Maps or System Data
**/
import virtual DATA none {
     class Train volatile train_css {
         DATA::string const target;
         DATA::string using trains;
         #defineGUI List ONCE target #defineSUBGui subselection_1

     }
     class Bus {
          DATA::string const target;
          DATA::string using busses;
          #defineGUI Menu ONCE target
     }
}
#defineD Train src db_bz SQL query_Trains {
       template (byte) subselection_1 src service_ID
       CHUNK entry [1];
       entry.content { target , trains }
       entry.target TAG(0xef) const (string) = 30;
       entry.trains TAG(0xefe) (string) = 200;
       entry.reservation_form TAG(0x99f) (class) for(CANVAS) __stdcall(visualize());
}
#defineD Bus src db_bz SQL query_Buses {
      CHUNK entry [1];
      entry.content { target , busses }
      entry.target TAG(0xef) const (string) = 30;
      entry.busses TAG(0xefe) (string) = 120;
}

     /** Definition of a Second Record structure */
import virtual MAP BZ_city_map.mslsMap {
     class Bus_Stops {
         MAP::int const id;
         MAP::int x;
         MAP::int y;
     }

}
#defineD Bus_Stops src db_bz SQL query_stops {
       CHUNK entry [100];
       entry.content { id , routes }
       entry.id TAG(0xef) const (int) = 6;
       entry.routes TAG(0xefe) (string) = 80;
}

 



 

www.msls.biz
contact: info@msls.biz