175 #if defined(INCLUDE_MHEG_PVR) || defined(INCLUDE_PVR_AU) 180 #ifdef INCLUDE_SA_PROFILE 199 #ifdef INCLUDE_SI_EXTENSION 221 #if defined(INCLUDE_MHEG_PVR) || defined(INCLUDE_PVR_AU) 224 #if defined(INCLUDE_IC) && defined(INCLUDE_ICS) 227 #if defined(INCLUDE_CONNECTED_TV) 266 static MHEG5ErrorCode MHEG5prgGetCurrentDate(
MHEG5Program *program)
269 MHEG5Root *callVar = 0, *dateVar, *timeVar;
270 S32BIT day = 0, time = 0;
273 nextParam = MHEG5resolveORef(program->parameter, &callVar);
276 return MHEG5ERR_WRONGNUMBEROFPARAMS;
278 nextParam = MHEG5resolveORef(nextParam, &dateVar);
281 return MHEG5ERR_WRONGNUMBEROFPARAMS;
283 MHEG5resolveORef(nextParam, &timeVar);
284 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
285 (!dateVar) || (dateVar->clazz != MHEG5INTEGERVARIABLE) ||
286 (!timeVar) || (timeVar->clazz != MHEG5INTEGERVARIABLE))
288 return MHEG5ERR_WRONGPARAM;
297 if (mheg_trace_debug & (TACTIONS | TEVNTS))
299 DBG_PRINTF(T_NL
"GetCurrentDate( %ld, %ld )", day, time);
302 return MHEG5ERR_NOERROR;
347 static MHEG5ErrorCode MHEG5prgFormatDate(
MHEG5Program *program)
353 MHEG5Bool invalidString;
356 nextParam = MHEG5resolveORef(program->parameter, &callVar);
359 return MHEG5ERR_WRONGNUMBEROFPARAMS;
364 return MHEG5ERR_WRONGNUMBEROFPARAMS;
369 return MHEG5ERR_WRONGPARAM;
371 nextParam = MHEG5resolveGenericInteger(nextParam, &day);
374 return MHEG5ERR_WRONGNUMBEROFPARAMS;
376 nextParam = MHEG5resolveGenericInteger(nextParam, &time);
379 return MHEG5ERR_WRONGNUMBEROFPARAMS;
381 MHEG5resolveORef(nextParam, &osVar);
383 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
384 (!osVar) || (osVar->clazz != MHEG5OCTETSTRINGVARIABLE))
386 return MHEG5ERR_WRONGPARAM;
394 if (mheg_trace_debug & (TACTIONS | TEVNTS))
397 strcpy(buff, T_NL
"FormatDate( ");
398 MHEG5stringTrace( format, buff, 0, 120 );
399 DBG_PRINTF(
"%s, %ld, %ld, ", buff, day, time);
402 DBG_PRINTF(
"%s)", buff);
405 return MHEG5ERR_NOERROR;
423 static MHEG5ErrorCode MHEG5prgGetDayOfWeek(
MHEG5Program *program)
430 nextParam = MHEG5resolveORef(program->parameter, &callVar);
433 return MHEG5ERR_WRONGNUMBEROFPARAMS;
435 nextParam = MHEG5resolveGenericInteger(nextParam, &day);
438 return MHEG5ERR_WRONGNUMBEROFPARAMS;
440 MHEG5resolveORef(nextParam, &intVar);
441 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
442 (!intVar) || (intVar->clazz != MHEG5INTEGERVARIABLE))
444 return MHEG5ERR_WRONGPARAM;
451 if (mheg_trace_debug & (TACTIONS | TEVNTS))
456 return MHEG5ERR_NOERROR;
475 static MHEG5ErrorCode MHEG5prgRandom(
MHEG5Program *program)
482 nextParam = MHEG5resolveORef(program->parameter, &callVar);
485 return MHEG5ERR_WRONGNUMBEROFPARAMS;
487 nextParam = MHEG5resolveGenericInteger(nextParam, &intVal);
490 return MHEG5ERR_WRONGNUMBEROFPARAMS;
492 MHEG5resolveORef(nextParam, &rndVar);
494 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
495 (!rndVar) || (rndVar->clazz != MHEG5INTEGERVARIABLE))
497 return MHEG5ERR_WRONGPARAM;
523 if (mheg_trace_debug & (TACTIONS | TEVNTS))
528 return MHEG5ERR_NOERROR;
545 static MHEG5ErrorCode MHEG5prgCastToContentRef(
MHEG5Program *program)
550 MHEG5Bool invalidString;
553 nextParam = MHEG5resolveORef(program->parameter, &callVar);
556 return MHEG5ERR_WRONGNUMBEROFPARAMS;
561 return MHEG5ERR_WRONGNUMBEROFPARAMS;
566 return MHEG5ERR_WRONGPARAM;
568 MHEG5resolveORef(nextParam, &osVar);
570 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
571 (!osVar) || (osVar->clazz != MHEG5CONTENTREFVARIABLE))
573 return MHEG5ERR_WRONGPARAM;
575 TRACE(TEVNTS, (
" s=%.*s", (
int)s1.len, s1.data))
580 if (mheg_trace_debug & (TACTIONS | TEVNTS))
583 strcpy(buff, T_NL
"CastToContentRef( ");
584 MHEG5stringTrace( s1, buff, 0, 120 );
585 DBG_PRINTF(
"%s )", buff);
588 return MHEG5ERR_NOERROR;
615 static MHEG5ErrorCode MHEG5prgCastToObjectRef(
MHEG5Program *program)
621 MHEG5Bool result = MHEG5TRUE;
622 MHEG5Bool invalidString;
625 nextParam = MHEG5resolveORef(program->parameter, &callVar);
628 return MHEG5ERR_WRONGNUMBEROFPARAMS;
634 return MHEG5ERR_WRONGNUMBEROFPARAMS;
639 return MHEG5ERR_WRONGPARAM;
642 nextParam = MHEG5resolveGenericInteger(nextParam, &
id);
645 return MHEG5ERR_WRONGNUMBEROFPARAMS;
647 MHEG5resolveORef(nextParam, &obVar);
649 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
650 (!obVar) || (obVar->clazz != MHEG5OBJECTREFVARIABLE))
652 return MHEG5ERR_WRONGPARAM;
658 if (mheg_trace_debug & (TACTIONS | TEVNTS))
661 strcpy(buff, T_NL
"CastToObjectRef( ");
662 MHEG5stringTrace( s1, buff, 0, 120 );
663 DBG_PRINTF(
"%s, %ld ) result=%s", buff,
id, result ?
"true" :
"false");
668 return MHEG5ERR_NOERROR;
691 static MHEG5ErrorCode MHEG5prgCastToStringInt(
MHEG5Program *program)
694 MHEG5Root *callVar = 0, *objIdVar = 0, *oStrVar = 0;
698 MHEG5Bool result = MHEG5TRUE;
701 nextParam = MHEG5resolveORef(program->parameter, &callVar);
704 return MHEG5ERR_WRONGNUMBEROFPARAMS;
709 return MHEG5ERR_WRONGNUMBEROFPARAMS;
711 nextParam = MHEG5resolveORef(nextParam, &oStrVar);
714 return MHEG5ERR_WRONGNUMBEROFPARAMS;
716 MHEG5resolveORef(nextParam, &objIdVar);
718 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
719 (!oStrVar) || (oStrVar->clazz != MHEG5OCTETSTRINGVARIABLE) ||
720 (!objIdVar) || (objIdVar->clazz != MHEG5INTEGERVARIABLE))
722 return MHEG5ERR_WRONGPARAM;
725 TRACE(TEVNTS, (
" id=%ld gref.len=%d",
id, (
int)gref.len))
729 if (gref.ptr.group != NULL)
732 sout.len = gref.ptr.group->groupName.len;
733 sout.data = STR_DataAlloc( sout.len );
734 memcpy( sout.data, gref.ptr.group->groupName.data, sout.len + 1 );
746 sout.data = STR_DataAlloc( sout.len );
747 memcpy( sout.data, gref.ptr.name, gref.len + 1 );
755 if (mheg_trace_debug & (TACTIONS | TEVNTS))
758 strcpy(buff, T_NL
"CastToStringInt( ");
759 MHEG5stringTrace( sout, buff, 0, 120 );
760 DBG_PRINTF(
"%s, %ld ) result=%s", buff,
id, result ?
"true" :
"false");
765 return MHEG5ERR_NOERROR;
817 static MHEG5ErrorCode MHEG5prgGetStringLength(
MHEG5Program *program)
822 MHEG5Bool invalidString;
825 nextParam = MHEG5resolveORef(program->parameter, &callVar);
828 return MHEG5ERR_WRONGNUMBEROFPARAMS;
833 return MHEG5ERR_WRONGNUMBEROFPARAMS;
838 return MHEG5ERR_WRONGPARAM;
840 MHEG5resolveORef(nextParam, &intVar);
841 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
842 (!intVar) || (intVar->clazz != MHEG5INTEGERVARIABLE))
844 return MHEG5ERR_WRONGPARAM;
851 if (mheg_trace_debug & (TACTIONS | TEVNTS))
854 strcpy(buff, T_NL
"GetStringLength( ");
855 MHEG5stringTrace( osVal, buff, 0, 120 );
856 DBG_PRINTF(
"%s, %ld )", buff, osVal.len);
859 return MHEG5ERR_NOERROR;
881 static MHEG5ErrorCode MHEG5prgGetSubString(
MHEG5Program *program)
886 MHEG5Int begin = 0, end = 0;
888 MHEG5Bool invalidString;
892 nextParam = MHEG5resolveORef(program->parameter, &callVar);
895 return MHEG5ERR_WRONGNUMBEROFPARAMS;
901 return MHEG5ERR_WRONGNUMBEROFPARAMS;
906 return MHEG5ERR_WRONGPARAM;
909 nextParam = MHEG5resolveGenericInteger(nextParam, &begin);
912 return MHEG5ERR_WRONGNUMBEROFPARAMS;
915 nextParam = MHEG5resolveGenericInteger(nextParam, &end);
918 return MHEG5ERR_WRONGNUMBEROFPARAMS;
921 MHEG5resolveORef(nextParam, &osVar);
923 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
924 (!osVar) || (osVar->clazz != MHEG5OCTETSTRINGVARIABLE))
926 return MHEG5ERR_WRONGPARAM;
930 if (mheg_trace_debug & (TACTIONS | TEVNTS))
933 strcpy(buff, T_NL
"GetSubString( ");
934 MHEG5stringTrace( input, buff, 0, 120 );
935 DBG_PRINTF(
"%s, %ld, %ld, ", buff, begin, end);
941 begin = (begin > input.len) ? input.len : begin;
942 begin = (begin < 1) ? 1 : begin;
943 end = (end > input.len) ? input.len : end;
944 end = (end < 1) ? 1 : end;
949 sout.data = STR_DataAlloc( end - begin );
954 sout.data[sout.len] = input.data[begin];
967 if (mheg_trace_debug & (TACTIONS | TEVNTS))
971 MHEG5stringTrace( sout, buff, 0, 120 );
972 DBG_PRINTF(
"%s )", buff);
975 return MHEG5ERR_NOERROR;
1001 static MHEG5ErrorCode MHEG5prgSearchSubString(
MHEG5Program *program)
1006 MHEG5Int start = 0, i = 0, rc = -1, j = 0;
1007 MHEG5Bool invalidString;
1011 nextParam = MHEG5resolveORef(program->parameter, &callVar);
1014 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1020 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1025 return MHEG5ERR_WRONGPARAM;
1028 nextParam = MHEG5resolveGenericInteger(nextParam, &start);
1031 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1037 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1042 return MHEG5ERR_WRONGPARAM;
1045 MHEG5resolveORef(nextParam, &intVar);
1047 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
1048 (!intVar) || (intVar->clazz != MHEG5INTEGERVARIABLE))
1050 return MHEG5ERR_WRONGPARAM;
1053 start = (start >
string.len) ?
string.len : start;
1054 start = (start < 1) ? 1 : start;
1057 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1060 strcpy(buff, T_NL
"SearchSubString( ");
1061 MHEG5stringTrace(
string, buff, 0, 120 );
1062 DBG_PRINTF(
"%s, %ld, ", buff, start);
1063 MHEG5stringTrace( searchString, buff, 0, 120 );
1068 if (searchString.len == 0)
1070 if (
string.len == 0)
1088 while (i <
string.len)
1090 if (
string.data[i] == searchString.data[j])
1098 if (j >= searchString.len)
1109 if (j < searchString.len)
1119 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1121 DBG_PRINTF(
", %ld )", rc);
1124 return MHEG5ERR_NOERROR;
1160 static MHEG5ErrorCode MHEG5prgSearchAndExtractSubString(
MHEG5Program *program)
1163 MHEG5Root *callVar = 0, *intVar = 0, *osVar = 0;
1166 MHEG5Int start = 0, i = 0, rc = -1, j = 0;
1167 MHEG5Bool invalidString;
1171 nextParam = MHEG5resolveORef(program->parameter, &callVar);
1174 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1180 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1185 return MHEG5ERR_WRONGPARAM;
1188 nextParam = MHEG5resolveGenericInteger(nextParam, &start);
1191 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1197 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1202 return MHEG5ERR_WRONGPARAM;
1205 nextParam = MHEG5resolveORef(nextParam, &osVar);
1208 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1211 MHEG5resolveORef(nextParam, &intVar);
1213 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
1214 (!intVar) || (intVar->clazz != MHEG5INTEGERVARIABLE) ||
1215 (!osVar) || (osVar->clazz != MHEG5OCTETSTRINGVARIABLE))
1217 return MHEG5ERR_WRONGPARAM;
1220 start = (start >
string.len) ?
string.len : start;
1221 start = (start < 1) ? 1 : start;
1224 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1227 strcpy(buff, T_NL
"SearchAndExtractSubString( ");
1228 MHEG5stringTrace(
string, buff, start - 1, 60 );
1230 DBG_PRINTF(
", %ld, ", start);
1232 MHEG5stringTrace( searchString, buff, 0, 120 );
1234 DBG_PRINTF(
" l=%ld", searchString.len);
1238 if (searchString.len == 0)
1240 if (
string.len == 0)
1258 while (i <
string.len)
1260 if (
string.data[i] == searchString.data[j])
1268 if (j >= searchString.len)
1282 if (j < searchString.len)
1292 rc += searchString.len;
1294 else if (rc > start)
1297 sout.data = STR_DataAlloc( rc - start );
1301 while (i < (rc - 1))
1303 sout.data[sout.len] =
string.data[i++];
1307 rc += searchString.len;
1316 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1320 MHEG5stringTrace( sout, buff, 0, 120 );
1321 DBG_PRINTF(
"%s, %ld )", buff, rc);
1324 return MHEG5ERR_NOERROR;
1367 static MHEG5ErrorCode MHEG5prgSI_GetServiceIndex(
MHEG5Program *program)
1376 MHEG5Bool invalidString;
1379 nextParam = MHEG5resolveORef(program->parameter, &callVar);
1382 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1388 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1393 return MHEG5ERR_WRONGPARAM;
1396 MHEG5resolveORef(nextParam, &intVar);
1398 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
1399 (!intVar) || (intVar->clazz != MHEG5INTEGERVARIABLE))
1401 return MHEG5ERR_WRONGPARAM;
1411 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1414 strcpy(buff, T_NL
"SI_GetServiceIndex( ");
1415 MHEG5stringTrace( s1, buff, 0, 120 );
1416 DBG_PRINTF(
"%s, %ld )", buff, rc);
1420 return MHEG5ERR_NOERROR;
1423 #ifndef CI_PLUS_ONLY 1451 static MHEG5ErrorCode MHEG5prgSI_TuneIndex(
MHEG5Program *program)
1458 MHEG5Int serviceIndex;
1461 nextParam = MHEG5resolveORef( program->parameter, &callVar );
1464 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1466 MHEG5resolveGenericInteger(nextParam, &serviceIndex);
1468 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
1470 return MHEG5ERR_WRONGPARAM;
1478 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1480 DBG_PRINTF(T_NL
"SI_TuneIndex( %ld )", serviceIndex);
1484 return MHEG5ERR_NOERROR;
1508 static MHEG5ErrorCode MHEG5prgSI_TuneIndexInfo(
MHEG5Program *program)
1518 nextParam = MHEG5resolveORef( program->parameter, &callVar );
1521 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1523 MHEG5resolveGenericInteger(nextParam, &tuneInfo);
1524 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
1526 return MHEG5ERR_WRONGPARAM;
1533 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1535 DBG_PRINTF(T_NL
"SI_TuneIndexInfo( %ld )", tuneInfo);
1539 return MHEG5ERR_NOERROR;
1580 static MHEG5ErrorCode MHEG5prgSI_GetBasicSI(
MHEG5Program *program)
1591 MHEG5Int serviceIndex;
1592 MHEG5Int networkIDVal;
1593 MHEG5Int origNetworkIDVal;
1594 MHEG5Int transportStreamIDVal;
1595 MHEG5Int serviceIDVal;
1598 nextParam = MHEG5resolveORef(program->parameter, &callVar);
1601 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1603 nextParam = MHEG5resolveGenericInteger( nextParam, &serviceIndex);
1606 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1608 nextParam = MHEG5resolveORef(nextParam, &networkID);
1611 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1613 nextParam = MHEG5resolveORef(nextParam, &origNetworkID);
1616 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1618 nextParam = MHEG5resolveORef(nextParam, &transportStreamID);
1621 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1623 MHEG5resolveORef(nextParam, &serviceID);
1625 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
1626 ((!networkID) || (networkID->clazz != MHEG5INTEGERVARIABLE)) ||
1627 ((!origNetworkID) || (origNetworkID->clazz != MHEG5INTEGERVARIABLE)) ||
1628 ((!transportStreamID) || (transportStreamID->clazz != MHEG5INTEGERVARIABLE)) ||
1629 ((!serviceID) || (serviceID->clazz != MHEG5INTEGERVARIABLE)))
1631 return MHEG5ERR_WRONGPARAM;
1636 &transportStreamIDVal, &serviceIDVal);
1644 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1646 DBG_PRINTF(T_NL
"SI_GetBasicSI( %ld, %ld, %ld, %ld, %ld )",
1647 serviceIndex, networkIDVal, origNetworkIDVal, transportStreamIDVal, serviceIDVal );
1651 return MHEG5ERR_NOERROR;
1662 program->stopFunc = NULL;
1664 if (program->forked)
1666 if (!program->ingredient.root.runningStatus)
1674 program->forkSucceededValue = NULL;
1716 if (program->ingredient.ormHandle != NULL)
1719 program->ingredient.ormHandle = NULL;
1730 static void checkRefGood(
void *userData,
S_CONTENT *content )
1734 *((MHEG5Bool *)(program->resultValue)) = MHEG5TRUE;
1735 *(program->forkSucceededValue) = MHEG5TRUE;
1738 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1740 DBG_PRINTF(
", exists)");
1744 ProgramCompleted( program );
1758 static void checkRefFail(
void *userData )
1762 *((MHEG5Bool *)(program->resultValue)) = MHEG5FALSE;
1763 *(program->forkSucceededValue) = MHEG5TRUE;
1766 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1768 DBG_PRINTF(
", not avl)");
1772 ProgramCompleted( program );
1807 static MHEG5ErrorCode MHEG5prgCheckContentRef(
MHEG5Program *program)
1810 MHEG5Root *callVar = 0, *rcVar1 = 0, *rcVar2 = 0;
1812 MHEG5Bool cref_referenced = MHEG5FALSE;
1813 MHEG5Bool valid = MHEG5FALSE;
1818 nextParam = MHEG5resolveORef(program->parameter, &callVar);
1821 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1823 nextParam = MHEG5resolveGenericCRef(nextParam, &cref_data, &cref_referenced, &valid);
1826 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1828 nextParam = MHEG5resolveORef(nextParam, &rcVar1);
1831 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1833 MHEG5resolveORef(nextParam, &rcVar2);
1835 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
1836 (!rcVar1) || (rcVar1->clazz != MHEG5BOOLEANVARIABLE) ||
1837 (!rcVar2) || (rcVar2->clazz != MHEG5CONTENTREFVARIABLE))
1839 return MHEG5ERR_WRONGPARAM;
1845 if (rc2->contentData.data != cref_data.data)
1850 rc1->value = MHEG5FALSE;
1855 program->resultValue = &rc1->value;
1859 if (!program->forked)
1866 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1869 strcpy(buff, T_NL
"CheckContentRef( ");
1870 MHEG5stringTrace( cref_data, buff, 0, 120 );
1871 DBG_PRINTF(
"%s, ", buff);
1875 if (!cref_referenced)
1877 checkRefFail( program );
1881 program->ingredient.ormHandle =
1883 program, checkRefGood, checkRefFail );
1885 return MHEG5ERR_NOERROR;
1921 static MHEG5ErrorCode MHEG5prgCheckGroupIDRef(
MHEG5Program *program)
1924 MHEG5Root *callVar = 0, *rcVar1 = 0, *rcVar2 = 0;
1931 nextParam = MHEG5resolveORef(program->parameter, &callVar);
1934 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1939 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1941 nextParam = MHEG5resolveORef(nextParam, &rcVar1);
1944 return MHEG5ERR_WRONGNUMBEROFPARAMS;
1946 MHEG5resolveORef(nextParam, &rcVar2);
1948 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
1949 (!rcVar1) || (rcVar1->clazz != MHEG5BOOLEANVARIABLE) ||
1950 (!rcVar2) || (rcVar2->clazz != MHEG5OBJECTREFVARIABLE))
1952 return MHEG5ERR_WRONGPARAM;
1958 MHEG5objRefStoreValue( out, gref,
id );
1961 if (gref.ptr.group != NULL)
1964 rc1->value = MHEG5TRUE;
1969 rc1->value = MHEG5FALSE;
1973 else if (out->valueGrp.data == NULL)
1975 rc1->value = MHEG5FALSE;
1980 rc1->value = MHEG5FALSE;
1985 program->resultValue = &rc1->value;
1989 if (!program->forked)
1996 if (mheg_trace_debug & (TACTIONS | TEVNTS))
1999 strcpy(buff, T_NL
"CheckGroupIDRef( ");
2000 MHEG5stringTrace( out->valueGrp, buff, 0, 120 );
2001 DBG_PRINTF(
"%s,%ld ", buff,
id);
2005 program->ingredient.ormHandle =
2007 program, checkRefGood, checkRefFail );
2009 return MHEG5ERR_NOERROR;
2012 #ifndef CI_PLUS_ONLY 2033 static MHEG5ErrorCode MHEG5prgGetBootInfo(
MHEG5Program *program)
2036 MHEG5Root *callVar = 0, *bootInfo = 0, *infoResult = 0;
2037 MHEG5Bool infoResultVal;
2040 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2043 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2045 nextParam = MHEG5resolveORef(nextParam, &infoResult);
2048 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2050 MHEG5resolveORef(nextParam, &bootInfo);
2052 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
2053 ((!infoResult) || (infoResult->clazz != MHEG5BOOLEANVARIABLE)) ||
2054 ((!bootInfo) || (bootInfo->clazz != MHEG5OCTETSTRINGVARIABLE)))
2056 return MHEG5ERR_WRONGPARAM;
2065 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2068 strcpy(buff, T_NL
"GetBootInfo( ");
2070 DBG_PRINTF(
"%s, %s )", infoResultVal ?
"true" :
"false", buff);
2074 return MHEG5ERR_NOERROR;
2081 #ifndef CI_PLUS_ONLY 2100 static MHEG5ErrorCode MHEG5prgVideoToGraphics(
MHEG5Program *program)
2103 MHEG5Root *callVar = 0, *graphicsX = 0, *graphicsY = 0;
2104 MHEG5Int videoXVal, videoYVal, graphicsYVal, graphicsXVal;
2108 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2111 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2113 nextParam = MHEG5resolveGenericInteger( nextParam, &videoXVal);
2116 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2118 nextParam = MHEG5resolveGenericInteger( nextParam, &videoYVal);
2121 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2123 nextParam = MHEG5resolveORef(nextParam, &graphicsX);
2126 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2128 MHEG5resolveORef(nextParam, &graphicsY);
2130 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
2131 ((!graphicsX) || (graphicsX->clazz != MHEG5INTEGERVARIABLE)) ||
2132 ((!graphicsY) || (graphicsY->clazz != MHEG5INTEGERVARIABLE)))
2134 return MHEG5ERR_WRONGPARAM;
2144 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2146 DBG_PRINTF(T_NL
"VideoToGraphics( %ld, %ld, %ld, %ld )",
2147 videoXVal, videoYVal, graphicsYVal, graphicsXVal );
2151 return MHEG5ERR_NOERROR;
2167 static MHEG5ErrorCode MHEG5prgSetWidescreenAlignment(
MHEG5Program *program)
2175 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2178 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2180 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
2182 return MHEG5ERR_WRONGPARAM;
2185 MHEG5resolveGenericInteger( nextParam, &modeVal);
2192 DVB_MhegSetVideoAlignment(ASPECT_MODE_4_3);
2194 else if (modeVal == 2)
2197 DVB_MhegSetVideoAlignment(ASPECT_MODE_16_9);
2199 #ifdef INCLUDE_FREESAT 2200 else if (modeVal == 0)
2202 DVB_MhegSetVideoAlignment(ASPECT_MODE_AUTO);
2207 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2209 DBG_PRINTF(T_NL
"SetWidescreenAlignment( %ld )", modeVal );
2213 return MHEG5ERR_NOERROR;
2238 static MHEG5ErrorCode MHEG5prgSetSubtitleMode(
MHEG5Program *program)
2242 MHEG5Bool onVal = 0;
2245 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2248 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2250 MHEG5resolveGenericBoolean(nextParam, &onVal);
2252 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
2254 return MHEG5ERR_WRONGPARAM;
2261 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2263 DBG_PRINTF(T_NL
"SetSubtitleMode( %ld )", onVal );
2267 return MHEG5ERR_NOERROR;
2272 #ifdef INCLUDE_NATIVE_APP 2291 static MHEG5ErrorCode MHEG5prgSetBroadcasterInterruptions(
MHEG5Program *program)
2295 MHEG5Bool enable = 0;
2298 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2301 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2303 MHEG5resolveGenericBoolean(nextParam, &enable);
2305 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
2307 return MHEG5ERR_WRONGPARAM;
2312 MHEG5PromotionalLinkControl(enable ? TRUE : FALSE);
2315 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2317 DBG_PRINTF(T_NL
"SetBroadcasterInterruptions( %ld )", enable );
2321 return MHEG5ERR_NOERROR;
2338 static MHEG5ErrorCode MHEG5prgGetDisplayAspectRatio(
MHEG5Program *program)
2341 MHEG5Root *callVar = 0, *aspectRatioVal = 0;
2344 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2347 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2349 MHEG5resolveORef(nextParam, &aspectRatioVal);
2351 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
2352 (!aspectRatioVal) || (aspectRatioVal->clazz != MHEG5INTEGERVARIABLE))
2354 return MHEG5ERR_WRONGPARAM;
2361 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2363 DBG_PRINTF(T_NL
"GetDisplayAspectRatio( %ld )", ((
MHEG5IntegerVariable *) aspectRatioVal)->value );
2367 return MHEG5ERR_NOERROR;
2372 #ifdef COMMON_INTERFACE 2381 static void ciSendMessageCallback(
void *userData,
MHEG5String output, MHEG5Bool success)
2392 *(program->forkSucceededValue) = MHEG5TRUE;
2400 ProgramCompleted( program );
2425 static MHEG5ErrorCode MHEG5prgCI_SendMessage(
MHEG5Program *program)
2431 MHEG5Bool invalidString;
2434 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2437 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2442 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2447 return MHEG5ERR_WRONGPARAM;
2450 MHEG5resolveORef(nextParam, &osVar);
2451 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
2452 (!osVar) || (osVar->clazz != MHEG5OCTETSTRINGVARIABLE))
2454 return MHEG5ERR_WRONGPARAM;
2462 program->resultValue = &output->value;
2466 if (!program->forked)
2473 assert( program->ingredient.ormHandle == NULL );
2475 #ifdef COMMON_INTERFACE 2476 if (MHEG5FileOrmSendCiMessage(input, ciSendMessageCallback, program) == MHEG5FALSE)
2483 if (!program->forked)
2491 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2494 strcpy(buff, T_NL
"CI_SendMessage( ");
2495 MHEG5stringTrace( input, buff, 0, 120 );
2496 strcat(buff,
", n/a )");
2501 return MHEG5ERR_NOERROR;
2517 static MHEG5ErrorCode MHEG5prgWhoAmI(
MHEG5Program *program)
2524 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2527 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2529 MHEG5resolveORef(nextParam, &identVar);
2531 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
2532 ((!identVar) || (identVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
2534 return MHEG5ERR_WRONGPARAM;
2542 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2545 strcpy(buff, T_NL
"WhoAmI( ");
2552 return MHEG5ERR_NOERROR;
2555 #ifdef INCLUDE_DEBUG_PACKAGE 2572 static MHEG5ErrorCode MHEG5prgDebug(
MHEG5Program *program)
2578 MHEG5Int allocated = 0, used = 0;
2583 prevParam = MHEG5resolveORef(program->parameter, &callVar);
2584 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
2586 return MHEG5ERR_WRONGPARAM;
2593 nextParam = MHEG5resolveGenericGeneric(prevParam, &g);
2600 prevParam = nextParam;
2605 DVB_MhegOutputDebugString(buffer);
2606 MHEG5freeMem(buffer);
2611 return MHEG5ERR_NOERROR;
2617 #if defined(INCLUDE_MHEG_PVR) || defined(INCLUDE_PVR_AU) 2629 if (pvr_program == NULL)
2631 TRACE(TERROR, (
"No Program"))
2637 case MHERR_ALTERNATIVE_FOUND:
2638 *((MHEG5Int *)(pvr_program->resultValue)) = 1;
2639 *(pvr_program->forkSucceededValue) = MHEG5TRUE;
2643 *((MHEG5Int *)(pvr_program->resultValue)) = 0;
2644 *(pvr_program->forkSucceededValue) = MHEG5TRUE;
2647 case MHERR_CONFLICT:
2648 *((MHEG5Int *)(pvr_program->resultValue)) = -1;
2649 *(pvr_program->forkSucceededValue) = MHEG5TRUE;
2652 case MHERR_REQUEST_IGNORED:
2653 *((MHEG5Int *)(pvr_program->resultValue)) = -4;
2654 *(pvr_program->forkSucceededValue) = MHEG5TRUE;
2658 TRACE(TERROR, (
"Invalid result %d", result))
2661 ProgramCompleted( pvr_program );
2669 #ifdef INCLUDE_MHEG_PVR 2687 static MHEG5ErrorCode MHEG5prgPVR_MakeBooking(
MHEG5Program *program)
2693 MHEG5Bool invalidString;
2696 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2699 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2704 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2709 return MHEG5ERR_WRONGPARAM;
2711 nextParam = MHEG5resolveGenericInteger( nextParam, (MHEG5Int *)&crid_details.type);
2714 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2716 if (crid_details.type != 0x31 && crid_details.type != 0x32)
2718 return MHEG5ERR_WRONGPARAM;
2721 (
MHEG5String *)&crid_details.title, &invalidString );
2724 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2729 return MHEG5ERR_WRONGPARAM;
2732 (
MHEG5String *)&crid_details.description, &invalidString );
2735 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2740 return MHEG5ERR_WRONGPARAM;
2742 MHEG5resolveORef(nextParam, &intgVar);
2744 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
2745 (!intgVar) || (intgVar->clazz != MHEG5INTEGERVARIABLE))
2747 return MHEG5ERR_WRONGPARAM;
2750 TRACE(TEVNTS, (
"%s", crid.zptr))
2765 case MHERR_RESULT_PENDING:
2767 pvr_program = program;
2768 if (program->forked)
2801 static MHEG5ErrorCode MHEG5prgPVR_CancelBooking(
MHEG5Program *program)
2808 MHEG5Bool invalidString;
2811 nextParam = MHEG5resolveORef( program->parameter, &callVar );
2814 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2820 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2825 return MHEG5ERR_WRONGPARAM;
2827 nextParam = MHEG5resolveGenericInteger( nextParam, &crid_type );
2830 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2832 if (crid_type != 0x31 && crid_type != 0x32)
2834 return MHEG5ERR_WRONGPARAM;
2836 MHEG5resolveORef(nextParam, &intgVar);
2838 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
2839 (!intgVar) || (intgVar->clazz != MHEG5INTEGERVARIABLE))
2841 return MHEG5ERR_WRONGPARAM;
2844 TRACE(TEVNTS, (
"%s", crid.zptr))
2871 static MHEG5ErrorCode MHEG5prgPVR_ListBookings(
MHEG5Program *program)
2880 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2883 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2885 MHEG5resolveORef(nextParam, &ostrVar);
2887 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
2888 (!ostrVar) || (ostrVar->clazz != MHEG5OCTETSTRINGVARIABLE))
2890 return MHEG5ERR_WRONGPARAM;
2898 if (crid_list != NULL)
2900 for (ndx = 0; ndx != number; ndx++)
2902 out_str.len += crid_list[ndx].crid.zlen + 4;
2904 out_str.data = STR_DataAlloc( out_str.len );
2905 if (out_str.data != NULL)
2907 MHEG5Byte *pData = out_str.data;
2908 for (ndx = 0; ndx != number; ndx++)
2910 memcpy( pData, crid_list[ndx].crid.zptr, crid_list[ndx].crid.zlen );
2911 pData += crid_list[ndx].crid.zlen;
2912 if (crid_list[ndx].type == 49)
2914 memcpy( pData,
" 49 ", 4 );
2918 memcpy( pData,
" 50 ", 4 );
2929 out_str.data = NULL;
2934 if (mheg_trace_debug & (TACTIONS | TEVNTS))
2937 strcpy(buff, T_NL
"WhoAmI( ");
2948 #ifdef INCLUDE_PVR_AU 2966 static MHEG5ErrorCode MHEG5prgPVR_MakeBooking2(
MHEG5Program *program)
2973 MHEG5Bool invalidString;
2976 nextParam = MHEG5resolveORef(program->parameter, &callVar);
2979 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2984 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2989 return MHEG5ERR_WRONGPARAM;
2994 return MHEG5ERR_WRONGNUMBEROFPARAMS;
2999 return MHEG5ERR_WRONGPARAM;
3001 MHEG5resolveORef(nextParam, &intgVar);
3003 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
3004 (!intgVar) || (intgVar->clazz != MHEG5INTEGERVARIABLE))
3006 return MHEG5ERR_WRONGPARAM;
3009 TRACE(TEVNTS, (
"%s", crid.zptr))
3011 if (!MHEG5parseDecodeBookings( bookingDetails, &crid_details ))
3028 case MHEG5_RESULT_PENDING:
3030 pvr_program = program;
3031 if (program->forked)
3046 MHEG5freeDecodeBookings( &crid_details );
3065 static MHEG5ErrorCode MHEG5prgPVR_CancelBooking2(
MHEG5Program *program)
3072 MHEG5Bool invalidString;
3075 nextParam = MHEG5resolveORef( program->parameter, &callVar );
3078 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3084 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3089 return MHEG5ERR_WRONGPARAM;
3091 nextParam = MHEG5resolveGenericInteger( nextParam, &crid_type );
3094 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3096 if (crid_type != 0x31 && crid_type != 0x32)
3098 return MHEG5ERR_WRONGPARAM;
3100 MHEG5resolveORef(nextParam, &intgVar);
3102 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
3103 (!intgVar) || (intgVar->clazz != MHEG5INTEGERVARIABLE))
3105 return MHEG5ERR_WRONGPARAM;
3108 TRACE(TEVNTS, (
"%s", crid.zptr))
3133 static MHEG5ErrorCode MHEG5prgPVR_ListBookings2(
MHEG5Program *program)
3142 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3145 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3147 MHEG5resolveORef(nextParam, &ostrVar);
3149 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
3150 (!ostrVar) || (ostrVar->clazz != MHEG5OCTETSTRINGVARIABLE))
3152 return MHEG5ERR_WRONGPARAM;
3160 if (crid_list != NULL)
3162 for (ndx = 0; ndx != number; ndx++)
3164 out_str.len += crid_list[ndx].crid.zlen + 4;
3166 out_str.data = STR_DataAlloc( out_str.len );
3167 if (out_str.data != NULL)
3169 MHEG5Byte *pData = out_str.data;
3170 for (ndx = 0; ndx != number; ndx++)
3172 memcpy( pData, crid_list[ndx].crid.zptr, crid_list[ndx].crid.zlen );
3173 pData += crid_list[ndx].crid.zlen;
3184 out_str.data = NULL;
3189 if (mheg_trace_debug & (TACTIONS | TEVNTS))
3192 strcpy(buff, T_NL
"PVR_ListBooking2( ");
3215 static MHEG5ErrorCode MHEG5prgPVR_GetDetails2(
MHEG5Program *program)
3222 MHEG5Bool invalidString;
3225 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3228 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3234 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3239 return MHEG5ERR_WRONGPARAM;
3241 MHEG5resolveORef(nextParam, &ostrVar);
3243 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
3244 (!ostrVar) || (ostrVar->clazz != MHEG5OCTETSTRINGVARIABLE))
3246 return MHEG5ERR_WRONGPARAM;
3254 out_str.data = NULL;
3255 if (pDetails != NULL)
3257 if (pDetails->bookings != NULL)
3259 MHEG5parseEncodeBooking( pDetails, out_str );
3266 if (mheg_trace_debug & (TACTIONS | TEVNTS))
3269 strcpy(buff, T_NL
"PVR_GetDetails2( ");
3281 #ifdef INCLUDE_CI_PLUS 3315 static MHEG5ErrorCode MHEG5prgRequestMPEGDecoder(
MHEG5Program *program)
3323 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3326 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3328 nextParam = MHEG5resolveGenericBoolean(nextParam, &request);
3331 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3333 MHEG5resolveORef(nextParam, &resultVar);
3335 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
3336 ((!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE)))
3338 return MHEG5ERR_WRONGPARAM;
3344 return MHEG5ERR_NOERROR;
3353 static MHEG5ErrorCode MHEG5prgSuppressMHEGGraphics(
MHEG5Program *program)
3361 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3364 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3366 MHEG5resolveGenericBoolean(nextParam, &request);
3368 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
3370 return MHEG5ERR_WRONGPARAM;
3376 return MHEG5ERR_NOERROR;
3386 static MHEG5ErrorCode MHEG5prgTestInputMask(
MHEG5Program *program)
3391 MHEG5Bool invalidString;
3394 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3397 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3402 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3407 return MHEG5ERR_WRONGPARAM;
3409 MHEG5resolveORef(nextParam, &boolVar);
3410 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
3411 (!boolVar) || (boolVar->clazz != MHEG5BOOLEANVARIABLE))
3413 return MHEG5ERR_WRONGPARAM;
3418 return MHEG5ERR_NOERROR;
3438 static MHEG5ErrorCode MHEG5prgSetHybridFileSystem(
MHEG5Program *program)
3444 MHEG5Bool invalidString;
3447 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3450 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3455 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3460 return MHEG5ERR_WRONGPARAM;
3466 return MHEG5ERR_WRONGPARAM;
3471 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3474 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
3476 return MHEG5ERR_WRONGPARAM;
3482 if ((mheg_trace_debug & (TACTIONS | TEVNTS)) && !(mheg_trace_debug & TFILE))
3485 strcpy(buff, T_NL
"SetHybridFileSystem( ");
3486 MHEG5stringTrace(pathName, buff, 0, 120);
3488 MHEG5stringTrace(mappingList, buff, 0, 230);
3496 return MHEG5ERR_NOERROR;
3509 static MHEG5ErrorCode MHEG5prgGetICStatus(
MHEG5Program *program)
3512 MHEG5Root *callVar = 0, *icStatusVar = 0;
3516 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3519 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3522 MHEG5resolveORef(nextParam, &icStatusVar);
3524 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
3525 (!icStatusVar) || (icStatusVar->clazz != MHEG5INTEGERVARIABLE))
3527 return MHEG5ERR_WRONGPARAM;
3529 MHEG5getICStatus( &icStatus );
3533 return MHEG5ERR_NOERROR;
3551 static MHEG5ErrorCode MHEG5prgSetCookie(
MHEG5Program *program)
3555 MHEG5Bool invalidString;
3557 MHEG5Int expiryDate;
3565 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3568 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3574 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3579 return MHEG5ERR_WRONGPARAM;
3582 nextParam = MHEG5resolveGenericInteger( nextParam, &expiryDate );
3585 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3591 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3596 return MHEG5ERR_WRONGPARAM;
3599 MHEG5resolveGenericBoolean( nextParam, &secure );
3601 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
3603 return MHEG5ERR_WRONGPARAM;
3606 cookie_data.value = value;
3607 cookie_data.secure = secure;
3608 cookie_data.expires = expiryDate;
3609 cookie_data.identity = identity;
3613 return MHEG5ERR_NOERROR;
3632 static MHEG5ErrorCode MHEG5prgGetCookie(
MHEG5Program *program)
3635 MHEG5Root *callVar = 0, *found = 0, *expiryDate = 0,
3636 *value = 0, *secure = 0;
3638 MHEG5Bool invalidString;
3643 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3646 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3651 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3656 return MHEG5ERR_WRONGPARAM;
3659 nextParam = MHEG5resolveORef( nextParam, &found);
3662 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3664 nextParam = MHEG5resolveORef( nextParam, &expiryDate);
3667 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3669 nextParam = MHEG5resolveORef( nextParam, &value);
3672 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3674 MHEG5resolveORef( nextParam, &secure);
3677 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
3678 (!found) || (found->clazz != MHEG5BOOLEANVARIABLE) ||
3679 (!expiryDate) || (expiryDate->clazz != MHEG5INTEGERVARIABLE) ||
3680 (!value) || (value->clazz != MHEG5OCTETSTRINGVARIABLE))
3682 return MHEG5ERR_WRONGPARAM;
3685 cookie_data.identity = identity;
3702 return MHEG5ERR_NOERROR;
3718 static void returnDataCallback(
void *userData,
MHEG5String data, MHEG5Int code)
3725 *((MHEG5Int *)(program->resultCode)) = code;
3727 *(program->forkSucceededValue) = MHEG5TRUE;
3729 ProgramCompleted( program );
3756 static MHEG5ErrorCode MHEG5prgReturnData(
MHEG5Program *program)
3766 MHEG5Bool invalidString;
3770 MHEG5Int allocated = 0, used = 0;
3776 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3779 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3781 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
3783 return MHEG5ERR_WRONGPARAM;
3790 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3795 return MHEG5ERR_WRONGPARAM;
3803 prevParam = nextParam;
3804 nextParam = MHEG5resolveGenericGeneric(prevParam, &g);
3805 while (nextParam && g.type == MHEG5OCTETSTRING)
3810 prevParam = nextParam;
3811 nextParam = MHEG5resolveGenericGeneric(prevParam, &g);
3812 success = MHEG5parseEncodeField(&buffer, &used, &allocated, &name, &g);
3822 prevParam = nextParam;
3823 nextParam = MHEG5resolveGenericGeneric(prevParam, &g);
3828 MHEG5freeMem(buffer);
3829 return MHEG5ERR_WRONGPARAM;
3833 nextParam = MHEG5resolveORef(prevParam, &codeVar);
3836 MHEG5freeMem(buffer);
3837 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3839 if ((!codeVar) || (codeVar->clazz != MHEG5INTEGERVARIABLE))
3841 MHEG5freeMem(buffer);
3842 return MHEG5ERR_WRONGPARAM;
3847 prevParam = nextParam;
3848 nextParam = MHEG5resolveORef(prevParam, &dataVar);
3851 MHEG5freeMem(buffer);
3852 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3854 if ((!dataVar) || (dataVar->clazz != MHEG5OCTETSTRINGVARIABLE))
3856 MHEG5freeMem(buffer);
3857 return MHEG5ERR_WRONGPARAM;
3867 program->resultCode = &rc1->value;
3868 program->resultValue = &rc2->value;
3872 if (!program->forked)
3879 MHEG5FileOrmReturnData(url, data, returnDataCallback, program);
3880 MHEG5freeMem(buffer);
3882 return MHEG5ERR_NOERROR;
3904 void MHEG5notifyStreamPerformanceMeasurement(
MHEG5Root *root, MHEG5Int speed)
3908 assert(root->clazz == MHEG5RESIDENTPROGRAM);
3913 *((MHEG5Int *)(program->resultValue)) = speed;
3916 *(program->forkSucceededValue) = MHEG5TRUE;
3918 ProgramCompleted( program );
3942 static MHEG5ErrorCode MHEG5prgMeasureStreamPerformance(
MHEG5Program *program)
3949 MHEG5Bool invalidString;
3952 nextParam = MHEG5resolveORef(program->parameter, &callVar);
3955 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3960 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3965 return MHEG5ERR_WRONGPARAM;
3967 nextParam = MHEG5resolveGenericInteger(nextParam, &maxBytes);
3970 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3972 nextParam = MHEG5resolveORef(nextParam, &rcVar);
3976 return MHEG5ERR_WRONGNUMBEROFPARAMS;
3979 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
3980 ((!rcVar) || (rcVar->clazz != MHEG5INTEGERVARIABLE)))
3982 return MHEG5ERR_WRONGPARAM;
3987 speedVar->value = -1;
3992 program->resultValue = &speedVar->value;
3996 program->stopFunc = stopMeasurement;
3999 if (!program->forked)
4006 return MHEG5ERR_NOERROR;
4016 void MHEG5notifyGuidanceResponse(MHEG5Bool result)
4020 if (program != NULL)
4022 TPRINT((TACTIONS | TEVNTS), (T_NL
"PIN result %d",result))
4025 *((MHEG5Bool *)(program->resultValue)) = result;
4028 *(program->forkSucceededValue) = MHEG5TRUE;
4030 ProgramCompleted( program );
4032 guidance_program = NULL;
4043 if (guidance_program != NULL)
4045 (void)MHEG5promptForGuidance(NULL, MHEG5FALSE);
4046 guidance_program = NULL;
4066 static MHEG5ErrorCode MHEG5prgPromptForGuidance(
MHEG5Program *program)
4072 MHEG5Bool invalidString;
4075 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4078 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4083 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4088 return MHEG5ERR_WRONGPARAM;
4091 nextParam = MHEG5resolveORef(nextParam, &resultVar);
4095 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4098 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4099 ((!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE)))
4101 return MHEG5ERR_WRONGPARAM;
4104 if (!MHEG5IsPinRequired())
4106 TPRINT((TACTIONS | TEVNTS), (T_NL
"PIN not required"))
4119 program->stopFunc = stopPrompt;
4122 if (!program->forked)
4127 guidance_program = program;
4129 TPRINT((TACTIONS | TEVNTS), (T_NL
"requesting PIN"))
4130 if (!MHEG5promptForGuidance( &restriction, TRUE ))
4132 ProgramCompleted( program );
4134 guidance_program = NULL;
4137 return MHEG5ERR_NOERROR;
4153 static MHEG5ErrorCode MHEG5prgGetAudioDescPref(
MHEG5Program *program)
4158 BOOLEAN audioDescPref;
4161 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4164 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4166 nextParam = MHEG5resolveORef(nextParam, &viewerPref);
4170 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4173 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4174 ((!viewerPref) || (viewerPref->clazz != MHEG5BOOLEANVARIABLE)))
4176 return MHEG5ERR_WRONGPARAM;
4190 return MHEG5ERR_NOERROR;
4206 static MHEG5ErrorCode MHEG5prgGetSubtitlePref(
MHEG5Program *program)
4213 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4216 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4218 nextParam = MHEG5resolveORef(nextParam, &viewerPref);
4222 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4225 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4226 ((!viewerPref) || (viewerPref->clazz != MHEG5BOOLEANVARIABLE)))
4228 return MHEG5ERR_WRONGPARAM;
4241 return MHEG5ERR_NOERROR;
4245 #ifdef INCLUDE_IPLAYER 4259 static MHEG5ErrorCode MHEG5prgGetPINSupport(
MHEG5Program *program)
4262 MHEG5Root *callVar = 0, *supportVar = 0;
4267 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4270 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4273 MHEG5resolveORef(nextParam, &supportVar);
4275 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
4276 (!supportVar) || (supportVar->clazz != MHEG5INTEGERVARIABLE))
4278 return MHEG5ERR_WRONGPARAM;
4281 success = MHEG5GetPINSupport(&support);
4286 return MHEG5ERR_NOERROR;
4290 #ifdef INCLUDE_FREESAT 4304 static MHEG5ErrorCode MHEG5prgGetPINRequirement(
MHEG5Program *program)
4312 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4315 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4318 MHEG5resolveORef(nextParam, &statusVar);
4320 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
4321 (!statusVar) || (statusVar->clazz != MHEG5INTEGERVARIABLE))
4323 return MHEG5ERR_WRONGPARAM;
4326 success = MHEG5GetPINRequirement(&status);
4331 return MHEG5ERR_NOERROR;
4346 static MHEG5ErrorCode MHEG5prgValidatePIN(
MHEG5Program *program)
4352 MHEG5Bool invalidString;
4357 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4360 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4365 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4370 return MHEG5ERR_WRONGPARAM;
4373 nextParam = MHEG5resolveORef(nextParam, &statusVar);
4377 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4380 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4381 ((!statusVar) || (statusVar->clazz != MHEG5INTEGERVARIABLE)))
4383 return MHEG5ERR_WRONGPARAM;
4386 success = MHEG5ValidatePIN(&pin, &status);
4391 return MHEG5ERR_NOERROR;
4406 static MHEG5ErrorCode MHEG5prgComputePrivateSignature(
MHEG5Program *program)
4412 MHEG5Bool invalidString;
4417 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4420 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4425 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4430 return MHEG5ERR_WRONGPARAM;
4433 nextParam = MHEG5resolveORef(nextParam, &resultVar);
4437 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4440 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4441 ((!resultVar) || (resultVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
4443 return MHEG5ERR_WRONGPARAM;
4446 success = MHEG5ComputePrivateSignature(&data, &result);
4452 return MHEG5ERR_NOERROR;
4470 static MHEG5ErrorCode MHEG5prgGetFSIServiceReference(
MHEG5Program *program)
4473 MHEG5Root *callVar = 0, *fsi = 0, *fsiString = 0;
4474 MHEG5Int seviceIndex = 0, outputInt;
4480 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4483 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4486 nextParam = MHEG5resolveGenericInteger(nextParam, &seviceIndex);
4489 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4492 nextParam = MHEG5resolveORef(nextParam, &fsi);
4495 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4498 MHEG5resolveORef(nextParam, &fsiString);
4500 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
4501 (!fsi) || (fsi->clazz != MHEG5INTEGERVARIABLE) ||
4502 (!fsiString) || (fsiString->clazz != MHEG5OCTETSTRINGVARIABLE))
4504 return MHEG5ERR_WRONGPARAM;
4507 rc = MHEG5GetFSIServiceReference(seviceIndex, &outputInt, &outputString);
4514 return MHEG5ERR_NOERROR;
4524 #ifdef INCLUDE_SA_PROFILE 4540 static MHEG5ErrorCode MHEG5prgLNG_GetPreferredLangs(
MHEG5Program *program)
4550 U8BIT lstr[4] = {0,0,0,0};
4553 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4556 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4558 nextParam = MHEG5resolveORef(nextParam, &audioVar);
4561 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4563 nextParam = MHEG5resolveORef(nextParam, &subsVar);
4567 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4570 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4571 ((!audioVar) || (audioVar->clazz != MHEG5OCTETSTRINGVARIABLE)) ||
4572 ((!subsVar) || (subsVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
4574 return MHEG5ERR_WRONGPARAM;
4585 lang = UND_LANGUAGE_CODE;
4587 lstr[0] = (U8BIT)(lang >> 16);
4588 lstr[1] = (lang >> 8) & 0xFF;
4589 lstr[2] = lang & 0xFF;
4595 lang = UND_LANGUAGE_CODE;
4597 lstr[0] = (U8BIT)(lang >> 16);
4598 lstr[1] = (lang >> 8) & 0xFF;
4599 lstr[2] = lang & 0xFF;
4604 if (mheg_trace_debug & (TACTIONS | TEVNTS))
4607 strcpy(buff, T_NL
"GetPreferredLangs( ");
4608 MHEG5stringTrace(*audioStr, buff, 0, 120);
4610 MHEG5stringTrace(*subsStr, buff, 0, 230);
4616 return MHEG5ERR_NOERROR;
4621 #ifdef INCLUDE_SA_PROFILE 4645 static MHEG5ErrorCode MHEG5prgLNG_GetAudioLangs(
MHEG5Program *program)
4649 MHEG5Int serviceIndex;
4650 MHEG5Int eventIndex;
4658 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4661 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4663 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
4666 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4668 nextParam = MHEG5resolveGenericInteger(nextParam, &eventIndex);
4671 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4673 nextParam = MHEG5resolveORef(nextParam, &langsVar);
4677 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4680 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4681 ((!langsVar) || (langsVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
4683 return MHEG5ERR_WRONGPARAM;
4688 memset(langs, 0x0,
sizeof(langs));
4691 if (err == MHERR_OK)
4694 buffer.data = langs;
4695 buffer.len = strlen((
char *)langs);
4700 if (mheg_trace_debug & (TACTIONS | TEVNTS))
4703 DBG_PRINTF(T_NL
"LNG_GetADLangs( %ld, %ld, ", serviceIndex, eventIndex );
4705 MHEG5stringTrace(*langsStr, buff, 0, 230);
4711 return MHEG5ERR_NOERROR;
4716 #ifdef INCLUDE_SA_PROFILE 4741 static MHEG5ErrorCode MHEG5prgLNG_GetSubtitleLangs(
MHEG5Program *program)
4745 MHEG5Int serviceIndex;
4746 MHEG5Int eventIndex;
4754 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4757 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4759 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
4762 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4764 nextParam = MHEG5resolveGenericInteger(nextParam, &eventIndex);
4767 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4769 nextParam = MHEG5resolveORef(nextParam, &langsVar);
4773 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4776 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4777 ((!langsVar) || (langsVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
4779 return MHEG5ERR_WRONGPARAM;
4784 memset(langs, 0x0,
sizeof(langs));
4788 if (err == MHERR_OK)
4791 buffer.data = langs;
4792 buffer.len = strlen((
char *)langs);
4797 if (mheg_trace_debug & (TACTIONS | TEVNTS))
4800 DBG_PRINTF(T_NL
"LNG_GetAudioLangs( %ld, %ld, ", serviceIndex, eventIndex );
4802 MHEG5stringTrace(*langsStr, buff, 0, 230);
4808 return MHEG5ERR_NOERROR;
4813 #ifdef INCLUDE_SA_PROFILE 4839 static MHEG5ErrorCode MHEG5prgLNG_GetADLangs(
MHEG5Program *program)
4843 MHEG5Int serviceIndex;
4844 MHEG5Int eventIndex;
4852 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4855 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4857 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
4860 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4862 nextParam = MHEG5resolveGenericInteger(nextParam, &eventIndex);
4865 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4867 nextParam = MHEG5resolveORef(nextParam, &langsVar);
4871 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4874 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4875 ((!langsVar) || (langsVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
4877 return MHEG5ERR_WRONGPARAM;
4882 memset(langs, 0x0,
sizeof(langs));
4885 if (err == MHERR_OK)
4888 buffer.data = langs;
4889 buffer.len = strlen((
char *)langs);
4894 if (mheg_trace_debug & (TACTIONS | TEVNTS))
4897 DBG_PRINTF(T_NL
"LNG_GetSubtitleLangs( %ld, %ld, ", serviceIndex, eventIndex );
4899 MHEG5stringTrace(*langsStr, buff, 0, 230);
4905 return MHEG5ERR_NOERROR;
4910 #ifdef INCLUDE_SA_PROFILE 4929 static MHEG5ErrorCode MHEG5prgREM_SetNativeReminder(
MHEG5Program *program)
4933 MHEG5Int serviceIndex;
4940 nextParam = MHEG5resolveORef(program->parameter, &callVar);
4943 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4945 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
4948 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4950 nextParam = MHEG5resolveGenericInteger(nextParam, &eventId);
4953 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4955 nextParam = MHEG5resolveORef(nextParam, &resultVar);
4959 return MHEG5ERR_WRONGNUMBEROFPARAMS;
4962 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
4963 ((!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE)))
4965 return MHEG5ERR_WRONGPARAM;
4971 if (err == MHERR_OK)
4983 return MHEG5ERR_NOERROR;
4988 #ifdef INCLUDE_SA_PROFILE 5008 static MHEG5ErrorCode MHEG5prgREM_GetNativeReminder(
MHEG5Program *program)
5012 MHEG5Int serviceIndex;
5019 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5022 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5024 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
5027 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5029 nextParam = MHEG5resolveGenericInteger(nextParam, &eventId);
5032 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5034 nextParam = MHEG5resolveORef(nextParam, &setVar);
5038 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5041 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
5042 ((!setVar) || (setVar->clazz != MHEG5BOOLEANVARIABLE)))
5044 return MHEG5ERR_WRONGPARAM;
5050 if (err == MHERR_OK)
5062 return MHEG5ERR_NOERROR;
5067 #ifdef INCLUDE_SA_PROFILE 5082 static MHEG5ErrorCode MHEG5prgREM_CancelNativeReminder(
MHEG5Program *program)
5086 MHEG5Int serviceIndex;
5090 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5093 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5095 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
5098 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5100 nextParam = MHEG5resolveGenericInteger(nextParam, &eventId);
5104 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5107 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE))
5109 return MHEG5ERR_WRONGPARAM;
5116 return MHEG5ERR_NOERROR;
5121 #ifdef INCLUDE_SA_PROFILE 5159 static MHEG5ErrorCode MHEG5prgSA_GetHostSetting(
MHEG5Program *program)
5167 MHEG5Bool invalidString;
5169 U8BIT svalue[4] = { 0, 0, 0, 0 };
5173 static char bannerTransparency[] =
"BannerTransparency";
5174 static char bannerTimeout[] =
"BannerTimeout";
5175 static char osdLanguage[] =
"OSDLanguage";
5176 static char serviceMode[] =
"ServiceMode";
5179 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5182 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5188 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5193 return MHEG5ERR_WRONGPARAM;
5195 nextParam = MHEG5resolveORef(nextParam, &valueVar);
5199 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5202 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
5205 return MHEG5ERR_WRONGPARAM;
5210 if (strcmp((
char *)key.data, bannerTransparency) == 0)
5212 if (valueVar->clazz != MHEG5INTEGERVARIABLE)
5214 return MHEG5ERR_WRONGPARAM;
5218 if (err == MHERR_OK)
5223 else if (strcmp((
char *)key.data, bannerTimeout) == 0)
5225 if (valueVar->clazz != MHEG5INTEGERVARIABLE)
5227 return MHEG5ERR_WRONGPARAM;
5231 if (err == MHERR_OK)
5236 else if (strcmp((
char *)key.data, osdLanguage) == 0)
5238 if (valueVar->clazz != MHEG5OCTETSTRINGVARIABLE)
5240 return MHEG5ERR_WRONGPARAM;
5244 if (err == MHERR_OK)
5247 buffer.data = svalue;
5252 else if (strcmp((
char*)key.data, serviceMode) == 0)
5254 if (valueVar->clazz != MHEG5INTEGERVARIABLE)
5256 return MHEG5ERR_WRONGPARAM;
5259 switch (DVB_MhegGetServiceMode())
5262 case SRV_TYP_TV_DATA: *intVal = 0;
break;
5263 case SRV_TYP_RADIO: *intVal = 1;
break;
5264 case SRV_TYP_ALL: *intVal = 3;
break;
5268 return MHEG5ERR_NOERROR;
5275 #ifdef INCLUDE_SI_EXTENSION 5277 static MHEG5Bool GetServiceInfo( MHEG5Int serviceIndex,
5280 MHEG5Int *serviceType )
5282 S_ServiceDetails ServiceInfo;
5284 MHEG5Bool returnCode = MHEG5FALSE;
5288 if (DVB_MhegGetServiceDetails((S32BIT)serviceIndex, &ServiceInfo) == MHERR_OK)
5290 returnCode = MHEG5TRUE;
5291 if (ServiceInfo.serviceName.zptr != NULL &&
5292 ServiceInfo.serviceName.zlen != 0)
5294 buffer.data = ServiceInfo.serviceName.zptr;
5295 buffer.len = ServiceInfo.serviceName.zlen;
5299 if (ServiceInfo.serviceProvider.zptr != NULL &&
5300 ServiceInfo.serviceProvider.zlen != 0)
5302 buffer.data = ServiceInfo.serviceProvider.zptr;
5303 buffer.len = ServiceInfo.serviceProvider.zlen;
5307 *serviceType = ServiceInfo.serviceType;
5310 if (mheg_trace_debug & (TACTIONS | TEVNTS))
5313 DBG_PRINTF(T_NL
"SI_GetServiceInfo( %ld ", serviceIndex );
5315 MHEG5stringTrace( *serviceName, buff, 0, 120 );
5317 MHEG5stringTrace( *serviceProvider, buff, 0, 100 );
5319 DBG_PRINTF(
" %ld )", ServiceInfo.serviceType );
5323 DVB_MhegReleaseServiceDetails( &ServiceInfo );
5327 TRACE(TERROR, (
" serviceIndex=%d", serviceIndex))
5354 static MHEG5ErrorCode MHEG5prgSI_GetServiceInfo(
MHEG5Program *program)
5358 MHEG5Int serviceIndex;
5367 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5370 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5372 nextParam = MHEG5resolveGenericInteger( nextParam, &serviceIndex);
5375 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5378 nextParam = MHEG5resolveORef(nextParam, &serviceName);
5381 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5384 nextParam = MHEG5resolveORef(nextParam, &serviceProvider);
5387 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5390 MHEG5resolveORef(nextParam, &serviceType);
5392 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
5393 (!serviceProvider) || (serviceProvider->clazz != MHEG5OCTETSTRINGVARIABLE) ||
5394 (!serviceName) || (serviceName->clazz != MHEG5OCTETSTRINGVARIABLE) ||
5395 (!serviceType) || (serviceType->clazz != MHEG5INTEGERVARIABLE))
5397 return MHEG5ERR_WRONGPARAM;
5400 success = GetServiceInfo( serviceIndex,
5407 return MHEG5ERR_NOERROR;
5410 static void GetEventInfo(S_EventDetails *eventDetails,
5413 MHEG5Int *parentalRating,
5414 MHEG5Int *startDate,
5415 MHEG5Int *startTime,
5418 MHEG5Bool *freeNotCA )
5428 if (eventDetails->eventName.zlen > 0 &&
5429 eventDetails->eventName.zptr != NULL)
5431 buffer.data = eventDetails->eventName.zptr;
5432 buffer.len = eventDetails->eventName.zlen;
5437 if (eventDetails->shortDescription.zlen > 0 &&
5438 eventDetails->shortDescription.zptr != NULL)
5440 buffer.data = eventDetails->shortDescription.zptr;
5441 buffer.len = eventDetails->shortDescription.zlen;
5446 if (eventDetails->category.zlen > 0 &&
5447 eventDetails->category.zptr != NULL)
5449 buffer.len = eventDetails->category.zlen * 2;
5450 buffer.data = STR_DataAlloc( buffer.len );
5452 for (i = 0; i != buffer.len; i += 2)
5454 buffer.data[i] = ((eventDetails->category.zptr[i >> 1] >> 4) & 0xf) +
'A';
5455 buffer.data[i + 1] = (eventDetails->category.zptr[i >> 1] & 0xf) +
'a';
5459 *parentalRating = eventDetails->parentalRating;
5460 *startDate = eventDetails->startDate;
5462 time = eventDetails->startTime.hours;
5464 time += eventDetails->startTime.minutes;
5466 time += eventDetails->startTime.seconds;
5470 time = eventDetails->duration.hours;
5472 time += eventDetails->duration.minutes;
5474 time += eventDetails->duration.seconds;
5478 if (eventDetails->freeNotCA == TRUE)
5480 *freeNotCA = MHEG5TRUE;
5484 *freeNotCA = MHEG5FALSE;
5488 if (mheg_trace_debug & (TACTIONS | TEVNTS))
5492 MHEG5stringTrace( *eventName, buff, 0, 120 );
5493 MHEG5stringTrace( *shortDescription, buff, 0, 230 );
5496 DBG_PRINTF(
" %d %d", eventDetails->parentalRating, eventDetails->startDate );
5497 DBG_PRINTF(
" %02d:%02d:%02d", eventDetails->startTime.hours,
5498 eventDetails->startTime.minutes, eventDetails->startTime.seconds );
5499 DBG_PRINTF(
" %02d:%02d:%02d", eventDetails->startTime.hours,
5500 eventDetails->duration.minutes, eventDetails->duration.seconds );
5502 DBG_PRINTF(
" %s %s )", category->data, *freeNotCA ?
"TRUE" :
"FALSE" );
5556 static MHEG5ErrorCode MHEG5prgSI_GetEventInfo(
MHEG5Program *program)
5561 MHEG5Int serviceIndex;
5572 S_EventDetails eventDetails;
5577 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5580 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5582 nextParam = MHEG5resolveGenericInteger( nextParam, &serviceIndex);
5585 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5588 nextParam = MHEG5resolveGenericInteger( nextParam, &porf);
5591 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5594 nextParam = MHEG5resolveORef(nextParam, &eventName);
5597 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5600 nextParam = MHEG5resolveORef(nextParam, &shortDescription);
5603 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5606 nextParam = MHEG5resolveORef(nextParam, &parentalRating);
5609 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5612 nextParam = MHEG5resolveORef(nextParam, &startDate);
5615 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5618 nextParam = MHEG5resolveORef(nextParam, &startTime);
5621 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5624 nextParam = MHEG5resolveORef(nextParam, &duration);
5627 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5630 nextParam = MHEG5resolveORef(nextParam, &category);
5633 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5636 MHEG5resolveORef(nextParam, &freeNotCA);
5638 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
5639 (!eventName) || (eventName->clazz != MHEG5OCTETSTRINGVARIABLE) ||
5640 (!shortDescription) || (shortDescription->clazz != MHEG5OCTETSTRINGVARIABLE) ||
5641 (!parentalRating) || (parentalRating->clazz != MHEG5INTEGERVARIABLE) ||
5642 (!startDate) || (startDate->clazz != MHEG5INTEGERVARIABLE) ||
5643 (!startTime) || (startTime->clazz != MHEG5INTEGERVARIABLE) ||
5644 (!duration) || (duration->clazz != MHEG5INTEGERVARIABLE) ||
5645 (!category) || (category->clazz != MHEG5OCTETSTRINGVARIABLE) ||
5646 (!freeNotCA) || (freeNotCA->clazz != MHEG5BOOLEANVARIABLE))
5648 return MHEG5ERR_WRONGPARAM;
5653 err = DVB_MhegGetEventDetails((S32BIT)serviceIndex, porf ? TRUE : FALSE, &eventDetails);
5654 if (err == MHERR_OK)
5657 if (mheg_trace_debug & (TACTIONS | TEVNTS))
5659 DBG_PRINTF(T_NL
"SI_GetEventInfo(");
5662 GetEventInfo(&eventDetails,
5671 DVB_MhegReleaseEventDetails(&eventDetails);
5674 return MHEG5ERR_NOERROR;
5677 #ifdef INCLUDE_SA_PROFILE 5689 static MHEG5ErrorCode MHEG5prgSEI_GetNumberOfServices(
MHEG5Program *program)
5698 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5701 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5703 nextParam = MHEG5resolveORef(nextParam, &numberVar);
5707 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5710 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
5711 ((!numberVar) || (numberVar->clazz != MHEG5INTEGERVARIABLE)))
5713 return MHEG5ERR_WRONGPARAM;
5718 err = DVB_MhegGetNumberOfServices(&number);
5719 if (err == MHERR_OK)
5725 if (mheg_trace_debug & (TACTIONS | TEVNTS))
5727 DBG_PRINTF(T_NL
"SEI_GetNumberOfServices( %d )", number);
5730 return MHEG5ERR_NOERROR;
5735 #ifdef INCLUDE_SA_PROFILE 5763 static MHEG5ErrorCode MHEG5prgSEI_NextServiceIndex(
MHEG5Program *program)
5768 S32BIT serviceIndex;
5773 E_ServiceType servType;
5777 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5780 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5782 nextParam = MHEG5resolveORef(nextParam, &serviceIndexVar);
5785 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5787 nextParam = MHEG5resolveGenericInteger(nextParam, &updown);
5790 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5793 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
5797 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5799 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
5800 ((!serviceIndexVar) || (serviceIndexVar->clazz != MHEG5INTEGERVARIABLE)))
5802 return MHEG5ERR_WRONGPARAM;
5805 switch (serviceIndex)
5808 case 0: servType = SRV_TYP_ALL;
break;
5809 case 1: servType = SRV_TYP_TV_DATA;
break;
5810 case 2: servType = SRV_TYP_RADIO;
break;
5816 oldIndex = serviceIndex;
5820 err = DVB_MhegNextServiceIndex(&serviceIndex,servType);
5824 err = DVB_MhegPrevServiceIndex(&serviceIndex,servType);
5826 if (err == MHERR_OK)
5831 if (mheg_trace_debug & (TACTIONS | TEVNTS))
5833 DBG_PRINTF(T_NL
"SEI_NextServiceIndex( updown=%d, %d -> %d )", updown, oldIndex, serviceIndex);
5836 return MHEG5ERR_NOERROR;
5841 #ifdef INCLUDE_SA_PROFILE 5857 static MHEG5ErrorCode MHEG5prgSEI_GetServiceRunningStatus(
MHEG5Program *program)
5862 MHEG5Int serviceIndex;
5863 U8BIT runningStatus;
5867 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5870 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5872 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
5875 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5877 nextParam = MHEG5resolveORef(nextParam, &statusVar);
5881 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5884 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
5885 ((!statusVar) || (statusVar->clazz != MHEG5INTEGERVARIABLE)))
5887 return MHEG5ERR_WRONGPARAM;
5892 err = DVB_MhegGetServiceRunningStatus((S32BIT)serviceIndex, &runningStatus);
5893 if (err == MHERR_OK)
5899 if (mheg_trace_debug & (TACTIONS | TEVNTS))
5901 DBG_PRINTF(T_NL
"SEI_GetServiceRunningStatus( %d )", runningStatus);
5904 return MHEG5ERR_NOERROR;
5909 #ifdef INCLUDE_SA_PROFILE 5924 static MHEG5ErrorCode MHEG5prgSEI_GetChannelNumber(
MHEG5Program *program)
5929 MHEG5Int serviceIndex;
5934 nextParam = MHEG5resolveORef(program->parameter, &callVar);
5937 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5939 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
5942 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5944 nextParam = MHEG5resolveORef(nextParam, &numVar);
5948 return MHEG5ERR_WRONGNUMBEROFPARAMS;
5951 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
5952 ((!numVar) || (numVar->clazz != MHEG5INTEGERVARIABLE)))
5954 return MHEG5ERR_WRONGPARAM;
5959 err = DVB_MhegGetChannelNumber((S32BIT)serviceIndex, &channelNum);
5960 if (err == MHERR_OK)
5965 if (mheg_trace_debug & (TACTIONS | TEVNTS))
5967 DBG_PRINTF(T_NL
"SEI_GetChannelNumber( -> %d )", channelNum);
5970 return MHEG5ERR_NOERROR;
5975 #ifdef INCLUDE_SA_PROFILE 5998 static MHEG5ErrorCode MHEG5prgPFEI_GetEventId(
MHEG5Program *program)
6004 MHEG5Int serviceIndex;
6010 nextParam = MHEG5resolveORef(program->parameter, &callVar);
6013 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6015 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
6018 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6020 nextParam = MHEG5resolveGenericInteger(nextParam, &porf);
6023 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6025 nextParam = MHEG5resolveORef(nextParam, &resultVar);
6028 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6030 nextParam = MHEG5resolveORef(nextParam, &eventIdVar);
6034 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6037 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6038 ((!eventIdVar) || (eventIdVar->clazz != MHEG5INTEGERVARIABLE)))
6040 return MHEG5ERR_WRONGPARAM;
6045 err = DVB_MhegGetEventId((S32BIT)serviceIndex, (porf) ? TRUE : FALSE, &eventId);
6046 if (err == MHERR_OK)
6056 if (mheg_trace_debug & (TACTIONS | TEVNTS))
6058 DBG_PRINTF(T_NL
"PFEI_GetEventId( %d, %d, -> 0x%x )", serviceIndex, porf, eventId);
6061 return MHEG5ERR_NOERROR;
6066 #ifdef INCLUDE_SA_PROFILE 6088 static MHEG5ErrorCode MHEG5prgSEI_SetEventIterator(
MHEG5Program *program)
6093 MHEG5Int serviceIndex;
6100 nextParam = MHEG5resolveORef(program->parameter, &callVar);
6103 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6105 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
6108 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6110 nextParam = MHEG5resolveGenericInteger(nextParam, &startDate);
6113 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6115 nextParam = MHEG5resolveGenericInteger(nextParam, &startTime);
6118 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6120 nextParam = MHEG5resolveORef(nextParam, &eventIdVar);
6124 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6127 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6128 ((!eventIdVar) || (eventIdVar->clazz != MHEG5INTEGERVARIABLE)))
6130 return MHEG5ERR_WRONGPARAM;
6135 err = DVB_MhegSetEventIterator((S32BIT)serviceIndex, (S32BIT)startDate,
6136 (S32BIT)startTime, &eventId);
6137 if (err == MHERR_OK)
6142 if (mheg_trace_debug & (TACTIONS | TEVNTS))
6144 DBG_PRINTF(T_NL
"SEI_SetEventIterator( %d, %d, %02d:%02d:%02d, -> 0x%x )",
6145 serviceIndex, startDate, startTime / 3600, (startTime / 60) % 60, startTime % 60, eventId );
6148 return MHEG5ERR_NOERROR;
6153 #ifdef INCLUDE_SA_PROFILE 6168 static MHEG5ErrorCode MHEG5prgSEI_IncrementEventIterator(
MHEG5Program *program)
6179 nextParam = MHEG5resolveORef(program->parameter, &callVar);
6182 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6184 nextParam = MHEG5resolveORef(nextParam, &eventIdVar);
6188 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6191 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6192 ((!eventIdVar) || (eventIdVar->clazz != MHEG5INTEGERVARIABLE)))
6194 return MHEG5ERR_WRONGPARAM;
6203 err = DVB_MhegIncrementEventIterator(&eventId);
6204 if (err == MHERR_OK)
6209 if (mheg_trace_debug & (TACTIONS | TEVNTS))
6211 DBG_PRINTF(T_NL
"SEI_IncrementEventIterator( 0x%x -> 0x%x )", oldId, eventId);
6214 return MHEG5ERR_NOERROR;
6219 #ifdef INCLUDE_SA_PROFILE 6273 static MHEG5ErrorCode MHEG5prgSEI_GetScheduledEventInfo(
MHEG5Program *program)
6278 MHEG5Int serviceIndex;
6291 S_EventDetails eventDetails;
6296 nextParam = MHEG5resolveORef(program->parameter, &callVar);
6299 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6301 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
6304 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6306 nextParam = MHEG5resolveGenericInteger(nextParam, &eventId);
6309 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6311 nextParam = MHEG5resolveORef(nextParam, &resultVar);
6314 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6316 nextParam = MHEG5resolveORef(nextParam, &eventName);
6319 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6321 nextParam = MHEG5resolveORef(nextParam, &shortDescription);
6324 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6326 nextParam = MHEG5resolveORef(nextParam, &parentalRating);
6329 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6331 nextParam = MHEG5resolveORef(nextParam, &startDate);
6334 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6336 nextParam = MHEG5resolveORef(nextParam, &startTime);
6339 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6341 nextParam = MHEG5resolveORef(nextParam, &duration);
6344 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6346 nextParam = MHEG5resolveORef(nextParam, &category);
6349 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6351 nextParam = MHEG5resolveORef(nextParam, &freeNotCA);
6355 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6358 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
6359 (!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE) ||
6360 (!eventName) || (eventName->clazz != MHEG5OCTETSTRINGVARIABLE) ||
6361 (!shortDescription) || (shortDescription->clazz != MHEG5OCTETSTRINGVARIABLE) ||
6362 (!parentalRating) || (parentalRating->clazz != MHEG5INTEGERVARIABLE) ||
6363 (!startDate) || (startDate->clazz != MHEG5INTEGERVARIABLE) ||
6364 (!startTime) || (startTime->clazz != MHEG5INTEGERVARIABLE) ||
6365 (!duration) || (duration->clazz != MHEG5INTEGERVARIABLE) ||
6366 (!category) || (category->clazz != MHEG5OCTETSTRINGVARIABLE) ||
6367 (!freeNotCA) || (freeNotCA->clazz != MHEG5BOOLEANVARIABLE))
6369 return MHEG5ERR_WRONGPARAM;
6374 err = DVB_MhegGetScheduledEventDetails((S32BIT)serviceIndex, (S32BIT)eventId,
6375 &result, &eventDetails);
6376 if (err == MHERR_OK)
6379 if (mheg_trace_debug & (TACTIONS | TEVNTS))
6381 DBG_PRINTF(T_NL
"SEI_GetScheduledEventInfo( %d, 0x%x, ->%d ", serviceIndex, eventId, result);
6388 GetEventInfo(&eventDetails,
6397 DVB_MhegReleaseEventDetails(&eventDetails);
6403 if (mheg_trace_debug & (TACTIONS | TEVNTS))
6411 return MHEG5ERR_NOERROR;
6416 #ifdef INCLUDE_SA_PROFILE 6469 static MHEG5ErrorCode MHEG5prgSEI_GetComponentInfo(
MHEG5Program *program)
6473 MHEG5Int serviceIndex;
6478 MHEG5Bool invalidString;
6483 static char subtitles[] =
"Subtitles";
6484 static char audioDesc[] =
"AudioDesc";
6485 static char altLang[] =
"AltLang";
6486 static char dolby[] =
"Dolby";
6487 static char hd[] =
"HD";
6491 nextParam = MHEG5resolveORef(program->parameter, &callVar);
6494 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6496 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
6499 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6501 nextParam = MHEG5resolveGenericInteger(nextParam, &eventId);
6504 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6506 nextParam = MHEG5resolveORef(nextParam, &resultVar);
6509 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6514 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6519 return MHEG5ERR_WRONGPARAM;
6521 nextParam = MHEG5resolveORef(nextParam, &valueVar);
6525 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6528 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6529 ((!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6530 ((!valueVar) || (valueVar->clazz != MHEG5BOOLEANVARIABLE)))
6532 return MHEG5ERR_WRONGPARAM;
6539 if ((keyStr.len != 0) && (keyStr.data != NULL))
6541 if (strcmp((
char *)keyStr.data, subtitles) == 0)
6543 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, (S32BIT)eventId,
6544 &result, MHEG5_COMPONENT_SUBTITLES,
6547 else if (strcmp((
char *)keyStr.data, audioDesc) == 0)
6549 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, (S32BIT)eventId,
6550 &result, MHEG5_COMPONENT_AUDIO_DESC,
6553 else if (strcmp((
char *)keyStr.data, altLang) == 0)
6555 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, (S32BIT)eventId,
6556 &result, MHEG5_COMPONENT_ALT_LANG,
6559 else if (strcmp((
char *)keyStr.data, dolby) == 0)
6561 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, (S32BIT)eventId,
6562 &result, MHEG5_COMPONENT_DOLBY,
6565 else if (strcmp((
char *)keyStr.data, hd) == 0)
6567 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, (S32BIT)eventId,
6568 &result, MHEG5_COMPONENT_HD,
6576 if (err == MHERR_OK)
6598 return MHEG5ERR_NOERROR;
6603 #ifdef INCLUDE_SA_PROFILE 6656 static MHEG5ErrorCode MHEG5prgPFEI_GetComponentInfo(
MHEG5Program *program)
6660 MHEG5Int serviceIndex;
6666 MHEG5Bool invalidString;
6671 static char subtitles[] =
"Subtitles";
6672 static char audioDesc[] =
"AudioDesc";
6673 static char altLang[] =
"AltLang";
6674 static char dolby[] =
"Dolby";
6675 static char hd[] =
"HD";
6679 nextParam = MHEG5resolveORef(program->parameter, &callVar);
6682 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6684 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
6687 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6689 nextParam = MHEG5resolveGenericInteger(nextParam, &porf);
6692 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6694 nextParam = MHEG5resolveORef(nextParam, &resultVar);
6697 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6702 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6707 return MHEG5ERR_WRONGPARAM;
6709 nextParam = MHEG5resolveORef(nextParam, &valueVar);
6713 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6716 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6717 ((!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6718 ((!valueVar) || (valueVar->clazz != MHEG5BOOLEANVARIABLE)))
6720 return MHEG5ERR_WRONGPARAM;
6727 if ((keyStr.len != 0) && (keyStr.data != NULL))
6729 err = DVB_MhegGetEventId((S32BIT)serviceIndex, (porf) ? TRUE : FALSE, &eventId);
6731 if (err == MHERR_OK)
6733 if (strcmp((
char *)keyStr.data, subtitles) == 0)
6735 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, eventId,
6736 &result, MHEG5_COMPONENT_SUBTITLES,
6739 else if (strcmp((
char *)keyStr.data, audioDesc) == 0)
6741 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, eventId,
6742 &result, MHEG5_COMPONENT_AUDIO_DESC,
6745 else if (strcmp((
char *)keyStr.data, altLang) == 0)
6747 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, eventId,
6748 &result, MHEG5_COMPONENT_ALT_LANG,
6751 else if (strcmp((
char *)keyStr.data, dolby) == 0)
6753 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, eventId,
6754 &result, MHEG5_COMPONENT_DOLBY,
6757 else if (strcmp((
char *)keyStr.data, hd) == 0)
6759 err = DVB_MhegGetComponentInfo((S32BIT)serviceIndex, eventId,
6760 &result, MHEG5_COMPONENT_HD,
6768 if (err == MHERR_OK)
6795 return MHEG5ERR_NOERROR;
6800 #ifdef INCLUDE_SA_PROFILE 6836 static MHEG5ErrorCode MHEG5prgSEI_GetComponentData(
MHEG5Program *program)
6840 MHEG5Int serviceIndex;
6852 U8BIT contType[256];
6858 nextParam = MHEG5resolveORef(program->parameter, &callVar);
6861 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6863 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
6866 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6868 nextParam = MHEG5resolveGenericInteger(nextParam, &eventId);
6871 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6873 nextParam = MHEG5resolveORef(nextParam, &resultVar);
6876 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6878 nextParam = MHEG5resolveORef(nextParam, &strContVar);
6881 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6883 nextParam = MHEG5resolveORef(nextParam, &contTypeVar);
6886 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6888 nextParam = MHEG5resolveORef(nextParam, &langVar);
6892 return MHEG5ERR_WRONGNUMBEROFPARAMS;
6894 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6895 ((!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE)) ||
6896 ((!strContVar) || (strContVar->clazz != MHEG5OCTETSTRINGVARIABLE)) ||
6897 ((!contTypeVar) || (contTypeVar->clazz != MHEG5OCTETSTRINGVARIABLE)) ||
6898 ((!langVar) || (langVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
6900 return MHEG5ERR_WRONGPARAM;
6909 err = DVB_MhegGetComponentData((S32BIT)serviceIndex, (S32BIT)eventId,
6910 &result, strCont, contType, lang);
6911 if (err == MHERR_OK && result)
6919 buffer.len = strlen((
char *)strCont);
6920 buffer.data = strCont;
6923 buffer.len = strlen((
char *)contType);
6924 buffer.data = contType;
6927 buffer.len = strlen((
char *)lang);
6936 return MHEG5ERR_NOERROR;
6941 #ifdef INCLUDE_SA_PROFILE 6977 static MHEG5ErrorCode MHEG5prgPFEI_GetComponentData(
MHEG5Program *program)
6981 MHEG5Int serviceIndex;
6994 U8BIT contType[256];
7000 nextParam = MHEG5resolveORef(program->parameter, &callVar);
7003 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7005 nextParam = MHEG5resolveGenericInteger(nextParam, &serviceIndex);
7008 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7010 nextParam = MHEG5resolveGenericInteger(nextParam, &porf);
7013 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7015 nextParam = MHEG5resolveORef(nextParam, &resultVar);
7018 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7020 nextParam = MHEG5resolveORef(nextParam, &strContVar);
7023 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7025 nextParam = MHEG5resolveORef(nextParam, &contTypeVar);
7028 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7030 nextParam = MHEG5resolveORef(nextParam, &langVar);
7034 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7036 if (((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) ||
7037 ((!resultVar) || (resultVar->clazz != MHEG5BOOLEANVARIABLE)) ||
7038 ((!strContVar) || (strContVar->clazz != MHEG5OCTETSTRINGVARIABLE)) ||
7039 ((!contTypeVar) || (contTypeVar->clazz != MHEG5OCTETSTRINGVARIABLE)) ||
7040 ((!langVar) || (langVar->clazz != MHEG5OCTETSTRINGVARIABLE)))
7042 return MHEG5ERR_WRONGPARAM;
7051 err = DVB_MhegGetEventId((S32BIT)serviceIndex, (porf) ? TRUE : FALSE, &eventId);
7052 if (err == MHERR_OK)
7054 err = DVB_MhegGetComponentData((S32BIT)serviceIndex, eventId,
7055 &result, strCont, contType, lang);
7056 if (err == MHERR_OK && result)
7064 buffer.len = strlen((
char *)strCont);
7065 buffer.data = strCont;
7068 buffer.len = strlen((
char *)contType);
7069 buffer.data = contType;
7072 buffer.len = strlen((
char *)lang);
7085 return MHEG5ERR_NOERROR;
7104 static MHEG5ErrorCode MHEG5prgPersistentStorageInfo(
MHEG5Program *program)
7112 nextParam = MHEG5resolveORef(program->parameter, &callVar);
7115 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7118 MHEG5resolveORef( nextParam, &enabled);
7119 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
7120 (!enabled) || (enabled->clazz != MHEG5BOOLEANVARIABLE))
7122 return MHEG5ERR_WRONGPARAM;
7126 return MHEG5ERR_NOERROR;
7131 #ifdef INCLUDE_CONNECTED_TV 7153 void MHEG5notifyApplicationLaunchStatus(MHEG5Bool success)
7156 if (program != NULL)
7159 *((MHEG5Bool *)(program->resultValue)) = success;
7162 *(program->forkSucceededValue) = MHEG5TRUE;
7164 ProgramCompleted( program );
7166 application_launch_program = NULL;
7221 static MHEG5ErrorCode MHEG5prgApplicationLaunch(
MHEG5Program *program)
7223 MHEG5GList *secondParam = 0, *thirdParam = 0, *prevParam, *nextParam = 0;
7229 MHEG5Bool invalidString;
7233 MHEG5Int allocated = 0, used = 0;
7239 secondParam = MHEG5resolveORef(program->parameter, &callVar);
7240 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) {
7241 return MHEG5ERR_WRONGPARAM;
7244 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7251 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7253 if (invalidString) {
7255 return MHEG5ERR_WRONGPARAM;
7263 prevParam = thirdParam;
7264 nextParam = MHEG5resolveGenericGeneric(prevParam, &g);
7265 while (nextParam && g.type == MHEG5OCTETSTRING)
7270 prevParam = nextParam;
7271 nextParam = MHEG5resolveGenericGeneric(prevParam, &g);
7272 success = MHEG5parseEncodeField(&buffer, &used, &allocated, &name, &g);
7282 prevParam = nextParam;
7283 nextParam = MHEG5resolveGenericGeneric(prevParam, &g);
7287 nextParam = MHEG5resolveORef(prevParam, &successVar);
7288 if (nextParam != NULL) {
7289 MHEG5freeMem(buffer);
7290 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7292 if ((!successVar) || (successVar->clazz != MHEG5BOOLEANVARIABLE)) {
7293 MHEG5freeMem(buffer);
7294 return MHEG5ERR_WRONGPARAM;
7298 program->resultValue = &rc->value;
7304 if (!program->forked) {
7319 application_launch_program = program;
7320 MHEG5ApplicationLaunch(&location, &data);
7321 MHEG5freeMem(buffer);
7323 return MHEG5ERR_NOERROR;
7370 static MHEG5ErrorCode MHEG5prgGetLaunchArguments(
MHEG5Program *program)
7372 MHEG5GList *secondParam = 0, *thirdParam = 0;
7376 MHEG5Bool invalidString;
7380 secondParam = MHEG5resolveORef(program->parameter, &callVar);
7381 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE)) {
7382 return MHEG5ERR_WRONGPARAM;
7385 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7389 return MHEG5ERR_WRONGNUMBEROFPARAMS;
7391 if (invalidString) {
7393 return MHEG5ERR_WRONGPARAM;
7396 MHEG5resolveORef(thirdParam, &osVar);
7397 if ((!callVar) || (callVar->clazz != MHEG5BOOLEANVARIABLE) ||
7398 (!osVar) || (osVar->clazz != MHEG5OCTETSTRINGVARIABLE)) {
7399 return MHEG5ERR_WRONGPARAM;
7405 value->value.len = 0;
7406 value->value.data = NULL;
7408 return MHEG5ERR_NOERROR;
7427 {
"GCD", &MHEG5prgGetCurrentDate, NULL },
7428 {
"FDa", &MHEG5prgFormatDate, NULL },
7429 {
"GDW", &MHEG5prgGetDayOfWeek, NULL },
7430 {
"Rnd", &MHEG5prgRandom, NULL },
7431 {
"CTC", &MHEG5prgCastToContentRef, NULL },
7432 {
"CTO", &MHEG5prgCastToObjectRef, NULL },
7433 {
"CSI", &MHEG5prgCastToStringInt, NULL },
7434 {
"GSL", &MHEG5prgGetStringLength, NULL },
7435 {
"GSS", &MHEG5prgGetSubString, NULL },
7436 {
"SSS", &MHEG5prgSearchSubString, NULL },
7437 {
"SES", &MHEG5prgSearchAndExtractSubString, NULL },
7438 {
"GSI", &MHEG5prgSI_GetServiceIndex, NULL },
7439 #ifndef CI_PLUS_ONLY 7440 {
"TIn", &MHEG5prgSI_TuneIndex, NULL },
7441 {
"TII", &MHEG5prgSI_TuneIndexInfo, NULL },
7442 {
"VTG", &MHEG5prgVideoToGraphics, NULL },
7443 {
"SSM", &MHEG5prgSetSubtitleMode, NULL },
7444 {
"SWA", &MHEG5prgSetWidescreenAlignment, NULL },
7446 {
"BSI", &MHEG5prgSI_GetBasicSI, NULL },
7447 {
"CCR", &MHEG5prgCheckContentRef, &clearOrmHandle },
7448 {
"CGR", &MHEG5prgCheckGroupIDRef, &clearOrmHandle },
7449 {
"CIS", &MHEG5prgCI_SendMessage, NULL },
7450 #ifndef CI_PLUS_ONLY 7451 {
"GBI", &MHEG5prgGetBootInfo, NULL },
7453 {
"WAI", &MHEG5prgWhoAmI, NULL },
7454 #ifdef INCLUDE_DEBUG_PACKAGE 7455 {
"DBG", &MHEG5prgDebug, NULL },
7457 {
"GDA", &MHEG5prgGetDisplayAspectRatio, NULL },
7458 #ifdef INCLUDE_NATIVE_APP 7459 {
"SBI", &MHEG5prgSetBroadcasterInterruptions, NULL },
7461 #ifdef INCLUDE_PVR_AU 7462 {
"PMB2", &MHEG5prgPVR_MakeBooking2, NULL },
7463 {
"PCB2", &MHEG5prgPVR_CancelBooking2, NULL },
7464 {
"PLB2", &MHEG5prgPVR_ListBookings2, NULL },
7465 {
"PGD2", &MHEG5prgPVR_GetDetails2, NULL },
7467 #ifdef INCLUDE_MHEG_PVR 7468 {
"PMB", &MHEG5prgPVR_MakeBooking, NULL },
7469 {
"PCB", &MHEG5prgPVR_CancelBooking, NULL },
7470 {
"PLB", &MHEG5prgPVR_ListBookings, NULL },
7472 #ifdef INCLUDE_SA_PROFILE 7473 {
"GPL", &MHEG5prgLNG_GetPreferredLangs, NULL },
7474 {
"GAu", &MHEG5prgLNG_GetAudioLangs, NULL },
7475 {
"GSb", &MHEG5prgLNG_GetSubtitleLangs, NULL },
7476 {
"GAD", &MHEG5prgLNG_GetADLangs, NULL },
7477 {
"GNS", &MHEG5prgSEI_GetNumberOfServices, NULL },
7478 {
"NSI", &MHEG5prgSEI_NextServiceIndex, NULL },
7479 {
"GSR", &MHEG5prgSEI_GetServiceRunningStatus, NULL },
7480 {
"GCN", &MHEG5prgSEI_GetChannelNumber, NULL },
7481 {
"SEv", &MHEG5prgSEI_SetEventIterator, NULL },
7482 {
"IEI", &MHEG5prgSEI_IncrementEventIterator, NULL },
7483 {
"GSE", &MHEG5prgSEI_GetScheduledEventInfo, NULL },
7484 {
"SCI", &MHEG5prgSEI_GetComponentInfo, NULL },
7485 {
"SCD", &MHEG5prgSEI_GetComponentData, NULL },
7486 {
"GID", &MHEG5prgPFEI_GetEventId, NULL },
7487 {
"PCI", &MHEG5prgPFEI_GetComponentInfo, NULL },
7488 {
"PCD", &MHEG5prgPFEI_GetComponentData, NULL },
7489 {
"SNR", &MHEG5prgREM_SetNativeReminder, NULL },
7490 {
"GNR", &MHEG5prgREM_GetNativeReminder, NULL },
7491 {
"CNR", &MHEG5prgREM_CancelNativeReminder, NULL },
7492 {
"GHS", &MHEG5prgSA_GetHostSetting, NULL },
7494 #ifdef INCLUDE_CI_PLUS 7495 {
"RMD", &MHEG5prgRequestMPEGDecoder, NULL },
7496 {
"SMG", &MHEG5prgSuppressMHEGGraphics, NULL },
7498 {
"TIM", &MHEG5prgTestInputMask, NULL },
7500 {
"SHF", &MHEG5prgSetHybridFileSystem, NULL },
7501 {
"GIS", &MHEG5prgGetICStatus, NULL },
7502 {
"RDa", &MHEG5prgReturnData, NULL },
7503 {
"GCk", &MHEG5prgGetCookie, NULL },
7504 {
"SCk", &MHEG5prgSetCookie, NULL },
7506 {
"PFG", &MHEG5prgPromptForGuidance, &stopPrompt },
7507 {
"MSP", &MHEG5prgMeasureStreamPerformance, &stopMeasurement },
7508 #ifdef INCLUDE_IPLAYER 7509 {
"GPS", &MHEG5prgGetPINSupport, NULL },
7511 #if defined(INCLUDE_IPLAYER) || defined(INCLUDE_FREESAT) 7512 {
"GAP", &MHEG5prgGetAudioDescPref, NULL },
7513 {
"GSP", &MHEG5prgGetSubtitlePref, NULL },
7515 #ifdef INCLUDE_FREESAT 7516 {
"GPR", &MHEG5prgGetPINRequirement, NULL },
7517 {
"VPP", &MHEG5prgValidatePIN, NULL },
7518 {
"CPS", &MHEG5prgComputePrivateSignature, NULL },
7522 #ifdef INCLUDE_FREESAT 7523 {
"FSI", &MHEG5prgGetFSIServiceReference, NULL },
7525 #ifdef INCLUDE_SI_EXTENSION 7526 {
"SeI", &MHEG5prgSI_GetServiceInfo, NULL },
7527 {
"GEI", &MHEG5prgSI_GetEventInfo, NULL },
7530 {
"PST", &MHEG5prgPersistentStorageInfo, NULL },
7533 #ifdef INCLUDE_CONNECTED_TV 7534 {
"GLA", &MHEG5prgGetLaunchArguments, NULL },
7535 {
"ApL", &MHEG5prgApplicationLaunch, NULL },
7539 &MHEG5prgGetCurrentDate, NULL },
7541 &MHEG5prgFormatDate, NULL },
7543 &MHEG5prgGetDayOfWeek, NULL },
7545 &MHEG5prgRandom, NULL },
7546 {
"CastToContentRef",
7547 &MHEG5prgCastToContentRef, NULL },
7548 {
"CastToObjectRef",
7549 &MHEG5prgCastToObjectRef, NULL },
7550 {
"CastToStringInt",
7551 &MHEG5prgCastToStringInt, NULL },
7552 {
"GetStringLength",
7553 &MHEG5prgGetStringLength, NULL },
7555 &MHEG5prgGetSubString, NULL },
7556 {
"SearchSubString",
7557 &MHEG5prgSearchSubString, NULL },
7558 {
"SearchAndExtractSubString",
7559 &MHEG5prgSearchAndExtractSubString, NULL },
7560 {
"SI_GetServiceIndex",
7561 &MHEG5prgSI_GetServiceIndex, NULL },
7562 #ifndef CI_PLUS_ONLY 7564 &MHEG5prgSI_TuneIndex, NULL },
7565 {
"SI_TuneIndexInfo",
7566 &MHEG5prgSI_TuneIndexInfo, NULL },
7567 {
"VideoToGraphics",
7568 &MHEG5prgVideoToGraphics, NULL },
7569 {
"SetSubtitleMode",
7570 &MHEG5prgSetSubtitleMode, NULL },
7571 {
"SetWidescreenAlignment",
7572 &MHEG5prgSetWidescreenAlignment, NULL },
7575 &MHEG5prgSI_GetBasicSI, NULL },
7576 {
"CheckContentRef",
7577 &MHEG5prgCheckContentRef, &clearOrmHandle },
7578 {
"CheckGroupIDRef",
7579 &MHEG5prgCheckGroupIDRef, &clearOrmHandle },
7581 &MHEG5prgCI_SendMessage, NULL },
7582 #ifndef CI_PLUS_ONLY 7584 &MHEG5prgGetBootInfo, NULL },
7587 &MHEG5prgWhoAmI, NULL },
7588 #ifdef INCLUDE_DEBUG_PACKAGE 7590 &MHEG5prgDebug, NULL },
7592 {
"GetDisplayAspectRatio",
7593 &MHEG5prgGetDisplayAspectRatio, NULL },
7594 #ifdef INCLUDE_NATIVE_APP 7595 {
"SetBroadcasterInterruptions",
7596 &MHEG5prgSetBroadcasterInterruptions, NULL },
7598 #ifdef INCLUDE_PVR_AU 7599 {
"PVR_MakeBooking2",
7600 &MHEG5prgPVR_MakeBooking2, NULL },
7601 {
"PVR_CancelBooking2",
7602 &MHEG5prgPVR_CancelBooking2, NULL },
7603 {
"PVR_ListBooking2",
7604 &MHEG5prgPVR_ListBookings2, NULL },
7605 {
"PVR_GetDetails2",
7606 &MHEG5prgPVR_GetDetails2, NULL },
7608 #ifdef INCLUDE_MHEG_PVR 7609 {
"PVR_MakeBooking",
7610 &MHEG5prgPVR_MakeBooking, NULL },
7611 {
"PVR_CancelBooking",
7612 &MHEG5prgPVR_CancelBooking, NULL },
7613 {
"PVR_ListBooking",
7614 &MHEG5prgPVR_ListBookings, NULL },
7616 #ifdef INCLUDE_SA_PROFILE 7617 {
"LNG_GetPreferredLangs",
7618 &MHEG5prgLNG_GetPreferredLangs, NULL },
7619 {
"LNG_GetAudioLangs",
7620 &MHEG5prgLNG_GetAudioLangs, NULL },
7621 {
"LNG_GetSubtitleLangs",
7622 &MHEG5prgLNG_GetSubtitleLangs, NULL },
7624 &MHEG5prgLNG_GetADLangs, NULL },
7625 {
"SEI_GetNumberOfServices",
7626 &MHEG5prgSEI_GetNumberOfServices, NULL },
7627 {
"SEI_NextServiceIndex",
7628 &MHEG5prgSEI_NextServiceIndex, NULL },
7629 {
"SEI_GetServiceRunningStatus",
7630 &MHEG5prgSEI_GetServiceRunningStatus, NULL },
7631 {
"SEI_GetChannelNumber",
7632 &MHEG5prgSEI_GetChannelNumber, NULL },
7633 {
"SEI_SetEventIterator",
7634 &MHEG5prgSEI_SetEventIterator, NULL },
7635 {
"SEI_IncrementEventIterator",
7636 &MHEG5prgSEI_IncrementEventIterator, NULL },
7637 {
"SEI_GetScheduledEventInfo",
7638 &MHEG5prgSEI_GetScheduledEventInfo, NULL },
7639 {
"SEI_GetComponentInfo",
7640 &MHEG5prgSEI_GetComponentInfo, NULL },
7641 {
"SEI_GetComponentData",
7642 &MHEG5prgSEI_GetComponentData, NULL },
7643 {
"PFEI_GetEventId",
7644 &MHEG5prgPFEI_GetEventId, NULL },
7645 {
"PFEI_GetComponentInfo",
7646 &MHEG5prgPFEI_GetComponentInfo, NULL },
7647 {
"PFEI_GetComponentData",
7648 &MHEG5prgPFEI_GetComponentData, NULL },
7649 {
"REM_SetNativeReminder",
7650 &MHEG5prgREM_SetNativeReminder, NULL },
7651 {
"REM_GetNativeReminder",
7652 &MHEG5prgREM_GetNativeReminder, NULL },
7653 {
"REM_CancelNativeReminder",
7654 &MHEG5prgREM_CancelNativeReminder, NULL },
7655 {
"SA_GetHostSetting",
7656 &MHEG5prgSA_GetHostSetting, NULL },
7658 #ifdef INCLUDE_CI_PLUS 7659 {
"RequestMPEGDecoder",
7660 &MHEG5prgRequestMPEGDecoder, NULL },
7661 {
"SuppressMHEGGraphics",
7662 &MHEG5prgSuppressMHEGGraphics, NULL },
7665 &MHEG5prgTestInputMask, NULL },
7667 {
"SetHybridFileSystem",
7668 &MHEG5prgSetHybridFileSystem, NULL },
7670 &MHEG5prgGetICStatus, NULL },
7672 &MHEG5prgReturnData, NULL },
7674 &MHEG5prgGetCookie, NULL },
7676 &MHEG5prgSetCookie, NULL },
7678 {
"PromptForGuidance",
7679 &MHEG5prgPromptForGuidance, &stopPrompt },
7680 {
"MeasureStreamPerformance",
7681 &MHEG5prgMeasureStreamPerformance, &stopMeasurement },
7682 #ifdef INCLUDE_IPLAYER 7684 &MHEG5prgGetPINSupport, NULL },
7686 #if defined(INCLUDE_IPLAYER) || defined(INCLUDE_FREESAT) 7687 {
"GetAudioDescPref",
7688 &MHEG5prgGetAudioDescPref, NULL },
7689 {
"GetSubtitlePref",
7690 &MHEG5prgGetSubtitlePref, NULL },
7692 #ifdef INCLUDE_FREESAT 7693 {
"GetPINRequirement",
7694 &MHEG5prgGetPINRequirement, NULL },
7696 &MHEG5prgValidatePIN, NULL },
7697 {
"ComputePrivateSignature",
7698 &MHEG5prgComputePrivateSignature, NULL },
7702 #ifdef INCLUDE_FREESAT 7703 {
"GetFSIServiceReference",
7704 &MHEG5prgGetFSIServiceReference, NULL },
7706 #ifdef INCLUDE_SI_EXTENSION 7707 {
"SI_GetServiceInfo",
7708 &MHEG5prgSI_GetServiceInfo, NULL },
7709 {
"SI_GetEventInfo",
7710 &MHEG5prgSI_GetEventInfo, NULL },
7713 {
"PersistentStorageInfo",
7714 &MHEG5prgPersistentStorageInfo, NULL },
7716 #ifdef INCLUDE_CONNECTED_TV 7717 {
"GetLaunchArguments",
7718 &MHEG5prgGetLaunchArguments, NULL },
7719 {
"ApplicationLaunch",
7720 &MHEG5prgApplicationLaunch, NULL },
7723 { NULL, NULL, NULL }
7727 assert(program->ingredient.root.clazz == MHEG5RESIDENTPROGRAM);
7728 assert(program->startFunc == NULL);
7730 if (program->name.len == 0)
7733 MHEG5LogPrintf(MHEG5ERROR,
"MHEG5Program - Empty program name\n");
7739 MHEG5LogPrintf(MHEG5MESSAGE,
"MHEG5Program - Executing program ");
7740 MHEG5LogPrintString(MHEG5MESSAGE, program->name);
7741 MHEG5LogPrintf(MHEG5MESSAGE,
"\n");
7744 program->startFunc = NULL;
7745 program->stopFunc = NULL;
7747 for (i = 0; ProgramTable[i].name != NULL; i++)
7749 if (strcmp((
char *)program->name.data,
7750 (
char *)ProgramTable[i].name) == 0)
7752 program->startFunc = ProgramTable[i].startFunction;
7753 program->stopFunc = ProgramTable[i].stopFunction;
U8BIT DVB_MhegPrefSubtitleLangs(U32BIT *langs, U8BIT max)
Get list of preferred subtitle languages. If there is no preference then zero is returned. This only writes into array up to 'max' items This MUST be a non-blocking function, returning results immediately.
Implement MHEG5 engine control functions (i.e. start/stop etc)
unsigned long MHEG5random(void)
Calculate and return a psuedo random number.
void MG_DisplayVideoToGraphics(MHEG5Int videoXval, MHEG5Int videoYval, MHEG5Int *graphicsXVal, MHEG5Int *graphicsYVal)
Calculate the graphical co-ordinate from a given video coordinate (should take into account the curre...
E_MhegErr DVB_MhegGetBannerTimeout(S32BIT *timeout)
Return the banner timeout period in seconds. This setting is related to the information banner on the...
Distributor for Prepare, Destruct, Activate, Deactivate and Clone calls. Distribute the +Prepare +Des...
void MG_SetSubtitleMode(MHEG5Bool subtitleOn)
Set the current subtitle display mode to be either On or Off, Should only have an impact if subtitles...
True Persistent Storage functions.
MHEG5Int MHEG5GetServiceIndex(MHEG5String *serviceReference)
Ref:[1] - 3.10.6.1 and [1] - 3.10.6.3 Get the serviceIndex, a positive integer which is used to refer...
void MHEG5SuppressMHEGGraphics(MHEG5Bool request)
Request that the external application toggles between showing MHEG graphics or subtitles This functio...
S32BIT MHEG5getDayOfWeek(S32BIT day)
Get Day of Week for Davic-Day 0 is Sunday....
E_MhegErr DVB_MhegGetAudioLangs(S32BIT serviceIndex, S32BIT eventIndex, U8BIT *audioLangs)
Return a list of available audio languages for the specified event. The language list is extracted fr...
void MHEG5StreamerAbortMeasurement(MHEG5Program *program)
Abort streaming performance measurement.
void MHEG5getDate(S32BIT *day, S32BIT *sec)
Modified Julian Date - see Davic 9.2.12.1.
S_CRID_DETAILS * DVB_MhegPvrGetDetails(S_STRING crid)
Required by Australia profile only. Returns the type, name, description and a single booking section ...
void * MHEG5FileOrmGet(MHEG5String name, U16BIT priority, void *userData, F_CB_Good cbGood, F_CB_Fail cbFail)
Get a file. The file will be loaded and one of the callback functions called when request is resolved...
Implementation of the Group class Description Defines the structure and behaviour of objects used as ...
void MHEG5SetHybridFileSystem(MHEG5String *pathName, MHEG5String *mappingList)
Set mapping list in the hybrid file system. This function sets, clears or modifies the list of mappin...
MHEG5Bool MHEG5RequestMPEGDecoder(MHEG5Bool request)
Requests exclusive access to a MPEG decoder and video plane to display I-frames. The MPEG decoder sha...
E_MhegErr DVB_MhegGetBannerTransparency(S32BIT *transparency)
Return the banner transparency as a percentage 0-100, where 100 is fully transparent. This setting is related to the information banner on the native UI of the receiver.
MHEG5String MHEG5stringCopy(MHEG5String source)
<Function description>="">
MHEG5Bool MHEG5CookieRetrieve(MHEG5cookie_t *cookie)
Retrieve a specific cookie from the store, referenced by the identity string.
Implement the MHEG5 Variable Class 21 Variable Class Defines a variable within the context of a Group...
void MHEG5ProgramSetStartFunc(MHEG5Program *program)
Test if the program NAME is included in this profile and get the start function to execute...
MHEG5Bool MHEG5parseEncodeQPrintable(MHEG5Byte **buffer, MHEG5Int *used, MHEG5Int *allocated, MHEG5Generic *value)
Add a value to the buffer. The value is QPrintable-encoded, which means that printable characters are...
void MHEG5stringDestruct(MHEG5String *item)
Destruct a MHEG5String.
MHEG5String MHEG5GetBootInfo(MHEG5Bool *InfoResultVal)
Tell whether a network_boot_info sub-descriptor has been found and received. If so, returns the value of the NB_info field of the network_boot_info sub-descriptor. This function is used by the GetBootInfo resident program. See UK1.06 profile section 3.10.7.3.
E_MhegErr DVB_MhegGetSubtitleLangs(S32BIT serviceIndex, S32BIT eventIndex, U8BIT *subsLangs)
Return a list of available subtitles languages for the specified event. The language list is extracte...
void MHEG5StreamerMeasurePerformance(MHEG5String *url, MHEG5Int maxBytes, MHEG5Program *program)
Measure streaming performance (bytes per second). The result is returned to the resident program...
DVB Video functions are required by MHEG5 engine. All required functions should be non-blocking...
string parsing utility functions for MHEG5
void DVB_MhegPvrReleaseList(S_CRID_REC *crid_array)
MHEG indicates that it is finished using the array returned by DVB_MhegPvrListBookings(). For example, platforms that malloc memory for this, may wish to free the memory here.
BOOLEAN DVB_MhegGetSubtitlePref(void)
This function is used by the MHEG-5 engine to determine whether subtitles are currently enabled...
void MHEG5FileOrmClear(void *orm_ref)
Aborts a request for file.
DVB Service information functions are required by MHEG5 engine. All required functions should be non-...
E_MhegErr DVB_MhegGetNativeReminder(S32BIT serviceIndex, S32BIT eventId, BOOLEAN *set)
Return whether a native reminder has been set for the given event on the given service. This MUST be a non-blocking function, returning results immediately.
This file defines the profile for the MHEG engine.
MHEG5GList * MHEG5resolveGenericOctetString(MHEG5GList *params, MHEG5String *value, MHEG5Bool *invalidString)
Resolve a parameter reference to a generic octet string. The reference can be either direct or indire...
void MHEG5TuneIndexInfo(MHEG5Int tuneInfo)
Sets the way the application expects the receiver is to perform all subsequence application initiated...
E_MhegErr DVB_MhegGetADLangs(S32BIT serviceIndex, S32BIT eventIndex, U8BIT *adLangs)
Return a list of available audio description languages for the specified event. The language list is ...
MHEG5String MH5_WhoAmI(void)
Used by the WhoAmI resident program to obtain WhoAmI string. See UK1.06 profile section 3...
Implementation of the resident programs which are defined by the current profile. ...
MHEG5 PVR functions for New Zealand or Australia profile References: [1] UK1 Profile - Digital Terres...
BOOLEAN DVB_MhegAudioDescriptionPref(void)
This function is used by the MHEG-5 engine to determine whether audio description is currently enable...
void DVB_MhegPvrReleaseDetails(S_CRID_DETAILS *details)
Required by Australia profile only. MHEG indicates that it is finished using the CRID details returne...
MHEG5Bool MHEG5CookieAdd(MHEG5cookie_t *cookie)
Directly add a cookie to the store.
E_MhegErr DVB_MhegCancelNativeReminder(S32BIT serviceIndex, S32BIT eventId)
Cancel any native reminder set for the given event on the given service. This MUST be a non-blocking ...
Native language, reminder and banner functions for South Africa profile.
E_MhegErr DVB_MhegSetNativeReminder(S32BIT serviceIndex, S32BIT eventId, BOOLEAN *result)
Set a native reminder for the given event on the given service. This MUST be a non-blocking function...
Event handling. Implementation of a combined queue for events and actions. This is the eventsystem wh...
MHEG5Bool MHEG5GetBasicSI(MHEG5Int serviceIndex, MHEG5Int *networkID, MHEG5Int *origNetworkID, MHEG5Int *transportStreamID, MHEG5Int *serviceID)
Returns a series of integers representing basic Service Information (SI) about a service. The service is identified by means of a receiver specific "ServiceIndex". This integer can be determined by means of the SI_GetServiceIndex resident program (see 3.10.6.1, "SI_GetServiceIndex", on page 3-20). This function is used by the SI_TuneIndexInfo resident program. See UK1.06 profile section 3.10.6.3.
void MHEG5ingredientDeactivate(MHEG5Ingredient *ingredient)
Implementation of Deactivate behaviour Inherrited from Root class.
Implement functions to retrieve MHEG5objects by GroupID and ID.
Mheg5 logging and debug printing.
File interface functions to DSMCC component.
U8BIT DVB_MhegPrefAudioLangs(U32BIT *langs, U8BIT max)
Get list of preferred audio languages. If there is no preference then zero is returned. This only writes into array up to 'max' items This MUST be a non-blocking function, returning results immediately.
DVB Audio functions are required by MHEG5 engine. All required functions should be non-blocking...
E_MhegErr DVB_MhegPvrCancelBooking(S_STRING crid, U16BIT crid_type)
Removes an event from the PVR schedule.
Functions relating to HTTP Cookie Store.
void MHEG5sendEvent(MHEG5Root *source, MHEG5EventType event, MHEG5Int data)
Store an event in the asynchronous event queue.
MHEG5Bool MHEG5TuneIndex(MHEG5Int serviceIndex)
Ref: [1] - 3.10.6.2 Tune to the specified service. If the tuner fails to tune to the service it shoul...
MHEG5String MHEG5formatDate(MHEG5String format, S32BIT day, S32BIT sec)
Format date - See Davic part 9.0 - 9.2.12.1.
void MHEG5NotifyBookingResult(E_MhegErr result)
This should be called, and only called, when DVB_MhegPvrMakeBooking() has previously returned with MH...
MHEG5Bool MHEG5IsInputMaskSupported(MHEG5String query_mask)
Tell whether the set of keys indicated by the input mask is supported by the receiver (this means tha...
MHEG5Int MHEG5GetDisplayAspectRatio(void)
Reads the format of the connected display (4:3 or 16:9) This function is used by the GetDisplayAspect...
References: [1] UK1 Profile - Digital Terrestrial Television - Requirements for interoperability (The...
Implement generic MHEG5-display functions - independent from the OSD These are generic functions used...
MHEG5Bool MHEG5GetTpsStatus()
Get the status of the TPS store for the PST resident program. none.
Video Scaling / Positioning functionality.
void MHEG5enableEventProcessing(MHEG5Bool enable)
Enable or disable engine event processing. This function is used to implement the Call action for res...
E_MhegErr DVB_MhegPvrMakeBooking(S_STRING crid, S_CRID_DETAILS *details)
The function adds an event to the PVR’s list of scheduled events to record. The type of CRID can be a...
E_MhegErr DVB_MhegGetOSDLanguage(U8BIT *language)
Return the language of the native UI (menu etc.) as a three character code as defined by ISO 639-2...
Functions relating to Hybrid file system.
Key Press related functionality.
S_CRID_REC * DVB_MhegPvrListBookings(U16BIT *number)
Returns an array of CRIDs (and CRID types for NZ profile) that are being monitored by the PVR...
MHEG5GList * MHEG5resolveGenericORefProper(MHEG5GList *params, MH5GroupRef *pgroupRef, MHEG5Int *id)
Resolve a generic object reference, returning the object reference. The reference can be direct or in...
Engine support utility functions for MHEG5.