/*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun,4)*/ package GSM /* CIF CurrentPage 1 */ /* CIF TEXT (84, 301), (1181, 1294) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* SDL MODEL OVERVIEW ----------------- This model represents a simplified GSM network. WHAT HAS BEEN MODELED --------------------- - user PIN code verification, - mobile IMEI checking in the EIR database (prevents using a stolen mobile), - user authentication: the AUC sends a random number to the mobile, who encrypts it and sends it back to the AUC who checks the result. - when a mobile moves from one cell to another, the HLR and VLR databases are updated. - when a mobile is called, the routing information is given by the HLR and VLR databases. - during simulation, any mobile can move to any cell. Remark: 'init' signals have been used because for the moment the SDL context parameters are not supported in the SDL simulator. WHAT HAS NOT BEEN MODELED ------------------------ - low-level protocols (physical, link, network etc. layers), - connection to the switched or ISDN telephone network, - the numerous logical channels used between a mobile phone and the base stations: Traffic CHannel, Synchronization CHannel, Broadcast Control CHannel, Standalone Dedicated Control CHannel, Access Grant CHannel, Random Access CHannel, Pagina CHannel, - supplementary services, - power management on the mobile phone, - speech and data encryption, - SIM card creation and unlocking, - called ringer heared in the caller phone. */ /* CIF End Text */ /* CIF TEXT (83, 102), (468, 90) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Copyright Verilog 1997 */ /* CIF End Text */ /* CIF TEXT (1340, 304), (1142, 1287) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* GLOSSARY -------- - AuthentCenter (AUC): AUthentication Center. - BaseStationCtlr (BSC): Base Station Controller.ter. - BaseTxStation (BTS): Base Transceiver Station. - EquipIdRegister (EIR): Equipment Identity Register. - GSM: Global System for Mobile communications. - HomeLocRegister (HLR): Home Location Register. - IMEI: International Mobile Equipment Identity. - MobileSwitchCtr (MSC): Mobile Switching Center. - PIN: Personnal Identification Number. - VisitLocRegister (VLR): Visitor Location Register. BIBLIOGRAPHY ------------ Le radiotelephone cellulaire GSM, J.Tisal, Masson, Paris, 1995. */ /* CIF End Text */ /* CIF CurrentPage 2 */ /* CIF TEXT (34, 74), (1097, 1788) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* PIN user code: */; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun(DefinitionPage),119(195,20))*/ newtype PIN_t literals unknown, pin_a, pin_b, pin_c, pin_d; endnewtype; /* Mobile Switch ID: */ newtype MSC_ID_t literals Paris, Lyon; endnewtype; /* Base Station Controller ID: */ newtype BSC_ID_t literals Paris1, Lyon1; endnewtype; /* Base Transceiver Station ID: */ newtype BTS_ID_t literals Paris11, Paris12, Lyon11, Lyon12; endnewtype; /* Mobile users ID: */ newtype Mobile_ID_t literals Nobody, Marie, John, pizza, parispizza, lyonpizza; endnewtype; /* Mobile phone identity: */ newtype IMEI_t literals IMEI1, IMEI2, IMEI3, IMEI4; endnewtype; /* Call rejection reason: */ newtype reason_t literals ok, not_allowed, invalid_ph_nr, abnormal; endnewtype; /* call failure reason */ newtype called_state_t literals called_ok, called_busy, called_unreachable; endnewtype; newtype billing_storage struct called Mobile_ID_t; duration NATURAL; price REAL; endnewtype; syntype indice = NATURAL default 0 constants 0 : 15 endsyntype; newtype billing_report_elt ARRAY( indice, billing_storage); endnewtype; newtype billing_report_t struct nb_com indice; bil billing_report_elt; endnewtype; /* CIF End Text */ /* CIF TEXT (1158, 69), (1741, 1775) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ signal initMSC(MSC_ID_t), initBSC(BSC_ID_t), initBTS(BTS_ID_t), initMS(BTS_ID_t, Mobile_ID_t, IMEI_t); /* init signals to replace by context parameters when available in the tool: */ signal answer_call, askReport, authentResp(BOOLEAN), badPIN, BTSchanging(BTS_ID_t), BTSresp(BOOLEAN, BTS_ID_t), busy, call_conf(called_state_t /* status */, Mobile_ID_t /* called */, BTS_ID_t) /* to a mobile */, call_ind(Mobile_ID_t, Mobile_ID_t /* called */, BTS_ID_t) /* to a mobile */, call_reject(reason_t, Mobile_ID_t, BTS_ID_T) /* to a mobile */, call_req(Mobile_ID_t /* calling */, Mobile_ID_t, /* called *//* from a mobile */ BTS_ID_t /* Proxy addition */), call_resp(called_state_t /* status */, Mobile_ID_t /* calling */, Mobile_ID_t, /* called *//* from a mobile */ BTS_ID_t), /* Proxy addition */ checkIMEI(IMEI_t), com_start(Mobile_ID_t, BTS_ID_t), /* Proxy addition */ com_finish(Mobile_ID_t, Mobile_id_t, BTS_ID_t), /* Proxy addition */ convers, dialing(Mobile_ID_t), disable, encryptedNr(NATURAL, BTS_ID_t /* Proxy addition */), endUpdHLR, endUpdVLR, getBTS(Mobile_ID_t), getPhoneNumber(Mobile_ID_t), getMSC(Mobile_ID_t), getReport(Mobile_ID_t, BTS_ID_t), /* Proxy addition */ giveReport(billing_report_t, Mobile_ID_t, BTS_ID_t), DBgiveReport(billing_report_t, Mobile_ID_t), IMEI_OK(BOOLEAN), initGUI(Mobile_ID_t), initSCM(BSC_ID_t), initSM(MSC_ID_t), logOn(Mobile_ID_t, BTS_ID_t, IMEI_t), mobileLocation(MSC_ID_t, BTS_ID_t, reason_t), MSCresp(BOOLEAN, MSC_ID_t), offKey, on_hook, onKey, PIN(PIN_t), randomNr(NATURAL, Mobile_ID_t), /* Proxy addition */ rejected, report(Mobile_ID_t /* caller */, NATURAL) /* time */, ring, searchMobile(Mobile_ID_t), sendShortcut(Mobile_ID_t), startAuthent, unlock, unreachable, updateHLR(Mobile_ID_t, MSC_ID_t, BOOLEAN), updateVLR(Mobile_ID_t, BTS_ID_t); /* CIF End Text */ /* CIF CurrentPage 3 */ /* CIF TEXT (1324, 59), (1203, 2115) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* alphabetical order: */ signallist keys = answer_call, askReport, BTSchanging, dialing, offKey, on_hook, onKey, PIN; signallist MSCtoAUC = encryptedNr, startAuthent; signallist MSCtoBilling = com_start, com_finish, getReport; signallist MSCtoBC = call_conf, call_ind, call_reject, giveReport, initBSC, randomNr; signallist MSCtoDB = checkIMEI, com_start, com_finish, encryptedNr, getMSC, getReport, startAuthent, updateHLR; signallist MSCtoEIR = checkIMEI; signallist MSCtoHLR = getMSC, updateHLR; signallist MSCtoVLR = getBTS, updateVLR; signallist MStoMS = BTSresp, call_conf, call_ind, getBTS, giveReport; signallist MtoB = encryptedNr, call_req, call_resp, com_start, com_finish, getReport, logOn; signallist VLRtoMSC = BTSresp, endUpdVLR, getBTS; /* CIF End Text */ /* CIF TEXT (37, 49), (1256, 2110) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Alphabetical order. */ signallist AUCtoMSC = authentResp, randomNr; signallist BCtoBTS = call_conf, call_ind, call_reject, giveReport, initBTS, randomNr; signallist BCtoMSC = encryptedNr, call_req, call_resp, com_start, com_finish, getReport, logOn; signallist BtoM = call_conf, call_ind, call_reject, giveReport, initMS, randomNr; signallist BTStoBC = encryptedNr, call_req, call_resp, com_start, com_finish, getReport, logOn, randomNr; signallist DBtoMSC = authentResp, initMSC, IMEI_OK, endUpdHLR, DBgiveReport, MSCresp, randomNr; signallist DBtoMSCtrl = authentResp, initMSC, IMEI_OK, endUpdHLR, DBgiveReport, randomNr; signallist displ = badPIN, disable, initGUI, rejected, ring, unlock, convers, busy, unreachable, giveReport; signallist EIRtoMSC = initMSC, IMEI_OK; signallist HLRtoMSC = endUpdHLR, MSCresp; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF BlockType (907, 87), (257, 152) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* CIF Page DefaultPartition (2970, 2100) */ /* CIF Frame (32, 150), (2453, 1336) */ /* CIF Keep Specific Geode TextMode 0 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun(DefinitionPage),122(320,30))*/ block type DataBases referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun(DefinitionPage),125(320,55))*/ block type MobileSwitchCtr referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun(DefinitionPage),128(320,80))*/ block type BaseStationCtlr referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun(DefinitionPage),131(320,105))*/ block type BaseTxStation referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun(DefinitionPage),134(320,130))*/ block type MobileStation referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun(DefinitionPage),140(320,155))*/ block type MSBTSProxy referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\GSM.sun,4)*/ endpackage GSM; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt,4)*/ block type DataBases /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt,1)*/ ; /* CIF CurrentPage 1 */ /* CIF GATE (849, 150), (849, 50) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode TextMode 6 Siglist1 */ /* CIF Keep Specific Geode TextMode 6 Siglist2 */ /* CIF Keep Specific Geode Modified */ /* CIF TextPosition (757, 86) */ /* CIF TextPosition (869, 103) SignalList1 */ /* CIF TextPosition (869, 48) SignalList2 */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),215(43,10))*/ gate /*#E*/ MSC1 out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),216(20,3))*/ (DBtoMSC); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),217(20,11))*/ (MSCtoDB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),218(86,10))*/ gate /*#E*/ MSC2 out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),219(62,3))*/ (DBtoMSC); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),220(62,11))*/ (MSCtoDB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),176(257,80))*/ signalroute /*#E*/ MSC2HLR from env via MSC2 to HomeLocRegister with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),177(220,87))*/ (MSCtoHLR); from HomeLocRegister to env via MSC2 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),178(306,87))*/ (HLRtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),143(257,92))*/ signalroute /*#E*/ MSC1HLR from env via MSC1 to HomeLocRegister with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),144(220,100))*/ (MSCtoHLR); from HomeLocRegister to env via MSC1 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),145(306,100))*/ (HLRtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),155(282,115))*/ signalroute /*#E*/ MSC1AUC from env via MSC1 to AuthentCenter with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),156(260,122))*/ (MSCtoAUC); from AuthentCenter to env via MSC1 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),157(320,122))*/ (AUCtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),164(282,130))*/ signalroute /*#E*/ MSC2AUC from AuthentCenter to env via MSC2 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),165(320,137))*/ (AUCtoMSC); from env via MSC2 to AuthentCenter with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),166(260,137))*/ (MSCtoAUC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),131(47,155))*/ signalroute /*#E*/ MSC2EIR from EquipIdRegister to env via MSC2 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),132(36,162))*/ (EIRtoMSC); from env via MSC2 to EquipIdRegister with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),133(73,162))*/ (MSCtoEIR); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),122(47,167))*/ signalroute /*#E*/ MSC1EIR from env via MSC1 to EquipIdRegister with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),123(73,175))*/ (MSCtoEIR); from EquipIdRegister to env via MSC1 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),124(36,175))*/ (EIRtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),209(297,197))*/ signalroute /*#E*/ MSC2Billing from env via MSC2 to BillingManager with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),210(288,205))*/ (MSCtoBilling); from BillingManager to env via MSC2 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),211(321,205))*/ DBgiveReport; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),185(297,210))*/ signalroute /*#E*/ MSC1Billing from env via MSC1 to BillingManager with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),186(288,217))*/ (MSCtoBilling); from BillingManager to env via MSC1 with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),187(321,217))*/ DBgiveReport; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),194(160,230))*/ signalroute /*#E*/ BillingLine from BillingManager to Billing with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),195(173,237))*/ com_start, com_finish; from Billing to BillingManager with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),196(201,232))*/ report; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),149(127,72))*/ process HomeLocRegister (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),161(185,110))*/ process AuthentCenter (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),128(92,150))*/ process EquipIdRegister (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),191(185,190))*/ process BillingManager (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt(1),203(127,230))*/ process Billing (0, 4) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\DataBases.sbt,4)*/ endblock type DataBases; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr,4)*/ process HomeLocRegister /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (114, 900), (1273, 496) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(DefinitionPage),119(5,50))*/ newtype HR_element_t struct empty BOOLEAN; MSC_id MSC_ID_t; /* last mobile switch where the mobile was. */ IMEI_OK BOOLEAN; /* if FALSE, mobile not allowed (stolen ...). */ endnewtype; newtype HomeRegister_t ARRAY( mobile_ID_t, HR_element_t); endnewtype; dcl MSC_id MSC_ID_t, mobile_id mobile_ID_t, IMEIstatus BOOLEAN, HomeRegister HomeRegister_t; /* CIF End Text */ /* CIF TEXT (89, 120), (447, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Home Location Register */ /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (264, 200), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(1),122(35,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(1),128(35,45))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),131(35,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),137(35,45))*/ input /*#E*/ updateHLR (mobile_id, MSC_id, IMEIstatus) /* CIF TASK (655, 420), (555, 58) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),143(35,70))*/ task /*#E*/ HomeRegister(mobile_id)!empty := FALSE /* CIF TASK (620, 508), (624, 56) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),149(35,90))*/ task /*#E*/ HomeRegister(mobile_id)!MSC_id := MSC_id /* CIF TASK (620, 594), (624, 56) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),155(35,110))*/ task /*#E*/ HomeRegister(mobile_id)!IMEI_OK := IMEIstatus /* CIF OUTPUT (828, 680), (207, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),161(35,130))*/ output /*#E*/ endUpdHLR to sender /* CIF NEXTSTATE (853, 790), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),167(35,145))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(2),131(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),170(25,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),176(25,40))*/ input /*#E*/ getMSC (mobile_id /* CIF COMMENT (1801, 277), (162, 109) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'Get the home switch of the mobile.' /* CIF DECISION (1409, 403), (545, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),182(25,85))*/ decision /*#E*/ HomeRegister(mobile_id)!empty; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),185(87,102))*/ (FALSE /* CIF OUTPUT (1264, 617), (475, 101) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),188(20,120))*/ output /*#E*/ MSCresp (TRUE, HomeRegister( mobile_id) !MSC_id) to sender /* CIF ANSWER (1810, 537), (106, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),197(122,95))*/ (TRUE /* CIF OUTPUT (1775, 617), (176, 90) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),200(110,120))*/ output /*#E*/ MSCresp (FALSE) to sender /* CIF COMMENT (1971, 623), (101, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'MSC not found.' ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),182(25,85))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),194(65,165))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr(3),170(25,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\HomeLocRegister.spr,4)*/ endprocess HomeLocRegister; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr,4)*/ process AuthentCenter /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (70, 120), (423, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Authentication Center */ /* CIF End Text */ /* CIF TEXT (70, 914), (1495, 517) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(DefinitionPage),119(5,80))*/ newtype A3_encryption_t operators A3_encrypt : NATURAL, NATURAL -> NATURAL; operator A3_encrypt; fpar n NATURAL, key NATURAL; returns NATURAL; referenced; endnewtype; dcl rand NATURAL := 7, Kp NATURAL := 3 /* Secret key associated to a user, normally commes from the HLR. */, resp NATURAL, expected NATURAL; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (70, 200), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(1),125(40,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(1),131(40,45))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(2),134(35,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(2),140(35,45))*/ input /*#E*/ startAuthent /* CIF OUTPUT (267, 409), ( 250, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(2),146(35,70))*/ output /*#E*/ randomNr (rand) to sender /* CIF TASK (171, 513), (443, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(2),152(35,85))*/ task /*#E*/ expected := A3_encrypt(rand, Kp) /* CIF NEXTSTATE (280, 623), (224, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(2),158(35,105))*/ nextstate /*#E*/ waitMobileResp; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(2),134(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),161(15,30))*/ state /*#E*/ waitMobileResp; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),167(15,45))*/ input /*#E*/ encryptedNr (resp /* CIF COMMENT (1069, 273), (245, 165) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'resp was computed by the mobile, using Kp and A3_encrypt also present in the SIM smart card.' /* CIF DECISION (818, 422), (246, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),173(15,100))*/ decision /*#E*/ resp = expected; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),188(27,115))*/ (FALSE /* CIF OUTPUT (953, 634), (234, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),191(15,140))*/ output /*#E*/ authentResp (FALSE) to sender ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),176(107,107))*/ (TRUE /* CIF OUTPUT (720, 632), (213, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),179(95,140))*/ output /*#E*/ authentResp (TRUE) to sender /* CIF ANSWER (1003, 552), (132, 52) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),173(15,100))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),185(95,170))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr(3),161(15,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\AuthentCenter.spr,4)*/ endprocess AuthentCenter; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt.sop,4)*/ operator A3_encrypt /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt.sop,1)*/ ; fpar n NATURAL, key NATURAL; returns NATURAL; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt.sop(1),119(35,20))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt.sop(1),125(40,50))*/ return /*#E*/ (n * key) + 7; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt.sop,4)*/ endoperator A3_encrypt; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr,4)*/ process EquipIdRegister /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (70, 1007), (551, 199) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(DefinitionPage),119(5,50))*/ dcl IMEI IMEI_t; /* CIF End Text */ /* CIF TEXT (70, 120), (480, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Equipment Identity Register */ /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (99, 200), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(1),122(35,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(1),128(35,45))*/ output /*#E*/ initMSC (Paris) via MSC1EIR /* CIF OUTPUT (72, 420), (213, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(1),134(35,65))*/ output /*#E*/ initMSC (Lyon) via MSC2EIR /* CIF NEXTSTATE (99, 530), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(1),140(35,80))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(2),143(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(2),149(30,45))*/ input /*#E*/ checkIMEI (IMEI) /* CIF OUTPUT (565, 420), (176, 97) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(2),155(30,65))*/ output /*#E*/ IMEI_OK (TRUE) to sender /* CIF NEXTSTATE (573, 547), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(2),161(30,80))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr(2),143(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\EquipIdRegister.spr,4)*/ endprocess EquipIdRegister; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr,4)*/ process BillingManager /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (70, 1090), (1273, 670) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(DefinitionPage),119(5,50))*/ newtype billing_register_t ARRAY( Mobile_ID_t, billing_report_t); endnewtype; newtype billing_PID_t ARRAY( Mobile_ID_t, PID); endnewtype; dcl billing_PIDs billing_PID_t, mobile_id, correspondant, tmp mobile_ID_t, bil_register billing_register_t, time NATURAL; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (202, 120), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(1),122(35,25))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(1),128(35,40))*/ task /*#E*/ bil_register(Marie)!nb_com := 0 /* CIF TASK (75, 380), (453, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(1),134(35,60))*/ task /*#E*/ bil_register(John)!nb_com := 0 /* CIF TASK (75, 490), (453, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(1),140(35,80))*/ task /*#E*/ bil_register(parispizza)!nb_com := 0 /* CIF TASK (75, 601), (453, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(1),146(35,100))*/ task /*#E*/ bil_register(lyonpizza)!nb_com := 0 /* CIF NEXTSTATE (200, 711), (205, 88) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(1),152(35,120))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),155(50,15))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),191(50,30))*/ input /*#E*/ com_finish (mobile_id, correspondant) /* CIF DECISION (1336, 410), (547, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),197(50,50))*/ decision /*#E*/ billing_PIDs(mobile_id) = NULL; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),212(82,52))*/ (TRUE /* CIF DECISION (1579, 680), (626, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),215(50,70))*/ decision /*#E*/ billing_PIDs(correspondant) = NULL; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),218(117,77))*/ (FALSE /* CIF TASK (1514, 950), (403, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),221(105,95))*/ task /*#E*/ tmp := mobile_id /* CIF TASK (1514, 1057), (403, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),227(105,115))*/ task /*#E*/ Mobile_id := correspondant /* CIF TASK (1514, 1164), (403, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),233(105,135))*/ task /*#E*/ correspondant := tmp /* CIF OUTPUT (1484, 1271), (464, 111) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),239(105,155))*/ output /*#E*/ com_finish to billing_PIDs(mobile_id) /* CIF NEXTSTATE (1616, 1412), (200, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),245(105,170))*/ nextstate /*#E*/ waitReport; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),248(57,85))*/ (TRUE /* CIF NEXTSTATE (1968, 950), (200, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),251(50,115))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),215(50,70))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),200(-22,65))*/ (FALSE /* CIF OUTPUT (1095, 680), (464, 111) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),203(5,155))*/ output /*#E*/ com_finish to billing_PIDs(mobile_id) /* CIF NEXTSTATE (1227, 821), (200, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),209(5,170))*/ nextstate /*#E*/ waitReport; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),197(50,50))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(2),155(50,15))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),272(30,20))*/ state /*#E*/ waitReport; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),320(30,35))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),278(55,35))*/ input /*#E*/ report (mobile_id, time) /* CIF TASK (2690, 360), (1096, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),284(55,55))*/ task /*#E*/ bil_register(mobile_id)!bil(bil_register(mobile_id)!nb_com)!called := correspondant /* CIF TASK (2690, 470), (1096, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),290(55,75))*/ task /*#E*/ bil_register(mobile_id)!bil(bil_register(mobile_id)!nb_com)!duration := time /* CIF TASK (2690, 580), (1096, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),296(55,95))*/ task /*#E*/ bil_register(mobile_id)!bil(bil_register(mobile_id)!nb_com)!price := Float(time) * 0.017 /* CIF TASK (2746, 690), (984, 72) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),302(55,115))*/ task /*#E*/ bil_register(mobile_id)!nb_com := bil_register(mobile_id)!nb_com + 1 /* CIF TASK (2991, 792), (493, 69) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),308(55,135))*/ task /*#E*/ billing_PIDs(mobile_id) := NULL /* CIF NEXTSTATE (3160, 891), (154, 86) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),314(55,155))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(3),272(30,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(4),488(40,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(4),161(40,50))*/ input /*#E*/ com_start (mobile_id) /* CIF CREATE (740, 411), (222, 91) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(4),167(40,65))*/ create /*#E*/ Billing /* CIF TASK (605, 532), (493, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(4),173(40,80))*/ task /*#E*/ billing_PIDs(mobile_id) := offspring /* CIF OUTPUT (628, 665), (447, 88) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(4),179(40,100))*/ output /*#E*/ com_start (mobile_id) to Billing_PIDs(mobile_id) /* CIF NEXTSTATE (768, 783), (166, 86) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(4),185(40,115))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(4),488(40,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(5),515(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(5),257(30,45))*/ input /*#E*/ getReport (mobile_id) /* CIF OUTPUT (1996, 410), (656, 82) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(5),263(30,65))*/ output /*#E*/ DBgiveReport (bil_register(mobile_id), mobile_id) to sender /* CIF NEXTSTATE (2225, 522), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(5),269(30,90))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr(5),515(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BillingManager.spr,4)*/ endprocess BillingManager; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr,4)*/ process Billing /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr,1)*/ (0, 4); /* CIF CurrentPage 1 */ /* CIF TEXT (75, 921), (427, 207) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(DefinitionPage),119(5,50))*/ dcl mobile_id Mobile_ID_t, i INTEGER; timer count; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (72, 120), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(1),122(35,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(1),128(35,45))*/ task /*#E*/ i := 0 /* CIF NEXTSTATE (70, 420), (205, 88) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(1),134(35,65))*/ nextstate /*#E*/ wait_start; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(2),137(35,35))*/ state /*#E*/ wait_start; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(2),143(35,50))*/ input /*#E*/ com_start (mobile_id) /* CIF SET (441, 365), (278, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(2),149(35,70))*/ /*#E*/ set(now + 1, count) /* CIF NEXTSTATE (470, 498), (222, 94) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(2),155(35,85))*/ nextstate /*#E*/ waitTimer; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(2),137(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(3),158(35,25))*/ state /*#E*/ waitTimer; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(3),188(35,40))*/ input /*#E*/ count /* CIF TASK (1265, 388), ( 200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(3),194(35,70))*/ task /*#E*/ i := i + 1 /* CIF SET (1226, 538), (278, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(3),200(35,95))*/ /*#E*/ set(now + 1, count) /* CIF NEXTSTATE (1265, 671), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(3),206(35,110))*/ nextstate /*#E*/ waitTimer; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(3),158(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(4),299(35,35))*/ state /*#E*/ waitTimer; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(4),164(35,50))*/ input /*#E*/ com_finish /* CIF OUTPUT (888, 388), ( 341, 88) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(4),170(35,80))*/ output /*#E*/ report (mobile_id, i) /* CIF RESET (959, 506), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(4),176(35,100))*/ /*#E*/ reset(count) /* CIF STOP (959, 656), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(4),182(40,115))*/ stop /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr(4),299(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Billing.spr,4)*/ endprocess Billing; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt,4)*/ block type MobileSwitchCtr /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt,1)*/ ; /* CIF CurrentPage 1 */ /* CIF GATE (2385, 619), (2485, 619) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode TextMode 0 Siglist1 */ /* CIF Keep Specific Geode TextMode 0 Siglist2 */ /* CIF Keep Specific Geode Modified */ /* CIF TextPosition (2422, 509) */ /* CIF TextPosition (2414, 726) SignalList1 */ /* CIF TextPosition (2395, 654) SignalList2 */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),200(39,10))*/ gate /*#E*/ MSx out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),201(17,3))*/ (MStoMS); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),202(17,11))*/ (MStoMS); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),203(76,10))*/ gate /*#E*/ DBx out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),204(53,3))*/ (MSCtoDB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),205(53,11))*/ (DBtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),206(113,10))*/ gate /*#E*/ BCx out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),207(90,3))*/ (MSCtoBC); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),208(90,11))*/ (BCtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),131(50,80))*/ signalroute /*#E*/ BC from MSCtrl to env via BCx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),132(33,87))*/ (MSCtoBC); from env via BCx to MSCtrl with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),133(71,87))*/ (BCtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),140(192,88))*/ signalroute /*#E*/ SVLR from MSCtrl to VisitLocRegister with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),141(216,97))*/ (MSCtoVLR); from VisitLocRegister to MSCtrl with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),142(178,95))*/ (VLRtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),122(50,92))*/ signalroute /*#E*/ MS from env via MSx to MSCtrl with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),123(71,100))*/ (MStoMS); from MSCtrl to env via MSx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),124(33,100))*/ (MStoMS); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),155(50,107))*/ signalroute /*#E*/ DB from env via DBx to MSCtrl with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),156(71,115))*/ (DBtoMSCtrl); from MSCtrl to env via DBx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),157(33,115))*/ (MSCtoDB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),182(145,138))*/ signalroute /*#E*/ SMMSC from search_Mobile to MSCtrl with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),183(117,127))*/ MobileLocation; from MSCtrl to search_Mobile with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),184(110,150))*/ initSM, searchMobile; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),173(190,130))*/ signalroute /*#E*/ SMVLR from search_Mobile to VisitLocRegister with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),174(221,123))*/ getBTS; from VisitLocRegister to search_Mobile with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),175(190,149))*/ BTSresp; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),191(47,167))*/ signalroute /*#E*/ SMDB from search_Mobile to env via DBx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),192(33,175))*/ getMSC; from env via DBx to search_Mobile with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),193(71,175))*/ MSCresp; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),164(47,180))*/ signalroute /*#E*/ SMMS from env via MSx to search_Mobile with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),165(71,187))*/ BTSresp; from search_Mobile to env via MSx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),166(33,187))*/ getBTS; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),128(90,75))*/ process MSCtrl (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),149(235,77))*/ process VisitLocRegister (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt(1),170(90,162))*/ process search_Mobile (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSwitchCtr.sbt,4)*/ endblock type MobileSwitchCtr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr,4)*/ process MSCtrl /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (83, 1411), (899, 457) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(DefinitionPage),119(5,50))*/ dcl called_status called_state_t, me MSC_ID_t, bil_report billing_report_t, mobile_id, caller, called, c mobile_ID_t, BTS_id, calledBTS BTS_ID_t, IMEI IMEI_t, IMEIstatus BOOLEAN, rand NATURAL, resp NATURAL, authentOK BOOLEAN, calledMSC MSC_ID_t, BTSfound BOOLEAN, reason reason_t, prpid PID; /* CIF End Text */ /* CIF TEXT (70, 120), (316, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Mobile Switch */ /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (422, 207), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(1),122(40,25))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(1),128(40,40))*/ nextstate /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(2),131(40,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(2),137(40,40))*/ input /*#E*/ logOn (mobile_id, BTS_id, IMEI) /* CIF OUTPUT (1004, 339), (240, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(2),143(40,70))*/ output /*#E*/ checkIMEI (IMEI) /* CIF NEXTSTATE (1044, 443), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(2),149(40,85))*/ nextstate /*#E*/ waitCheck; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(2),131(40,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),152(15,40))*/ state /*#E*/ waitUpdHLR; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),188(15,55))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),158(40,55))*/ input /*#E*/ endUpdHLR /* CIF DECISION (1515, 337), ( 220, 65) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),164(40,85))*/ decision /*#E*/ IMEIstatus; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),167(107,92))*/ (TRUE /* CIF OUTPUT (1451, 513), (165, 109) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),170(95,115))*/ output /*#E*/ updateVLR (mobile_id, BTS_id) /* CIF NEXTSTATE (1448, 652), (170, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),176(95,140))*/ nextstate /*#E*/ waitUpdVLR; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),179(52,97))*/ (FALSE /* CIF NEXTSTATE (1636, 513), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),182(40,140))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),164(40,85))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(3),152(15,40))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(4),191(35,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(4),221(35,40))*/ input /*#E*/ call_resp (called_status, caller, called) /* CIF OUTPUT (3369, 359), (335, 94) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(4),227(35,70))*/ output /*#E*/ searchMobile (called) /* CIF NEXTSTATE (3457, 484), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(4),233(35,85))*/ nextstate /*#E*/ waitsm1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(4),191(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(5),236(30,35))*/ state /*#E*/ waitEncryptedNr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(5),260(30,50))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(5),242(55,50))*/ input /*#E*/ encryptedNr (resp) /* CIF OUTPUT (4510, 346), (272, 66) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(5),248(55,70))*/ output /*#E*/ encryptedNr (resp) via DB /* CIF COMMENT (4794, 351), (91, 56) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'To AUC' /* CIF NEXTSTATE (4550, 442), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(5),254(55,85))*/ nextstate /*#E*/ waitAuthent; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(5),236(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(6),263(35,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(6),269(35,40))*/ input /*#E*/ getBTS (c /* CIF COMMENT (6183, 217), (184, 141) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'Another switch looks for the BTS containing the mobile c.' /* CIF TASK (5988, 359), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(6),275(35,85))*/ task /*#E*/ prpid := sender /* CIF OUTPUT (5992, 509), (192, 98) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(6),281(35,105))*/ output /*#E*/ getBTS (c) via SVLR /* CIF COMMENT (6199, 521), (138, 74) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'Transmit to my VLR..' /* CIF NEXTSTATE (5958, 637), (261, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(6),287(35,120))*/ nextstate /*#E*/ waitBTSotherMSC; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(6),263(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(7),290(40,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(7),314(40,45))*/ input /*#E*/ call_conf (called_status, called, calledBTS /* CIF COMMENT (7378, 223), (84, 85) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'From other switch.' /* CIF OUTPUT (6920, 347), (431, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(7),320(40,100))*/ output /*#E*/ call_conf (called_status, called, calledBTS) via BC /* CIF COMMENT (7372, 358), (82, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'To my BSC.' /* CIF NEXTSTATE (7057, 475), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(7),326(40,140))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(7),290(40,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(8),383(35,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(8),407(35,45))*/ input /*#E*/ DBgiveReport (bil_report, caller) /* CIF OUTPUT (6972, 1014), (335, 94) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(8),413(35,70))*/ output /*#E*/ searchMobile (caller) /* CIF NEXTSTATE (7059, 1138), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(8),419(35,85))*/ nextstate /*#E*/ waitsm3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(8),383(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),422(15,35))*/ state /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),428(15,50))*/ input /*#E*/ initMSC (me) /* CIF OUTPUT (374, 515), (256, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),434(15,75))*/ output /*#E*/ initSM (me) via SMMSC /* CIF DECISION (419, 645), (166, 55) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),440(15,95))*/ decision /*#E*/ me; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),455(27,107))*/ (Lyon /* CIF OUTPUT (513, 818), (160, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),458(15,135))*/ output /*#E*/ initBSC (Lyon1) ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),443(102,102))*/ (Paris /* CIF OUTPUT (333, 816), (160, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),446(90,135))*/ output /*#E*/ initBSC (Paris1) /* CIF ANSWER (542, 736), (101, 52) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),440(15,95))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),452(90,150))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(9),422(15,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(10),464(25,30))*/ state /*#E*/ waitCheck; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(10),488(25,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(10),470(50,45))*/ input /*#E*/ IMEI_OK (IMEIstatus) /* CIF OUTPUT (843, 682), (341, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(10),476(50,65))*/ output /*#E*/ updateHLR (mobile_id, me, IMEIstatus) /* CIF NEXTSTATE (927, 786), (176, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(10),482(50,85))*/ nextstate /*#E*/ waitUpdHLR; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(10),464(25,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(11),491(25,35))*/ state /*#E*/ waitUpdVLR; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(11),509(25,50))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(11),497(50,50))*/ input /*#E*/ endUpdVLR /* CIF NEXTSTATE (1341, 870), ( 160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(11),503(50,75))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(11),491(25,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(12),512(25,30))*/ state /*#E*/ waitRandom; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(12),536(25,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(12),518(50,45))*/ input /*#E*/ randomNr (rand) /* CIF OUTPUT (1935, 787), (245, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(12),524(50,65))*/ output /*#E*/ randomNr (rand) via BC /* CIF COMMENT (2200, 792), (87, 76) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'To the mobile.' /* CIF NEXTSTATE (1946, 899), (224, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(12),530(50,95))*/ nextstate /*#E*/ waitEncryptedNr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(12),512(25,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(13),539(35,35))*/ state /*#E*/ waitsm1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(13),596(35,50))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(13),539(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),599(35,20))*/ state /*#E*/ waitAuthent; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),641(35,35))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),605(60,35))*/ input /*#E*/ authentResp (authentOK) /* CIF DECISION (4432, 709), (214, 84) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),611(60,55))*/ decision /*#E*/ authentOK; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),626(92,60))*/ (TRUE /* CIF OUTPUT (4834, 903), (335, 94) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),629(80,75))*/ output /*#E*/ searchMobile (called) /* CIF NEXTSTATE (4921, 1027), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),635(80,90))*/ nextstate /*#E*/ waitsm2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),614(7,65))*/ (FALSE /* CIF OUTPUT (4022, 928), (208, 93) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),617(15,115))*/ output /*#E*/ call_reject (not_allowed) via BC /* CIF NEXTSTATE (4046, 1051), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),623(15,130))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),611(60,55))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(14),599(35,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(15),644(30,20))*/ state /*#E*/ waitBTSotherMSC; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(15),668(30,35))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(15),650(55,35))*/ input /*#E*/ BTSresp (BTSfound, calledBTS /* CIF COMMENT (6015, 755), (137, 101) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'Response from my VLR.' /* CIF OUTPUT (5707, 892), (376, 90) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(15),656(55,80))*/ output /*#E*/ BTSresp (BTSfound, calledBTS) to prpid /* CIF COMMENT (6097, 867), (141, 130) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'Transmit response to the other switch.' /* CIF NEXTSTATE (5816, 1027), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(15),662(55,125))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(15),644(30,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(16),671(35,30))*/ state /*#E*/ waitsm3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(16),728(35,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(16),671(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(17),731(35,30))*/ state /*#E*/ waitsm2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(17),788(35,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(17),731(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(18),1199(35,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(18),197(35,45))*/ input /*#E*/ call_req (caller, called) /* CIF TASK (2123, 331), (245, 106) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(18),203(35,70))*/ task /*#E*/ 'Here begins the authentication of the mobile' /* CIF OUTPUT (2152, 468), (186, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(18),209(35,100))*/ output /*#E*/ startAuthent /* CIF NEXTSTATE (2157, 572), ( 176, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(18),215(35,125))*/ nextstate /*#E*/ waitRandom; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(18),1199(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(19),1238(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(19),350(30,45))*/ input /*#E*/ com_finish (caller, called) /* CIF OUTPUT (7870, 340), (284, 108) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(19),356(30,70))*/ output /*#E*/ com_finish (caller, called) via DB /* CIF NEXTSTATE (7906, 479), (211, 86) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(19),362(30,95))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(19),1238(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(20),1253(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(20),389(30,45))*/ input /*#E*/ getReport (caller) /* CIF OUTPUT (6584, 1002), (318, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(20),395(30,65))*/ output /*#E*/ getReport (caller) via DB /* CIF NEXTSTATE (6661, 1132), (166, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(20),401(30,80))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(20),1253(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),1325(10,30))*/ state /*#E*/ waitsm1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),545(10,45))*/ input /*#E*/ mobileLocation (calledMSC, calledBTS, reason) /* CIF DECISION (3174, 716), (220, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),551(10,70))*/ decision /*#E*/ reason; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),554(117,65))*/ (ok /* CIF DECISION (2860, 986), (257, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),557(105,85))*/ decision /*#E*/ calledMSC = me; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),572(117,97))*/ (FALSE /* CIF OUTPUT (2921, 1198), (538, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),575(105,120))*/ output /*#E*/ call_conf (called_status, called, calledBTS) via MS ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),560(192,92))*/ (TRUE /* CIF OUTPUT (2403, 1198), (498, 114) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),563(180,120))*/ output /*#E*/ call_conf (called_status, called, calledBTS) via BC /* CIF ANSWER (3129, 1118), (122, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),557(105,85))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),569(180,160))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),581(22,82))*/ else /* CIF OUTPUT (3423, 986), (312, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),584(10,100))*/ output /*#E*/ call_reject (reason) via BC /* CIF NEXTSTATE (3479, 1099), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),590(10,115))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),551(10,70))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(21),1325(10,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),1382(10,30))*/ state /*#E*/ waitsm3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),677(10,45))*/ input /*#E*/ mobileLocation (calledMSC, calledBTS, reason) /* CIF DECISION (6777, 1370), (220, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),683(10,70))*/ decision /*#E*/ reason; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),686(117,65))*/ (ok /* CIF DECISION (6463, 1640), (257, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),689(105,85))*/ decision /*#E*/ calledMSC = me; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),704(117,95))*/ (FALSE /* CIF OUTPUT (6560, 1852), (352, 101) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),707(105,115))*/ output /*#E*/ giveReport (bil_report, caller, calledBTS) via MS ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),692(192,92))*/ (TRUE /* CIF OUTPUT (6159, 1852), (380, 101) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),695(180,115))*/ output /*#E*/ giveReport (bil_report, caller, calledBTS) via BC /* CIF ANSWER (6674, 1772), (122, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),689(105,85))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),701(180,150))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),713(22,82))*/ else /* CIF OUTPUT (7026, 1640), (312, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),716(10,100))*/ output /*#E*/ call_reject (reason) via BC /* CIF NEXTSTATE (7082, 1753), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),722(10,115))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),683(10,70))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(22),1382(10,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),1406(5,30))*/ state /*#E*/ waitsm2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),737(5,45))*/ input /*#E*/ mobileLocation (calledMSC, calledBTS, reason) /* CIF DECISION (4639, 1259), (220, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),743(5,70))*/ decision /*#E*/ reason; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),746(112,65))*/ (ok /* CIF DECISION (4325, 1529), (257, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),749(100,85))*/ decision /*#E*/ calledMSC = me; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),764(112,97))*/ (FALSE /* CIF OUTPUT (4422, 1741), (352, 101) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),767(100,115))*/ output /*#E*/ call_ind (caller, called, calledBTS) via MS ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),752(187,92))*/ (TRUE /* CIF OUTPUT (4021, 1741), (380, 101) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),755(175,115))*/ output /*#E*/ call_ind (caller, called, calledBTS) via BC /* CIF ANSWER (4536, 1661), (122, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),749(100,85))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),761(175,155))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),773(17,82))*/ else /* CIF OUTPUT (4888, 1529), (312, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),776(5,135))*/ output /*#E*/ call_reject (reason) via BC /* CIF NEXTSTATE (4944, 1642), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),782(5,150))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),743(5,70))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(23),1406(5,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(24),1433(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(24),296(30,45))*/ input /*#E*/ call_ind (caller, called, calledBTS /* CIF COMMENT (6794, 225), (90, 103) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'From other switch.' /* CIF OUTPUT (6393, 351), (391, 98) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(24),302(30,95))*/ output /*#E*/ call_ind (caller, called, calledBTS) via BC /* CIF COMMENT (6805, 362), (82, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'To my BSC.' /* CIF NEXTSTATE (6510, 480), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(24),308(30,135))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(24),1433(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(25),1496(30,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(25),368(30,50))*/ input /*#E*/ giveReport (bil_report, called, calledBTS) /* CIF OUTPUT (8182, 337), (589, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(25),374(30,75))*/ output /*#E*/ giveReport (bil_report, called, calledBTS) via BC /* CIF NEXTSTATE (8377, 465), (200, 86) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(25),380(30,105))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(25),1496(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(26),1511(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(26),332(30,45))*/ input /*#E*/ com_start (caller) /* CIF OUTPUT (7540, 342), (250, 94) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(26),338(30,65))*/ output /*#E*/ com_start (caller) via DB /* CIF NEXTSTATE (7588, 466), (154, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(26),344(30,80))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr(26),1511(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSCtrl.spr,4)*/ endprocess MSCtrl; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr,4)*/ process VisitLocRegister /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (70, 120), (447, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Visitor Location Register */ /* CIF End Text */ /* CIF TEXT (70, 927), (1273, 508) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(DefinitionPage),119(5,80))*/ newtype VR_element_t struct empty BOOLEAN; BTS_id BTS_ID_t; /* last BTS (cell) where the mobile was. */ endnewtype; newtype VisitorRegister_t ARRAY( mobile_ID_t, VR_element_t); default (. (. TRUE, Paris11 .) .); /* no effect if put in the STRUCT. */ endnewtype; dcl mobile_id mobile_ID_t, BTS_id BTS_ID_t, VisitRegister VisitorRegister_t; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (70, 200), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(1),122(35,25))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(1),128(35,40))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(2),131(30,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(2),137(30,40))*/ input /*#E*/ updateVLR (mobile_id, BTS_id) /* CIF TASK (268, 422), (555, 58) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(2),143(30,60))*/ task /*#E*/ VisitRegister(mobile_id)!empty := FALSE /* CIF TASK (268, 511), (555, 58) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(2),149(30,80))*/ task /*#E*/ VisitRegister(mobile_id)!BTS_id := BTS_id /* CIF OUTPUT (457, 600), (176, 77) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(2),155(30,100))*/ output /*#E*/ endUpdVLR /* CIF NEXTSTATE (465, 707), ( 160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(2),161(30,125))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(2),131(30,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),164(30,20))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),170(30,35))*/ input /*#E*/ getBTS (mobile_id /* CIF COMMENT (1435, 291), (143, 114) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'Get the cell containing the mobile.' /* CIF DECISION (1040, 419), (545, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),176(30,70))*/ decision /*#E*/ VisitRegister(mobile_id)!empty; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),179(30,85))*/ (FALSE /* CIF OUTPUT (891, 633), (475, 139) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),182(15,130))*/ output /*#E*/ BTSresp (TRUE, VisitRegister( mobile_id) !BTS_id) to sender /* CIF ANSWER (1443, 553), (106, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),191(127,85))*/ (TRUE /* CIF OUTPUT (1386, 633), (220, 136) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),194(115,130))*/ output /*#E*/ BTSresp (FALSE) to sender /* CIF COMMENT (1627, 633), (101, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'BTS not found.' ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),176(30,70))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),188(70,150))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr(3),164(30,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\VisitLocRegister.spr,4)*/ endprocess VisitLocRegister; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr,4)*/ process search_Mobile /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (70, 1100), (608, 208) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(DefinitionPage),119(5,50))*/ dcl myMSC MSC_ID_t, mobile_id Mobile_ID_t, called_MSC MSC_ID_t, called_BTS BTS_ID_t, MSCfd, BTSfd BOOLEAN; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (120, 120), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(1),122(35,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(1),128(35,45))*/ nextstate /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(2),131(30,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(2),137(30,50))*/ input /*#E*/ searchMobile (mobile_id) /* CIF OUTPUT (505, 405), (266, 102) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(2),143(30,70))*/ output /*#E*/ getMSC (mobile_id) via SMDB /* CIF COMMENT (781, 378), (168, 133) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'Search in the HLR in which switch is the called mobile.' /* CIF NEXTSTATE (558, 541), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(2),149(30,105))*/ nextstate /*#E*/ waitMSC; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(2),131(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),152(25,25))*/ state /*#E*/ waitMSC; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),158(25,40))*/ input /*#E*/ MSCresp (MSCfd, called_MSC) /* CIF DECISION (1499, 366), (220, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),164(25,60))*/ decision /*#E*/ MSCfd; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),167(127,57))*/ (FALSE /* CIF OUTPUT (969, 559), (657, 105) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),380(120,75))*/ join /*#E*/ waitMSC_3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),179(52,72))*/ (TRUE /* CIF DECISION (1687, 588), (257, 133) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),182(25,80))*/ decision /*#E*/ called_MSC = myMSC; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),197(27,95))*/ (FALSE /* CIF OUTPUT (1875, 833), (186, 98) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),200(15,115))*/ output /*#E*/ getBTS (mobile_id) via SMMS /* CIF COMMENT (2071, 826), (160, 103) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'Ask to the VLR in the other switch.' ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),185(112,95))*/ (TRUE /* CIF OUTPUT (1543, 832), (208, 98) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),188(100,145))*/ output /*#E*/ getBTS (mobile_id) via SMVLR /* CIF ANSWER (1907, 751), (122, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),182(25,80))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),194(15,160))*/ nextstate /*#E*/ waitBTS; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),164(25,60))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),152(25,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),374(75,170))*/ connection /*#E*/ waitMSC_3: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),170(70,185))*/ output /*#E*/ mobileLocation (called_MSC, called_BTS, invalid_ph_nr) via SMMSC /* CIF NEXTSTATE (1197, 694), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),176(70,215))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(3),374(75,170))*/ endconnection waitMSC_3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),206(35,15))*/ state /*#E*/ waitBTS; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),212(35,30))*/ input /*#E*/ BTSresp (BTSfd, called_BTS /* CIF COMMENT (3040, 228), (162, 106) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'From my VLR or from other switch.' /* CIF DECISION (2808, 365), (220, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),218(35,70))*/ decision /*#E*/ BTSfd; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),221(17,85))*/ (FALSE /* CIF OUTPUT (2251, 555), (657, 105) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),224(5,110))*/ output /*#E*/ mobileLocation (called_MSC, called_BTS, abnormal) via SMMSC /* CIF NEXTSTATE (2479, 690), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),230(5,140))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),233(107,85))*/ (TRUE /* CIF OUTPUT (2928, 555), (657, 105) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),236(95,110))*/ output /*#E*/ mobileLocation (called_MSC, called_BTS, ok) via SMMSC /* CIF NEXTSTATE (3156, 690), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),242(95,140))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),218(35,70))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(4),206(35,15))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(5),245(35,30))*/ state /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(5),251(35,45))*/ input /*#E*/ initSM (myMSC) /* CIF NEXTSTATE (120, 533), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(5),257(35,60))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr(5),245(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\search_Mobile.spr,4)*/ endprocess search_Mobile; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt,4)*/ block type BaseStationCtlr /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt,1)*/ ; /* CIF CurrentPage 1 */ /* CIF GATE (1167, 116), (1167, 16) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode TextMode 6 Siglist1 */ /* CIF Keep Specific Geode TextMode 6 Siglist2 */ /* CIF Keep Specific Geode Modified */ /* CIF TextPosition (1089, 66) */ /* CIF TextPosition (1185, 76) SignalList1 */ /* CIF TextPosition (1187, 24) SignalList2 */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),161(40,10))*/ gate /*#E*/ BTS1x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),162(17,3))*/ (BCtoBTS); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),163(17,11))*/ (BTStoBC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),164(82,10))*/ gate /*#E*/ MSx out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),165(58,3))*/ (BCtoMSC); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),166(58,11))*/ (MSCtoBC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),167(118,10))*/ gate /*#E*/ BTS2x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),168(95,3))*/ (BCtoBTS); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),169(95,11))*/ (BTStoBC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),155(192,87))*/ signalroute /*#E*/ BTS2 from env via BTS2x to BSC with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),156(179,95))*/ (BTStoBC); from BSC to env via BTS2x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),157(205,95))*/ (BCtoBTS); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),146(192,100))*/ signalroute /*#E*/ BTS1 from env via BTS1x to BSC with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),147(179,107))*/ (BTStoBC); from BSC to env via BTS1x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),148(205,107))*/ (BCtoBTS); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),122(195,112))*/ signalroute /*#E*/ MS from env via MSx to BSC with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),123(179,120))*/ (MSCtoBC); from BSC to env via MSx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),124(205,120))*/ (BCtoMSC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),131(132,150))*/ signalroute /*#E*/ BSCSCM from BSC to ShortcutsManager with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),132(95,160))*/ sendShortCut, initSCM; from ShortcutsManager to BSC with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),133(105,140))*/ getPhoneNumber; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),128(90,77))*/ process BSC referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt(1),140(90,172))*/ process ShortcutsManager referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseStationCtlr.sbt,4)*/ endblock type BaseStationCtlr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr,4)*/ process BSC; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(DefinitionPage),119(5,35))*/ newtype BTS_PIDs_t ARRAY( BTS_ID_t, PID); endnewtype; dcl BSC_id BSC_ID_t, BTS_id BTS_ID_t, IMEI IMEI_t, mobile_id, caller, called mobile_ID_t, rand NATURAL, resp NATURAL, BTS_PID PID, BTS_PIDs BTS_PIDs_t, calledBTS BTS_ID_t, called_status called_state_t, reason reason_t, bil_report billing_report_t; /* CIF End Text */ /* CIF TEXT (505, 120), (447, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Base Station Controller */ /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (242, 120), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(1),122(35,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(1),128(35,45))*/ nextstate /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(2),131(35,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(2),137(35,45))*/ input /*#E*/ logOn (mobile_id, BTS_id, IMEI) /* CIF TASK (585, 409), (314, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(2),143(35,65))*/ task /*#E*/ BTS_PIDs(BTS_id) := sender /* CIF OUTPUT (590, 519), (303, 76) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(2),149(35,85))*/ output /*#E*/ logOn (mobile_id, BTS_id, IMEI) via MS /* CIF NEXTSTATE (663, 625), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(2),155(35,115))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(2),131(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(3),158(40,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(3),164(40,50))*/ input /*#E*/ call_req (caller, called) /* CIF TASK (1086, 329), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(3),170(40,70))*/ task /*#E*/ BTS_PID := sender /* CIF COMMENT (1260, 329), (178, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'To respond to the sender BTS.' /* CIF OUTPUT (983, 439), (363, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(3),176(40,105))*/ output /*#E*/ sendShortcut (called) via BSCSCM /* CIF NEXTSTATE (1021, 567), (288, 79) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(3),182(40,120))*/ nextstate /*#E*/ waitPhoneNumber; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(3),158(40,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(4),185(25,30))*/ state /*#E*/ waitRandom; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(4),209(25,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(4),191(50,45))*/ input /*#E*/ randomNr (rand) /* CIF OUTPUT (2154, 336), (239, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(4),197(50,60))*/ output /*#E*/ randomNr (rand) to BTS_PID /* CIF NEXTSTATE (2159, 446), (229, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(4),203(50,75))*/ nextstate /*#E*/ waitEncryptedNr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(4),185(25,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(5),212(35,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(5),236(35,50))*/ input /*#E*/ call_conf (called_status, called, calledBTS) /* CIF OUTPUT (1593, 1440), (468, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(5),242(35,70))*/ output /*#E*/ call_conf (called_status, called) to BTS_PIDs( calledBTS) /* CIF NEXTSTATE (1747, 1567), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(5),248(35,100))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(5),212(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(6),323(35,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(6),347(35,45))*/ input /*#E*/ giveReport (bil_report, called, calledBTS) /* CIF OUTPUT (3097, 887), (448, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(6),353(35,65))*/ output /*#E*/ giveReport (bil_report, called) to BTS_PIDs( calledBTS) /* CIF NEXTSTATE (3250, 1015), (143, 72) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(6),359(35,95))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(6),323(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(7),362(35,35))*/ state /*#E*/ waitPhoneNumber; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(7),386(35,50))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(7),368(60,50))*/ input /*#E*/ getPhoneNumber (called) /* CIF OUTPUT (1547, 380), (298, 76) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(7),374(60,65))*/ output /*#E*/ call_req (caller, called) via MS /* CIF NEXTSTATE (1608, 486), (176, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(7),380(60,90))*/ nextstate /*#E*/ waitRandom; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(7),362(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),389(15,25))*/ state /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),395(15,40))*/ input /*#E*/ initBSC (BSC_id) /* CIF DECISION (212, 450), (220, 66) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),401(15,60))*/ decision /*#E*/ BSC_id; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),428(27,72))*/ (Lyon1 /* CIF OUTPUT (324, 626), (234, 72) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),431(15,110))*/ output /*#E*/ initBTS (Lyon11) via BTS1 /* CIF OUTPUT (324, 728), (234, 72) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),437(15,135))*/ output /*#E*/ initBTS (Lyon12) via BTS2 ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),404(117,72))*/ (Paris1 /* CIF OUTPUT (70, 626), (234, 72) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),407(105,110))*/ output /*#E*/ initBTS (Paris11) via BTS1 /* CIF OUTPUT (70, 728), (234, 72) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),413(105,135))*/ output /*#E*/ initBTS (Paris12) via BTS2 /* CIF ANSWER (391, 546), (101, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),401(15,60))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),419(105,170))*/ output /*#E*/ initSCM (BSC_id) via BSCSCM /* CIF NEXTSTATE (242, 966), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),425(105,185))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(8),389(15,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(9),443(30,30))*/ state /*#E*/ waitEncryptedNr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(9),467(30,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(9),449(55,45))*/ input /*#E*/ encryptedNr (resp) /* CIF OUTPUT (2039, 675), (291, 63) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(9),455(55,60))*/ output /*#E*/ encryptedNr (resp) via MS /* CIF NEXTSTATE (2090, 768), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(9),461(55,75))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(9),443(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(10),743(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(10),272(30,45))*/ input /*#E*/ com_start (caller) /* CIF OUTPUT (2619, 1438), (324, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(10),278(30,60))*/ output /*#E*/ com_start (caller) via MS /* CIF NEXTSTATE (2703, 1551), (154, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(10),284(30,75))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(10),743(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(11),758(30,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(11),329(30,40))*/ input /*#E*/ getReport (caller) /* CIF OUTPUT (2658, 882), (318, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(11),335(30,55))*/ output /*#E*/ getReport (caller) via MS /* CIF NEXTSTATE (2737, 995), (160, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(11),341(30,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(11),758(30,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(12),818(30,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(12),308(30,40))*/ input /*#E*/ call_reject (reason) /* CIF OUTPUT (3307, 1442), (284, 85) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(12),314(30,55))*/ output /*#E*/ call_reject (reason) to BTS_PID /* CIF NEXTSTATE (3353, 1557), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(12),320(30,70))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(12),818(30,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(13),845(30,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(13),254(30,40))*/ input /*#E*/ call_resp (called_status, caller, called) /* CIF OUTPUT (2084, 1448), (515, 73) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(13),260(30,60))*/ output /*#E*/ call_resp (called_status, caller, called) via MS /* CIF NEXTSTATE (2261, 1551), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(13),266(30,90))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(13),845(30,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(14),860(30,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(14),218(30,40))*/ input /*#E*/ call_ind (caller, called, calledBTS) /* CIF OUTPUT (1184, 1440), (389, 87) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(14),224(30,60))*/ output /*#E*/ call_ind (caller, called) to BTS_PIDs( calledBTS) /* CIF NEXTSTATE (1299, 1557), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(14),230(30,90))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(14),860(30,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(15),875(30,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(15),290(30,40))*/ input /*#E*/ com_finish (caller, called) /* CIF OUTPUT (2963, 1438), (324, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(15),296(30,60))*/ output /*#E*/ com_finish (caller, called) via MS /* CIF NEXTSTATE (3047, 1551), (154, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(15),302(30,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr(15),875(30,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BSC.spr,4)*/ endprocess BSC; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr,4)*/ process ShortcutsManager; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(DefinitionPage),119(5,35))*/ newtype shortcuts_t ARRAY( indice, Mobile_ID_t); endnewtype; newtype shortcut_corres_t ARRAY( Mobile_ID_t, Mobile_ID_t); endnewtype; dcl me BSC_ID_t, mobile_id Mobile_ID_t, shortcuts shortcuts_t, nb_shortcuts, i integer, shortcut_corres shortcut_corres_t; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (120, 120), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(1),122(25,5))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(1),128(25,20))*/ nextstate /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(2),131(25,5))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(2),137(25,20))*/ input /*#E*/ sendShortcut (mobile_id) /* CIF TASK (1339, 400), (194, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(2),143(25,35))*/ task /*#E*/ i := 1 /* CIF NEXTSTATE (1335, 513), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(2),149(25,55))*/ nextstate /*#E*/ findShortcut; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(2),131(25,5))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),152(25,5))*/ state /*#E*/ findShortcut; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),158(25,20))*/ provided /*#E*/ TRUE /* CIF DECISION (2427, 403), (434, 147) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),164(25,40))*/ decision /*#E*/ mobile_id = shortcuts(i); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),179(37,52))*/ (FALSE /* CIF DECISION (2755, 670), (293, 144) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),182(25,55))*/ decision /*#E*/ i = nb_shortcuts; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),197(37,67))*/ (FALSE /* CIF TASK (2993, 934), (154, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),200(25,70))*/ task /*#E*/ i := i + 1 /* CIF NEXTSTATE (2971, 1042), (200, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),206(25,90))*/ nextstate /*#E*/ findShortcut; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),185(12,70))*/ (TRUE /* CIF OUTPUT (2514, 934), (436, 94) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),188(5,120))*/ output /*#E*/ getPhoneNumber (mobile_id) /* CIF NEXTSTATE (2632, 1059), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),194(5,135))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),182(25,55))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),167(50,120))*/ (TRUE /* CIF OUTPUT (1733, 670), (696, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),170(100,120))*/ output /*#E*/ getPhoneNumber (shortcut_corres(mobile_id)) /* CIF NEXTSTATE (1982, 803), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),176(100,135))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),164(25,40))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(3),152(25,5))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),209(25,5))*/ state /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),215(25,20))*/ input /*#E*/ initSCM (me) /* CIF TASK (463, 394), (262, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),221(25,35))*/ task /*#E*/ nb_shortcuts := 1 /* CIF TASK (443, 502), (301, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),227(25,55))*/ task /*#E*/ shortcuts(1) := pizza /* CIF DECISION (521, 607), (146, 116) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),233(25,75))*/ decision /*#E*/ me; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),248(37,87))*/ (paris1 /* CIF TASK (594, 848), (555, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),251(25,90))*/ task /*#E*/ shortcut_corres(pizza) := parispizza ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),236(50,90))*/ (lyon1 /* CIF TASK (70, 846), (493, 100) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),239(30,135))*/ task /*#E*/ shortcut_corres(pizza) := lyonpizza /* CIF ANSWER (797, 758), (150, 60) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),233(25,75))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),245(30,155))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr(4),209(25,5))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\ShortcutsManager.spr,4)*/ endprocess ShortcutsManager; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt,4)*/ block type BaseTxStation /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt,1)*/ ; /* CIF CurrentPage 1 */ /* CIF GATE (185, 489), (85, 489) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode TextMode 2 Siglist1 */ /* CIF Keep Specific Geode TextMode 2 Siglist2 */ /* CIF Keep Specific Geode Modified */ /* CIF TextPosition (115, 448) */ /* CIF TextPosition (91, 412) SignalList1 */ /* CIF TextPosition (20, 512) SignalList2 */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),167(40,10))*/ gate /*#E*/ BCx out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),168(17,3))*/ (BTStoBC); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),169(17,11))*/ (BCtoBTS); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),170(70,10))*/ gate /*#E*/ MS1x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),171(53,3))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),172(53,11))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),173(103,10))*/ gate /*#E*/ MS2x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),174(86,3))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),175(86,11))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),176(137,10))*/ gate /*#E*/ MS3x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),177(120,3))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),178(120,11))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),179(170,10))*/ gate /*#E*/ MS4x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),180(153,3))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),181(153,11))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),161(150,117))*/ signalroute /*#E*/ MS1 from env via MS1x to BTS with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),162(136,125))*/ (MtoB); from BTS to env via MS1x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),163(168,125))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),149(50,120))*/ signalroute /*#E*/ MS4 from BTS to env via MS4x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),150(33,127))*/ (BtoM); from env via MS4x to BTS with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),151(71,127))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),122(152,130))*/ signalroute /*#E*/ BC from env via BCx to BTS with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),123(136,137))*/ (BCtoBTS); from BTS to env via BCx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),124(163,137))*/ (BTStoBC); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),140(50,132))*/ signalroute /*#E*/ MS3 from BTS to env via MS3x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),141(33,140))*/ (BtoM); from env via MS3x to BTS with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),142(71,140))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),131(50,145))*/ signalroute /*#E*/ MS2 from BTS to env via MS2x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),132(33,152))*/ (BtoM); from env via MS2x to BTS with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),133(71,152))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt(1),128(90,110))*/ process BTS referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BaseTxStation.sbt,4)*/ endblock type BaseTxStation; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr,4)*/ process BTS; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(DefinitionPage),119(5,35))*/ newtype MS_PIDs_t ARRAY( Mobile_ID_t, PID); endnewtype; dcl BTS_id BTS_ID_t /* replaces context parameters. */, mobile_id Mobile_ID_t, x BTS_ID_t /* not used */, IMEI IMEI_t, caller, called Mobile_ID_t, MS_PID PID, MS1 Mobile_ID_t, BTS1 BTS_ID_t, MS_PIDs MS_PIDs_t, reason reason_t, called_status called_state_t, resp, rand natural, bil_report billing_report_t; /* CIF End Text */ /* CIF TEXT (70, 120), (447, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Base Transceiver Station */ /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (103, 200), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(1),122(35,25))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(1),128(35,40))*/ nextstate /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(2),131(35,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(2),137(35,40))*/ input /*#E*/ logOn (mobile_id, x, IMEI /* CIF COMMENT (832, 195), (207, 136) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'Note that the second parameter is not stored in BTS_id.' /* CIF TASK (523, 329), (314, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(2),143(35,95))*/ task /*#E*/ '' /* MS_PIDs(mobile_id) := sender */ /* CIF OUTPUT (531, 439), (298, 79) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(2),149(35,120))*/ output /*#E*/ logOn (mobile_id, BTS_id, IMEI) via BC /* CIF NEXTSTATE (601, 548), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(2),155(35,150))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(2),131(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(3),158(40,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(3),164(40,40))*/ input /*#E*/ call_req (caller, called, BTS1) /* CIF TASK (1137, 329), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(3),170(40,60))*/ task /*#E*/ /* MS_PID := sender */ MS1 := caller /* CIF COMMENT (1319, 318), (160, 135) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'To respond to this mobile during authentication.' /* CIF OUTPUT (1051, 484), (330, 76) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(3),176(40,105))*/ output /*#E*/ call_req (caller, called, ) via BC /* CIF NEXTSTATE (1128, 590), (176, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(3),182(40,135))*/ nextstate /*#E*/ waitRandom /* CIF COMMENT (1319, 579), (218, 106) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(3),158(40,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(4),185(35,35))*/ state /*#E*/ waitRandom; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(4),191(35,50))*/ input /*#E*/ randomNr (rand) /* CIF OUTPUT (1866, 337), (250, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(4),197(35,70))*/ output /*#E*/ randomNr (rand, MS1) /* to MS_PID */ /* CIF NEXTSTATE (1876, 447), (229, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(4),203(35,85))*/ nextstate /*#E*/ waitEncryptedNr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(4),185(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(5),206(35,45))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(5),230(35,60))*/ input /*#E*/ call_conf (called_status, called) /* CIF OUTPUT (1575, 1150), (466, 87) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(5),236(35,80))*/ output /*#E*/ call_conf (called_status, called) /* to MS_PIDs(called) */ /* CIF NEXTSTATE (1729, 1268), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(5),242(35,95))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(5),206(35,45))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(6),317(40,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(6),341(40,50))*/ input /*#E*/ giveReport (bil_report, called) /* CIF OUTPUT (3054, 354), (380, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(6),347(40,70))*/ output /*#E*/ giveReport (bil_report, called) /* to MS_PIDs(called) */ /* CIF NEXTSTATE (3166, 481), (154, 72) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(6),353(40,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(6),317(40,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),356(40,25))*/ state /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),362(40,40))*/ input /*#E*/ initBTS (BTS_id) /* CIF OUTPUT (75, 530), (215, 95) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),368(40,60))*/ output /*#E*/ initMS (BTS_id, Marie, IMEI1) via MS1 /* CIF OUTPUT (70, 730), (227, 97) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),374(40,90))*/ output /*#E*/ initMS (BTS_id, John, IMEI2) via MS2 /* CIF OUTPUT (70, 857), (227, 97) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),380(40,120))*/ output /*#E*/ initMS (BTS_id, parispizza, IMEI3) via MS3 /* CIF OUTPUT (70, 984), (227, 97) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),386(40,150))*/ output /*#E*/ initMS (BTS_id, lyonpizza, IMEI4) via MS4 /* CIF NEXTSTATE (103, 1111), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),392(40,180))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(7),356(40,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(8),395(30,35))*/ state /*#E*/ waitEncryptedNr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(8),419(30,50))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(8),401(55,50))*/ input /*#E*/ encryptedNr (resp, BTS1) /* CIF OUTPUT (1692, 672), (314, 66) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(8),407(55,70))*/ output /*#E*/ encryptedNr (resp) via BC /* CIF NEXTSTATE (1753, 769), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(8),413(55,85))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(8),395(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(9),668(30,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(9),266(30,50))*/ input /*#E*/ com_start (caller, BTS1) /* CIF OUTPUT (2621, 1152), (324, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(9),272(30,70))*/ output /*#E*/ com_start (caller) via BC /* CIF NEXTSTATE (2706, 1265), (154, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(9),278(30,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(9),668(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(10),683(35,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(10),323(35,45))*/ input /*#E*/ getReport (caller, BTS1) /* CIF OUTPUT (2651, 349), (312, 91) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(10),329(35,65))*/ output /*#E*/ getReport (caller) via BC /* CIF NEXTSTATE (2735, 471), (143, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(10),335(35,80))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(10),683(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(11),722(30,35))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(11),302(30,50))*/ input /*#E*/ call_reject (reason) /* CIF OUTPUT (3329, 1143), (284, 82) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(11),308(30,70))*/ output /*#E*/ call_reject (reason, MS1) /* to MS_PID */ /* CIF NEXTSTATE (3375, 1256), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(11),314(30,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(11),722(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(12),749(30,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(12),248(30,40))*/ input /*#E*/ call_resp (called_status, caller, called, BTS1) /* CIF OUTPUT (2061, 1151), (521, 78) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(12),254(30,70))*/ output /*#E*/ call_resp (called_status, caller, called) via BC /* CIF NEXTSTATE (2241, 1259), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(12),260(30,100))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(12),749(30,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(13),764(30,30))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(13),212(30,45))*/ input /*#E*/ call_ind (caller, called) /* CIF OUTPUT (1252, 1150), (303, 87) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(13),218(30,65))*/ output /*#E*/ call_ind (caller, called) /* to MS_PIDs(called) */ /* CIF NEXTSTATE (1323, 1267), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(13),224(30,80))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(13),764(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(14),779(35,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(14),284(35,40))*/ input /*#E*/ com_finish (caller, called, BTS1) /* CIF OUTPUT (2985, 1149), (324, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(14),290(35,65))*/ output /*#E*/ com_finish (caller, called) via BC /* CIF NEXTSTATE (3070, 1262), (154, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(14),296(35,90))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr(14),779(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\BTS.spr,4)*/ endprocess BTS; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt,4)*/ block type MobileStation /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt,1)*/ ; /* CIF CurrentPage 1 */ /* CIF GATE (206, 266), (106, 266) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode TextMode 2 Siglist1 */ /* CIF Keep Specific Geode TextMode 2 Siglist2 */ /* CIF Keep Specific Geode Modified */ /* CIF TextPosition (213, 222) */ /* CIF TextPosition (100, 212) SignalList1 */ /* CIF TextPosition (53, 291) SignalList2 */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),182(34,10))*/ gate /*#E*/ BTS1x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),183(17,3))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),184(17,11))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),185(69,10))*/ gate /*#E*/ BTS2x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),186(52,3))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),187(52,11))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),188(104,10))*/ gate /*#E*/ BTS3x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),189(87,3))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),190(87,11))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),191(139,10))*/ gate /*#E*/ BTS4x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),192(122,3))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),193(122,11))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),194(173,10))*/ gate /*#E*/ KBDx out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),195(157,3))*/ (displ); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),196(157,11))*/ (keys); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(DefinitionPage),179(20,95))*/ signal initSIM(PIN_t), checkPIN(PIN_t), PIN_OK(BOOLEAN); /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF SIGNALROUTE (206, 266) , (426, 266) , (426, 436) , (679, 436) */ /* CIF TextPosition (444, 440) */ /* CIF TextPosition (550, 451) SignalList1 */ /* CIF TextPosition (226, 286) SignalList2 */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode TextMode 2 Siglist1 */ /* CIF Keep Specific Geode TextMode 0 Siglist2 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),173(189,70))*/ signalroute /*#E*/ KBD from env via KBDx to MobileSt with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),174(179,77))*/ (keys); from MobileSt to env via KBDx with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),175(200,77))*/ (displ); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),164(189,82))*/ signalroute /*#E*/ BTS4 from env via BTS4x to MobileSt with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),165(179,90))*/ (BtoM); from MobileSt to env via BTS4x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),166(203,90))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),155(189,95))*/ signalroute /*#E*/ BTS3 from env via BTS3x to MobileSt with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),156(179,102))*/ (BtoM); from MobileSt to env via BTS3x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),157(203,102))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),146(189,107))*/ signalroute /*#E*/ BTS2 from env via BTS2x to MobileSt with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),147(179,115))*/ (BtoM); from MobileSt to env via BTS2x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),148(203,115))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),122(189,120))*/ signalroute /*#E*/ BTS1 from env via BTS1x to MobileSt with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),123(179,127))*/ (BtoM); from MobileSt to env via BTS1x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),124(203,127))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),131(132,151))*/ signalroute /*#E*/ ctrlSim from MobileSt to SIM with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),132(85,155))*/ initSIM, checkPIN, randomNr; from SIM to MobileSt with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),133(97,147))*/ PIN_OK, encryptedNr; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),128(80,55))*/ process MobileSt (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt(1),140(80,167))*/ process SIM (1, 1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileStation.sbt,4)*/ endblock type MobileStation; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr,4)*/ process MobileSt /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (886, 1316), (984, 440) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* To store the SDL PID of the Base Tx Stations. Necessary to send a signal to a given BTS. */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(DefinitionPage),119(90,10))*/ newtype BTS_PIDs_t ARRAY( BTS_ID_t, PID); endnewtype; dcl me Mobile_ID_t /* replaces context parameters.*/, IMEI IMEI_t /* replaces context parameters.*/, p PIN_T, status BOOLEAN, BTSreceived, BTS_ID BTS_ID_t, BTS_PIDs BTS_PIDs_t, false_pin natural, enabled BOOLEAN; /* CIF End Text */ /* CIF TEXT (70, 120), (303, 50) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Mobile Station */ /* CIF End Text */ /* CIF CurrentPage 2 */ /* CIF TEXT (98, 1063), (1449, 319) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ dcl caller, called, correspondant Mobile_ID_t, rand NATURAL, resp NATURAL, called_status called_state_t, reason reason_t, bil_report billing_report_t; /* CIF End Text */ /* CIF TEXT (1681, 1018), (854, 370) */ /* CIF Keep Specific Geode Font 'fixed' 'fixed' 'fixed'*/ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Nominal scenario: Mobile Mobile A B | | call_req --->| | (dialing) | |---> call_ind (ring) | | | |<--- call_resp (off hook) call_conf <---| | | | */ /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (527, 270), (170, 50) */ /* CIF Keep Specific Geode Color #000000 */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(1),122(60,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(1),128(60,50))*/ nextstate /*#E*/ waitInit1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(2),131(45,55))*/ state /*#E*/ powerOff /* CIF COMMENT (2400, 185), (200, 120) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(2),173(45,70))*/ input /*#E*/ call_ind (caller, called) /* CIF OUTPUT (2353, 454), (665, 81) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(2),179(45,85))*/ output /*#E*/ call_resp (called_unreachable, me, caller, BTSReceived) /* to BTS_PIDs( BTSreceived) */ /* CIF NEXTSTATE (2591, 565), (188, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(2),185(45,115))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(2),131(45,55))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),188(25,10))*/ state /*#E*/ waitCheckPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),194(25,25))*/ input /*#E*/ PIN_OK (status) /* CIF DECISION (3234, 471), (220, 69) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),200(25,40))*/ decision /*#E*/ status; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),245(47,62))*/ (TRUE /* CIF OUTPUT (3507, 658), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),248(25,55))*/ output /*#E*/ unlock /* CIF NEXTSTATE (3519, 808), ( 176, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),254(25,80))*/ nextstate /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),203(52,85))*/ (FALSE /* CIF OUTPUT (3089, 651), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),206(5,110))*/ output /*#E*/ badPIN /* CIF TASK (3019, 801), ( 341, 111) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),212(5,135))*/ task /*#E*/ false_pin := false_pin + 1 /* CIF DECISION (3080, 942), (220, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),218(5,155))*/ decision /*#E*/ false_pin < 3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),227(17,167))*/ (false /* CIF OUTPUT (3190, 1212), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),230(5,170))*/ output /*#E*/ disable /* CIF TASK (3165, 1362), ( 250, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),236(5,195))*/ task /*#E*/ enabled := false /* CIF NEXTSTATE (3173, 1469), (233, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),242(5,215))*/ nextstate /*#E*/ disabled; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),221(102,162))*/ (true /* CIF NEXTSTATE (3010, 1212), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),224(90,170))*/ nextstate /*#E*/ askPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),218(5,155))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),200(25,40))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(3),188(25,10))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(4),257(60,25))*/ state /*#E*/ askPIN, conversation, listening, powerOff, ringing, waitCallConf, waitCheckPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(4),263(60,40))*/ priority input /*#E*/ BTSchanging (BTSreceived) /* CIF TASK (3825, 394), (282, 138) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(4),269(60,55))*/ task /*#E*/ 'Now, this mobile receives from BTSreceived, until the next change of cell' /* CIF TASK (3825, 562), (282, 103) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(4),275(60,80))*/ task /*#E*/ 'Display level of the radio signal received from the BTS' /* CIF OUTPUT (3793, 695), (345, 152) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(4),281(60,100))*/ output /*#E*/ logOn (me, BTSreceived, IMEI) /* to BTS_PIDs( BTSreceived) */ /* CIF COMMENT (4147, 674), (213, 199) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ comment 'Tells where I am to ''BTSreceived''. Missing in the Tisal GSM book, but my phone does it.' /* CIF NEXTSTATE (3866, 903), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(4),287(60,160))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(4),257(60,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),290(50,25))*/ state /*#E*/ waitInit4; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),296(50,40))*/ input /*#E*/ initMS (BTS_ID) /* CIF TASK (1077, 370), (373, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),302(50,60))*/ task /*#E*/ '' /* BTS_PIDs(BTS_ID) := sender */ /* CIF OUTPUT (1141, 450), (245, 91) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),308(50,80))*/ output /*#E*/ initGUI (me) /* CIF OUTPUT (1091, 571), (345, 152) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),314(50,100))*/ output /*#E*/ logOn (me, Paris11, IMEI) /* to BTS_PIDs( Paris11) */ /* CIF TASK (1127, 753), (273, 91) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),320(50,135))*/ task /*#E*/ enabled := true /* CIF NEXTSTATE (1181, 874), (166, 65) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),326(50,155))*/ nextstate /*#E*/ powerOff; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(5),290(50,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(6),329(45,35))*/ state /*#E*/ disabled; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(6),347(45,50))*/ input /*#E*/ call_ind (caller) /* CIF OUTPUT (3924, 1381), (614, 92) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(6),353(45,70))*/ output /*#E*/ call_resp (called_unreachable, me, caller, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF NEXTSTATE (4137, 1503), (188, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(6),359(45,100))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(6),329(45,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),362(30,20))*/ state /*#E*/ waitInit1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),368(30,35))*/ input /*#E*/ initMS (BTS_ID, me, IMEI) /* CIF TASK (427, 528), (373, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),374(30,60))*/ task /*#E*/ '' /* BTS_PIDs(BTS_ID) := sender */ /* CIF DECISION (527, 608), (171, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),380(30,80))*/ decision /*#E*/ me; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),410(67,87))*/ (parispizza /* CIF TASK (580, 768), (143, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),1313(60,115))*/ join /*#E*/ waitInit1_2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),419(127,87))*/ (lyonpizza /* CIF TASK (763, 768), (143, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),1322(120,115))*/ join /*#E*/ waitInit1_3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),401(130,130))*/ (John /* CIF TASK (417, 768), (143, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),1304(165,115))*/ join /*#E*/ waitInit1_1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),383(2,110))*/ (Marie /* CIF TASK (254, 768), (143, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),386(30,155))*/ task /*#E*/ p := pin_a /* CIF ANSWER (432, 688), (113, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),380(30,80))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),1346(10,155))*/ waitInit1_4: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),392(30,175))*/ output /*#E*/ initSIM (p) /* CIF NEXTSTATE (530, 943), (166, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),398(30,190))*/ nextstate /*#E*/ waitInit2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(7),362(30,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(8),428(40,20))*/ state /*#E*/ askPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(8),452(40,35))*/ input /*#E*/ offKey /* CIF NEXTSTATE (2012, 1083), ( 154, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(8),458(40,60))*/ nextstate /*#E*/ powerOff; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(8),428(40,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(9),479(35,25))*/ state /*#E*/ waitInit2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(9),485(35,40))*/ input /*#E*/ initMS (BTS_ID) /* CIF TASK (427, 1103), (373, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(9),491(35,60))*/ task /*#E*/ '' /* BTS_PIDs(BTS_ID) := sender */ /* CIF NEXTSTATE (530, 1183), (166, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(9),497(35,80))*/ nextstate /*#E*/ waitInit3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(9),479(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(10),500(35,35))*/ state /*#E*/ waitInit3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(10),506(35,50))*/ input /*#E*/ initMS (BTS_ID) /* CIF TASK (427, 1343), (373, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(10),512(35,70))*/ task /*#E*/ '' /* BTS_PIDs(BTS_ID) := sender */ /* CIF NEXTSTATE (530, 1423), (166, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(10),518(35,90))*/ nextstate /*#E*/ waitInit4; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(10),500(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(11),521(40,30))*/ state /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(11),569(40,45))*/ input /*#E*/ call_ind (caller) /* CIF OUTPUT (844, 342), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(11),575(40,65))*/ output /*#E*/ ring /* CIF TASK (739, 452), ( 369, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(11),581(40,95))*/ task /*#E*/ correspondant := caller /* CIF NEXTSTATE (844, 579), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(11),587(40,115))*/ nextstate /*#E*/ ringing; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(11),521(40,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(12),638(25,30))*/ state /*#E*/ waitRandom; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(12),662(25,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(12),644(50,45))*/ input /*#E*/ randomNr (rand) /* CIF OUTPUT (2283, 372), (272, 82) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(12),650(50,65))*/ output /*#E*/ randomNr (rand) via ctrlSIM /* CIF NEXTSTATE (2323, 485), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(12),656(50,85))*/ nextstate /*#E*/ waitSIMresult; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(12),638(25,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(13),665(30,30))*/ state /*#E*/ waitSIMresult; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(13),689(30,45))*/ save /*#E*/ *; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(13),671(55,45))*/ input /*#E*/ encryptedNr (resp) /* CIF OUTPUT (3051, 337), (352, 85) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(13),677(55,65))*/ output /*#E*/ encryptedNr (resp, BTSreceived) /* to BTS_PIDs(BTSreceived) */ /* CIF NEXTSTATE (3131, 452), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(13),683(55,80))*/ nextstate /*#E*/ waitCallConf; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(13),665(30,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(14),692(40,20))*/ state /*#E*/ ringing; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(14),722(40,35))*/ input /*#E*/ call_ind (caller) /* CIF OUTPUT (4181, 342), (547, 81) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(14),728(40,55))*/ output /*#E*/ call_resp (called_busy, me, caller, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF NEXTSTATE (4360, 453), (188, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(14),734(40,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(14),692(40,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(15),737(40,30))*/ state /*#E*/ waitCallConf; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(15),797(40,45))*/ input /*#E*/ call_ind (caller) /* CIF OUTPUT (5332, 381), (547, 81) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(15),803(40,65))*/ output /*#E*/ call_resp (called_busy, me, caller, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF NEXTSTATE (5511, 492), (188, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(15),809(40,95))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(15),737(40,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(16),830(35,25))*/ state /*#E*/ conversation; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(16),854(35,40))*/ input /*#E*/ call_ind (caller) /* CIF OUTPUT (6677, 403), (547, 81) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(16),860(35,60))*/ output /*#E*/ call_resp (called_busy, me, caller, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF NEXTSTATE (6856, 514), (188, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(16),866(35,90))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(16),830(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),1385(50,20))*/ state /*#E*/ powerOff /* CIF COMMENT (2400, 185), (200, 120) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),137(50,40))*/ input /*#E*/ onKey /* CIF DECISION (1796, 424), ( 220, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),143(50,65))*/ decision /*#E*/ enabled; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),158(67,77))*/ (true /* CIF TASK (2084, 710), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),161(50,95))*/ task /*#E*/ false_pin := 0 /* CIF NEXTSTATE (2104, 860), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),167(50,110))*/ nextstate /*#E*/ askPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),146(2,77))*/ (false /* CIF OUTPUT (1486, 696), (200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),149(30,130))*/ output /*#E*/ disable /* CIF NEXTSTATE (1470, 846), ( 233, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),155(30,155))*/ nextstate /*#E*/ disabled; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),143(50,65))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(17),1385(50,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(18),1445(35,30))*/ state /*#E*/ disabled; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(18),335(35,45))*/ input /*#E*/ offKey /* CIF NEXTSTATE (3750, 1387), ( 154, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(18),341(35,70))*/ nextstate /*#E*/ powerOff; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(18),1445(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(19),1472(35,30))*/ state /*#E*/ askPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(19),434(35,45))*/ input /*#E*/ PIN (p) /* CIF OUTPUT (1785, 1080), (168, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(19),440(35,65))*/ output /*#E*/ checkPIN (p) /* CIF NEXTSTATE (1769, 1190), (200, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(19),446(35,80))*/ nextstate /*#E*/ waitCheckPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(19),1472(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(20),1511(40,35))*/ state /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(20),605(40,50))*/ input /*#E*/ askReport /* CIF OUTPUT (1348, 334), ( 470, 86) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(20),611(40,80))*/ output /*#E*/ getReport (me, BTSreceived) /* to BTS_PIDs(BTSreceived) */ /* CIF NEXTSTATE (1510, 450), (143, 74) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(20),617(40,95))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(20),1511(40,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(21),1550(45,40))*/ state /*#E*/ ringing; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(21),698(45,55))*/ input /*#E*/ answer_call /* CIF OUTPUT (3614, 340), ( 547, 81) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(21),704(45,85))*/ output /*#E*/ call_resp (called_ok, me, caller, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF OUTPUT (3801, 451), (170, 88) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(21),710(45,125))*/ output /*#E*/ convers /* CIF NEXTSTATE (3788, 569), ( 200, 96) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(21),716(45,150))*/ nextstate /*#E*/ conversation; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(21),1550(45,40))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),1565(10,35))*/ state /*#E*/ waitCallConf; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),743(10,50))*/ input /*#E*/ call_conf (called_status) /* CIF DECISION (4945, 384), (220, 150) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),749(10,70))*/ decision /*#E*/ called_status; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),752(35,77))*/ (called_ok /* CIF OUTPUT (4628, 662), (244, 91) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),755(10,85))*/ output /*#E*/ convers /* CIF OUTPUT (4523, 784), ( 453, 111) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),761(10,125))*/ output /*#E*/ com_start (me, BTSreceived) /* to BTS_PIDs(BTSreceived) */ /* CIF NEXTSTATE (4653, 925), (197, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),767(10,150))*/ nextstate /*#E*/ conversation; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),770(127,75))*/ (called_busy /* CIF OUTPUT (4997, 654), (200, 88) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),1331(120,105))*/ join /*#E*/ waitCallConf_1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),782(107,132))*/ (called_unreachable /* CIF OUTPUT (5258, 651), (200, 91) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),1340(100,150))*/ join /*#E*/ waitCallConf_2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),749(10,70))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(22),1565(10,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(23),1580(30,35))*/ state /*#E*/ conversation; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(23),836(30,50))*/ input /*#E*/ on_hook /* CIF OUTPUT (6204, 399), ( 453, 83) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(23),842(30,80))*/ output /*#E*/ com_finish (me, correspondant, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF NEXTSTATE (6351, 512), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(23),848(30,110))*/ nextstate /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(23),1580(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(24),1628(30,40))*/ state /*#E*/ askPIN; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(24),464(30,55))*/ input /*#E*/ call_ind (caller) /* CIF OUTPUT (2186, 1082), (614, 92) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(24),470(30,75))*/ output /*#E*/ call_resp (called_unreachable, me, caller, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF NEXTSTATE (2399, 1204), (188, 77) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(24),476(30,105))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(24),1628(30,40))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),1643(40,15))*/ state /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),527(40,30))*/ input /*#E*/ dialing (called) /* CIF DECISION (263, 345), (220, 58) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),533(40,50))*/ decision /*#E*/ called = me; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),548(97,57))*/ (FALSE /* CIF OUTPUT (360, 524), (346, 84) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),551(105,80))*/ output /*#E*/ call_req (me, called, BTSreceived) /* to BTS_PIDs( BTSreceived) */ /* CIF TASK (349, 638), (369, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),557(105,115))*/ task /*#E*/ correspondant := called /* CIF NEXTSTATE (449, 765), (170, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),563(105,135))*/ nextstate /*#E*/ waitRandom /* CIF COMMENT (639, 765), (160, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),536(55,75))*/ (TRUE /* CIF OUTPUT (121, 514), (160, 71) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */): /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),539(15,160))*/ output /*#E*/ rejected /* CIF NEXTSTATE (125, 616), ( 154, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),545(15,185))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),533(40,50))*/ enddecision; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(25),1643(40,15))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(26),1670(35,35))*/ state /*#E*/ waitCallConf; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(26),815(35,50))*/ input /*#E*/ call_reject (reason) /* CIF OUTPUT (5931, 375), (253, 82) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(26),821(35,70))*/ output /*#E*/ rejected /* CIF NEXTSTATE (5962, 487), ( 192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(26),827(35,95))*/ nextstate /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(26),1670(35,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(27),1718(30,35))*/ state /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(27),623(30,50))*/ input /*#E*/ giveReport (bil_report) /* CIF OUTPUT (1866, 340), (369, 97) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(27),629(30,70))*/ output /*#E*/ giveReport (bil_report) via KBD /* CIF NEXTSTATE (1979, 467), (143, 72) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(27),635(30,85))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(27),1718(30,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1745(40,10))*/ state /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),593(40,25))*/ input /*#E*/ offKey /* CIF NEXTSTATE (1128, 346), ( 200, 88) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),599(40,50))*/ nextstate /*#E*/ powerOff; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1745(40,10))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1301(10,60))*/ connection /*#E*/ waitInit1_1: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),404(5,75))*/ task /*#E*/ p := pin_b /* CIF ANSWER (566, 688), (169, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1352(10,95))*/ join /*#E*/ waitInit1_4; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1301(10,60))*/ endconnection waitInit1_1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1310(95,60))*/ connection /*#E*/ waitInit1_2: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),413(90,75))*/ task /*#E*/ p := pin_c /* CIF ANSWER (756, 688), (158, 50) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1355(95,95))*/ join /*#E*/ waitInit1_4; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1310(95,60))*/ endconnection waitInit1_2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1319(10,110))*/ connection /*#E*/ waitInit1_3: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),422(5,125))*/ task /*#E*/ p := pin_d; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1358(10,140))*/ join /*#E*/ waitInit1_4; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1319(10,110))*/ endconnection waitInit1_3; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1328(35,110))*/ connection /*#E*/ waitCallConf_1: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),773(30,125))*/ output /*#E*/ busy /* CIF NEXTSTATE (4997, 772), ( 200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),779(30,150))*/ nextstate /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1328(35,110))*/ endconnection waitCallConf_1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1337(10,165))*/ connection /*#E*/ waitCallConf_2: /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),785(5,180))*/ output /*#E*/ unreachable /* CIF NEXTSTATE (5258, 772), ( 200, 120) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),791(5,205))*/ nextstate /*#E*/ listening; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr(28),1337(10,165))*/ endconnection waitCallConf_2; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MobileSt.spr,4)*/ endprocess MobileSt; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr,4)*/ process SIM /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr,1)*/ (1, 1); /* CIF CurrentPage 1 */ /* CIF TEXT (70, 872), (1558, 463) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /* Encryption algorithm also stored in the network (never transmitted): */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(DefinitionPage),119(5,50))*/ newtype A3_encryption_t operators A3_encrypt1 : NATURAL, NATURAL -> NATURAL; operator A3_encrypt1; fpar n NATURAL, key NATURAL; returns NATURAL; referenced; endnewtype; dcl PIN PIN_t /* replaces context parameters. */, Kp NATURAL := 3 /* Secret key associated to the SIM owner, also stored in the network. */, p PIN_t, rand NATURAL; /* CIF End Text */ /* CIF CurrentPage 1 */ /* CIF START (87, 120), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(1),125(35,25))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(1),131(35,40))*/ nextstate /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(2),134(30,20))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(2),140(30,35))*/ input /*#E*/ checkPIN (p) /* CIF OUTPUT (285, 340), (226, 77) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(2),146(30,50))*/ output /*#E*/ PIN_OK (p = PIN) /* CIF NEXTSTATE (318, 447), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(2),152(30,65))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(2),134(30,20))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(3),155(35,25))*/ state /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(3),161(35,40))*/ input /*#E*/ randomNr (rand /* CIF COMMENT (873, 228), (160, 80) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */) comment 'Comes from the AUC.' /* CIF OUTPUT (576, 370), (352, 82) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(3),167(35,70))*/ output /*#E*/ encryptedNr (A3_encrypt1(rand, Kp /* CIF COMMENT (940, 325), (160, 173) */ /* CIF Keep Specific Geode TextMode 3 */ /* CIF Keep Specific Geode Modified */)) comment 'Back to the AUC, which will compare it to its own computation.' /* CIF NEXTSTATE (656, 529), (192, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(3),173(35,110))*/ nextstate /*#E*/ -; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(3),155(35,25))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(4),176(35,30))*/ state /*#E*/ waitInit; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(4),182(35,45))*/ input /*#E*/ initSIM (PIN) /* CIF NEXTSTATE (87, 450), (160, 80) */ /* CIF Keep Specific Geode TextMode 4 */ /* CIF Keep Specific Geode Modified */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(4),188(35,60))*/ nextstate /*#E*/ ready; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr(4),176(35,30))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\SIM.spr,4)*/ endprocess SIM; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt1.sop,4)*/ operator A3_encrypt1 /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt1.sop,1)*/ ; fpar n NATURAL, key NATURAL; returns NATURAL; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt1.sop(1),119(40,30))*/ start /*#E*/ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt1.sop(1),125(45,45))*/ return /*#E*/ (n * key) + 7; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\A3_encrypt1.sop,4)*/ endoperator A3_encrypt1; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt,4)*/ block type MSBTSProxy; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),266(172,115))*/ gate /*#E*/ BTS1x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),267(182,125))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),268(172,125))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),281(5,120))*/ gate /*#E*/ Ms1x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),282(2,130))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),283(12,130))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),272(175,132))*/ gate /*#E*/ BTS2x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),273(182,142))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),274(172,142))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),284(5,140))*/ gate /*#E*/ MS2x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),285(2,150))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),286(12,150))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),275(175,152))*/ gate /*#E*/ BTS3x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),276(182,162))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),277(172,162))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),287(5,157))*/ gate /*#E*/ MS3x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),288(2,167))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),289(12,167))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),278(175,172))*/ gate /*#E*/ BTS4x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),279(182,182))*/ (MtoB); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),280(172,182))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),290(5,175))*/ gate /*#E*/ MS4x out with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),291(2,185))*/ (BtoM); in with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),292(12,185))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),161(40,36))*/ signalroute /*#E*/ MS1 from Proxy to env via MS1x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),162(17,42))*/ (BtoM); from env via MS1x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),163(41,49))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),170(146,32))*/ signalroute /*#E*/ BTS1 from Proxy to env via BTS1x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),171(162,37))*/ (MtoB); from env via BTS1x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),172(127,50))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),119(37,58))*/ signalroute /*#E*/ MS2 from Proxy to env via MS2x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),120(17,67))*/ (BtoM); from env via MS2x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),121(45,67))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),128(149,58))*/ signalroute /*#E*/ BTS2 from Proxy to env via BTS2x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),129(162,67))*/ (MtoB); from env via BTS2x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),130(127,67))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),146(37,73))*/ signalroute /*#E*/ MS3 from Proxy to env via MS3x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),147(17,82))*/ (BtoM); from env via MS3x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),148(45,82))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),137(136,73))*/ signalroute /*#E*/ BTS3 from Proxy to env via BTS3x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),138(162,82))*/ (MtoB); from env via BTS3x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),139(127,82))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),155(36,97))*/ signalroute /*#E*/ MS4 from Proxy to env via MS4x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),156(17,110))*/ (BtoM); from env via MS4x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),157(51,100))*/ (MtoB); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),179(150,93))*/ signalroute /*#E*/ BTS4 from Proxy to env via BTS4x with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),180(162,107))*/ (MtoB); from env via BTS4x to Proxy with /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),181(126,100))*/ (BtoM); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt(1),116(55,50))*/ process Proxy(1,1) referenced; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\MSBTSProxy.sbt,4)*/ endblock type MSBTSProxy; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr,4)*/ process Proxy; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),116(115,10))*/ newtype BTS_PIDs_t ARRAY( BTS_ID_t, PID); endnewtype; newtype MS_PIDs_t ARRAY( Mobile_ID_t, PID); endnewtype; dcl MID1, MID2 Mobile_ID_t /* replaces context parameters.*/, IMEI IMEI_t /* replaces context parameters.*/, called_state called_state_t, encryptedNr NATURAL, rand NATURAL, billingReport billing_report_t, reason reason_t, BTS_ID BTS_ID_t, BTS_PIDs BTS_PIDs_t, MS_PIDs MS_PIDs_t; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),278(40,10))*/ start /*#E*/ /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),131(75,10))*/ /* Signals from MS */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),281(40,30))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),428(20,60))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),140(20,80))*/ input /*#E*/ call_resp(called_state, MID1, MID2, BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),200(20,100))*/ output /*#E*/ call_resp(called_state, MID1, MID2, BTS_ID) to BTS_PIDs(BTS_ID) ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),446(20,120))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),428(20,60))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),122(95,105))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),137(95,125))*/ input /*#E*/ call_req(MID1, MID2, BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),197(95,145))*/ output /*#E*/ call_req(MID1, MID2, BTS_ID) to BTS_PIDs(BTS_ID) ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),170(95,165))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),122(95,105))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),434(20,150))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),143(20,170))*/ input /*#E*/ com_start(MID1, BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),203(20,190))*/ output /*#E*/ com_start(MID1, BTS_ID) to BTS_PIDs(BTS_ID) ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),452(20,210))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(1),434(20,150))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),518(10,35))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),506(10,55))*/ input /*#E*/ com_finish(MID1, MID2, BTS_ID) /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),557(40,10))*/ /* Signals from MS */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),494(10,75))*/ output /*#E*/ com_finish(MID1, MID2, BTS_ID) to BTS_PIDs(BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),482(10,95))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),518(10,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),515(100,35))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),503(100,55))*/ input /*#E*/ getReport(MID1, BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),491(100,75))*/ output /*#E*/ getReport(MID1, BTS_ID) to BTS_PIDs(BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),479(100,95))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),515(100,35))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),512(10,130))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),500(10,150))*/ input /*#E*/ logOn(MID1, BTS_ID, IMEI); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),560(5,165))*/ task /*#E*/ MS_PIDs(MID1) := sender; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),488(10,180))*/ output /*#E*/ logOn(MID1, BTS_ID, IMEI) to BTS_PIDs(BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),476(10,200))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),512(10,130))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),509(100,130))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),497(100,150))*/ input /*#E*/ encryptedNr(encryptedNr, BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),485(100,170))*/ output /*#E*/ encryptedNr(encryptedNr, BTS_ID) to BTS_PIDs(BTS_ID); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),473(100,190))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(2),509(100,130))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),578(15,40))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),305(15,55))*/ input /*#E*/ call_conf(called_state, MID1); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),341(15,75))*/ output /*#E*/ call_conf(called_state, MID1) to MS_PIDs(MID1); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),593(15,95))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),578(15,40))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),581(90,40))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),308(90,55))*/ input /*#E*/ call_ind(MID1, MID2) /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),302(135,15))*/ /* Signals from BTSes */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),344(90,75))*/ output /*#E*/ call_ind(MID1, MID2) to MS_PIDs(MID2); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),596(90,95))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),581(90,40))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),299(80,130))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),311(80,145))*/ input /*#E*/ call_reject(reason, MID1); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),347(80,165))*/ output /*#E*/ call_reject(reason, MID1) to MS_PIDs(MID1); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),359(80,185))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(3),299(80,130))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),653(20,40))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),671(20,55))*/ input /*#E*/ giveReport(billingReport, MID1); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),662(20,75))*/ output /*#E*/ giveReport(billingReport, MID1) to MS_PIDs(MID1); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),644(20,95))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),653(20,40))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),650(100,40))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),668(100,55))*/ input /*#E*/ initMS(BTS_ID, MID1, IMEI) /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),701(110,15))*/ /* Signals from BTSes */ ; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),704(100,75))*/ task /*#E*/ BTS_PIDs(BTS_ID) := sender; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),659(100,95))*/ output /*#E*/ initMS(BTS_ID, MID1, IMEI) to MS_PIDs(MID1); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),641(100,115))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),650(100,40))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),647(20,125))*/ state /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),665(20,140))*/ input /*#E*/ randomNr(rand, MID2); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),656(20,160))*/ output /*#E*/ randomNr(rand, MID2) to MS_PIDs(MID2); /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),638(20,180))*/ nextstate /*#E*/ Idle; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr(4),647(20,125))*/ endstate; /*#SDTREF(SDL,D:\Projekt\ThrLight_Tutorial\Mobile\Proxy.spr,4)*/ endprocess Proxy;