void ScriptManager::inventoryAdd(int16 item) { int8 cnt = inventoryGetCount(); if (cnt < 49) { bool notExist = true; if (cnt == 0) { inventorySetItem(0, 0); inventorySetCount(1); // we needed empty item for cycle code cnt = 1; } for (int8 cur = 0; cur < cnt; cur++) if (inventoryGetItem(cur) == item) { notExist = false; break; } if (notExist) { for (int8 i = cnt; i > 0; i--) inventorySetItem(i, inventoryGetItem(i - 1)); inventorySetItem(0, item); setStateValue(StateKey_InventoryItem, item); inventorySetCount(cnt + 1); } } }
void ScriptManager::inventoryDrop(int16 item) { int8 itemCount = inventoryGetCount(); // if items in inventory > 0 if (itemCount != 0) { int8 index = 0; // finding needed item while (index < itemCount) { if (inventoryGetItem(index) == item) break; index++; } // if item in the inventory if (itemCount != index) { // shift all items left with rewrite founded item for (int8 v = index; v < itemCount - 1 ; v++) inventorySetItem(v, inventoryGetItem(v + 1)); // del last item inventorySetItem(itemCount - 1, 0); inventorySetCount(inventoryGetCount() - 1); setStateValue(StateKey_InventoryItem, inventoryGetItem(0)); } } }
void ScriptManager::inventoryCycle() { int8 itemCount = inventoryGetCount(); int8 curItem = inventoryGetItem(0); if (itemCount > 1) { for (int8 i = 0; i < itemCount - 1; i++) inventorySetItem(i, inventoryGetItem(i + 1)); inventorySetItem(itemCount - 1, curItem); setStateValue(StateKey_InventoryItem, inventoryGetItem(0)); } }
SimpleDMS::SimpleDMS(const UUID& uuid) { m_uuid = uuid; m_deviceType = "urn:schemas-upnp-org:device:MediaServer:1"; m_friendlyName = "SimpleDMS[WTF]"; m_manufacturer = "NETGEAR Inc."; m_manufacturerURL = "http://www.netgear.com"; m_modelDescription = "GENIE SimpleDMS"; m_modelName = "SimpleDMS"; m_modelNumber = "DJ-DMS"; m_modelURL = "http://www.netgear.com"; m_serialNumber = "260471"; m_upc = "400240112013"; m_presentationURL = "http://www.netgear.com"; /* m_modelName = "Windows Media Player Sharing"; m_modelNumber = "12.0"; m_friendlyName = "SimpleDMS[WTF] : 2";*/ /* m_modelURL = "http://go.microsoft.com/fwlink/?LinkId=105926"; m_manufacturer = "Microsoft Corporation"; m_manufacturerURL = "http://www.microsoft.com";*/ // NPT_String friendlyName = "SimpleDMS248"; // m_friendlyName = NPT_String::Format("%s: 1", friendlyName.GetChars()); // m_modelName = NPT_String::Format("Windows Media Connect compatible (%s)", m_friendlyName.GetChars()); // m_modelNumber = "1"; //m_modelURL = "http://www.netgear.com/"; //m_manufacturer = "NETGEAR32"; //m_manufacturerURL = "http://www.siteview.com/"; //m_serialNumber = "12345678"; //m_modelDescription = friendlyName; registerServices(g_DMSServiceTable, g_DMSServiceTableSize); registerStaticContent("icon1", "image/png", NPT_DataBuffer(g_icon120_png, g_icon120_png_size, false), false); registerStaticContent("icon2", "image/png", NPT_DataBuffer(g_icon48_png, g_icon48_png_size, false), false); registerStaticContent("icon3", "image/png", NPT_DataBuffer(g_icon32_png, g_icon32_png_size, false), false); registerStaticContent("icon4", "image/jpeg", NPT_DataBuffer(g_icon120_jpg, g_icon120_jpg_size, false), false); registerStaticContent("icon5", "image/jpeg", NPT_DataBuffer(g_icon48_jpg, g_icon48_jpg_size, false), false); registerStaticContent("icon6", "image/jpeg", NPT_DataBuffer(g_icon32_jpg, g_icon32_jpg_size, false), false); const char *cds = "urn:upnp-org:serviceId:ContentDirectory"; setStateValue(cds, "SearchCapabilities", "*"); setStateValue(cds, "SortCapabilities", "*"); setStateValue(cds, "SystemUpdateID", "0"); setStateValue(cds, "ContainerUpdateIDs", ""); const char *cms = "urn:upnp-org:serviceId:ConnectionManager"; setStateValue(cms, "SourceProtocolInfo", ""); setStateValue(cms, "SinkProtocolInfo", ""); setStateValue(cms, "CurrentConnectionIDs", "0"); m_store = new MediaStore(this); }
bool executeCodeTest(ThreadState& state, uint32_t baseAddress, const TestData& test) { for (auto i = 0; i < TargetId::Max; ++i) { if (test.fields[i].hasInput) { setStateValue(state, i, test.fields[i].input); } } // Save the original state for comparison later ThreadState originalState = state; // Execute test gInterpreter.execute(&state, baseAddress + test.offset); bool result = true; for (auto i = 0; i < TargetId::Max; ++i) { result &= checkField(test.fields[i], i, state, originalState); } return result; }
SimpleDMR::SimpleDMR(Callback *callback, const UUID& uuid) : m_callback(callback) { m_uuid = uuid; m_deviceType = "urn:schemas-upnp-org:device:MediaRenderer:1"; m_friendlyName = "SimpleDMR[WTF]"; m_manufacturer = "NETGEAR Inc."; m_manufacturerURL = "http://www.netgear.com"; m_modelDescription = "GENIE SimpleDMR"; m_modelName = "SimpleDMR"; m_modelNumber = "DJ-DMR"; m_modelURL = "http://www.netgear.com"; m_serialNumber = "262471"; m_upc = "400240112011"; m_presentationURL = "http://www.netgear.com"; registerServices(g_DMRServiceTable, g_DMRServiceTableSize); registerStaticContent("icon1", "image/png", NPT_DataBuffer(g_icon120_png, g_icon120_png_size, false), false); registerStaticContent("icon2", "image/png", NPT_DataBuffer(g_icon48_png, g_icon48_png_size, false), false); registerStaticContent("icon3", "image/png", NPT_DataBuffer(g_icon32_png, g_icon32_png_size, false), false); registerStaticContent("icon4", "image/jpeg", NPT_DataBuffer(g_icon120_jpg, g_icon120_jpg_size, false), false); registerStaticContent("icon5", "image/jpeg", NPT_DataBuffer(g_icon48_jpg, g_icon48_jpg_size, false), false); registerStaticContent("icon6", "image/jpeg", NPT_DataBuffer(g_icon32_jpg, g_icon32_jpg_size, false), false); /* const char *sinkProtocolInfo = "http-get:*:image/png:*," "http-get:*:image/jpeg:*," "http-get:*:image/bmp:*," "http-get:*:image/gif:*," "http-get:*:audio/mpeg:*," "http-get:*:audio/3gpp:*," "http-get:*:audio/mp4:*," "http-get:*:audio/x-ms-wma:*," "http-get:*:audio/wav:*," "http-get:*:video/mp4:*," "http-get:*:video/mpeg:*," "http-get:*:video/x-ms-wmv:*," "http-get:*:video/x-ms-asf:*," "http-get:*:video/3gpp:*," "http-get:*:video/avi:*," "http-get:*:video/quicktime:*" ; */ const char *cms = "urn:upnp-org:serviceId:ConnectionManager"; setStateValue(cms, "SourceProtocolInfo", ""); // setStateValue(cms, "SinkProtocolInfo", sinkProtocolInfo); setStateValue(cms, "CurrentConnectionIDs", "0"); /* const char *avt = "urn:upnp-org:serviceId:AVTransport"; setStateValue(avt, "TransportState", "NO_MEDIA_PRESENT"); setStateValue(avt, "TransportStatus", "OK"); setStateValue(avt, "PlaybackStorageMedium", "NONE"); setStateValue(avt, "RecordStorageMedium", "NOT_IMPLEMENTED"); setStateValue(avt, "PossiblePlaybackStorageMedia", "NONE,NETWORK,UNKNOWN,HDD"); setStateValue(avt, "PossibleRecordStorageMedia", "NOT_IMPLEMENTED"); setStateValue(avt, "CurrentPlayMode", "NORMAL"); setStateValue(avt, "TransportPlaySpeed", "1"); setStateValue(avt, "RecordMediumWriteStatus", "NOT_IMPLEMENTED"); setStateValue(avt, "CurrentRecordQualityMode", "NOT_IMPLEMENTED"); setStateValue(avt, "PossibleRecordQualityModes", "NOT_IMPLEMENTED"); setStateValue(avt, "NumberOfTracks", "0"); setStateValue(avt, "CurrentTrack", "0"); setStateValue(avt, "CurrentTrackDuration", "00:00:00"); setStateValue(avt, "CurrentMediaDuration", "00:00:00"); setStateValue(avt, "CurrentTrackMetaData", ""); setStateValue(avt, "CurrentTrackURI", ""); setStateValue(avt, "AVTransportURI", ""); setStateValue(avt, "AVTransportURIMetaData", ""); setStateValue(avt, "NextAVTransportURI", "NOT_IMPLEMENTED"); setStateValue(avt, "NextAVTransportURIMetaData", "NOT_IMPLEMENTED"); setStateValue(avt, "RelativeTimePosition", "00:00:00"); setStateValue(avt, "AbsoluteTimePosition", "NOT_IMPLEMENTED"); setStateValue(avt, "RelativeCounterPosition", "-1"); setStateValue(avt, "AbsoluteCounterPosition", "-1"); setStateValue(avt, "CurrentTransportActions", ""); const char *rcs = "urn:upnp-org:serviceId:RenderingControl"; setStateValue(rcs, "PresetNameList", "FactoryDefaults"); setStateValue(rcs, "Mute", "0"); setStateValue(rcs, "Volume", "100"); */ setVar(DMRVAR_TransportState, "NO_MEDIA_PRESENT"); setVar(DMRVAR_TransportStatus, "OK"); setVar(DMRVAR_PlaybackStorageMedium, "NONE"); setVar(DMRVAR_RecordStorageMedium, "NOT_IMPLEMENTED"); setVar(DMRVAR_PossiblePlaybackStorageMedia, "NONE,NETWORK,UNKNOWN,HDD"); setVar(DMRVAR_PossibleRecordStorageMedia, "NOT_IMPLEMENTED"); setVar(DMRVAR_CurrentPlayMode, "NORMAL"); setVar(DMRVAR_TransportPlaySpeed, "1"); setVar(DMRVAR_RecordMediumWriteStatus, "NOT_IMPLEMENTED"); setVar(DMRVAR_CurrentRecordQualityMode, "NOT_IMPLEMENTED"); setVar(DMRVAR_PossibleRecordQualityModes, "NOT_IMPLEMENTED"); setVar(DMRVAR_NumberOfTracks, "0"); setVar(DMRVAR_CurrentTrack, "0"); setVar(DMRVAR_CurrentTrackDuration, "00:00:00"); setVar(DMRVAR_CurrentMediaDuration, "00:00:00"); setVar(DMRVAR_CurrentTrackMetaData, ""); setVar(DMRVAR_CurrentTrackURI, ""); setVar(DMRVAR_AVTransportURI, ""); setVar(DMRVAR_AVTransportURIMetaData, ""); setVar(DMRVAR_NextAVTransportURI, "NOT_IMPLEMENTED"); setVar(DMRVAR_NextAVTransportURIMetaData, "NOT_IMPLEMENTED"); setVar(DMRVAR_RelativeTimePosition, "00:00:00"); setVar(DMRVAR_AbsoluteTimePosition, "NOT_IMPLEMENTED"); setVar(DMRVAR_RelativeCounterPosition, "-1"); setVar(DMRVAR_AbsoluteCounterPosition, "-1"); setVar(DMRVAR_CurrentTransportActions, ""); setVar(DMRVAR_PresetNameList, "FactoryDefaults"); setVar(DMRVAR_Mute, "0"); setVar(DMRVAR_Volume, "100"); }
void SimpleDMR::setVar(DMRVAR varIndex, const NPT_String& value) { if (varIndex >= DMRVAR_BaseIndexAVT && varIndex <= DMRVAR_LastIndexAVT) { const char *varName; m_avtVars[varIndex - DMRVAR_BaseIndexAVT] = value; switch (varIndex) { case DMRVAR_TransportState: varName = "TransportState"; break; case DMRVAR_TransportStatus: varName = "TransportStatus"; break; case DMRVAR_PlaybackStorageMedium: varName = "PlaybackStorageMedium"; break; case DMRVAR_RecordStorageMedium: varName = "RecordStorageMedium"; break; case DMRVAR_PossiblePlaybackStorageMedia: varName = "PossiblePlaybackStorageMedia"; break; case DMRVAR_PossibleRecordStorageMedia: varName = "PossibleRecordStorageMedia"; break; case DMRVAR_CurrentPlayMode: varName = "CurrentPlayMode"; break; case DMRVAR_TransportPlaySpeed: varName = "TransportPlaySpeed"; break; case DMRVAR_RecordMediumWriteStatus: varName = "RecordMediumWriteStatus"; break; case DMRVAR_CurrentRecordQualityMode: varName = "CurrentRecordQualityMode"; break; case DMRVAR_PossibleRecordQualityModes: varName = "PossibleRecordQualityModes"; break; case DMRVAR_NumberOfTracks: varName = "NumberOfTracks"; break; case DMRVAR_CurrentTrack: varName = "CurrentTrack"; break; case DMRVAR_CurrentTrackDuration: varName = "CurrentTrackDuration"; break; case DMRVAR_CurrentMediaDuration: varName = "CurrentMediaDuration"; break; case DMRVAR_CurrentTrackMetaData: varName = "CurrentTrackMetaData"; break; case DMRVAR_CurrentTrackURI: varName = "CurrentTrackURI"; break; case DMRVAR_AVTransportURI: varName = "AVTransportURI"; break; case DMRVAR_AVTransportURIMetaData: varName = "AVTransportURIMetaData"; break; case DMRVAR_NextAVTransportURI: varName = "NextAVTransportURI"; break; case DMRVAR_NextAVTransportURIMetaData: varName = "NextAVTransportURIMetaData"; break; case DMRVAR_RelativeTimePosition: varName = "RelativeTimePosition"; break; case DMRVAR_AbsoluteTimePosition: varName = "AbsoluteTimePosition"; break; case DMRVAR_RelativeCounterPosition: varName = "RelativeCounterPosition"; break; case DMRVAR_AbsoluteCounterPosition: varName = "AbsoluteCounterPosition"; break; case DMRVAR_CurrentTransportActions: default: varName = "CurrentTransportActions"; break; } setStateValue("urn:upnp-org:serviceId:AVTransport", varName, value); } else if (varIndex >= DMRVAR_BaseIndexRCS && varIndex <= DMRVAR_LastIndexRCS) { const char *varName; m_rcsVars[varIndex - DMRVAR_BaseIndexRCS] = value; switch (varIndex) { case DMRVAR_PresetNameList: varName = "PresetNameList"; break; case DMRVAR_Mute: varName = "Mute"; break; case DMRVAR_Volume: varName = "Volume"; break; } setStateValue("urn:upnp-org:serviceId:RenderingControl", varName, value); } }
void SimpleDMR::setVarRCS(const NPT_String& name, const NPT_String& value) { setStateValue("urn:upnp-org:serviceId:RenderingControl", name, value); }
void SimpleDMR::setVarAVT(const NPT_String& name, const NPT_String& value) { setStateValue("urn:upnp-org:serviceId:AVTransport", name, value); }
void SimpleDMR::setSinkProtocolInfo(const NPT_String& value) { setStateValue("urn:upnp-org:serviceId:ConnectionManager", "SinkProtocolInfo", value); }
void ScriptManager::inventorySetItem(int8 id, int16 item) { if (id < 49 && id >= 0) setStateValue(StateKey_Inv_1_Slot + id, item); }
void ScriptManager::inventorySetCount(int8 cnt) { setStateValue(StateKey_Inv_Cnt_Slot, cnt); }
void SimpleDMS::onMediaStoreUpdated(MediaStore *mediaStore) { setStateValue("urn:upnp-org:serviceId:ContentDirectory", "SystemUpdateID", NPT_String::FromIntegerU(mediaStore->systemUpdateId())); }