src/ext/amaretto/telephone/inc/telephone.h
changeset 0 ca70ae20a155
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ext/amaretto/telephone/inc/telephone.h	Tue Feb 16 10:07:05 2010 +0530
@@ -0,0 +1,131 @@
+/**
+ * ====================================================================
+ * telephone.h
+ *
+ * Copyright (c) 2005 - 2007 Nokia Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ====================================================================
+ */
+#include "Python.h"
+#include "symbian_python_ext_util.h"
+#include <e32std.h>
+
+#ifndef EKA2 
+#include <etel.h>
+_LIT(KTsyName,"phonetsy.tsy");
+#else
+#include <Etel3rdParty.h>
+#endif /* EKA2 */
+
+#define MaxTelephoneNumberLength 30
+
+#ifdef EKA2
+class TPyPhoneCallBack
+  {
+  public:
+    TInt IncomingCall(TInt aStatus, TDesC& aNumber);
+  public:
+    PyObject* iCb; // Not owned.
+  };
+#endif
+
+//Safe to use also from emulator.
+#ifndef EKA2
+class CPhoneCall : public CActive
+#else
+NONSHARABLE_CLASS (CPhoneCall) : public CActive
+#endif
+  {
+public:
+  static CPhoneCall* NewL();
+  static CPhoneCall* NewLC();
+  ~CPhoneCall();
+public: 
+  CPhoneCall();
+  void ConstructL();
+  
+  TInt Initialise();
+  TInt UnInitialise();
+  TInt Dial();
+  void SetNumber(TDes& aNumber);
+  TInt HangUp();
+#ifdef EKA2
+  TInt Answer();
+  void SetIncomingCallBack(TPyPhoneCallBack &aCb);
+#endif
+  /*
+  ENotCalling The initial (un-initialised) state
+  EInitialised After Initialise() call, ready to Dial()
+  ECalling A dial request has been issued
+  ECallInProgress A call is ongoing
+  */
+	enum TCallState 
+	  {
+ #ifdef EKA2
+    EHangingUp,
+ #endif /* EKA2 */
+		ENotCalling,
+		EInitialised,
+    ECalling,
+    ECallInProgress
+	  };  
+	//These are returned to avoid ETel server panics:
+	enum TPhoneCallErrors
+	  {
+		ENumberNotSet = 0x7D0,
+		ENotInitialised,
+		ENotCallInProgress,
+		EInitialiseCalledAlready,
+		EAlreadyCalling,
+	  };  
+public: //from CActive:
+  void RunL();
+  void DoCancel();
+private:
+#ifndef EKA2
+  RTelServer iServer;
+  RTelServer::TPhoneInfo iInfo;
+  RPhone iPhone;
+  RPhone::TLineInfo iLineInfo;
+  RLine iLine;
+  TBuf<100> iNewCallName;
+  RCall iCall;
+#else
+  CTelephony* iTelephony;
+  CTelephony::TCallId iCallId;
+  CTelephony::TCallStatusV1Pckg iCallStatusV1Pckg;
+  CTelephony::TCallStatusV1 iCallStatusV1;
+
+  TPyPhoneCallBack iCallMe;
+  TBool iCallBackSet;  
+  TBool iWaitingForCall;
+  TBool iAnswering;
+#endif /* EKA2 */
+  TCallState iCallState;
+  TBuf<MaxTelephoneNumberLength> iNumber;
+  TBool iNumberSet;
+  };
+
+//////////////TYPE DEFINITION
+
+#define PHO_type ((PyTypeObject*)SPyGetGlobalString("PHOType"))
+
+struct PHO_object {
+  PyObject_VAR_HEAD
+  CPhoneCall* phone;
+#ifdef EKA2
+  TPyPhoneCallBack myCallBack;
+  TBool callBackSet;
+#endif
+};