Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /********************************************************
- /********************************************************
- * Copyright 2012 IWEDIA TECHNOLOGIES *
- *********************************************************
- *
- * MODULE NAME: JNI 4.1
- *
- * FILE NAME: $URL$
- * $Date$
- * $Rev$
- *
- * DESCRIPTION
- *
- * - brief description of the file -
- *
- *********************************************************/
- /********************************************************/
- /* Includes */
- /********************************************************/
- #include "com_comedia_javanative_JavaNative.h"
- #include "mal_service_zapper.h"
- #include "mal_audio_video.h"
- #include "mal_stream_component.h"
- #include "mal_route.h"
- #include "mal_epg.h"
- #include "mal_tuner.h"
- #include "mal_init.h"
- #include "callbacks.h"
- #include "jni_common.h"
- /********************************************************/
- /* Defines */
- /********************************************************/
- #define VIDEO_TRACK_CLASS "android/dtv/video/VideoTrack"
- #define VIDEO_POSITION_CLASS "android/dtv/route/VideoPosition"
- #define MAIN_SERVICE_LIST_INDEX 0
- #define SERVICE_CLASS "android/dtv/service/Service"
- #define EPG_CLASS "android/dtv/epg/EpgEvent"
- #define SERVICE_INFO_CLASS "android/dtv/service/ServiceInfo"
- #define STRING_LENGTH 1024
- #define EXTENDED_SERVICE_INFO_CLASS "android/dtv/service/ExtendedServiceInfo"
- /********************************************************/
- /* Macros */
- /********************************************************/
- /********************************************************/
- /* Typedefs */
- /********************************************************/
- /********************************************************/
- /* Global Variables (GLOBAL/IMPORT) */
- /********************************************************/
- /********************************************************/
- /* Local Module Variables (MODULE) */
- /********************************************************/
- /********************************************************/
- /* Local File Variables (LOCAL) */
- /********************************************************/
- /********************************************************/
- /* Local Functions Declarations (LOCAL) */
- /********************************************************/
- void selectComponentCallback(void *user, MAL_SC_CompChangedEvent event);
- void zappCallback(void* userData, MAL_SZ_EventType event);
- void scanStatusCallback(MAL_TUNER_CallbackMessage* user_data, MAL_TUNER_Events event);
- /********************************************************/
- /* Functions Definitions (LOCAL/GLOBAL) */
- /********************************************************/
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: initPlayer
- * Signature: (JI)Z
- */
- JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_initPlayer
- (JNIEnv * env, jobject jThis, jlong routeId, jint service)
- {
- bool ret = false;
- MAL_SZ_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line:%d routeId:%ld service:%ld",__LINE__, (mal_uint32)routeId, (mal_uint32)service);
- errorCode = MAL_SZ_StartService((mal_uint32)routeId,(mal_uint32) service);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line: %d: MAL_SZ_StartService - OK",__LINE__);
- ret = true;
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_VIDEO_CONTROL - line: %d: Error in MAL_SZ_StartService:%d", __LINE__, errorCode);
- ret = false;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN ret;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: deinitPlayer
- * Signature: ()Z
- */
- JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_deinitPlayer
- (JNIEnv * env, jobject jThis, jlong routeId)
- {
- bool ret = false;
- MAL_SZ_ErrorCode errorCode;
- MAL_AVS_ErrorCode errorCodeAVS;
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line:%d routeId:%ld",__LINE__, (mal_uint32)routeId);
- errorCode = MAL_SZ_StopService((mal_uint32)routeId);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line: %d: MAL_SZ_StopService - OK",__LINE__);
- ret = true;
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_VIDEO_CONTROL - line: %d: Error in MAL_SZ_StopService:%d", __LINE__, errorCode);
- ret = false;
- }
- errorCodeAVS = MAL_AVS_VideoBlank((mal_uint32)routeId, 1);
- if(MAL_AVS_NO_ERROR == errorCodeAVS)
- {
- mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line: %d: MAL_AVS_VideoBlank - OK",__LINE__);
- ret = true;
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_VIDEO_CONTROL - line: %d: Error in MAL_AVS_VideoBlank:%d", __LINE__, errorCodeAVS);
- ret = false;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN ret;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetFrontendNumber
- * Signature: (Landroid/dtv/basic_types/LongHolder;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetFrontendNumber
- (JNIEnv *env, jobject thiz, jobject frontentNumberObject)
- {
- MAL_ROUTE_ErrorCode errorCode;
- mal_uint32 frontendNumber;
- mJNI_FCT_ENTER(__FUNCTION__);
- if(frontentNumberObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- errorCode=MAL_ROUTE_GetFrontendNumber(&frontendNumber);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendNumber=%ld",__LINE__,frontendNumber);
- jclass longHolderClass=env->GetObjectClass(frontentNumberObject);
- jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
- if(longValueId==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- env->SetLongField(frontentNumberObject, longValueId, frontendNumber);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetFrontendNumber", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetDemuxNumber
- * Signature: (Landroid/dtv/basic_types/LongHolder;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDemuxNumber
- (JNIEnv * env, jobject thiz, jobject demuxNumberObject)
- {
- MAL_ROUTE_ErrorCode errorCode;
- mal_uint32 demuxNumber;
- mJNI_FCT_ENTER(__FUNCTION__);
- if(demuxNumberObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- errorCode = MAL_ROUTE_GetDemuxNumber(&demuxNumber);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: demuxNumber=%ld",__LINE__,demuxNumber);
- jclass longHolderClass=env->GetObjectClass(demuxNumberObject);
- jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
- if(longValueId==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- env->SetLongField(demuxNumberObject, longValueId, demuxNumber);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDemuxNumber", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetDecoderNumber
- * Signature: (Landroid/dtv/basic_types/LongHolder;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDecoderNumber
- (JNIEnv * env, jobject thiz, jobject decoderNumberObject)
- {
- MAL_ROUTE_ErrorCode errorCode;
- mal_uint32 decoderNumber;
- mJNI_FCT_ENTER(__FUNCTION__);
- /* TO_DO */
- /* Get decoder number (similar to getting frontend number) */
- if(decoderNumberObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- errorCode=MAL_ROUTE_GetDecoderNumber(&decoderNumber);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: decoderNumber=%ld",__LINE__,decoderNumber);
- jclass longHolderClass=env->GetObjectClass(decoderNumberObject);
- jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
- if(longValueId==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- env->SetLongField(decoderNumberObject, longValueId, decoderNumber);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDecoderNumber", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetoutputNumber
- * Signature: (Landroid/dtv/basic_types/LongHolder;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetoutputNumber
- (JNIEnv * env, jobject thiz, jobject outputNumberObject)
- {
- MAL_ROUTE_ErrorCode errorCode;
- mal_uint32 outputNumber;
- mJNI_FCT_ENTER(__FUNCTION__);
- /* TO_DO */
- /* Get output number (similar to getting frontend number) */
- if(outputNumberObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- errorCode=MAL_ROUTE_GetOutputNumber(&outputNumber);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: outputNumber=%ld",__LINE__,outputNumber);
- jclass longHolderClass=env->GetObjectClass(outputNumberObject);
- jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
- if(longValueId==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- env->SetLongField(outputNumberObject, longValueId, outputNumber);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetOutputNumber", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetFrontendDescriptor
- * Signature: (JLandroid/dtv/route/FrontentDescriptor;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetFrontendDescriptor
- (JNIEnv *env, jobject thiz, jlong frontendIndex, jobject descriptorObject)
- {
- MAL_ROUTE_FrontendDescriptor descriptor;
- MAL_ROUTE_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- if(descriptorObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendIndex=%ld",__LINE__,(mal_uint32)frontendIndex);
- memset(&descriptor,0,sizeof(MAL_ROUTE_FrontendDescriptor));
- errorCode=MAL_ROUTE_GetFrontendDescriptor(frontendIndex,&descriptor);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld - descriptor.type=%d ",__LINE__,descriptor.ID,descriptor.type);
- jclass descriptorClass=env->GetObjectClass(descriptorObject);
- jfieldID frontentIdId=env->GetFieldID(descriptorClass,"frontentId", "J");
- env->SetLongField(descriptorObject, frontentIdId, descriptor.ID);
- jmethodID setFrontentTypeId=env->GetMethodID(descriptorClass,"setFrontentType", "(I)V");
- env->CallVoidMethod(descriptorObject,setFrontentTypeId,(int)descriptor.type);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetFrontendDescriptor", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)errorCode;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetDemuxDescriptor
- * Signature: (JLandroid/dtv/route/DemuxDescriptor;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDemuxDescriptor
- (JNIEnv *env , jobject thiz, jlong demuxIndex, jobject descriptorObject)
- {
- MAL_ROUTE_DemuxDescriptor descriptor;
- MAL_ROUTE_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- if(descriptorObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: demuxIndex=%ld",__LINE__,(mal_uint32)demuxIndex);
- memset(&descriptor,0,sizeof(MAL_ROUTE_DemuxDescriptor));
- errorCode= MAL_ROUTE_GetDemuxDescriptor(demuxIndex,&descriptor);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld",__LINE__,descriptor.ID);
- jclass descriptorClass=env->GetObjectClass(descriptorObject);
- jfieldID demuxIdId=env->GetFieldID(descriptorClass,"demuxId", "J");
- env->SetLongField(descriptorObject, demuxIdId, descriptor.ID);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDemuxDescriptor", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)errorCode;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetDecoderDescriptor
- * Signature: (JLandroid/dtv/route/DecoderDescriptor;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDecoderDescriptor
- (JNIEnv *env, jobject thiz, jlong decoderIndex, jobject descriptorObject)
- {
- MAL_ROUTE_DecoderDescriptor descriptor;
- MAL_ROUTE_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- /* TO_DO */
- /* Get decoder descriptor (similar to getting frontend descriptor) */
- if(descriptorObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: decoderIndex=%ld",__LINE__,(mal_uint32)decoderIndex);
- memset(&descriptor,0,sizeof(MAL_ROUTE_DecoderDescriptor));
- errorCode=MAL_ROUTE_GetDecoderDescriptor(decoderIndex,&descriptor);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld - descriptor.type=%d ",__LINE__,descriptor.ID,descriptor.type);
- jclass descriptorClass=env->GetObjectClass(descriptorObject);
- jfieldID decoderId=env->GetFieldID(descriptorClass,"decoderId", "J");
- env->SetLongField(descriptorObject, decoderId, descriptor.ID);
- jmethodID setDecoderTypeId=env->GetMethodID(descriptorClass,"setDecoderType", "(I)V");
- env->CallVoidMethod(descriptorObject,setDecoderTypeId,(int)descriptor.type);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDecoderDescriptor", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)errorCode;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetoutputDescriptor
- * Signature: (JLandroid/dtv/route/OutputDescriptor;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetoutputDescriptor
- (JNIEnv * env, jobject thiz, jlong outputIndex, jobject descriptorObject)
- {
- MAL_ROUTE_OutputDescriptor descriptor;
- MAL_ROUTE_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- /* TO_DO */
- /* Get output descriptor (similar to getting frontend descriptor) */
- if(descriptorObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: outputIndex=%ld",__LINE__,(mal_uint32)outputIndex);
- memset(&descriptor,0,sizeof(MAL_ROUTE_OutputDescriptor));
- errorCode=MAL_ROUTE_GetOutputDescriptor(outputIndex,&descriptor);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld - descriptor.type=%d ",__LINE__,descriptor.ID,descriptor.type);
- jclass descriptorClass=env->GetObjectClass(descriptorObject);
- jfieldID outputId=env->GetFieldID(descriptorClass,"outputId", "J");
- env->SetLongField(descriptorObject, outputId, descriptor.ID);
- jmethodID setOutputTypeId=env->GetMethodID(descriptorClass,"setOutputType", "(I)V");
- env->CallVoidMethod(descriptorObject,setOutputTypeId,(int)descriptor.type);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetOutputDescriptor", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)errorCode;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetInstallRoute
- * Signature: (JJLandroid/dtv/basic_types/LongHolder;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetInstallRoute
- (JNIEnv * env, jobject thiz, jlong frontendID, jlong demuxID, jobject routeIDObject)
- {
- MAL_RouteID routeID;
- MAL_ROUTE_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- if(routeIDObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendID=%ld demuxID=%ld",__LINE__,(mal_uint32)frontendID,(mal_uint32)demuxID);
- errorCode = MAL_ROUTE_GetInstallRoute(frontendID, demuxID,&routeID);
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: routeID=%ld ",__LINE__,routeID);
- jclass longHolderClass=env->GetObjectClass(routeIDObject);
- jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
- if(longValueId==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- env->SetLongField(routeIDObject, longValueId, routeID);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetInstallRoute", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)errorCode;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: GetLiveRoute
- * Signature: (JJJJLandroid/dtv/basic_types/LongHolder;)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetLiveRoute
- (JNIEnv * env, jobject thiz, jlong frontendID, jlong demuxID, jlong decoderID, jlong outputID, jobject routeIDObject)
- {
- MAL_RouteID routeID;
- MAL_ROUTE_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- /* TO_DO */
- /* Get live route (similar to getting install route) */
- if(routeIDObject==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendID=%ld demuxID=%ld",__LINE__,(mal_uint32)frontendID,(mal_uint32)demuxID);
- errorCode = MAL_ROUTE_GetLiveRoute(frontendID, demuxID, decoderID, outputID, &routeID);
- /*MAL_ROUTE_ErrorCode MAL_ROUTE_GetLiveRoute(const MAL_FrontendID frontendID,
- const MAL_DemuxID demuxID,
- const MAL_DecoderID decoderID,
- const MAL_OutputID outputID,
- MAL_RouteID *routeID);*/
- if(errorCode==MAL_ROUTE_NO_ERROR)
- {
- mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: routeID=%ld ",__LINE__,routeID);
- jclass longHolderClass=env->GetObjectClass(routeIDObject);
- jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
- if(longValueId==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- env->SetLongField(routeIDObject, longValueId, routeID);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetLiveRoute", __LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN (int)errorCode;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: getServiceListCount
- * Signature: (I)I
- */
- JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_getServiceListCount
- (JNIEnv *env, jobject thiz, jint listIndex)
- {
- mal_uint32 serviceCount = 0;
- MAL_SZ_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: listIndex=%ld",__LINE__,(mal_uint32) listIndex);
- errorCode = MAL_SZ_GetServiceListCount((mal_uint32)listIndex, &serviceCount);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SZ_GetServiceListCount - OK, serviceCount:%ld",__LINE__, serviceCount);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_GetServiceListCount:%d", __LINE__, errorCode);
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN serviceCount;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: getService
- * Signature: (JII)Landroid/dtv/service/Service;
- */
- JNIEXPORT jobject JNICALL Java_com_comedia_javanative_JavaNative_getService
- (JNIEnv *env, jobject thiz, jlong routeID, jint listIndex, jint serviceIndex)
- {
- jclass clsService;
- jmethodID midService;
- jobject objService;
- jbyteArray utfArray;
- MAL_SZ_ErrorCode errorCode;
- MAL_SC_ErrorCode errorCodeSC;
- MAL_SZ_ServiceDesc serviceDesc;
- mal_uint16 audioCount = 0;
- mal_uint16 videoCount = 0;
- mal_uint16 subCount = 0;
- mal_uint16 txtCount = 0;
- mal_uint32 masterServiceIndex = 0;
- int type = 0;
- mJNI_FCT_ENTER(__FUNCTION__);
- clsService = env->FindClass(SERVICE_CLASS);
- midService = env->GetMethodID(clsService, "<init>", "(I[BZIIIII)V");
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: routeID:%ld listIndex=%ld serviceIndex:%ld",__LINE__, (mal_uint32)routeID,(mal_uint32) listIndex, (mal_uint32)serviceIndex);
- memset(&serviceDesc,0,sizeof(MAL_SZ_ServiceDesc));
- errorCode=MAL_SZ_GetServiceDesc((mal_uint32)listIndex, (mal_uint32)serviceIndex,&serviceDesc);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SZ_GetServiceDesc - OK serviceDesc.sourceType:%d serviceDesc.ONID:%ld serviceDesc.TSID:%ld serviceDesc.serviceIdentifier:%ld serviceDesc.serviceType:%d serviceDesc.serviceName:%s serviceDesc.LCN:%ld serviceDesc.scrambled:%d serviceDesc.hidden:%d serviceDesc.selectable:%d serviceDesc.frequency:%ld serviceDesc.serviceIndexInMList:%ld",__LINE__, serviceDesc.sourceType, serviceDesc.ONID, serviceDesc.TSID, serviceDesc.serviceIdentifier, serviceDesc.serviceType, serviceDesc.serviceName, serviceDesc.LCN, serviceDesc.scrambled, serviceDesc.hidden, serviceDesc.selectable, serviceDesc.frequency, serviceDesc.serviceIndexInMList);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_GetServiceDesc:%d", __LINE__, errorCode);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN NULL;
- }
- if(serviceDesc.serviceName)
- {
- utfArray = env->NewByteArray(strlen(serviceDesc.serviceName)+1);
- env->SetByteArrayRegion(utfArray,0,strlen(serviceDesc.serviceName)+1,(jbyte*)serviceDesc.serviceName);
- }else
- {
- utfArray = env->NewByteArray(2);
- env->SetByteArrayRegion(utfArray,0,2,(jbyte*)(" "));
- }
- switch(serviceDesc.serviceType){
- case MAL_SZ_SERVICE_TYPE_DIG_TV://DIG_SD_TV
- case MAL_SZ_SERVICE_TYPE_ADV_CODEC_DIG_TV:
- switch(serviceDesc.sourceType)
- {
- case MAL_SZ_SOURCE_TYPE_CAB:
- type = 0;
- break;
- case MAL_SZ_SOURCE_TYPE_TER:
- type = 1;
- break;
- case MAL_SZ_SOURCE_TYPE_SAT:
- type = 2;
- break;
- default:
- type = 4;
- }
- break;
- case MAL_SZ_SERVICE_TYPE_MPEG2_HD_DIG_TV ://DIG_HD_TV:
- case MAL_SZ_SERVICE_TYPE_ADV_CODEC_HD_DIG_TV :
- switch(serviceDesc.sourceType)
- {
- case MAL_SZ_SOURCE_TYPE_CAB:
- type = 3;
- break;
- case MAL_SZ_SOURCE_TYPE_TER:
- type = 4;
- break;
- case MAL_SZ_SOURCE_TYPE_SAT:
- type = 5;
- break;
- default:
- type = 4;
- }
- break;
- case MAL_SZ_SERVICE_TYPE_DIG_RAD://DIG_RADIO
- case MAL_SZ_SERVICE_TYPE_ADV_CODEC_DIG_RAD:
- switch(serviceDesc.sourceType)
- {
- case MAL_SZ_SOURCE_TYPE_CAB:
- type = 6;
- break;
- case MAL_SZ_SOURCE_TYPE_TER:
- type = 7;
- break;
- case MAL_SZ_SOURCE_TYPE_SAT:
- type = 8;
- break;
- default:
- type = 4;
- }
- type = 6;
- break;
- case MAL_SZ_SERVICE_TYPE_DATA_BROADCAST://DATA
- type = 9;
- break;
- case MAL_SZ_SERVICE_TYPE_ANALOG://ANALOG
- type = 10;
- break;
- default:
- type = 4;
- }
- errorCode=MAL_SZ_GetActiveService((mal_uint32)routeID, &masterServiceIndex);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SZ_GetActiveService - OK masterServiceIndex:%ld",__LINE__, masterServiceIndex);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_GetActiveService:%d", __LINE__, errorCode);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN NULL;
- }
- if(serviceDesc.serviceIndexInMList == masterServiceIndex)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: serviceDesc.serviceIndexInMList = masterServiceIndex, before getCompCount function.",__LINE__);
- errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_AUDIO, &audioCount);
- if(MAL_SC_NO_ERROR == errorCodeSC)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK audioCount:%d",__LINE__, audioCount);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
- }
- errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_VIDEO,&videoCount);
- if(MAL_SC_NO_ERROR == errorCodeSC)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK videoCount:%d",__LINE__, videoCount);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
- }
- errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_SUB, &subCount);
- if(MAL_SC_NO_ERROR == errorCodeSC)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK subCount:%d",__LINE__, subCount);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
- }
- errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_TTX, &txtCount);
- if(MAL_SC_NO_ERROR == errorCodeSC)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK txtCount:%d",__LINE__, txtCount);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
- }
- }
- objService = env->NewObject(clsService,midService,serviceDesc.serviceIndexInMList, utfArray, serviceDesc.scrambled, type, audioCount, videoCount, subCount, txtCount);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN objService;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: setCurrentServiceByIndex
- * Signature: (JII)Z
- */
- JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_setCurrentServiceByIndex
- (JNIEnv *env, jobject thiz, jlong routeID,jint listIndex, jint serviceIndex)
- {
- MAL_SZ_ServiceDesc serviceDesc;
- MAL_SZ_ErrorCode errorCode;
- MAL_SZ_ServiceDesc descriptor;
- mal_uint32 MLserviceIndex;
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: routeID:%ld",__LINE__, (mal_uint32)routeID);
- /* TO_DO */
- /* Implement this function */
- if(routeID==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- if(listIndex==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- if(serviceIndex==NULL)
- {
- mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
- mJNI_RETURN (int)MAL_ROUTE_ERROR;
- }
- errorCode = MAL_SZ_GetServiceDesc((mal_uint32)listIndex, (mal_uint32)serviceIndex, &descriptor);
- if(MAL_SC_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetServiceDesc - OK serviceIndex:%d",__LINE__, serviceIndex);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetServiceDesc:%d", __LINE__, errorCode);
- }
- errorCode = MAL_SZ_StartService((MAL_RouteID)routeID, (mal_uint32)descriptor.serviceIndexInMList);
- if(MAL_SC_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_StartService - OK serviceIndex:%d",__LINE__, serviceIndex);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_StartService:%d", __LINE__, errorCode);
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN true;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: getCurrentServiceIndex
- * Signature: (J)J
- */
- JNIEXPORT jlong JNICALL Java_com_comedia_javanative_JavaNative_getCurrentServiceIndex
- (JNIEnv *env, jobject thiz, jlong routeID)
- {
- mal_uint32 masterServiceIndex = 0;
- MAL_SZ_ErrorCode errorCode;
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: routeID:%ld",__LINE__, (mal_uint32)routeID);
- errorCode =MAL_SZ_GetActiveService((mal_uint32)routeID, &masterServiceIndex);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SZ_GetActiveService - OK masterServiceIndex:%ld",__LINE__, masterServiceIndex);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_StopService:%d", __LINE__, errorCode);
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN masterServiceIndex;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: getServiceInfo
- * Signature: (II)Landroid/dtv/service/ServiceInfo;
- */
- JNIEXPORT jobject JNICALL Java_com_comedia_javanative_JavaNative_getServiceInfo
- (JNIEnv *env, jobject thiz, jint listIndex, jint serviceIndex)
- {
- MAL_EPG_ErrorCode errorCode;
- jclass clsEpgEvent;
- jmethodID midEpgEvent;
- jobject objEpgEvent;
- jobject objEpgEventNext;
- clsEpgEvent = env->FindClass(EPG_CLASS);
- midEpgEvent = env->GetMethodID(clsEpgEvent, "<init>", "([B[B[B[B[B[B[BII[B)V");
- jbyteArray temp = env->NewByteArray(2);
- env->SetByteArrayRegion(temp,0,2,(jbyte*)(" "));
- MAL_EPG_Event event;
- jbyteArray name;
- jbyteArray description;
- jbyteArray extendedDescription;
- jbyteArray startTimeString;
- jbyteArray endTimeString;
- jbyteArray durationString;
- jbyteArray genre;
- jbyteArray language;
- MAL_EPG_Event eventNext;
- jbyteArray nameNext;
- jbyteArray descriptionNext;
- jbyteArray extendedDescriptionNext;
- jbyteArray startTimeStringNext;
- jbyteArray endTimeStringNext;
- jbyteArray durationStringNext;
- jbyteArray genreNext;
- jbyteArray languageNext;
- jclass clsServiceInfo;
- jmethodID midServiceInfo;
- jobject objServiceInfo;
- clsServiceInfo = env->FindClass(SERVICE_INFO_CLASS);
- midServiceInfo = env->GetMethodID(clsServiceInfo, "<init>", "(IIIILjava/lang/String;Landroid/dtv/epg/EpgEvent;Landroid/dtv/epg/EpgEvent;)V");
- mJNI_FCT_ENTER(__FUNCTION__);
- memset(&event,0,sizeof(MAL_EPG_Event));
- memset(&eventNext,0,sizeof(MAL_EPG_Event));
- //errorCode = MAL_EPG_GetPresentFollowing(clientHandleGlobal, MAL_EPG_PRESENT_EVENT, &event);
- //if(MAL_EPG_NO_ERROR == errorCode)
- if(0)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_EPG_GetPresentFollowing OK - event.name:%s event.description:%s event.extendedDescription:%s event.startTimeString:%s event.endTimeString:%s event.durationString:%s event.genre:%s event.language:%s event.parentalRate:%d event.eventId:%d event.serviceIndex:%ld",__LINE__, event.name, event.description, event.extendedDescription, event.startTimeString, event.endTimeString, event.durationString, event.genre, event.language, event.parentalRate, event.eventId, event.serviceIndex);
- if(event.name)
- {
- name = env->NewByteArray( strlen(event.name)+1);
- env->SetByteArrayRegion(name,0,strlen(event.name)+1,(jbyte*)event.name);
- }else
- {
- name = env->NewByteArray(2);
- env->SetByteArrayRegion(name,0,2,(jbyte*)(" "));
- }
- if(event.description)
- {
- description = env->NewByteArray( strlen(event.description)+1);
- env->SetByteArrayRegion(description,0,strlen(event.description)+1,(jbyte*)event.description);
- }else
- {
- description = env->NewByteArray(2);
- env->SetByteArrayRegion(description,0,2,(jbyte*)(" "));
- }
- if(event.extendedDescription)
- {
- extendedDescription = env->NewByteArray( strlen(event.extendedDescription)+1);
- env->SetByteArrayRegion(extendedDescription,0,strlen(event.extendedDescription)+1,(jbyte*)event.extendedDescription);
- }else
- {
- extendedDescription = env->NewByteArray(2);
- env->SetByteArrayRegion(extendedDescription,0,2,(jbyte*)(" "));
- }
- if(event.startTimeString)
- {
- startTimeString = env->NewByteArray( strlen(event.startTimeString)+1);
- env->SetByteArrayRegion(startTimeString,0,strlen(event.startTimeString)+1,(jbyte*)event.startTimeString);
- }else
- {
- startTimeString = env->NewByteArray(2);
- env->SetByteArrayRegion(startTimeString,0,2,(jbyte*)(" "));
- }
- if(event.endTimeString)
- {
- endTimeString = env->NewByteArray( strlen(event.endTimeString)+1);
- env->SetByteArrayRegion(endTimeString,0,strlen(event.endTimeString)+1,(jbyte*)event.endTimeString);
- }else
- {
- endTimeString = env->NewByteArray(2);
- env->SetByteArrayRegion(endTimeString,0,2,(jbyte*)(" "));
- }
- if(event.durationString)
- {
- durationString = env->NewByteArray( strlen(event.durationString)+1);
- env->SetByteArrayRegion(durationString,0,strlen(event.durationString)+1,(jbyte*)event.durationString);
- }else
- {
- durationString = env->NewByteArray(2);
- env->SetByteArrayRegion(durationString,0,2,(jbyte*)(" "));
- }
- if(event.genre)
- {
- genre = env->NewByteArray( strlen(event.genre)+1);
- env->SetByteArrayRegion(genre,0,strlen(event.genre)+1,(jbyte*)event.genre);
- }else
- {
- genre = env->NewByteArray(2);
- env->SetByteArrayRegion(genre,0,2,(jbyte*)(" "));
- }
- if(event.language)
- {
- language = env->NewByteArray( strlen(event.language)+1);
- env->SetByteArrayRegion(language,0,strlen(event.language)+1,(jbyte*)event.language);
- }else
- {
- language = env->NewByteArray(2);
- env->SetByteArrayRegion(language,0,2,(jbyte*)(" "));
- }
- objEpgEvent = env->NewObject(clsEpgEvent,midEpgEvent, name, description, extendedDescription, startTimeString, endTimeString, durationString, genre, serviceIndex,event.parentalRate,language);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_EPG_GetPresentFollowing:%d PRESENT EVENT", __LINE__, errorCode);
- objEpgEvent = env->NewObject(clsEpgEvent,midEpgEvent, temp, temp, temp, temp, temp, temp, temp, serviceIndex,0,temp);
- }
- //errorCode = MAL_EPG_GetPresentFollowing(clientHandleGlobal, MAL_EPG_FOLLOWING_EVENT, &eventNext);
- //if(MAL_EPG_NO_ERROR == errorCode)
- if(0)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_EPG_GetPresentFollowing OK - eventNext.name:%s eventNext.description:%s eventNext.extendedDescription:%s eventNext.startTimeString:%s eventNext.endTimeString:%s eventNext.durationString:%s eventNext.genre:%s eventNext.language:%s eventNext.parentalRate:%d eventNext.eventId:%d eventNext.serviceIndex:%ld",__LINE__, eventNext.name, eventNext.description, eventNext.extendedDescription, eventNext.startTimeString, eventNext.endTimeString, eventNext.durationString, eventNext.genre, eventNext.language, eventNext.parentalRate, eventNext.eventId, eventNext.serviceIndex);
- if(eventNext.name)
- {
- nameNext = env->NewByteArray(strlen(eventNext.name)+1);
- env->SetByteArrayRegion(nameNext,0,strlen(eventNext.name)+1,(jbyte*)eventNext.name);
- }else
- {
- nameNext = env->NewByteArray(2);
- env->SetByteArrayRegion(nameNext,0,2,(jbyte*)(" "));
- }
- if(eventNext.description)
- {
- descriptionNext = env->NewByteArray( strlen(eventNext.description)+1);
- env->SetByteArrayRegion(descriptionNext,0,strlen(eventNext.description)+1,(jbyte*)eventNext.description);
- }else
- {
- descriptionNext = env->NewByteArray(2);
- env->SetByteArrayRegion(descriptionNext,0,2,(jbyte*)(" "));
- }
- if(eventNext.extendedDescription)
- {
- extendedDescriptionNext = env->NewByteArray( strlen(eventNext.extendedDescription)+1);
- env->SetByteArrayRegion(extendedDescriptionNext,0,strlen(eventNext.extendedDescription)+1,(jbyte*)eventNext.extendedDescription);
- }else
- {
- extendedDescriptionNext = env->NewByteArray(2);
- env->SetByteArrayRegion(extendedDescriptionNext,0,2,(jbyte*)(" "));
- }
- if(eventNext.startTimeString)
- {
- startTimeStringNext = env->NewByteArray( strlen(eventNext.startTimeString)+1);
- env->SetByteArrayRegion(startTimeStringNext,0,strlen(eventNext.startTimeString)+1,(jbyte*)eventNext.startTimeString);
- }else
- {
- startTimeStringNext = env->NewByteArray(2);
- env->SetByteArrayRegion(startTimeStringNext,0,2,(jbyte*)(" "));
- }
- if(eventNext.endTimeString)
- {
- endTimeStringNext = env->NewByteArray( strlen(eventNext.endTimeString)+1);
- env->SetByteArrayRegion(endTimeStringNext,0,strlen(eventNext.endTimeString)+1,(jbyte*)eventNext.endTimeString);
- }else
- {
- endTimeStringNext = env->NewByteArray(2);
- env->SetByteArrayRegion(endTimeStringNext,0,2,(jbyte*)(" "));
- }
- if(eventNext.durationString)
- {
- durationStringNext = env->NewByteArray( strlen(eventNext.durationString)+1);
- env->SetByteArrayRegion(durationStringNext,0,strlen(eventNext.durationString)+1,(jbyte*)eventNext.durationString);
- }else
- {
- durationStringNext = env->NewByteArray(2);
- env->SetByteArrayRegion(durationStringNext,0,2,(jbyte*)(" "));
- }
- if(eventNext.genre)
- {
- genreNext = env->NewByteArray( strlen(eventNext.genre)+1);
- env->SetByteArrayRegion(genreNext,0,strlen(eventNext.genre)+1,(jbyte*)eventNext.genre);
- }else
- {
- genreNext = env->NewByteArray(2);
- env->SetByteArrayRegion(genreNext,0,2,(jbyte*)(" "));
- }
- if(eventNext.language)
- {
- languageNext = env->NewByteArray( strlen(eventNext.language)+1);
- env->SetByteArrayRegion(languageNext,0,strlen(eventNext.language)+1,(jbyte*)eventNext.language);
- }else
- {
- languageNext = env->NewByteArray(2);
- env->SetByteArrayRegion(languageNext,0,2,(jbyte*)(" "));
- }
- objEpgEventNext = env->NewObject(clsEpgEvent,midEpgEvent, nameNext, descriptionNext, extendedDescriptionNext, startTimeStringNext, endTimeStringNext, durationStringNext, genreNext,serviceIndex,eventNext.parentalRate,languageNext);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_EPG_GetPresentFollowing:%d FOLLOWING EVENT", __LINE__, errorCode);
- objEpgEventNext = env->NewObject(clsEpgEvent,midEpgEvent, temp, temp, temp, temp, temp, temp, temp,serviceIndex,0,temp);
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN env->NewObject(clsServiceInfo,midServiceInfo, eventNext.serviceIndex, 0, 0, 0, env->NewStringUTF(""),objEpgEvent, objEpgEventNext);
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: scanAll
- * Signature: (J)Z
- */
- JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_scanAll
- (JNIEnv *env, jobject thiz, jlong installRouteID)
- {
- MAL_TUNER_ErrorCode errorCodeTUNER;
- MAL_EPG_ErrorCode errorCodeEPG;
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: installRouteID=%ld",__LINE__, (mal_uint32)installRouteID);
- #ifdef PRODUCT_USE_EIT
- errorCodeEPG = MAL_EPG_UnregisterClientCallback(clientHandleGlobal, epgEventCallback);
- if(MAL_EPG_NO_ERROR == errorCodeEPG)
- {
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_EPG_UnregisterClientCallback - OK",__LINE__);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_EPG_UnregisterClientCallback:%d", __LINE__, errorCodeEPG);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN false ;
- }
- #endif
- errorCodeTUNER= MAL_TUNER_AutoScan((mal_uint32)installRouteID);
- if(MAL_TUNER_NO_ERROR == errorCodeTUNER)
- {
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_AutoScan - OK",__LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN true ;
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_TUNER_AutoScan:%d", __LINE__, errorCodeTUNER);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN false ;
- }
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: abortScan
- * Signature: (J)Z
- */
- /* TO_DO */
- /* Implement abort scan function */
- JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_abortScan
- (JNIEnv *env, jobject thiz, jlong installRouteID)
- {
- MAL_TUNER_ErrorCode errorCodeTUNER;
- MAL_EPG_ErrorCode errorCodeEPG;
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: installRouteID=%ld",__LINE__, (mal_uint32)installRouteID);
- errorCodeTUNER= MAL_TUNER_AbortScan((mal_uint32)installRouteID);
- if(MAL_TUNER_NO_ERROR == errorCodeTUNER)
- {
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_AutoScan - OK",__LINE__);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN true ;
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_TUNER_AutoScan:%d", __LINE__, errorCodeTUNER);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN false ;
- }
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: initNative
- * Signature: ()Z
- */
- JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_initNative
- (JNIEnv *env, jobject thiz)
- {
- MAL_ErrorCode errorCodeMAL;
- MAL_TUNER_ErrorCode errorCodeTUNER;
- MAL_SZ_ErrorCode errorCodeSZ;
- MAL_SC_ErrorCode errorCodeSC;
- mJNI_FCT_ENTER(__FUNCTION__);
- errorCodeMAL = MAL_Init();
- if(MAL_NO_ERROR == errorCodeMAL)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_Init - OK",__LINE__);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_Init:%d", __LINE__, errorCodeMAL);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN false;
- }
- errorCodeTUNER = MAL_TUNER_RegisterStatusCallback(scanStatusCallback);
- if(MAL_TUNER_NO_ERROR == errorCodeTUNER)
- {
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_RegisterStatusCallback - OK",__LINE__);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_TUNER_RegisterStatusCallback:%d", __LINE__, errorCodeTUNER);
- }
- errorCodeSZ = MAL_SZ_RegisterCallback(zappCallback);
- if(MAL_SZ_NO_ERROR == errorCodeSZ)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_RegisterCallback - OK",__LINE__);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SZ_RegisterCallback:%d", __LINE__, errorCodeSZ);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN false;
- }
- errorCodeSC = MAL_SC_RegisterStatusCallback(selectComponentCallback);
- if(MAL_SC_NO_ERROR == errorCodeSC)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SC_RegisterStatusCallback - OK",__LINE__);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SC_RegisterStatusCallback:%d", __LINE__, errorCodeSC);
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN true;
- }
- /*
- * Class: com_comedia_javanative_JavaNative
- * Method: deinitNative
- * Signature: ()Z
- */
- JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_deinitNative
- (JNIEnv *env, jobject thiz)
- {
- MAL_ErrorCode errorCodeMAL;
- bool ret = false;
- mJNI_FCT_ENTER(__FUNCTION__);
- errorCodeMAL = MAL_Terminate();
- if(MAL_NO_ERROR == errorCodeMAL)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_Terminate - OK",__LINE__);
- ret = true;
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_Terminate:%d", __LINE__, errorCodeMAL);
- ret = false;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN ret;
- }
- void scanStatusCallback(MAL_TUNER_CallbackMessage* user_data, MAL_TUNER_Events event)
- {
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: event=%d",__LINE__, event);
- MAL_EPG_ErrorCode errorCode;
- switch(event)
- {
- case MAL_TUNER_EVENT_INSTALL_STATE_OK:
- break;
- case MAL_TUNER_EVENT_INSTALL_STATE_ERROR:
- break;
- case MAL_TUNER_EVENT_INSTALL_TS_INFO_FREQUENCY:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_TS_INFO_FREQUENCY=%d",__LINE__, user_data->signal);
- sendCallback(SCAN_TS_INFO_FREQUENCY, user_data->signal);
- break;
- case MAL_TUNER_EVENT_INSTALL_COMPLETE:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_COMPLETE",__LINE__);
- sendCallback(SCAN_COMPLETE, 100);
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NAME:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NAME:%s",__LINE__,user_data->service_name);
- sendStringCallback(SCAN_SERVICE_TV_NAME, strlen(user_data->service_name), user_data->service_name);
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NAME:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NAME:%s",__LINE__,user_data->service_name);
- sendStringCallback(SCAN_SERVICE_RADIO_NAME, strlen(user_data->service_name), user_data->service_name);
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NUMBER:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NUMBER:%d",__LINE__,user_data->service_num);
- sendCallback(SCAN_SERVICE_TV_NUMBER, user_data->service_num);
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NUMBER:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NUMBER:%d",__LINE__,user_data->service_num);
- sendCallback(SCAN_SERVICE_RADIO_NUMBER, user_data->service_num);
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_TV_AK:
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_AK:
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_ADDED:
- break;
- case MAL_TUNER_EVENT_INSTALL_SERVICE_ERROR:
- break;
- case MAL_TUNER_EVENT_TRIGGER_STATE_OK:
- break;
- case MAL_TUNER_EVENT_TRIGGER_STATE_ERROR:
- break;
- case MAL_TUNER_EVENT_INSTALL_PROGRESS:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_PROGRESS:%d",__LINE__,user_data->install);
- sendCallback(SCAN_PROGRESS, user_data->install);
- break;
- case MAL_TUNER_EVENT_INSTALL_SIGNAL_LEVEL:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SIGNAL_LEVEL:%d",__LINE__,user_data->signal);
- sendCallback(SCAN_SIGNAL_LEVEL, user_data->signal);
- break;
- case MAL_TUNER_EVENT_INSTALL_SIGNAL_QUALITY:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SIGNAL_QUALITY:%d",__LINE__,user_data->signal);
- sendCallback(SCAN_SIGNAL_QUALITY, user_data->signal);
- break;
- case MAL_TUNER_EVENT_INSTALL_SIGNAL_BER:
- mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SIGNAL_BER:%d",__LINE__,user_data->signal);
- sendCallback(SCAN_SIGNAL_BER, user_data->signal);
- break;
- default:;
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN;
- }
- void zappCallback(void* userData, MAL_SZ_EventType event)
- {
- mJNI_FCT_ENTER(__FUNCTION__);
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: event=%d routeID=%ld",__LINE__, event,*((mal_uint32 *)userData));
- if(event == MAL_SZ_EVENT_SERVICE_STOPPED)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_SERVICE_STOPPED send callback",__LINE__);
- sendCallback(ZAPPING, event);
- }
- else if(event == MAL_SZ_EVENT_CHANNEL_CHANGE_FAIL)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_CHANNEL_CHANGE_FAIL send callback",__LINE__);
- sendCallback(ZAPPING, event);
- }
- else if(event == MAL_SZ_EVENT_CHANNEL_CHANGE_SUCCESS)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_CHANNEL_CHANGE_SUCCESS",__LINE__);
- mal_uint32 masterServiceIndex = 0;
- MAL_SZ_ErrorCode errorCode;
- MAL_SZ_ServiceDesc serviceDesc;
- errorCode =MAL_SZ_GetActiveService(*((mal_uint32 *)userData), &masterServiceIndex);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_GetActiveService - OK masterServiceIndex:%ld",__LINE__, masterServiceIndex);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SZ_GetActiveService:%d", __LINE__, errorCode);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN;
- }
- memset(&serviceDesc,0,sizeof(MAL_SZ_ServiceDesc));
- errorCode=MAL_SZ_GetServiceDesc(0, masterServiceIndex,&serviceDesc);
- if(MAL_SZ_NO_ERROR == errorCode)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_GetServiceDesc - OK serviceDesc.sourceType:%d serviceDesc.ONID:%ld serviceDesc.TSID:%ld serviceDesc.serviceIdentifier:%ld serviceDesc.serviceType:%d serviceDesc.serviceName:%s serviceDesc.LCN:%ld serviceDesc.scrambled:%d serviceDesc.hidden:%d serviceDesc.selectable:%d serviceDesc.frequency:%ld serviceDesc.serviceIndexInMList:%ld",__LINE__, serviceDesc.sourceType, serviceDesc.ONID, serviceDesc.TSID, serviceDesc.serviceIdentifier, serviceDesc.serviceType, serviceDesc.serviceName, serviceDesc.LCN, serviceDesc.scrambled, serviceDesc.hidden, serviceDesc.selectable, serviceDesc.frequency, serviceDesc.serviceIndexInMList);
- }
- else
- {
- mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SZ_GetServiceDesc:%d", __LINE__, errorCode);
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN;
- }
- if(serviceDesc.scrambled==true)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: Service is scrambled send callback",__LINE__);
- sendCallback(ZAPPING, event);
- }
- else
- {
- if(serviceDesc.serviceType==MAL_SZ_SERVICE_TYPE_DIG_RAD ||
- serviceDesc.serviceType==MAL_SZ_SERVICE_TYPE_ADV_CODEC_DIG_RAD ||
- serviceDesc.serviceType==MAL_SZ_SERVICE_TYPE_DATA_BROADCAST)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: Service is RADIO or DATA send callback",__LINE__);
- sendCallback(ZAPPING, event);
- }
- }
- }
- else if(event == MAL_SZ_EVENT_SIGNAL_LOST)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_SIGNAL_LOST send callback",__LINE__);
- sendCallback(ANTENNA_CONNECTED, 0);
- }
- else if(event == MAL_SZ_EVENT_SIGNAL_OK)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_SIGNAL_OK send callback",__LINE__);
- sendCallback(ANTENNA_CONNECTED, 1);
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN;
- }
- void selectComponentCallback(void *user, MAL_SC_CompChangedEvent event)
- {
- mJNI_FCT_ENTER(__FUNCTION__);
- if(event==MAL_SC_COMP_AVAILABILITY_CHANGED)
- {
- mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: event=%d user=%d",__LINE__, event,(mal_bool)user);
- sendCallback(MHEG_STARTED,(mal_bool)user);
- }
- mJNI_FCT_END(__FUNCTION__);
- mJNI_RETURN;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement