WorkMan HVS - Protocol DIP
From WorkManSoft Wiki
Jump to navigationJump to searchContents
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