mUpnpStateVariable *SelectStateVariable(mUpnpService *service) { mUpnpStateVariable *stateVar; int n; char key; int serviceNum; n = 0; for (stateVar = mupnp_service_getstatevariables(service); stateVar != NULL; stateVar = mupnp_statevariable_next(stateVar)) { key = 'a' + n; if ('z' < key) break; printf(" [%c] = %s\n", key, mupnp_statevariable_getname(stateVar)); n++; } printf("Select StateVariable : "); key = kbgetkey(); key = tolower(key); printf("%c\n", key); if (!isalpha(key)) return NULL; serviceNum = key - 'a'; stateVar = mupnp_service_getstatevariables(service); for (n=1; n<serviceNum; n++) stateVar = mupnp_statevariable_next(stateVar); return stateVar; }
BOOL upnp_clock_queryreceived(mUpnpStateVariable *statVar) { const char *varName; mUpnpTime currTime; char sysTimeStr[SYSTEM_TIME_BUF_LEN]; varName = mupnp_statevariable_getname(statVar); if (strcmp("Time", varName) == 0) { currTime = mupnp_getcurrentsystemtime(); GetSystemTimeString(currTime, sysTimeStr); mupnp_statevariable_setvalue(statVar, sysTimeStr); return TRUE; } return FALSE; }
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; }
void PrintDeviceInfo(mUpnpDevice *dev, int indent) { char indentStr[128]; int n; mUpnpService *service; int serviceCnt; mUpnpAction *action; int actionCnt; mUpnpArgumentList *arg; int argCnt; mUpnpStateVariable *stateVar; int stateVarCnt; for (n=0; n<indent && n<(sizeof(indentStr)-1); n++) indentStr[n] = ' '; indentStr[n] = '\0'; serviceCnt = 0; for (service = mupnp_device_getservices(dev); service != NULL; service = mupnp_service_next(service)) { printf("%s service[%d] = %s\n", indentStr, ++serviceCnt, mupnp_service_getservicetype(service)); actionCnt = 0; for (action = mupnp_service_getactions(service); action != NULL; action = mupnp_action_next(action)) { printf("%s action[%d] = %s\n", indentStr, ++actionCnt, mupnp_action_getname(action)); argCnt = 0; for (arg = mupnp_action_getarguments(action); arg != NULL; arg = mupnp_argument_next(arg)) { printf("%s arg[%d] = %s\n", indentStr, ++argCnt, mupnp_argument_getname(arg)); } } stateVarCnt = 0; for (stateVar = mupnp_service_getstatevariables(service); stateVar != NULL; stateVar = mupnp_statevariable_next(stateVar)) { printf("%s stateVar[%d] = %s = %s\n", indentStr, ++stateVarCnt, mupnp_statevariable_getname(stateVar), mupnp_statevariable_getvalue(stateVar)); } } }