// Function to print "Hello World!".
 FREObject _Basic_helloWorld(FREContext ctx, void* functionData, uint32_t argc, FREObject argv[])
 {
     FREObject strResult;
     const char* msg = "[Native Code]: Hello MAC from Amanita!";
     FRENewObjectFromUTF8( strlen(msg)+1, (const uint8_t *) msg, &strResult );
     return strResult;
 }
/**
 * Called by ActionScript after it receives an event when a contact has been updated.
 * This method returns an array of the properties that have been updated for each contact.
 */
FREObject getUpdatedContactProperties(FREContext ctx, void* functionData, uint32_t argc, FREObject argv[])
{
	pthread_mutex_lock(&amutex);
	FREObject result = NULL;
	FRENewObject((const uint8_t*) "Array", 0, NULL, &result, NULL);

	trace( "getUpdatedContactProperties" );

	int i = 0;

	for( i = 0; i<update_size; i++ )
	{
		ContactUpdate contactUpdate = contact_updates[ i ];

		FREObject update;
		FRENewObject((const uint8_t*) "Object", 0, NULL, &update, NULL);

		if( contactUpdate.value != NULL )
		{
			FREObject value;
			FRENewObjectFromUTF8( (uint32_t)(strlen(contactUpdate.value) + 1), (const uint8_t*)contactUpdate.value, &value );
			FRESetObjectProperty( update, (const uint8_t*) "value", value, NULL );
		}

		FREObject ppid;
		FRENewObjectFromUTF8( (uint32_t)(strlen(contactUpdate.ppid) + 1), (const uint8_t*)contactUpdate.ppid, &ppid );
		FRESetObjectProperty( update, (const uint8_t*) "ppid", ppid, NULL );

		FREObject property;
		FRENewObjectFromInt32( (int32_t)contactUpdate.property, &property );
		FRESetObjectProperty( update, (const uint8_t*) "property", property, NULL );

		FREObject status;
		FRENewObjectFromInt32( (int32_t)contactUpdate.status, &status );
		FRESetObjectProperty( update, (const uint8_t*) "status", status, NULL );

		FRESetArrayElementAt( result, i, update );

		free( contactUpdate.value );
		free( contactUpdate.ppid );

	}

	update_size = 0;
	pthread_mutex_unlock(&amutex);
	return result;
}
Exemple #3
0
FREObject getHelloWorld(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
   FREObject result;

   const char *str = "Hello ANE World!! This is your DLL talking.";
   FRENewObjectFromUTF8(strlen(str)+1, (const uint8_t *)str, &result);
   return result;
}
Exemple #4
0
	FREObject getWifiTags(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
		FREObject result;
		
		std::wstring tags = getTags();
		std::vector<uint8_t> tagsVector(tags.begin(), tags.end());
		uint8_t *pVector = &tagsVector[0];
		FRENewObjectFromUTF8(tags.size(), pVector, &result);

		return result;
	}
Exemple #5
0
FREObject getTestString(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
   FREObject result;

   const char *str = "This is a test string from ANE!";

   FRENewObjectFromUTF8(strlen(str)+1, (const uint8_t *)str, &result);

   return result;
}
FREObject getBytesAsString(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
	FREObject result;

	pthread_mutex_lock(&safety);
	FRENewObjectFromUTF8(bufferSize, (unsigned char *)buffer, &result);
	bufferSize = 0;
	sentEvent = 0;
	pthread_mutex_unlock(&safety);

	return result;
}
Exemple #7
0
 FREObject LNLeapDevice::getConfigString(uint32_t len, const uint8_t* key) {
     std::string keyString( key, key+len );
     std::string valueString(controller->config().getString(keyString));
     
     std::vector<uint8_t> valueVector(valueString.begin(), valueString.end());
     uint8_t *valueArray = &valueVector[0];
     
     FREObject freReturnValue;
     FRENewObjectFromUTF8(valueString.length(), valueArray, &freReturnValue);
     
     return freReturnValue;
 }
