Class TFormChangeState (unit main)

Inherits from

TForm

Constructors



Functions

procedure ButtonStartClick(Sender: TObject);

****************************************************************************** ** ** Support Routines **

procedure ButtonStopClick(Sender: TObject);


procedure FormClose(Sender: TObject; var Action: TCloseAction);


procedure FormCreate(Sender: TObject);

****************************************************************************** ** ** Form/Application Event Handlers **

procedure FormDestroy(Sender: TObject);

Only radio supported at the moment

procedure FormShow(Sender: TObject);

Voice1.

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

Wait for max 1 digit

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

Wait 10 second for max 1 digit

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

Wait 10 second for max 10 digits

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

Recording format

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

Wait 10 second for max 4 digits

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

Recording format

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

Wait 10 second for max 4 digits

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


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

****************************************************************************** ** ** State Machine Event Handlers **

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


procedure StateNodeAbortEnterState(Sender: TObject);

Ignore

procedure StateNodeAcceptCallEnterState(Sender: TObject);

ignore

procedure StateNodeErrorEnterState(Sender: TObject);

****************************************************************************** ** ** State Transition Event Handlers **

procedure StateNodeGetActionEnterState(Sender: TObject);


procedure StateNodeGetAreaEnterState(Sender: TObject);


procedure StateNodeGetDayEnterState(Sender: TObject);


procedure StateNodeGetForwardEnterState(Sender: TObject);


procedure StateNodeGetPINEnterState(Sender: TObject);

Wait 10 second for max 4 digits

procedure StateNodeGetRadioEnterState(Sender: TObject);


procedure StateNodeGetStartEnterState(Sender: TObject);

Convert specified time from relative to absolute

procedure StateNodeGetStopEnterState(Sender: TObject);

Recording format

procedure StateNodeInitDatabaseEnterState(Sender: TObject);

[system] Username=xxx Password=xxx LocalUsername=xxx LocalPassword=xxx [override] VoiceLine=1 DigitInterval=0 ShortInterval=15 LongInterval=20 SupportNumber=21265338

procedure StateNodeInitEnterState(Sender: TObject);

Initialize database connections

procedure StateNodeOpenEnterState(Sender: TObject);


procedure StateNodePlayWelcomeEnterState(Sender: TObject);

Pause before message

procedure StateNodeResetEnterState(Sender: TObject);


procedure StateNodeStatusEnterState(Sender: TObject);


procedure StateNodeStoreEnterState(Sender: TObject);

Wait 10 second for max 1 digit

procedure StateNodeVerifyActionEnterState(Sender: TObject);

Stop is always later than start

procedure StateNodeWaitForCallEnterState(Sender: TObject);

Ignore

procedure StateStartEnterState(Sender: TObject);

Settle down

procedure StateTransitionActionTransition(Sender: TObject);


procedure StateTransitionBadForwardTransition(Sender: TObject);


procedure StateTransitionBadPINTransition(Sender: TObject);

Check AreaCode/PIN

procedure StateTransitionBadRadioTransition(Sender: TObject);

Wait 20 second for max 10 digits

procedure StateTransitionCloseTransition(Sender: TObject);

Wait 10 second for max 1 digit

procedure StateTransitionForwardTransition(Sender: TObject);

// Cancel all alterations from now EntryDayTime := 0 EntryStart := FormatDateTime('hhnn', Now); // and two days forward EntryStop := FormatDateTime('hhnn', Now+2.

procedure StateTransitionGetAreaPINTransition(Sender: TObject);

Recording format

procedure StateTransitionGetRadioTransition(Sender: TObject);

Recording format

procedure StateTransitionGetTimeTransition(Sender: TObject);


procedure StateTransitionInitTransition(Sender: TObject);


procedure StateTransitionOpenTransition(Sender: TObject);


procedure StateTransitionStatusEndTransition(Sender: TObject);

Repeat last

procedure StateTransitionStatusTransition(Sender: TObject);

Recording format

procedure StateTransitionVerifyTransition(Sender: TObject);

Recording format

procedure Voice1LineDropped(Sender: TObject);

This is an error!

procedure Voice1RingDetected(Sender: TObject);

****************************************************************************** ** ** Voice Control Event Handlers **

