s32 CALLBACK SPU2init() { LOG_CALLBACK("SPU2init()\n"); spu2Log = fopen("logs/spu2.txt", "w"); if (spu2Log) setvbuf(spu2Log, NULL, _IONBF, 0); SPU2_LOG("Spu2 null version %d,%d\n",SPU2_REVISION,SPU2_BUILD); SPU2_LOG("SPU2init\n"); #ifdef _WIN32 QueryPerformanceFrequency(&g_counterfreq); #endif InitApi(); spu2regs = (s8*)malloc(0x10000); spu2mem = (u16*)malloc(0x200000); // 2Mb memset(spu2regs, 0, 0x10000); memset(spu2mem, 0, 0x200000); if ((spu2mem == NULL) || (spu2regs == NULL)) { SysMessage("Error allocating Memory\n"); return -1; } memset(dwEndChannel2, 0, sizeof(dwEndChannel2)); memset(dwNewChannel2, 0, sizeof(dwNewChannel2)); memset(iFMod, 0, sizeof(iFMod)); memset(s_buffers, 0, sizeof(s_buffers)); InitADSR(); memset(voices, 0, sizeof(voices)); // last 24 channels have higher mem offset for (s32 i = 0; i < 24; ++i) voices[i+24].memoffset = 0x400; // init each channel for (u32 i = 0; i < ArraySize(voices); ++i) { voices[i].init(i); } return 0; }
static void nfc_jni_connect_callback(void* pContext, uint8_t nErrCode, NFCSTATUS status) { struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext; LOG_CALLBACK("nfc_jni_llcp_connect_callback", status); if(status == NFCSTATUS_SUCCESS) { TRACE("Socket connected\n"); } else { LOGD("Socket not connected:"); switch(nErrCode) { case PHFRINFC_LLCP_DM_OPCODE_SAP_NOT_ACTIVE: { LOGD("> SAP NOT ACTIVE\n"); }break; case PHFRINFC_LLCP_DM_OPCODE_SAP_NOT_FOUND: { LOGD("> SAP NOT FOUND\n"); }break; case PHFRINFC_LLCP_DM_OPCODE_CONNECT_REJECTED: { LOGD("> CONNECT REJECTED\n"); }break; case PHFRINFC_LLCP_DM_OPCODE_CONNECT_NOT_ACCEPTED: { LOGD("> CONNECT NOT ACCEPTED\n"); }break; case PHFRINFC_LLCP_DM_OPCODE_SOCKET_NOT_AVAILABLE: { LOGD("> SOCKET NOT AVAILABLE\n"); }break; } } /* Report the callback status and wake up the caller */ pCallbackData->status = status; sem_post(&pCallbackData->sem); }
static void nfc_jni_receive_callback(void *pContext, phNfc_sData_t *data, NFCSTATUS status) { struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext; phNfc_sData_t **ptr = (phNfc_sData_t **)pCallbackData->pContext; LOG_CALLBACK("nfc_jni_receive_callback", status); if(status == NFCSTATUS_SUCCESS) { *ptr = data; } else { *ptr = NULL; } /* Report the callback status and wake up the caller */ pCallbackData->status = status; sem_post(&pCallbackData->sem); }
static void nfc_jni_connect_callback(void *pContext, phLibNfc_Handle hRemoteDev, phLibNfc_sRemoteDevInformation_t *psRemoteDevInfo, NFCSTATUS status) { struct nfc_jni_callback_data * pCallbackData = (struct nfc_jni_callback_data *) pContext; phNfc_sData_t * psGeneralBytes = (phNfc_sData_t *)pCallbackData->pContext; LOG_CALLBACK("nfc_jni_connect_callback", status); if(status == NFCSTATUS_SUCCESS) { psGeneralBytes->length = psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo_Length; psGeneralBytes->buffer = (uint8_t*)malloc(psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo_Length); psGeneralBytes->buffer = psRemoteDevInfo->RemoteDevInfo.NfcIP_Info.ATRInfo; } /* Report the callback status and wake up the caller */ pCallbackData->status = status; sem_post(&pCallbackData->sem); }
static void com_android_nfc_jni_open_secure_element_notification_callback(void *pContext, phLibNfc_RemoteDevList_t *psRemoteDevList, uint8_t uNofRemoteDev, NFCSTATUS status) { struct nfc_jni_callback_data * pContextData = (struct nfc_jni_callback_data*)pContext; NFCSTATUS ret; int i; JNIEnv *e = nfc_get_env(); if(status == NFCSTATUS_DESELECTED) { LOG_CALLBACK("com_android_nfc_jni_open_secure_element_notification_callback: Target deselected", status); } else { LOG_CALLBACK("com_android_nfc_jni_open_secure_element_notification_callback", status); TRACE("Discovered %d secure elements", uNofRemoteDev); if(status == NFCSTATUS_MULTIPLE_PROTOCOLS) { bool foundHandle = false; TRACE("Multiple Protocol supported\n"); for (i=0; i<uNofRemoteDev; i++) { // Always open the phNfc_eISO14443_A_PICC protocol TRACE("Protocol %d handle=%x type=%d", i, psRemoteDevList[i].hTargetDev, psRemoteDevList[i].psRemoteDevInfo->RemDevType); if (psRemoteDevList[i].psRemoteDevInfo->RemDevType == phNfc_eISO14443_A_PICC) { secureElementHandle = psRemoteDevList[i].hTargetDev; foundHandle = true; } } if (!foundHandle) { ALOGE("Could not find ISO-DEP secure element"); status = NFCSTATUS_FAILED; goto clean_and_return; } } else { secureElementHandle = psRemoteDevList->hTargetDev; } TRACE("Secure Element Handle: 0x%08x", secureElementHandle); /* Set type name */ jintArray techList; nfc_jni_get_technology_tree(e, psRemoteDevList,uNofRemoteDev, &techList, NULL, NULL); // TODO: Should use the "connected" technology, for now use the first if ((techList != NULL) && e->GetArrayLength(techList) > 0) { e->GetIntArrayRegion(techList, 0, 1, &SecureElementTech); TRACE("Store Secure Element Info\n"); SecureElementInfo = psRemoteDevList->psRemoteDevInfo; TRACE("Discovered secure element: tech=%d", SecureElementTech); } else { ALOGE("Discovered secure element, but could not resolve tech"); status = NFCSTATUS_FAILED; } // This thread may not return to the virtual machine for a long time // so make sure to delete the local refernce to the tech list. e->DeleteLocalRef(techList); } clean_and_return: pContextData->status = status; sem_post(&pContextData->sem); }
void CALLBACK SPU2readDMA7Mem(u16* pMem, int size) { LOG_CALLBACK("SPU2readDMA7Mem()\n"); return SPU2readDMAMem(pMem, size, 1); }
void CALLBACK SPU2dmaInterrupt(s32 channel) { LOG_CALLBACK("SPU2dmaInterruptDMA()\n"); SPU2interruptDMA(channel); }
void CALLBACK SPU2interruptDMA7() { LOG_CALLBACK("SPU2interruptDMA7()\n"); SPU2interruptDMA(7); }
void CALLBACK SPU2interruptDMA4() { LOG_CALLBACK("SPU2interruptDMA4()\n"); SPU2interruptDMA(4); }
void CALLBACK SPU2writeDMA7Mem(u16* pMem, int size) { LOG_CALLBACK("SPU2writeDMA7Mem()\n"); SPU2writeDMAMem(pMem, size, 1); }
void CALLBACK SPU2about() { LOG_CALLBACK("SPU2about()\n"); SysMessage("%s %d.%d\ndeveloper: zerofrog", libraryName, SPU2_VERSION, SPU2_BUILD); }
void CALLBACK SPU2configure() { LOG_CALLBACK("SPU2configure()\n"); DisplayDialog(); }
s32 CALLBACK SPU2open(void *pDsp) { LOG_CALLBACK("SPU2open()\n"); #ifdef _WIN32 hWMain = pDsp == NULL ? NULL : *(HWND*)pDsp; if (!IsWindow(hWMain)) hWMain=GetActiveWindow(); #endif LoadConfig(); SPUCycles = SPUWorkerCycles = 0; interrupt = 0; SPUStartCycle[0] = SPUStartCycle[1] = 0; SPUTargetCycle[0] = SPUTargetCycle[1] = 0; s_nDropPacket = 0; if ( conf.options & OPTION_TIMESTRETCH ) { pSoundTouch = new soundtouch::SoundTouch(); pSoundTouch->setSampleRate(SAMPLE_RATE); pSoundTouch->setChannels(2); pSoundTouch->setTempoChange(0); pSoundTouch->setSetting(SETTING_USE_QUICKSEEK, 0); pSoundTouch->setSetting(SETTING_USE_AA_FILTER, 1); } //conf.Log = 1; g_bPlaySound = !(conf.options&OPTION_MUTE); if ( g_bPlaySound && SetupSound() != 0 ) { SysMessage("ZeroSPU2: Failed to initialize sound"); g_bPlaySound = false; } if ( g_bPlaySound ) { // initialize the audio buffers for (u32 i = 0; i < ArraySize(s_pAudioBuffers); ++i) { s_pAudioBuffers[i].pbuf = (u8*)_aligned_malloc(4 * NS_TOTAL_SIZE, 16); // 4 bytes for each sample s_pAudioBuffers[i].len = 0; } s_nCurBuffer = 0; s_nQueuedBuffers = 0; s_pCurOutput = (s16*)s_pAudioBuffers[0].pbuf; assert( s_pCurOutput != NULL); for (s32 i = 0; i < ArraySize(s_nDurations); ++i) { s_nDurations[i] = NSFRAMES*1000; } s_nTotalDuration = ArraySize(s_nDurations)*NSFRAMES*1000; s_nCurDuration = 0; // launch the thread s_bThreadExit = false; #ifdef _WIN32 s_threadSPU2 = CreateThread(NULL, 0, SPU2ThreadProc, NULL, 0, NULL); if ( s_threadSPU2 == NULL ) { return -1; } #else if ( pthread_create(&s_threadSPU2, NULL, SPU2ThreadProc, NULL) != 0 ) { SysMessage("ZeroSPU2: Failed to create spu2thread\n"); return -1; } #endif } g_nSpuInit = 1; return 0; }
static void com_android_nfc_jni_open_secure_element_notification_callback(void *pContext, phLibNfc_RemoteDevList_t *psRemoteDevList, uint8_t uNofRemoteDev, NFCSTATUS status) { struct nfc_jni_callback_data * pContextData = (struct nfc_jni_callback_data*)pContext; NFCSTATUS ret; int i; JNIEnv *e = nfc_get_env(); if(status == NFCSTATUS_DESELECTED) { LOG_CALLBACK("com_android_nfc_jni_open_secure_element_notification_callback: Target deselected", status); } else { LOG_CALLBACK("com_android_nfc_jni_open_secure_element_notification_callback", status); TRACE("Discovered %d tags", uNofRemoteDev); if(status == NFCSTATUS_MULTIPLE_PROTOCOLS) { TRACE("Multiple Protocol supported\n"); TRACE("Secure Element Handle: 0x%08x",psRemoteDevList[1].hTargetDev); secureElementHandle = psRemoteDevList[1].hTargetDev; /* Set type name */ jintArray techList; jintArray handleList; jintArray typeList; nfc_jni_get_technology_tree(e, psRemoteDevList,uNofRemoteDev, &techList, &handleList, &typeList); // TODO: Should use the "connected" technology, for now use the first if (e->GetArrayLength(techList) > 0) { jint* technologies = e->GetIntArrayElements(techList, 0); SecureElementTech = technologies[0]; TRACE("Store Secure Element Info\n"); SecureElementInfo = psRemoteDevList->psRemoteDevInfo; TRACE("Discovered secure element: tech=%d", SecureElementTech); } else { LOGE("Discovered secure element, but could not resolve tech"); status = NFCSTATUS_FAILED; } } else { TRACE("Secure Element Handle: 0x%08x",psRemoteDevList->hTargetDev); secureElementHandle = psRemoteDevList->hTargetDev; /* Set type name */ jintArray techList; jintArray handleList; jintArray typeList; nfc_jni_get_technology_tree(e, psRemoteDevList,uNofRemoteDev, &techList, &handleList, &typeList); // TODO: Should use the "connected" technology, for now use the first if ((techList != NULL) && e->GetArrayLength(techList) > 0) { jint* technologies = e->GetIntArrayElements(techList, 0); SecureElementTech = technologies[0]; TRACE("Store Secure Element Info\n"); SecureElementInfo = psRemoteDevList->psRemoteDevInfo; TRACE("Discovered secure element: tech=%d", SecureElementTech); } else { LOGE("Discovered secure element, but could not resolve tech"); status = NFCSTATUS_FAILED; } } } pContextData->status = status; sem_post(&pContextData->sem); }