bool mupnp_upnpav_dms_queryreceived(mUpnpStateVariable *statVar) { mUpnpDevice *dev; mUpnpService *service; mUpnpAvServer *dms; CG_UPNPAV_STATEVARIABLE_LISTNER userQueryListener; service = mupnp_statevariable_getservice(statVar); if (!service) return false; dev = (mUpnpDevice *)mupnp_service_getdevice(service); if (!dev) return false; dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev); if (!dms) return false; userQueryListener = mupnp_upnpav_dms_getquerylistener(dms); if (userQueryListener) { if (userQueryListener(statVar)) return true; } if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_TYPE)) return mupnp_upnpav_dms_condir_queryreceived(statVar); return false; }
void mupnp_service_ssdpmessagereceived(mUpnpService *service, mUpnpSSDPPacket *ssdpPkt) { mUpnpDevice *dev; const char *ssdpST; const char *serviceType; char serviceNT[MUPNP_SSDP_HEADER_LINE_MAXSIZE]; char serviceUSN[MUPNP_SSDP_HEADER_LINE_MAXSIZE]; mupnp_log_debug_l4("Entering...\n"); ssdpST = mupnp_ssdp_packet_getst(ssdpPkt); if (mupnp_strlen(ssdpST) <= 0) return; dev = mupnp_service_getdevice(service); mupnp_service_getnotifyservicetypent(service, serviceNT, sizeof(serviceNT)); mupnp_service_getnotifyservicetypeusn(service, serviceUSN, sizeof(serviceUSN)); if (mupnp_st_isalldevice(ssdpST) == true) { mupnp_device_postsearchresponse(dev, ssdpPkt, serviceNT, serviceUSN); } else if (mupnp_st_isurn(ssdpST) == true) { serviceType = mupnp_service_getservicetype(service); if (mupnp_streq(ssdpST, serviceType) == true) mupnp_device_postsearchresponse(dev, ssdpPkt, serviceType, serviceUSN); } mupnp_log_debug_l4("Leaving...\n"); }
bool mupnp_upnpav_dms_condir_queryreceived(mUpnpStateVariable *var) { mUpnpAvServer *dms; mUpnpDevice *dev; char *varName; char intBuf[MUPNP_STRING_INTEGER_BUFLEN]; varName = (char*)mupnp_statevariable_getname(var); if (mupnp_strlen(varName) <= 0) return false; dev = (mUpnpDevice *)mupnp_service_getdevice(mupnp_statevariable_getservice(var)); if (!dev) return false; dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev); if (!dms) return false; /* Sort Capabilities */ if (mupnp_streq(varName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SORT_CAPABILITIES)) { mupnp_statevariable_setvalue(var, ""); return true; } /* Search Capabilities */ if (mupnp_streq(varName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SEARCH_CAPABILITIES)) { mupnp_statevariable_setvalue(var, ""); return true; } /* System Update ID */ if (mupnp_streq(varName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SYSTEM_UPDATE_ID)) { mupnp_statevariable_setvalue(var, mupnp_int2str(mupnp_upnpav_dms_condir_getsystemupdateid(dms), intBuf, MUPNP_STRING_INTEGER_BUFLEN)); return true; } return false; }
bool mupnp_upnpav_dmr_queryreceived(mUpnpStateVariable *statVar) { mUpnpDevice *dev; mUpnpService *service; mUpnpAvRenderer *dmr; CG_UPNPAV_STATEVARIABLE_LISTNER userQueryListener; service = mupnp_statevariable_getservice(statVar); if (!service) return false; dev = (mUpnpDevice *)mupnp_service_getdevice(service); if (!dev) return false; dmr = (mUpnpAvRenderer *)mupnp_device_getuserdata(dev); if (!dmr) return false; userQueryListener = mupnp_upnpav_dmr_getquerylistener(dmr); if (userQueryListener) { if (userQueryListener(statVar)) return true; } if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_AVTRANSPORT_SERVICE_TYPE)) return mupnp_upnpav_dmr_avtransport_queryreceived(statVar); if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_RENDERINGCONTROL_SERVICE_TYPE)) return mupnp_upnpav_dmr_renderingctrl_queryreceived(statVar); if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_CONNECTIONMANAGER_SERVICE_TYPE)) return mupnp_upnpav_dmr_conmgr_queryreceived(statVar); return false; }
bool mupnp_upnpav_dmr_actionreceived(mUpnpAction *action) { mUpnpDevice *dev; mUpnpService *service; mUpnpAvRenderer *dmr; CG_UPNPAV_ACTION_LISTNER userActionListener; service = mupnp_action_getservice(action); if (!service) return false; dev = (mUpnpDevice *)mupnp_service_getdevice(service); if (!dev) return false; dmr = (mUpnpAvRenderer *)mupnp_device_getuserdata(dev); if (!dmr) return false; userActionListener = mupnp_upnpav_dmr_getactionlistener(dmr); if (userActionListener) { if (userActionListener(action)) return true; } if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_AVTRANSPORT_SERVICE_TYPE)) return mupnp_upnpav_dmr_avtransport_actionreceived(action); if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_RENDERINGCONTROL_SERVICE_TYPE)) return mupnp_upnpav_dmr_renderingctrl_actionreceived(action); if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMR_CONNECTIONMANAGER_SERVICE_TYPE)) return mupnp_upnpav_dmr_conmgr_actionreceived(action); return false; }
bool mupnp_upnpav_dms_actionreceived(mUpnpAction *action) { mUpnpDevice *dev; mUpnpService *service; mUpnpAvServer *dms; CG_UPNPAV_ACTION_LISTNER userActionListener; service = mupnp_action_getservice(action); if (!service) return false; dev = (mUpnpDevice *)mupnp_service_getdevice(service); if (!dev) return false; dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev); if (!dms) return false; userActionListener = mupnp_upnpav_dms_getactionlistener(dms); if (userActionListener) { if (userActionListener(action)) return true; } if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_TYPE)) return mupnp_upnpav_dms_condir_actionreceived(action); if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_MEDIARECEIVER_SERVICE_TYPE)) return mupnp_upnpav_dms_medrec_actionreceived(action); if (mupnp_streq(mupnp_service_getservicetype(service), CG_UPNPAV_DMS_CONNECTIONMANAGER_SERVICE_TYPE)) return mupnp_upnpav_dms_conmgr_actionreceived(action); return false; }
bool mupnp_upnpav_dms_condir_actionreceived(mUpnpAction *action) { mUpnpAvServer *dms; mUpnpDevice *dev; char *actionName; mUpnpArgument *arg; char *argValue; char intBuf[MUPNP_STRING_INTEGER_BUFLEN]; actionName = (char*)mupnp_action_getname(action); if (mupnp_strlen(actionName) <= 0) return false; dev = (mUpnpDevice *)mupnp_service_getdevice(mupnp_action_getservice(action)); if (!dev) return false; dms = (mUpnpAvServer *)mupnp_device_getuserdata(dev); if (!dms) return false; /* Browse */ if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE)) { arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE_BROWSE_FLAG); if (!arg) return false; argValue = mupnp_argument_getvalue(arg); if (mupnp_streq(argValue, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE_BROWSE_METADATA)) return mupnp_upnpav_dms_condir_browsemetadata(dms, action); if (mupnp_streq(argValue, CG_UPNPAV_DMS_CONTENTDIRECTORY_BROWSE_BROWSE_DIRECT_CHILDREN)) return mupnp_upnpav_dms_condir_browsedirectchildren(dms, action); return false; } /* Search */ if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_SEARCH)) { /* Not Implemented */ return false; } /* Sort Capabilities */ if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_GET_SORT_CAPABILITIES)) { arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_SORT_CAPS); if (!arg) return false; mupnp_argument_setvalue(arg, ""); return true; } /* Search Capabilities */ if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_GET_SEARCH_CAPABILITIES)) { arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_SEARCH_CAPS); if (!arg) return false; mupnp_argument_setvalue(arg, ""); return true; } /* System Update ID */ if (mupnp_streq(actionName, CG_UPNPAV_DMS_CONTENTDIRECTORY_GET_SYSTEM_UPDATE_ID)) { arg = mupnp_action_getargumentbyname(action, CG_UPNPAV_DMS_CONTENTDIRECTORY_ID); if (!arg) return false; mupnp_argument_setvalue(arg, mupnp_int2str(mupnp_upnpav_dms_condir_getsystemupdateid(dms), intBuf, MUPNP_STRING_INTEGER_BUFLEN)); return true; } return false; }