[Freeswitch-branches] [commit] r11444 - in freeswitch/branches/ctrix/mod_airpe: . osx_framework
FreeSWITCH SVN
ctrix at freeswitch.org
Thu Jan 22 16:08:52 PST 2009
Author: ctrix
Date: Thu Jan 22 18:08:52 2009
New Revision: 11444
Log:
Initial (not working) Carbon stuff
Added:
freeswitch/branches/ctrix/mod_airpe/osx_framework/
freeswitch/branches/ctrix/mod_airpe/osx_framework/LICENSE
freeswitch/branches/ctrix/mod_airpe/osx_framework/Skype.h
freeswitch/branches/ctrix/mod_airpe/osx_framework/SkypeAPI-Carbon.h
freeswitch/branches/ctrix/mod_airpe/osx_framework/SkypeAPI.h
Modified:
freeswitch/branches/ctrix/mod_airpe/Makefile
freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c
freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
Modified: freeswitch/branches/ctrix/mod_airpe/Makefile
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/Makefile (original)
+++ freeswitch/branches/ctrix/mod_airpe/Makefile Thu Jan 22 18:08:52 2009
@@ -3,7 +3,7 @@
MODNAME=mod_airpe
LOCAL_CFLAGS=
-LOCAL_LDFLAGS=-lX11
+#LOCAL_LDFLAGS=-lX11
LOCAL_OBJS=airpe_if_common.o airpe_api.o airpe_apps.o airpe_if_x11.o airpe_if_osx.o airpe_if_win32.o
LOCAL_SOURCES=airpe_if_common.c airpe_api.c airpe_apps.c airpe_if_x11.c airpe_if_osx.c airpe_if_win32.c
Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c (original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_osx.c Thu Jan 22 18:08:52 2009
@@ -1,9 +1,103 @@
#include "mod_airpe.h"
-#if defined (MACOSX) || defined(DARWIN)
+//#if defined (MACOSX)
+//#if defined(DARWIN)
+#if 1
-#error OSX Not yet supported
+
+#include "osx_framework/SkypeAPI-Carbon.h"
+
+struct skype_window_handler_s {
+ struct SkypeDelegate delegate;
+
+ uint8_t api_connected;
+ int watchdog;
+};
+
+
+
+switch_status_t airpe_skype_watchdog_reset(skype_window_handler_t *window) {
+ window->watchdog = 0;
+ return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_skype_watchdog_increment(skype_window_handler_t *window) {
+ window->watchdog++;
+
+ if ( window->watchdog >= 5 ) {
+ }
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
+skype_window_handler_t *skype_window_alloc( switch_memory_pool_t *pool) {
+ return (skype_window_handler_t *) switch_core_alloc( pool, sizeof(skype_window_handler_t));
+}
+
+switch_status_t skype_restart( skype_window_handler_t *window, const char *params ) {
+ /* TODO */
+ return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_skype_send_message(skype_window_handler_t *window, const char *message_P) {
+ CFStringRef string;
+
+ string = CFStringCreateWithCString(NULL, message_P, kCFStringEncodingUTF8 );
+ SendSkypeCommand(string);
+ CFRelease(string);
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
+switch_status_t airpe_skype_avalaible(skype_window_handler_t *window)
+{
+ if ( IsSkypeAvailable() ) {
+ return SWITCH_STATUS_SUCCESS;
+ }
+ else {
+ return SWITCH_STATUS_FALSE;
+ }
+}
+
+
+
+/*****************************************************************************
+ THREADS
+ *****************************************************************************/
+void IncomingMessage(CFStringRef aNotificationString) {
+ char *string;
+
+ ADEBUG("Incoming message");
+
+ airpe_manage_skype_msg( airpe, string);
+
+}
+
+void *SWITCH_THREAD_FUNC airpe_skype_thread(switch_thread_t * thread, void *obj) {
+ airpe_interface_t *airpe = NULL;
+ struct SkypeDelegate *del;
+
+ assert(obj);
+
+ airpe = obj;
+
+ del = &airpe->skype_window->delegate;
+
+ del->clientApplicationName="airpe";
+ del->SkypeNotificationReceived=IncomingMessage;
+ SetSkypeDelegate(del);
+ ConnectToSkype();
+
+ while ( airpe->running ) {
+ switch_sleep(100000);
+ }
+
+ DisconnectFromSkype();
+ RemoveSkypeDelegate();
+
+ return NULL;
+}
#endif
Modified: freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c
==============================================================================
--- freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c (original)
+++ freeswitch/branches/ctrix/mod_airpe/airpe_if_x11.c Thu Jan 22 18:08:52 2009
@@ -28,10 +28,10 @@
*
*/
-#if defined (__GNUC__) && !(defined (MACOSX) || defined(DARWIN) )
-
#include "mod_airpe.h"
+#if defined (__GNUC__) && !(defined (MACOSX) || defined(DARWIN) )
+
#include <X11/Xlib.h>
#include <X11/Xlibint.h>
#include <X11/Xatom.h>
@@ -39,12 +39,12 @@
#define X11_MSG_LEN 20
struct skype_window_handler_s {
+ uint8_t api_connected;
+ int watchdog;
Display *disp;
Window win;
- uint8_t api_connected;
int fdesc[2];
Window skype_win;
- int watchdog;
};
Added: freeswitch/branches/ctrix/mod_airpe/osx_framework/LICENSE
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/osx_framework/LICENSE Thu Jan 22 18:08:52 2009
@@ -0,0 +1,30 @@
+Copyright (c) 2004-2006, Skype Limited.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of the Skype Limited nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
Added: freeswitch/branches/ctrix/mod_airpe/osx_framework/Skype.h
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/osx_framework/Skype.h Thu Jan 22 18:08:52 2009
@@ -0,0 +1,16 @@
+// $Id: Skype.h,v 1.2 2005/06/15 11:13:05 teelem Exp $
+/*
+ * Skype.h
+ * SkypeMac
+ *
+ * Created by Janno Teelem on 12/04/2005.
+ * Copyright (c) 2005 Skype Technologies S.A. All rights reserved.
+ *
+ */
+
+#include "SkypeAPI-Carbon.h"
+
+#ifdef __OBJC__
+ #include "SkypeAPI.h"
+#endif
+
Added: freeswitch/branches/ctrix/mod_airpe/osx_framework/SkypeAPI-Carbon.h
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/osx_framework/SkypeAPI-Carbon.h Thu Jan 22 18:08:52 2009
@@ -0,0 +1,45 @@
+// $Id: SkypeAPI-Carbon.h,v 1.4 2005/11/28 19:00:28 teelem Exp $
+/*
+ * SkypeAPI-Carbon.h
+ * SkypeMac
+ *
+ * Created by Janno Teelem on 14/06/2005.
+ * Copyright 2005 Skype Technologies S.A.. All rights reserved.
+ *
+ */
+
+#include <sys/cdefs.h>
+#include <Carbon/Carbon.h>
+
+__BEGIN_DECLS
+
+// In order to use Skype API, you must create a single instance of SkypeDelegate.
+// Set callback functions for the members of this struct and Skype will call these
+// functions to notify your application when something happens.
+struct SkypeDelegate
+{
+ // Required member
+ CFStringRef clientApplicationName;
+
+ // Optional members, can be NULL
+ void (*SkypeNotificationReceived)(CFStringRef aNotificationString);
+ void (*SkypeAttachResponse)(unsigned int aAttachResponseCode); // 0 - failed, 1 - success
+ void (*SkypeBecameAvailable)(CFPropertyListRef aNotification);
+ void (*SkypeBecameUnavailable)(CFPropertyListRef aNotification);
+};
+
+Boolean IsSkypeRunning(void);
+Boolean IsSkypeAvailable(void);
+
+// You must call this function, before calling ConnectToSkype() and SendSkypeCommand()
+void SetSkypeDelegate(struct SkypeDelegate* aDelegate);
+
+struct SkypeDelegate* GetSkypeDelegate(void);
+void RemoveSkypeDelegate(void);
+
+void ConnectToSkype(void);
+void DisconnectFromSkype(void);
+
+CFStringRef SendSkypeCommand(CFStringRef aCommandString);
+
+__END_DECLS
\ No newline at end of file
Added: freeswitch/branches/ctrix/mod_airpe/osx_framework/SkypeAPI.h
==============================================================================
--- (empty file)
+++ freeswitch/branches/ctrix/mod_airpe/osx_framework/SkypeAPI.h Thu Jan 22 18:08:52 2009
@@ -0,0 +1,46 @@
+// $Id: SkypeAPI.h,v 1.5 2005/11/28 19:00:28 teelem Exp $
+//
+// SkypeAPI.h
+// SkypeMac
+//
+// Created by Janno Teelem on 12/04/2005.
+// Copyright (c) 2005 Skype Technologies S.A. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+ at protocol SkypeAPIDelegate;
+
+ at interface SkypeAPI : NSObject
+{
+
+}
+
++ (BOOL)isSkypeRunning;
++ (BOOL)isSkypeAvailable; // You can only connect and send commands when this method returns YES.
+ // For example, when Skype is running, but user is logged out, then it returns NO.
+
++ (void)setSkypeDelegate:(NSObject<SkypeAPIDelegate>*)aDelegate;
++ (NSObject<SkypeAPIDelegate>*)skypeDelegate;
++ (void)removeSkypeDelegate;
+
++ (void)connect;
++ (void)disconnect;
+
++ (NSString*)sendSkypeCommand:(NSString*)aCommandString;
+ at end
+
+
+// delegate protocol
+ at protocol SkypeAPIDelegate
+- (NSString*)clientApplicationName;
+ at end
+
+// delegate informal protocol
+ at interface NSObject (SkypeAPIDelegateInformalProtocol)
+- (void)skypeNotificationReceived:(NSString*)aNotificationString;
+- (void)skypeAttachResponse:(unsigned)aAttachResponseCode; // 0 - failed, 1 - success
+- (void)skypeBecameAvailable:(NSNotification*)aNotification;
+- (void)skypeBecameUnavailable:(NSNotification*)aNotification;
+ at end
+
More information about the Freeswitch-branches
mailing list