Class TFormRemote (unit mobile)

Inherits from

TForm

Constructors



Functions

procedure FormCreate(Sender: TObject);

Ignore

procedure FormShow(Sender: TObject);


procedure StateBooleanAcceptMessageEnterState(Sender: TStateBoolean; var Result: Boolean);

Recording format

procedure StateBooleanAcceptQueryEnterState(Sender: TStateBoolean; var Result: Boolean);

Voice.

procedure StateBooleanCallDataQueryEnterState(Sender: TStateBoolean; var Result: Boolean);

Language parameters

procedure StateBooleanCommentsVerifyEnterState(Sender: TStateBoolean; var Result: Boolean);

Recording format

procedure StateBooleanPlayDataBranchEnterState(Sender: TStateBoolean; var Result: Boolean);

Loop or give up

procedure StateMachineRemoteChangeState(Sender: TStateMachine; FromState, ToState: TStateControl);


procedure StateMachineRemoteException(Sender: TStateMachine; Node: TStateControl; Error: Exception);


procedure StateNodeCallingRadioEnterState(Sender: TObject);

s := IniFile.

procedure StateNodeCallRejectEnterState(Sender: TObject);

Voice.

procedure StateNodeCommentsRecordEnterState(Sender: TObject);

Recording format

procedure StateNodeConnectedEnterState(Sender: TObject);

Voice.

procedure StateNodeConnectToClientEnterState(Sender: TObject);


procedure StateNodeEndCallEnterState(Sender: TObject);

Voice.

procedure StateNodeErrorEnterState(Sender: TObject);


procedure StateNodeHangupEnterState(Sender: TObject);

Oh damn.

procedure StateNodeInitEnterState(Sender: TObject);


procedure StateNodeParkCallEnterState(Sender: TObject);


procedure StateNodePlaybackMessageEnterState(Sender: TObject);

Recording format

procedure StateNodePlayCallDataEnterState(Sender: TObject);


procedure StateNodePlayMessageEnterState(Sender: TObject);

Wait 1 second for max 2 digits

procedure StateNodeReceiveEnterState(Sender: TObject);


procedure StateNodeReconnectAndEndCallEnterState(Sender: TObject);

Indicate Message Waiting

procedure StateNodeRecordMessageEnterState(Sender: TObject);

Recording format

procedure StateNodeResetEnterState(Sender: TObject);

Voice.

procedure StateNodeSayAcceptQueryEnterState(Sender: TObject);


procedure StateNodeSayRecordMessageEnterState(Sender: TObject);

Switch to other (remote

procedure StateNodeSelectRadioEnterState(Sender: TObject);

InsertIntoQueue(qcRequeue,BuildParamStr);

procedure StateNodeSendEnterState(Sender: TObject);

Send timeout warning to mobile

procedure StateNodeTempParkClientEnterState(Sender: TObject);

InsertIntoQueue(qcRequeue,BuildParamStr);

procedure StateNodeTimeoutWarningEnterState(Sender: TObject);

Check for time out

procedure StateNodeTransferToLocalEnterState(Sender: TObject);

Indicate Message Waiting

procedure StateShutdownEnterState(Sender: TObject);

End of call - log stuff

procedure StateTransitionAcceptFirstTransition(Sender: TObject);

if (MessageDlg('Play call data?', mtConfirmation, [mbYes, mbNo] , 0) = mrNo) then StateMachineRemote.

procedure WaitForIdle;

Warn 15 seconds before timeout Voice Phrase Indexes

Properties

Events

Variables

EditClientNo : TEdit;


EditGatewayNo : TEdit;


EditMobileNo : TEdit;


Label1 : TLabel;


Label2 : TLabel;


Label3 : TLabel;


LabelCheck : TLabel;


LabelCollision : TLabel;


LabelMessage : TLabel;


Panel1 : TPanel;


PanelMessage : TPanel;


StateBooleanAcceptMessage : TStateBoolean;


StateBooleanAcceptQuery : TStateBoolean;


StateBooleanCallDataQuery : TStateBoolean;


StateBooleanCommentsVerify : TStateBoolean;


StateBooleanPlayDataBranch : TStateBoolean;


StateMachineRemote : TStateMachine;


StateNodeCallingRadio : TStateNode;


StateNodeCallReject : TStateNode;


StateNodeCommentsRecord : TStateNode;


StateNodeConnected : TStateNode;


StateNodeConnectToClient : TStateNode;


StateNodeEndCall : TStateNode;


StateNodeError : TStateNode;


StateNodeHangup : TStateNode;


StateNodeInit : TStateNode;


StateNodeParkCall : TStateNode;


StateNodePlaybackMessage : TStateNode;


StateNodePlayCallData : TStateNode;


StateNodePlayMessage : TStateNode;


StateNodeReceive : TStateNode;


StateNodeReconnectAndEndCall : TStateNode;


StateNodeRecordMessage : TStateNode;


StateNodeReset : TStateNode;


StateNodeSayAcceptQuery : TStateNode;


StateNodeSayRecordMessage : TStateNode;


StateNodeSelectRadio : TStateNode;


StateNodeSend : TStateNode;


StateNodeTempParkClient : TStateNode;


StateNodeTimeoutWarning : TStateNode;


StateNodeTransferToLocal : TStateNode;


StateShutdown : TStateNode;


StateStop : TStateStop;


StateTransitionAcceptFirst : TStateTransition;


StateTransitionAcceptQueryLoop : TStateTransition;


StateTransitionAcceptSecond : TStateTransition;


StateTransitionCall2Reset : TStateTransition;


StateTransitionConnectLoop : TStateTransition;


StateTransitionEndCall : TStateTransition;


StateTransitionLateReject : TStateTransition;


StateTransitionPlayCallDataLoop : TStateTransition;


StateTransitionPlayDataNo : TStateTransition;


StateTransitionRadioNoContact : TStateTransition;


StateTransitionRecordCommentsAgain : TStateTransition;


StateTransitionRecordMessageAgain : TStateTransition;


StateTransitionRejectCall : TStateTransition;


StateTransitionToLocal : TStateTransition;


Voice : TVoice;

Public declarations

FileNamePhrases : string;

Private declarations } // Message files

FileNameSupport : string;


LastCommandTime : TDateTime;


LoopCounter1 : integer;


MobileNumber : string;


WarningIssued : boolean;



Constructors


Functions


procedure FormCreate(Sender: TObject);

Ignore


procedure FormShow(Sender: TObject);


procedure StateBooleanAcceptMessageEnterState(Sender: TStateBoolean; var Result: Boolean);

Recording format


procedure StateBooleanAcceptQueryEnterState(Sender: TStateBoolean; var Result: Boolean);

Voice.PlayFile( FileNameAcceptQuery,// Source file 0, // Start position in file RemoteDigitB+RemoteDigitM,// Terminating digits False, // Clear digit buffer before playback 3 // Recording format );


procedure StateBooleanCallDataQueryEnterState(Sender: TStateBoolean; var Result: Boolean);

Language parameters


procedure StateBooleanCommentsVerifyEnterState(Sender: TStateBoolean; var Result: Boolean);

Recording format


procedure StateBooleanPlayDataBranchEnterState(Sender: TStateBoolean; var Result: Boolean);

Loop or give up


procedure StateMachineRemoteChangeState(Sender: TStateMachine; FromState, ToState: TStateControl);


procedure StateMachineRemoteException(Sender: TStateMachine; Node: TStateControl; Error: Exception);


procedure StateNodeCallingRadioEnterState(Sender: TObject);

s := IniFile.ReadString(cSystemSection, 'VoiceSystemFile', ''); Voice.SystemVoiceFile := s;


procedure StateNodeCallRejectEnterState(Sender: TObject);

Voice.Dial(MainForm.OmstilCMD+EditMobileNo.Text, 0); (* if not(Voice.Call(MainForm.OmstilCMD+EditMobileNo.Text, 15) in [vvpOK, vvpConnected]) then begin ShowMessage(Voice.ActionResultString); StateMachineRemote.ChangeState(StateTransitionCall2Reset); exit; end;


procedure StateNodeCommentsRecordEnterState(Sender: TObject);

Recording format


procedure StateNodeConnectedEnterState(Sender: TObject);

Voice.Dial(MainForm.OmstilCmd+EditClientNo.Text+',,,'+MainForm.KonferenceCmd, 0);


procedure StateNodeConnectToClientEnterState(Sender: TObject);


procedure StateNodeEndCallEnterState(Sender: TObject);

Voice.Dial(MainForm.TilbagekaldCmd, 0); Sleep(500); Voice.DeAllocateLine;


procedure StateNodeErrorEnterState(Sender: TObject);


procedure StateNodeHangupEnterState(Sender: TObject);

Oh damn... Should perform some kind of reset here to leave voice stuff in a known state


procedure StateNodeInitEnterState(Sender: TObject);


procedure StateNodeParkCallEnterState(Sender: TObject);


procedure StateNodePlaybackMessageEnterState(Sender: TObject);

Recording format


procedure StateNodePlayCallDataEnterState(Sender: TObject);


procedure StateNodePlayMessageEnterState(Sender: TObject);

Wait 1 second for max 2 digits


procedure StateNodeReceiveEnterState(Sender: TObject);


procedure StateNodeReconnectAndEndCallEnterState(Sender: TObject);

Indicate Message Waiting


procedure StateNodeRecordMessageEnterState(Sender: TObject);

Recording format


procedure StateNodeResetEnterState(Sender: TObject);

Voice.Dial(EditMobileNo.Text, 0); // Wait 15 seconds for max 2 digits s := Voice.GetDigits(2, '', 15, 1); if (s = RemoteDigitConnect) then exit else if (s = RemoteDigitNoConnect) then StateMachineRemote.ChangeState(StateTransitionRadioNoContact) else StateMachineRemote.State := StateNodeError;


procedure StateNodeSayAcceptQueryEnterState(Sender: TObject);


procedure StateNodeSayRecordMessageEnterState(Sender: TObject);

Switch to other (remote


procedure StateNodeSelectRadioEnterState(Sender: TObject);

InsertIntoQueue(qcRequeue,BuildParamStr);


procedure StateNodeSendEnterState(Sender: TObject);

Send timeout warning to mobile


procedure StateNodeTempParkClientEnterState(Sender: TObject);

InsertIntoQueue(qcRequeue,BuildParamStr);


procedure StateNodeTimeoutWarningEnterState(Sender: TObject);

Check for time out


procedure StateNodeTransferToLocalEnterState(Sender: TObject);

Indicate Message Waiting


procedure StateShutdownEnterState(Sender: TObject);

End of call - log stuff


procedure StateTransitionAcceptFirstTransition(Sender: TObject);

if (MessageDlg('Play call data?', mtConfirmation, [mbYes, mbNo] , 0) = mrNo) then StateMachineRemote.ChangeState(StateTransitionPlayDataNo);


procedure WaitForIdle;

Warn 15 seconds before timeout Voice Phrase Indexes


Properties


Events


Variables


EditClientNo : TEdit;


EditGatewayNo : TEdit;


EditMobileNo : TEdit;


Label1 : TLabel;


Label2 : TLabel;


Label3 : TLabel;


LabelCheck : TLabel;


LabelCollision : TLabel;


LabelMessage : TLabel;


Panel1 : TPanel;


PanelMessage : TPanel;


StateBooleanAcceptMessage : TStateBoolean;


StateBooleanAcceptQuery : TStateBoolean;


StateBooleanCallDataQuery : TStateBoolean;


StateBooleanCommentsVerify : TStateBoolean;


StateBooleanPlayDataBranch : TStateBoolean;


StateMachineRemote : TStateMachine;


StateNodeCallingRadio : TStateNode;


StateNodeCallReject : TStateNode;


StateNodeCommentsRecord : TStateNode;


StateNodeConnected : TStateNode;


StateNodeConnectToClient : TStateNode;


StateNodeEndCall : TStateNode;


StateNodeError : TStateNode;


StateNodeHangup : TStateNode;


StateNodeInit : TStateNode;


StateNodeParkCall : TStateNode;


StateNodePlaybackMessage : TStateNode;


StateNodePlayCallData : TStateNode;


StateNodePlayMessage : TStateNode;


StateNodeReceive : TStateNode;


StateNodeReconnectAndEndCall : TStateNode;


StateNodeRecordMessage : TStateNode;


StateNodeReset : TStateNode;


StateNodeSayAcceptQuery : TStateNode;


StateNodeSayRecordMessage : TStateNode;


StateNodeSelectRadio : TStateNode;


StateNodeSend : TStateNode;


StateNodeTempParkClient : TStateNode;


StateNodeTimeoutWarning : TStateNode;


StateNodeTransferToLocal : TStateNode;


StateShutdown : TStateNode;


StateStop : TStateStop;


StateTransitionAcceptFirst : TStateTransition;


StateTransitionAcceptQueryLoop : TStateTransition;


StateTransitionAcceptSecond : TStateTransition;


StateTransitionCall2Reset : TStateTransition;


StateTransitionConnectLoop : TStateTransition;


StateTransitionEndCall : TStateTransition;


StateTransitionLateReject : TStateTransition;


StateTransitionPlayCallDataLoop : TStateTransition;


StateTransitionPlayDataNo : TStateTransition;


StateTransitionRadioNoContact : TStateTransition;


StateTransitionRecordCommentsAgain : TStateTransition;


StateTransitionRecordMessageAgain : TStateTransition;


StateTransitionRejectCall : TStateTransition;


StateTransitionToLocal : TStateTransition;


Voice : TVoice;

Public declarations


FileNamePhrases : string;

Private declarations } // Message files


FileNameSupport : string;


LastCommandTime : TDateTime;


LoopCounter1 : integer;


MobileNumber : string;


WarningIssued : boolean;