Mark X_MS_MediaReceiverRegistrar variables that are supposed to be evented as such.

This commit is contained in:
Justin Maggard 2014-01-29 18:47:57 -08:00
parent 58b2c604d8
commit dda5b1c19d
2 changed files with 13 additions and 127 deletions

View File

@ -191,79 +191,11 @@ static const struct XMLElt rootDesc[] =
{"/serviceType", "urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1"}, {"/serviceType", "urn:microsoft.com:service:X_MS_MediaReceiverRegistrar:1"},
{"/serviceId", "urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar"}, {"/serviceId", "urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar"},
{"/controlURL", X_MS_MEDIARECEIVERREGISTRAR_CONTROLURL}, {"/controlURL", X_MS_MEDIARECEIVERREGISTRAR_CONTROLURL},
{"/eventSubURL", ""}, {"/eventSubURL", X_MS_MEDIARECEIVERREGISTRAR_EVENTURL},
{"/SCPDURL", X_MS_MEDIARECEIVERREGISTRAR_PATH}, {"/SCPDURL", X_MS_MEDIARECEIVERREGISTRAR_PATH},
{0, 0} {0, 0}
}; };
static const struct argument AddPortMappingArgs[] =
{
{NULL, 1, 11},
{NULL, 1, 12},
{NULL, 1, 14},
{NULL, 1, 13},
{NULL, 1, 15},
{NULL, 1, 9},
{NULL, 1, 16},
{NULL, 1, 10},
{NULL, 0, 0}
};
static const struct argument DeletePortMappingArgs[] =
{
{NULL, 1, 11},
{NULL, 1, 12},
{NULL, 1, 14},
{NULL, 0, 0}
};
static const struct argument SetConnectionTypeArgs[] =
{
{NULL, 1, 0},
{NULL, 0, 0}
};
static const struct argument GetConnectionTypeInfoArgs[] =
{
{NULL, 2, 0},
{NULL, 2, 1},
{NULL, 0, 0}
};
static const struct argument GetNATRSIPStatusArgs[] =
{
{NULL, 2, 5},
{NULL, 2, 6},
{NULL, 0, 0}
};
static const struct argument GetGenericPortMappingEntryArgs[] =
{
{NULL, 1, 8},
{NULL, 2, 11},
{NULL, 2, 12},
{NULL, 2, 14},
{NULL, 2, 13},
{NULL, 2, 15},
{NULL, 2, 9},
{NULL, 2, 16},
{NULL, 2, 10},
{NULL, 0, 0}
};
static const struct argument GetSpecificPortMappingEntryArgs[] =
{
{NULL, 1, 11},
{NULL, 1, 12},
{NULL, 1, 14},
{NULL, 2, 13},
{NULL, 2, 15},
{NULL, 2, 9},
{NULL, 2, 16},
{NULL, 2, 10},
{NULL, 0, 0}
};
/* For ConnectionManager */ /* For ConnectionManager */
static const struct argument GetProtocolInfoArgs[] = static const struct argument GetProtocolInfoArgs[] =
{ {
@ -321,9 +253,9 @@ static const struct action ConnectionManagerActions[] =
static const struct stateVar ConnectionManagerVars[] = static const struct stateVar ConnectionManagerVars[] =
{ {
{"SourceProtocolInfo", 1<<7, 0, 0, 44}, /* required */ {"SourceProtocolInfo", 0|EVENTED, 0, 0, 44}, /* required */
{"SinkProtocolInfo", 1<<7, 0, 0, 48}, /* required */ {"SinkProtocolInfo", 0|EVENTED, 0, 0, 48}, /* required */
{"CurrentConnectionIDs", 1<<7, 0, 0, 46}, /* required */ {"CurrentConnectionIDs", 0|EVENTED, 0, 0, 46}, /* required */
{"A_ARG_TYPE_ConnectionStatus", 0, 0, 27}, /* required */ {"A_ARG_TYPE_ConnectionStatus", 0, 0, 27}, /* required */
{"A_ARG_TYPE_ConnectionManager", 0, 0}, /* required */ {"A_ARG_TYPE_ConnectionManager", 0, 0}, /* required */
{"A_ARG_TYPE_Direction", 0, 0, 33}, /* required */ {"A_ARG_TYPE_Direction", 0, 0, 33}, /* required */
@ -405,7 +337,7 @@ static const struct action ContentDirectoryActions[] =
static const struct stateVar ContentDirectoryVars[] = static const struct stateVar ContentDirectoryVars[] =
{ {
{"TransferIDs", 1<<7, 0, 0, 48}, /* 0 */ {"TransferIDs", 0|EVENTED, 0, 0, 48}, /* 0 */
{"A_ARG_TYPE_ObjectID", 0, 0}, {"A_ARG_TYPE_ObjectID", 0, 0},
{"A_ARG_TYPE_Result", 0, 0}, {"A_ARG_TYPE_Result", 0, 0},
{"A_ARG_TYPE_SearchCriteria", 0, 0}, {"A_ARG_TYPE_SearchCriteria", 0, 0},
@ -416,17 +348,9 @@ static const struct stateVar ContentDirectoryVars[] =
{"A_ARG_TYPE_Index", 3, 0}, {"A_ARG_TYPE_Index", 3, 0},
{"A_ARG_TYPE_Count", 3, 0}, {"A_ARG_TYPE_Count", 3, 0},
{"A_ARG_TYPE_UpdateID", 3, 0}, {"A_ARG_TYPE_UpdateID", 3, 0},
//JM{"A_ARG_TYPE_TransferID", 3, 0}, /* 10 */
//JM{"A_ARG_TYPE_TransferStatus", 0, 0, 39},
/* Allowed Values : COMPLETED / ERROR / IN_PROGRESS / STOPPED */
//JM{"A_ARG_TYPE_TransferLength", 0, 0},
//JM{"A_ARG_TYPE_TransferTotal", 0, 0},
//JM{"A_ARG_TYPE_TagValueList", 0, 0},
//JM{"A_ARG_TYPE_URI", 5, 0}, /* 15 */
{"SearchCapabilities", 0, 0}, {"SearchCapabilities", 0, 0},
{"SortCapabilities", 0, 0}, {"SortCapabilities", 0, 0},
{"SystemUpdateID", 3|0x80, 0, 0, 255}, {"SystemUpdateID", 3|EVENTED, 0, 0, 255},
//{"ContainerUpdateIDs", 0, 0},
{0, 0} {0, 0}
}; };
@ -455,9 +379,6 @@ static const struct action X_MS_MediaReceiverRegistrarActions[] =
{ {
{"IsAuthorized", GetIsAuthorizedArgs}, /* R */ {"IsAuthorized", GetIsAuthorizedArgs}, /* R */
{"IsValidated", GetIsValidatedArgs}, /* R */ {"IsValidated", GetIsValidatedArgs}, /* R */
#if 0 // Not needed? WMP12 still works. Need to check with 360 and WMP11.
{"RegisterDevice", GetRegisterDeviceArgs}, /* R */
#endif
{0, 0} {0, 0}
}; };
@ -467,49 +388,13 @@ static const struct stateVar X_MS_MediaReceiverRegistrarVars[] =
{"A_ARG_TYPE_RegistrationReqMsg", 7, 0}, {"A_ARG_TYPE_RegistrationReqMsg", 7, 0},
{"A_ARG_TYPE_RegistrationRespMsg", 7, 0}, {"A_ARG_TYPE_RegistrationRespMsg", 7, 0},
{"A_ARG_TYPE_Result", 6, 0}, {"A_ARG_TYPE_Result", 6, 0},
{"AuthorizationDeniedUpdateID", 3, 0}, {"AuthorizationDeniedUpdateID", 3|EVENTED, 0},
{"AuthorizationGrantedUpdateID", 3, 0}, {"AuthorizationGrantedUpdateID", 3|EVENTED, 0},
{"ValidationRevokedUpdateID", 3, 0}, {"ValidationRevokedUpdateID", 3|EVENTED, 0},
{"ValidationSucceededUpdateID", 3, 0}, {"ValidationSucceededUpdateID", 3|EVENTED, 0},
{0, 0} {0, 0}
}; };
/* WANCfg.xml */
/* See UPnP_IGD_WANCommonInterfaceConfig 1.0.pdf */
static const struct argument GetCommonLinkPropertiesArgs[] =
{
{NULL, 2, 0},
{NULL, 2, 1},
{NULL, 2, 2},
{NULL, 2, 3},
{NULL, 0, 0}
};
static const struct argument GetTotalBytesSentArgs[] =
{
{NULL, 2, 4},
{NULL, 0, 0}
};
static const struct argument GetTotalBytesReceivedArgs[] =
{
{NULL, 2, 5},
{NULL, 0, 0}
};
static const struct argument GetTotalPacketsSentArgs[] =
{
{NULL, 2, 6},
{NULL, 0, 0}
};
static const struct argument GetTotalPacketsReceivedArgs[] =
{
{NULL, 2, 7},
{NULL, 0, 0}
};
static const struct serviceDesc scpdContentDirectory = static const struct serviceDesc scpdContentDirectory =
{ ContentDirectoryActions, ContentDirectoryVars }; { ContentDirectoryActions, ContentDirectoryVars };
@ -777,7 +662,7 @@ genServiceDesc(int * len, const struct serviceDesc * s)
{ {
str = strcat_str(str, len, &tmplen, str = strcat_str(str, len, &tmplen,
"<stateVariable sendEvents=\""); "<stateVariable sendEvents=\"");
str = strcat_str(str, len, &tmplen, (vars[i].itype & 0x80)?"yes":"no"); str = strcat_str(str, len, &tmplen, (vars[i].itype & EVENTED)?"yes":"no");
str = strcat_str(str, len, &tmplen, "\"><name>"); str = strcat_str(str, len, &tmplen, "\"><name>");
str = strcat_str(str, len, &tmplen, vars[i].name); str = strcat_str(str, len, &tmplen, vars[i].name);
str = strcat_str(str, len, &tmplen, "</name><dataType>"); str = strcat_str(str, len, &tmplen, "</name><dataType>");
@ -851,7 +736,7 @@ genEventVars(int * len, const struct serviceDesc * s, const char * servns)
snprintf(buf, sizeof(buf), "<e:propertyset xmlns:e=\"urn:schemas-upnp-org:event-1-0\" xmlns:s=\"%s\">", servns); snprintf(buf, sizeof(buf), "<e:propertyset xmlns:e=\"urn:schemas-upnp-org:event-1-0\" xmlns:s=\"%s\">", servns);
str = strcat_str(str, len, &tmplen, buf); str = strcat_str(str, len, &tmplen, buf);
while(v->name) { while(v->name) {
if(v->itype & 0x80) { if(v->itype & EVENTED) {
snprintf(buf, sizeof(buf), "<e:property><%s>", v->name); snprintf(buf, sizeof(buf), "<e:property><%s>", v->name);
str = strcat_str(str, len, &tmplen, buf); str = strcat_str(str, len, &tmplen, buf);
//printf("<e:property><s:%s>", v->name); //printf("<e:property><s:%s>", v->name);

View File

@ -57,6 +57,7 @@ struct argument {
unsigned char relatedVar; /* index of the related variable */ unsigned char relatedVar; /* index of the related variable */
}; };
#define EVENTED 1<<7
struct stateVar { struct stateVar {
const char * name; const char * name;
unsigned char itype; /* MSB: sendEvent flag, 7 LSB: index in upnptypes */ unsigned char itype; /* MSB: sendEvent flag, 7 LSB: index in upnptypes */