WorkMan HVS - Protocol DIP

From WorkManSoft Wiki
Jump to navigationJump to search

About

History

In the late 90s Doro sold PBXes and developed the original specification of the Doro Index Protocol. When Doro's PBX-division was sold to Westcon this came with it. In the early 10s, Larsson Consulting, who developed HVS obtained ownership of the product to further improve it and bring it up to date. This protocol is now called DIP but is exactly the same as the original one. We have only added transport for TCP/IP in both client and servermode. RS232 is still supported.

Protocol

Transport

Hårdvara
Anslutningen till hotellservern sker via en full seriekabel (se koppling nedan). Serieporten är en standard 9 polig Dsub hane á la PC. Kommunikationen sker med 9600 Baud, 1 startbit, 8 databitar, 1 stopbit, ingen paritet, ingen handskakning.

 
Protokoll
Innan något paket kan skickas mellan hotellservern och hotellsystemet måste länken mellan dessa ha statusen ”alive”. När hotellservern har startat upp aktiverar den signalen DTR och RTS för att tala om för hotellsystemet att den är igång för kommunikation. Hotellsystemet är igång skall då svara på samma sätt (aktivera RTS och DTR).

För att hotellservern skall skicka något måste DCD, DSR och CTS vara aktiva samtidigt, alla tre signaler behandlas på samma sätt av mjukvaran. På samma sätt skall hotellsystemet göra.

Statusen ”alive” skall inte användas som någon form av handskakning utan enbart indikera att systemen är igång och beredda på att ta emot och skicka paket.

Är länken inte ”alive” skall hotellsystemet buffra information så att den kan skickas när länken blir ”alive” igen.

Formatet på alla paket oavsett riktning skall se ut på följande sätt.

STX	CMD	ARGS …	ETX 	CSUM (Hi)	CSUM (Lo)
1 byte	1 byte	?? bytes	1 byte	1 byte	1 byte

Paketet börjar med tecknet STX (start of text) följt av ett tecken vi kallar CMD (command). Detta tecken (CMD) anger vilken funktion som önskas och därmed hur argumenten (ARGS) skall tolkas. Möjliga tecken på CMD finns i tabellen längre fram. ARGS längd varierar beroende på CMD. Paketet avslutas sedan med tecknet ETX följt av en checksumma (CSUM).

När ett paket är mottaget av mottagaren skall denna skicka en ACK eller NAK för att bekräfta att paket är mottaget korrekt eller inte. Får sändande sida svaret NAK skall paketet skickas en gång till, uteblir svaret ACK/NAK skall sändande skicka paketet igen efter 3 sekunder. Ett och samma paket får bara skickas 4 gånger, därefter skall det kasseras för att förhindra låsning. Om båda sidorna börjar skicka ett paket samtidigt kan det inträffa att en av sidorna har hunnit motta ett helt paket innan utgående paket är skickat. Bekräftelsen med ACK och NAK får då vänta till paketet är skickat klart. (ACK och NAK bekräftelse får inte skickas i ett paket).

Värdena på specialtecken i hexadecimal form.
STX = 02 h      ETX = 03 h      NAK = 15 h      ACK= 06 h

Checksumman CSUM (Hi) och CSUM (Lo) beräknas på fäljande sätt.
CSUM = STX + CMD + ARGS + ETX (Modulo 100 h)
CSUM (Hi) = Hexadecimal representation av de översta 4 bitarna i CSUM
CSUM (Lo) = Hexadecimal representation av de lägsta 4 bitarna i CSUM

Exempel av beräkning av ett paket där CMD är tecknet 3 och ARGS är två A.
CSUM = STX + ”3” + ”AA” + ETX = 02h+33h+41h+41h+ 03h mod 100h = BAh mod 100h
CSUM (Hi) = ”B” = 42h
CSUM (Lo) = ”A” = 41h

Paketet blir alltså;
Text		STX ”3” ”AA” ETX  ”B”  ”8”
Hexadecimalt	02 33 41 41 03 42 41

Exempel på annat paket;
Text		STX ”4” ”EEEE” ETX ”4” ”D”
Hexadecimalt	02 34 45 45 45 45 03 34 44
 
Applikationsprotokoll
De olika funktionerna som man kan skicka och ta emot från hotellservern finns i tabellen nedan. Observera att några skickas åt båda hållen.

CMD	Riktning	Funktion
I	Hotell   -> Server	Check In
O	Hotell   -> Server	Check Out
E	Hotell   -> Server	Extension
S	Hotell <-   Server	Room Status
P	Hotell <-   Server	Call Charge Posting
T	Hotell <-> Server	Time and date sync
H	Hotell <-   Server	Health

