public override void Step(OAIEvent oaiEvent) { // Don't initialise if already connected // Or if there was no device specified if (Connected || null == Device) { return; } switch (this.Stage) { case STAGE_START: { // Confirm we connected to the phone system // 000,RS,0,02:04,070515,V10.20,V6.0.11.113,3,0,1,3,1 if (STAGE_SEGMENT_NULL == this.StageSegment && 0 == "RS".CompareTo(oaiEvent.Event())) { this.StageSegment |= STAGE_START_SEGMENT_RS; } // Confirm we have finished syncing // 001,RD,0, else if (STAGE_START_SEGMENT_RS == this.StageSegment && 0 == "RD".CompareTo(oaiEvent.Event())) { this.StageSegment = STAGE_SEGMENT_NULL; this.Stage = STAGE_NODE_AWARE; OAIWriteQueue.Relay().Line = (LastPacket = new OAINodeAware()); } break; } case STAGE_NODE_AWARE: { // Confirming we are node aware // 002,CF,_NA,1,0,1 if (LastPacket.Confirmation(oaiEvent)) { this.Stage = STAGE_STATION_MONITOR; OAIWriteQueue.Relay().Line = (LastPacket = new OAIMonitorStart( Device, OAIMonitorStart.MONITOR_TYPE_DEVICE, new string[]{ "A:FFFF", "C:FFFF", "F:FFFF" })); } break; } case STAGE_STATION_MONITOR: { // Confirming we are monitoring calls by device // 004,CF,_MS,3,0,0002,000243,1:,000244,2:,S:00FE if (LastPacket.Confirmation(oaiEvent)) { OAIWriteQueue.Relay().Line = (LastPacket = new OAIQueryListExtended(0,17,1)); Connected = true; } break; } } }
public bool Confirmation(OAIEvent oaiEvent) { return (Invoke == oaiEvent.Invoke() && 0 == Command.CompareTo(oaiEvent.Command()) && 0 == "CF".CompareTo(oaiEvent.Event())); }
public void NodeAware(OAIEvent evt, int next) { if (STAGE_SEGMENT_NULL == this.StageSegment && 0 == "RS".CompareTo(evt.Event())) { this.StageSegment |= STAGE_START_SEGMENT_RS; } else if (STAGE_START_SEGMENT_RS == this.StageSegment && 0 == "RD".CompareTo(evt.Event())) { this.StageSegment = STAGE_SEGMENT_NULL; this.Stage = next; OAIWriteQueue.Relay().Line = (LastPacket = new OAINodeAware()); } }