procedure DoHangup;

Recording format

procedure DoStop;

Ignore

procedure LogError(Error: Exception);

****************************************************************************** ** ** Application Error Handlers **

function SmartGetDigits(MaxDigits: integer; Terminators: string; MaxInterval, DigitInterval: integer): string;

'til klokken'

procedure SmartPlayIndexedFile(Filename: string; Index: integer; Text: string; Start: integer; Terminators: string; Clear: boolean; Format: integer);


procedure SpeakStatus(RadioNo: string; p: PInterval; Term: string);


function SpeakTime(T: TDateTime): string;

Result is always later than now if (Result < Now) then Result := Result + 1.

procedure StripTerm(var s: string; Term: string);


function StrToTime(s: string): TDateTime;

Remove trailing terms

function ValidatePhoneNo(s: string): boolean;


function ValidateTime(s: string): boolean;


procedure WriteEventLog(EventType: WORD; EventID: integer; Msg1, Msg2, Msg3: string; address: LongInt);


Properties

Events

Variables

ButtonStart : TBitBtn;


ButtonStop : TBitBtn;


Label1 : TLabel;


Panel1 : TPanel;


StateBooleanDayValid : TStateBoolean;


StateBooleanForwardValid : TStateBoolean;


StateBooleanPINValid : TStateBoolean;


StateBooleanRadioValid : TStateBoolean;


StateBooleanStartValid : TStateBoolean;


StateBooleanStatus : TStateBoolean;


StateBooleanStopValid : TStateBoolean;


StateBooleanVerify : TStateBoolean;


StateLinkActionIn : TStateLink;


StateLinkActionLoopOut : TStateLink;


StateLinkInitIn : TStateLink;


StateLinkInitOut : TStateLink;


StateMachine : TStateMachine;


StateNodeAbort : TStateNode;


StateNodeAcceptCall : TStateNode;


StateNodeError : TStateNode;


StateNodeGetAction : TStateNode;


StateNodeGetArea : TStateNode;


StateNodeGetDay : TStateNode;


StateNodeGetForward : TStateNode;


StateNodeGetPIN : TStateNode;


StateNodeGetRadio : TStateNode;


StateNodeGetStart : TStateNode;


StateNodeGetStop : TStateNode;


StateNodeInit : TStateNode;


StateNodeInitDatabase : TStateNode;


StateNodeOpen : TStateNode;


StateNodePlayWelcome : TStateNode;


StateNodeReset : TStateNode;


StateNodeStatus : TStateNode;


StateNodeStore : TStateNode;


StateNodeVerifyAction : TStateNode;


StateNodeWaitForCall : TStateNode;


StateStart : TStateStart;


StateStop : TStateStop;


StateTransitionAction : TStateTransition;


StateTransitionBadForward : TStateTransition;


StateTransitionBadPIN : TStateTransition;


StateTransitionBadRadio : TStateTransition;


StateTransitionClose : TStateTransition;


StateTransitionForward : TStateTransition;


StateTransitionGetAreaPIN : TStateTransition;


StateTransitionGetRadio : TStateTransition;


StateTransitionGetTime : TStateTransition;


StateTransitionInit : TStateTransition;


StateTransitionOpen : TStateTransition;


StateTransitionStatus : TStateTransition;


StateTransitionStatusEnd : TStateTransition;


StateTransitionVerify : TStateTransition;


Voice1 : TVoice;


DataModuleRemote : TDataModuleRemote;

Public declarations

ActionLoopCounter : integer;


EntryAreaCode : string;

User entries

EntryDay : string;


EntryDayTime : integer;


EntryForward : string;


EntryPINCode : string;


EntryRadioNo : string;


EntryStart : string;


EntryStartTime : TDateTime;


EntryStop : string;


EntryStopTime : TDateTime;


ErrorCounter : integer;


FileNamePhrases : string;

Message files

FileNameSupport : string;


hEventSource : THandle;

Event logging

IgnoreAsync : boolean;


IntervalList : TList;


LastErrorNode : TStateControl;

Private declarations

LookupNumberType : string;


LoopCounter : integer;


RemoteAction : TRemoteAction;


RemoteNumberType : string;


SumCall : integer;


TotalCall : integer;