Nedan kommer en kort förklaring till de olika funktionerna och vilka argumenten är till dessa. Argument som inte fyller ut sina bytes skall paddas med mellanslag i slutet om inget annat anges.
Check In
Checkar in en gäst på rummet. Det är bara en gäst som kan vara incheckad samtidigt per rum. Vid incheckning sätts namnet på anknytningen till gästens namn, telefonen öppnas för utgående samtal.

CMD	ARGS …		
I	ROOM	LANGUAGE	NAME
1 byte	8 bytes	2 bytes	16 bytes

CMD		Bokstaven I
ROOM		Numret på rummet.
LANGUAGE	Språket som skall användas mot denna hotellgäst.
	DL	= Default Language (Språket väljs i hotellservern)
	EA	= English/American
	SW	= Swedish
	NO	= Norway
	DK	= Danish
	FI	= Finnish
	SP	= Spanish
	GE	= German
	FR	= French
	IT	= Italian
	AB	= Arabic
	JP	= Japanese
NAME		Namnet på hotellgästen.
Å=C5h Ä=C4h Ö=D6h Ü=DCh
å=E5h ä=E4h ö=F6h ü=FCh é=E9h è=E8h

Check Out
Checkar ut gästen från rummet. Telefonen låses för utgående samtal, namnet på anknytningen sätts till samma som rummets namn/nummer.

CMD	ARGS …
O	ROOM
1 byte	8 bytes

CMD		Bokstaven O
ROOM		Numret på rummet.
Extension
Låser eller låser upp anknytningen för utgående samtal.

CMD	ARGS …	
E	ROOM	STATUS
1 byte	8 bytes	1 byte

CMD		Bokstaven E
ROOM		Numret på rummet.
STATUS		Parameter som talar om om anknytningen får ringa externa samtal.
		L = Lock (Går inte att ringa)
		U = Unlock (Går att ringa)
Room Status
Meddelar att städerskan eller någon annan har rapporterat en statuskod från rummet.

CMD	ARGS …	
S	ROOM	STATUS
1 byte	8 bytes	1 byte

CMD		Bokstaven S
ROOM		Numret på rummet.
STATUS	Siffran (0-9) som inmatades av städerskan. Innebörden av siffran bestäms av hotellapplikationen. Exempel
1 = Dirty/Vacant	(DIV)
2 = Dirty/Occupied	(DIO)
3 = Clean/Vacant	(CLV)
4 = Clean/Occupied	(CLO)
5 = Inspected/Vacant	(ISV)
6 = Inspected/Occupied	(ISO)
7=?
8=?
9=?
 
== Call Charge Posting ==

Detta paket skickas så fort ett samtal avslutas. Paketet skickas oberoende om gästen är incheckad eller ej.

CMD	ARGS …						
P	ROOM	DATE	TIME	DURATION	DIALED	COST	TEXT
1 byte	8 bytes	8 bytes	6 bytes	6 bytes	20 bytes	6 bytes	16 bytes

CMD		Bokstaven P
ROOM		Numret på rummet.
DATE		Datum då samtalet påbörjades. Format YYYYMMDD
TIME		Klockslag då samtalet påbörjades. Format HHMMSS
DURATION		Längden på samtalet i sekunder.
(12 sekunder skickas som 000012)
DIALED		Numret som hotellgästen slog på telefonen.
COST	En statistisk beräknad kostand för samtalet i lägsta valuta. Fältet innehåller inga decimaltecken eller komma.
(123 kr och 50 öre skickas som 012350)
TEXT		Namnet på området som gästen ringde till.
 
Följande två paket skall förberedas i hotellsystemet så att dessa inte ställer till problem när de implementeras i hotellservern.

== Time and date sync (Ej implementerad ännu) ==

Detta paket används för att synkronisera hotellserverns klocka mot hotellsystemet. När hotellservern vill kontrollera sin klocka skickas ett ”Time and date sync” paket till hotellsystemet. Hotellsystemet skall då svara med ett ”Time and date sync paket” som hotellservern ställer sin klocka mot.
 
CMD	ARGS …	
T	DATE	TIME
1 byte	8 bytes	6 bytes

CMD		Bokstaven T
DATE	Aktuellt datum från hotellserver resp hotellsystem.
Format YYYYMMDD
TIME	Aktuellt klockslag från hotellserver resp hotellsystem.
Format HHMMSS
Health (Ej implementerad ännu)
Paketet skickas till hotellsystemet så fort hälsan/statusen på hotellservern ändras samt minst var 5’e minut. Om hotellsystemet inte får detta paket skall hotellsystemet påkalla hjälp om att kommunikationen mellan hotellsystemet och hotellservern inte fungerar. Paketet används för att detektera felaktigheter i systemet.

CMD	ARGS …
H	STATUS
1 byte	1 byte

CMD		Bokstaven H
STATUS		Statusen på hotellserven.
0 = Allt är ok	 (Skickas var 5’e minut när allt är OK)
1 = Fel typ 1
2 = Fel typ 2
.
9 = Fel typ 9