void OuyaPlugin_asyncOuyaRequestProducts(const char* productsJson, s3eCallback onSuccess, s3eCallback onFailure, s3eCallback onCancel) { IwTrace(ODK, ("ODK_platform: OuyaPlugin_asyncOuyaRequestProducts")); std::string msg = "OuyaPlugin_asyncOuyaRequestProducts: productsJson="; msg.append(productsJson); IwTrace(ODK, (msg.c_str())); //convert JSON to product id array // Parse example data JSONValue* value = JSON::Parse(productsJson); if (value == NULL) { IwTrace(ODK, ("Parsing JSON Failed")); return; } if (!value->IsArray()) { IwTrace(ODK, ("Parsing JSON Failed: Not an array")); return; } // Retrieve the main object JSONArray data = value->AsArray(); std::vector<std::string> productIds; for (unsigned int i = 0; i < data.size(); i++) { if (data[i]->IsString()) { const std::wstring wstr = data[i]->AsString(); std::string productId( wstr.begin(), wstr.end() ); productIds.push_back(productId); } } OuyaSDK::CallbackSingleton::GetInstance()->m_callbacksRequestProducts->RegisterCallbacks(onSuccess, onFailure, onCancel); g_pluginOuya.AsyncOuyaRequestProducts(productIds); }
// **** INQUIRY **** void TScsiClientInquiryResp::DecodeInquiry(const TDesC8& aPtr) { __MSFNSLOG iPeripheralInfo.iRemovable = (aPtr[1] & 0x80) ? ETrue : EFalse; iPeripheralInfo.iPeripheralQualifier = aPtr[0] >> 5; iPeripheralInfo.iPeripheralDeviceType = aPtr[0] & 0x1F; iPeripheralInfo.iVersion = aPtr[2]; iPeripheralInfo.iResponseDataFormat = aPtr[3] & 0x0F; TPtrC8 vendorId(&aPtr[8], 8); iPeripheralInfo.iIdentification.iVendorId.Copy(vendorId); TPtrC8 productId(&aPtr[16], 16); iPeripheralInfo.iIdentification.iProductId.Copy(productId); TPtrC8 productRev(&aPtr[32], 4); iPeripheralInfo.iIdentification.iProductRev.Copy(productRev); }
QString USBDevice::productIdString() const { return QString("0x%1").arg(productId(), 4, 16, QChar('0')); }