Statistics


Constructors


Functions


procedure ButtonStartClick(Sender: TObject);

****************************************************************************** ** ** Support Routines **


procedure ButtonStopClick(Sender: TObject);


procedure FormClose(Sender: TObject; var Action: TCloseAction);


procedure FormCreate(Sender: TObject);

****************************************************************************** ** ** Form/Application Event Handlers **


procedure FormDestroy(Sender: TObject);

Only radio supported at the moment


procedure FormShow(Sender: TObject);

Voice1.DeAllocateLine;


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

Wait for max 1 digit


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

Wait 10 second for max 1 digit


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

Wait 10 second for max 10 digits


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

Recording format


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

Wait 10 second for max 4 digits


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

Recording format


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

Wait 10 second for max 4 digits


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


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

****************************************************************************** ** ** State Machine Event Handlers **


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


procedure StateNodeAbortEnterState(Sender: TObject);

Ignore


procedure StateNodeAcceptCallEnterState(Sender: TObject);

ignore


procedure StateNodeErrorEnterState(Sender: TObject);

****************************************************************************** ** ** State Transition Event Handlers **


procedure StateNodeGetActionEnterState(Sender: TObject);


procedure StateNodeGetAreaEnterState(Sender: TObject);


procedure StateNodeGetDayEnterState(Sender: TObject);


procedure StateNodeGetForwardEnterState(Sender: TObject);


procedure StateNodeGetPINEnterState(Sender: TObject);

Wait 10 second for max 4 digits


procedure StateNodeGetRadioEnterState(Sender: TObject);


procedure StateNodeGetStartEnterState(Sender: TObject);

Convert specified time from relative to absolute


procedure StateNodeGetStopEnterState(Sender: TObject);

Recording format


procedure StateNodeInitDatabaseEnterState(Sender: TObject);

[system] Username=xxx Password=xxx LocalUsername=xxx LocalPassword=xxx [override] VoiceLine=1 DigitInterval=0 ShortInterval=15 LongInterval=20 SupportNumber=21265338


procedure StateNodeInitEnterState(Sender: TObject);

Initialize database connections


procedure StateNodeOpenEnterState(Sender: TObject);


procedure StateNodePlayWelcomeEnterState(Sender: TObject);

Pause before message


procedure StateNodeResetEnterState(Sender: TObject);


procedure StateNodeStatusEnterState(Sender: TObject);


procedure StateNodeStoreEnterState(Sender: TObject);

Wait 10 second for max 1 digit


procedure StateNodeVerifyActionEnterState(Sender: TObject);

Stop is always later than start


procedure StateNodeWaitForCallEnterState(Sender: TObject);

Ignore


procedure StateStartEnterState(Sender: TObject);

Settle down


procedure StateTransitionActionTransition(Sender: TObject);


procedure StateTransitionBadForwardTransition(Sender: TObject);


procedure StateTransitionBadPINTransition(Sender: TObject);

Check AreaCode/PIN


procedure StateTransitionBadRadioTransition(Sender: TObject);

Wait 20 second for max 10 digits


procedure StateTransitionCloseTransition(Sender: TObject);

Wait 10 second for max 1 digit


procedure StateTransitionForwardTransition(Sender: TObject);

// Cancel all alterations from now EntryDayTime := 0 EntryStart := FormatDateTime('hhnn', Now); // and two days forward EntryStop := FormatDateTime('hhnn', Now+2.0);


procedure StateTransitionGetAreaPINTransition(Sender: TObject);

Recording format


procedure StateTransitionGetRadioTransition(Sender: TObject);

Recording format


procedure StateTransitionGetTimeTransition(Sender: TObject);


procedure StateTransitionInitTransition(Sender: TObject);


procedure StateTransitionOpenTransition(Sender: TObject);


procedure StateTransitionStatusEndTransition(Sender: TObject);

Repeat last


procedure StateTransitionStatusTransition(Sender: TObject);

Recording format


procedure StateTransitionVerifyTransition(Sender: TObject);

Recording format


procedure Voice1LineDropped(Sender: TObject);

This is an error!


procedure Voice1RingDetected(Sender: TObject);

****************************************************************************** ** ** Voice Control Event Handlers **


procedure DoHangup;

