Class TFormChangeState (unit main) |
Inherits from
TForm
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);
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
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);
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