FREObject talkBack(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
	const uint8_t *locale = 0;
	const uint8_t *inpWord = 0;
	uint32_t len = 0;
	FREObject retObj=0;

	//get first argument
	if(FREGetObjectAsUTF8(argv[0], &len, &inpWord) != FRE_OK)
	return retObj;

	FRENewObjectFromUTF8((uint32_t)(strlen((char *)inpWord)),(const uint8_t*)(inpWord), &retObj);

	return retObj;
	
}
	FREObject FlyCapture2_getVersion(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
    {
        FREObject retObj;

		FlyCapture2::FC2Version fc2Version;
		FlyCapture2::Utilities::GetLibraryVersion( &fc2Version );

		char version[128];

		sprintf_s( 
			version, 
			"FlyCapture2 library version: %d.%d.%d.%d\n", 
			fc2Version.major, fc2Version.minor, fc2Version.type, fc2Version.build );
		
		FRENewObjectFromUTF8(strlen((const char*)version)+1, (const uint8_t*) version, &retObj);

		return retObj;
    }
	FREObject listInputDevices(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
	{
		FREObject result = NULL;
		FRENewObject((const uint8_t *)"Vector.<benkuper.nativeExtensions.MIDIDeviceIn>",0,NULL,&result,NULL);

	    unsigned int nPorts = midiin->getPortCount();

		//printf("Native MIDI :: listInputDevices > %i devices detected :\n",nPorts);

		FRESetArrayLength(result,nPorts);
		
		// Check inputs.
		std::string portName;

		for ( unsigned int i=0; i<nPorts; i++ ) {
			try {
				portName = midiin->getPortName(i);
			}
			catch ( RtMidiError &error ) {
				error.printMessage();
				// return NULL;
			}

			//std::cout << "  Input Port #" << i+1 << ": " << portName << '\n';
			//printf("[%i] %s\n",i,portName.c_str());

			FREObject args[1];
			FREObject portFRE = NULL;
			FRENewObjectFromUTF8(portName.size(),(const uint8_t*)portName.c_str(),&portFRE);
			args[0] = portFRE;

			FREObject curPort = NULL;
			FREObject exc = NULL;
			FREResult fre =  FRENewObject((const uint8_t *)"benkuper.nativeExtensions.MIDIDeviceIn",1,args,&curPort,&exc);
			//printf("FREResult = %i",fre);

			FRESetArrayElementAt(result,i,curPort);
		}

		return result;

	}
FREObject getBytesAsArray(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
	FREObject result;

	FRENewObject((const uint8_t*) "Array", 0, NULL, &result, NULL);
	FRESetArrayLength(result, bufferSize - 1);

	FREObject myChar;
	int i;

	pthread_mutex_lock(&safety);
	for (i = 0; i < bufferSize; i++)
	{
		FRENewObjectFromUTF8(1, (unsigned char *)buffer + i, &myChar);
		FRESetArrayElementAt(result, i, myChar);
	}

	bufferSize = 0;
	sentEvent = 0;
	pthread_mutex_unlock(&safety);

	return result;
}
Exemple #12
0
FREObject getFREObjectFromString(const char* arg) {
	FREObject result;
	FRENewObjectFromUTF8(uint32_t(strlen(arg)) + 1, (const uint8_t*)arg, &result);
	return result;
}
FREObject getSuggestions(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
	const uint8_t *locale = 0;
	const uint8_t *inpWord = 0;
	uint32_t len = -1;
	FREObject retObj=0;
	FREObject oneSuggestion=0;

	U16Char_t* inpWordU16 = NULL;
	std::string  inpWordDictEncoded;
	bool isConversionUnSuccesful=false;
	char * oneSuggestionEncoded=NULL;
	U16Char_t * oneSuggestionU16=NULL;
	std::string oneSuggestionU8;

	//assign memory to retobj
	FRENewObject((const uint8_t*)"Array", 0, NULL, &retObj, 0);

	//get first argument
	if(FREGetObjectAsUTF8(argv[1], &len, &locale) != FRE_OK)
	return retObj;
	len = 0;
	
	//get second argument
	if(FREGetObjectAsUTF8(argv[0], &len, &inpWord) != FRE_OK)
	return retObj;
	
	//get the hunspell object from cache
	Hunspell * hunspellObject=getHunspellObject(std::string((char *)locale));
		
	if(!hunspellObject) return retObj;
	
	//convert input utf8 to u16 string
	inpWordU16 = EncConv::convCharStrToU16Str((char *)inpWord, "UTF-8");

	//get dictionary encoding
	HUNSPELL_GET_ENCODING getEncAdd=(HUNSPELL_GET_ENCODING) GetProcAddress(hinstLib, "hunspell_get_dic_encoding");
	char * m_MainEncoding= (getEncAdd)(hunspellObject);

	//convert u16 to dictionary encoding
	inpWordDictEncoded=EncConv::convU16StrToCharStr(inpWordU16,m_MainEncoding);

	if(inpWordDictEncoded.length()==0)
	{
		isConversionUnSuccesful = true;
	}

	//get suggestAddress &freelistAddress
	HUNSPELL_SUGGEST suggestAdd= (HUNSPELL_SUGGEST) GetProcAddress(hinstLib, "hunspell_suggest");
	HUNSPELL_FREE_LIST freeListAdd= (HUNSPELL_FREE_LIST) GetProcAddress(hinstLib, "hunspell_free_list");
	
	char** suggList = NULL;
	int numSugg = 0;

	//Try getting suggestions with encoded word else try with UTF8
	if(suggestAdd && !isConversionUnSuccesful)
	{
		numSugg = (suggestAdd)(hunspellObject,(char *) (inpWordDictEncoded.c_str()),&suggList);
	}
	else
	{
		numSugg = (suggestAdd)(hunspellObject,(char *) (inpWord),&suggList);
	}
	

	if(numSugg)
				{
					FRESetArrayLength( retObj, numSugg );
					
					for(int iCount=0; iCount <numSugg; iCount++)
					{
						oneSuggestionEncoded=suggList[iCount];
						oneSuggestionU16=EncConv::convCharStrToU16Str(oneSuggestionEncoded, m_MainEncoding);
						oneSuggestionU8= EncConv::convU16StrToCharStr(oneSuggestionU16, "UTF-8");
						FRENewObjectFromUTF8((uint32_t)(oneSuggestionU8.length()),(const uint8_t*)(oneSuggestionU8.c_str()), &oneSuggestion);
						FRESetArrayElementAt(retObj, iCount, oneSuggestion);
						EncConv::releaseU16Str(oneSuggestionU16);
					}
					(freeListAdd)(hunspellObject, &suggList,numSugg);
					
				}
	EncConv::releaseU16Str(inpWordU16);
	return retObj;
}
FREObject getScores(FREContext ctx, void* functionData, uint32_t argc, FREObject argv[])
{
	SC_ScoreList_h score_list;
	SC_Score_h aScore;
    FREObject returnObject;
    int i,j;
    unsigned int contextArrayLength = 0;
	FREGetArrayLength(argv[0],&contextArrayLength);

	score_list = SC_ScoresController_GetScores(scores_controller);
	// arrayArgs has the Array arguments.
#if defined(BB10)
	unsigned int scoreListSize = SC_ScoreList_GetCount(score_list);
#else
	unsigned int scoreListSize = SC_ScoreList_GetScoresCount(score_list);
#endif

    FREObject* arrayArgs = (FREObject*)malloc(sizeof(FREObject)*scoreListSize);

	for(i = 0 ; i < scoreListSize ; i++)
	{
#if defined(BB10)
		aScore = SC_ScoreList_GetAt(score_list,i);
#else
		aScore = SC_ScoreList_GetScore(score_list,i);
#endif
	    FREObject* argV=(FREObject*)malloc(sizeof(FREObject)*6);
	    FRENewObjectFromInt32(SC_Score_GetMode(aScore), &argV[0]);
	    FRENewObjectFromInt32(SC_Score_GetLevel(aScore), &argV[1]);
	    FRENewObjectFromDouble(SC_Score_GetResult(aScore), &argV[2]);
	    FRENewObjectFromDouble(SC_Score_GetMinorResult(aScore), &argV[3]);

	    // Create the 5th argument(User)
	    SC_User_h aUser = SC_Score_GetUser(aScore);
	    SC_String_h scLogin = SC_User_GetLogin(aUser);
	    SC_String_h scEmail = SC_User_GetEmail(aUser);
	    const char * login = "";
	    const char * email = "";
	    if(scLogin != NULL)
	    	login= SC_String_GetData(scLogin);
	    if(scEmail != NULL)
	    	email = SC_String_GetData(scEmail);
	    FREObject* userArgV=(FREObject*)malloc(sizeof(FREObject)*2);
	    FRENewObjectFromUTF8(strlen(login)+1,(const uint8_t*)login, &userArgV[0]);
	    FRENewObjectFromUTF8(strlen(email)+1,(const uint8_t*)email, &userArgV[1]);
	    fprintf(stderr, "username: %s\n", login);

	    FRENewObject((const uint8_t*)"com.wallwizz.scoreloop.User",2,userArgV,&argV[4],NULL);

	    // Create the 6th argument(Context)
	    FREObject* contextArray = (FREObject*)malloc(sizeof(FREObject)*contextArrayLength);
	    for(j = 0; j < contextArrayLength; j++)
	    {
		    FREObject context;
			FREObject freContextKey;
			const char * aKey = "test";
			SC_String_h scValue = NULL;
			const char* aValue = NULL;
			unsigned int length;
			FREGetArrayElementAt(argv[0], j, &freContextKey);

			if(FREGetObjectAsUTF8(freContextKey,&length,(const uint8_t**)&aKey) != FRE_OK)
				fprintf(stderr, "FREGetArrayElementAt Error\n");

		    fprintf(stderr, "retrieved aKey: %s\n", aKey);
			SC_Context_h aContext = SC_Score_GetContext(aScore);
			SC_Context_Get(aContext, aKey, &scValue);
		    if(scValue != NULL)
		    {
		    	aValue= SC_String_GetData(scValue);
		    }else{
			    fprintf(stderr, "scValue NULL\n");
			    aValue = "not found";
		    }
		    fprintf(stderr, "retrieved aValue: %s\n", aValue);

		    FREObject* contextArgv=(FREObject*)malloc(sizeof(FREObject)*2);
		    FRENewObjectFromUTF8(strlen(aKey)+1,(const uint8_t*)aKey, &contextArgv[0]);
		    FRENewObjectFromUTF8(strlen(aValue)+1,(const uint8_t*)aValue, &contextArgv[1]);
		    FRENewObject((const uint8_t*)"com.wallwizz.scoreloop.Context",2,contextArgv,&contextArray[j],NULL);
		    free(contextArgv);
	    }
	    FRENewObject((const uint8_t*)"Array",contextArrayLength,contextArray,&argV[5],NULL);

	    FRENewObject((const uint8_t*)"com.wallwizz.scoreloop.Score",6,argV,&arrayArgs[i],NULL);
	    free(contextArray);
	}
    FRENewObject((const uint8_t*)"Array",scoreListSize,arrayArgs,&returnObject,NULL);
    free(arrayArgs);
    return returnObject;
}
/**
 * Creates a ActionScript net.rim.bbm.BBMContact instance from the supplied native contact.
 */
FREObject createActionScriptContact( const bbmsp_contact_t* contact )
{
	FREObject contact_AS = NULL;

	const int cNumAttributes = 7;
	FREObject resultAttributes[cNumAttributes];

	bbmsp_result_t result;

	char ppid[BBMSP_CONTACT_PPID_MAX];
	result = bbmsp_contact_get_ppid( contact, ppid, BBMSP_CONTACT_PPID_MAX );

	if( result == BBMSP_SUCCESS )
	{
		FRENewObjectFromUTF8((uint32_t)(strlen(ppid) + 1), (uint8_t*)ppid, &resultAttributes[0]);
	}
	else
	{
		trace( "createActionScriptContact ppid %i", result );
	}


	char displayName[BBMSP_CONTACT_DISPLAY_NAME_MAX];
	result = bbmsp_contact_get_display_name( contact, displayName, BBMSP_CONTACT_DISPLAY_NAME_MAX );
	if( result == BBMSP_SUCCESS )
	{
		FRENewObjectFromUTF8((uint32_t)(strlen(displayName) + 1), (uint8_t*)displayName, &resultAttributes[1]);
	}
	else
	{
		trace( "createActionScriptContact displayName %i", result );
	}


	char personalMessage[BBMSP_CONTACT_PERSONAL_MSG_MAX];
	result = bbmsp_contact_get_personal_message( contact, personalMessage, BBMSP_CONTACT_PERSONAL_MSG_MAX );
	if( result == BBMSP_SUCCESS )
	{
		FRENewObjectFromUTF8((uint32_t)(strlen(personalMessage) + 1), (uint8_t*)personalMessage, &resultAttributes[2]);
	}
	else
	{
		trace( "createActionScriptContact personalMessage %i", result );
	}

	char statusMessage[BBMSP_CONTACT_STATUS_MSG_MAX];
	result = bbmsp_contact_get_status_message( contact, statusMessage, BBMSP_CONTACT_STATUS_MSG_MAX );
	if( result == BBMSP_SUCCESS )
	{
		FRENewObjectFromUTF8((uint32_t)(strlen(statusMessage) + 1), (uint8_t*)statusMessage, &resultAttributes[3]);
	}
	else
	{
		trace( "createActionScriptContact statusMessage %i", result );
	}

	char appVersion[BBMSP_CONTACT_APP_VERSION_MAX];
	result = bbmsp_contact_get_app_version( contact, appVersion, BBMSP_CONTACT_APP_VERSION_MAX );
	if( result == BBMSP_SUCCESS )
	{
		FRENewObjectFromUTF8((uint32_t)(strlen(appVersion) + 1), (uint8_t*)appVersion, &resultAttributes[4]);
	}
	else
	{
		trace( "createActionScriptContact appVersion %i", result );
	}

	bbmsp_presence_status_t status;
	result = bbmsp_contact_get_status( contact, &status );
	if( result == BBMSP_SUCCESS )
	{
		FRENewObjectFromInt32( (int32_t)status, &resultAttributes[5]);
	}
	else
	{
		trace( "createActionScriptContact status %i", result );
	}


	bbmsp_image_t* m_contact_avatar;
	bbmsp_image_create_empty(&m_contact_avatar);

	result = bbmsp_contact_get_display_picture( contact, m_contact_avatar );
	trace( "%i picture", result );

	if( result == BBMSP_SUCCESS )
	{
		char path[PATH_MAX];
		getAvatarPath( m_contact_avatar, ppid, path );
		FRENewObjectFromUTF8((uint32_t)(strlen(path) + 1), (uint8_t*)path, &resultAttributes[6]);
	}
	else
	{
		resultAttributes[5] = NULL;
	}

	bbmsp_image_destroy( &m_contact_avatar );

	FRENewObject((const uint8_t*) "Array", cNumAttributes, resultAttributes, &contact_AS, NULL);

	return( contact_AS );
}
Exemple #16
0
FREObject getFREObjectFromString(std::string arg) {
	FREObject result;
	FRENewObjectFromUTF8((uint32_t)arg.length(), reinterpret_cast<const uint8_t*>(arg.data()), &result);
	return result;
}
FREObject FREString(std::string value) {
	FREObject result;
	FRENewObjectFromUTF8(value.size() + 1, (const uint8_t*)value.c_str(), &result);
	return result;
}