Recording format


procedure DoStop;

Ignore


procedure LogError(Error: Exception);

****************************************************************************** ** ** Application Error Handlers **


function SmartGetDigits(MaxDigits: integer; Terminators: string; MaxInterval, DigitInterval: integer): string;

'til klokken'


procedure SmartPlayIndexedFile(Filename: string; Index: integer; Text: string; Start: integer; Terminators: string; Clear: boolean; Format: integer);


procedure SpeakStatus(RadioNo: string; p: PInterval; Term: string);


function SpeakTime(T: TDateTime): string;

Result is always later than now if (Result < Now) then Result := Result + 1.0;


procedure StripTerm(var s: string; Term: string);


function StrToTime(s: string): TDateTime;

Remove trailing terms


function ValidatePhoneNo(s: string): boolean;


function ValidateTime(s: string): boolean;


procedure WriteEventLog(EventType: WORD; EventID: integer; Msg1, Msg2, Msg3: string; address: LongInt);


Properties


Events


Variables


ButtonStart : TBitBtn;


ButtonStop : TBitBtn;


Label1 : TLabel;


Panel1 : TPanel;


StateBooleanDayValid : TStateBoolean;


StateBooleanForwardValid : TStateBoolean;


StateBooleanPINValid : TStateBoolean;


StateBooleanRadioValid : TStateBoolean;


StateBooleanStartValid : TStateBoolean;


StateBooleanStatus : TStateBoolean;


StateBooleanStopValid : TStateBoolean;


StateBooleanVerify : TStateBoolean;


StateLinkActionIn : TStateLink;


StateLinkActionLoopOut : TStateLink;


StateLinkInitIn : TStateLink;


StateLinkInitOut : TStateLink;


StateMachine : TStateMachine;


StateNodeAbort : TStateNode;


StateNodeAcceptCall : TStateNode;


StateNodeError : TStateNode;


StateNodeGetAction : TStateNode;


StateNodeGetArea : TStateNode;


StateNodeGetDay : TStateNode;


StateNodeGetForward : TStateNode;


StateNodeGetPIN : TStateNode;


StateNodeGetRadio : TStateNode;


StateNodeGetStart : TStateNode;


StateNodeGetStop : TStateNode;


StateNodeInit : TStateNode;


StateNodeInitDatabase : TStateNode;


StateNodeOpen : TStateNode;


StateNodePlayWelcome : TStateNode;


StateNodeReset : TStateNode;


StateNodeStatus : TStateNode;


StateNodeStore : TStateNode;


StateNodeVerifyAction : TStateNode;


StateNodeWaitForCall : TStateNode;


StateStart : TStateStart;


StateStop : TStateStop;


StateTransitionAction : TStateTransition;


StateTransitionBadForward : TStateTransition;


StateTransitionBadPIN : TStateTransition;


StateTransitionBadRadio : TStateTransition;


StateTransitionClose : TStateTransition;


StateTransitionForward : TStateTransition;


StateTransitionGetAreaPIN : TStateTransition;


StateTransitionGetRadio : TStateTransition;


StateTransitionGetTime : TStateTransition;


StateTransitionInit : TStateTransition;


StateTransitionOpen : TStateTransition;


StateTransitionStatus : TStateTransition;


StateTransitionStatusEnd : TStateTransition;


StateTransitionVerify : TStateTransition;


Voice1 : TVoice;


DataModuleRemote : TDataModuleRemote;

Public declarations


ActionLoopCounter : integer;


EntryAreaCode : string;

User entries


EntryDay : string;


EntryDayTime : integer;


EntryForward : string;


EntryPINCode : string;


EntryRadioNo : string;


EntryStart : string;


EntryStartTime : TDateTime;


EntryStop : string;


EntryStopTime : TDateTime;


ErrorCounter : integer;


FileNamePhrases : string;

Message files


FileNameSupport : string;


hEventSource : THandle;

Event logging


IgnoreAsync : boolean;


IntervalList : TList;


LastErrorNode : TStateControl;

Private declarations


LookupNumberType : string;


LoopCounter : integer;


RemoteAction : TRemoteAction;


RemoteNumberType : string;


SumCall : integer;


TotalCall : integer;

Statistics