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> + +@protocol SkypeAPIDelegate; + +@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; +@end + + +// delegate protocol +@protocol SkypeAPIDelegate +- (NSString*)clientApplicationName; +@end + +// delegate informal protocol +@interface NSObject (SkypeAPIDelegateInformalProtocol) +- (void)skypeNotificationReceived:(NSString*)aNotificationString; +- (void)skypeAttachResponse:(unsigned)aAttachResponseCode; // 0 - failed, 1 - success +- (void)skypeBecameAvailable:(NSNotification*)aNotification; +- (void)skypeBecameUnavailable:(NSNotification*)aNotification; +@end +