Advertisement
kernel_memory_dump

Untitled

Apr 29th, 2014
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 54.54 KB | None | 0 0
  1. /********************************************************
  2. /********************************************************
  3. * Copyright 2012 IWEDIA TECHNOLOGIES *
  4. *********************************************************
  5. *
  6. * MODULE NAME: JNI 4.1
  7. *
  8. * FILE NAME: $URL$
  9. * $Date$
  10. * $Rev$
  11. *
  12. * DESCRIPTION
  13. *
  14. * - brief description of the file -
  15. *
  16. *********************************************************/
  17. /********************************************************/
  18. /* Includes */
  19. /********************************************************/
  20. #include "com_comedia_javanative_JavaNative.h"
  21. #include "mal_service_zapper.h"
  22. #include "mal_audio_video.h"
  23. #include "mal_stream_component.h"
  24. #include "mal_route.h"
  25. #include "mal_epg.h"
  26. #include "mal_tuner.h"
  27. #include "mal_init.h"
  28. #include "callbacks.h"
  29. #include "jni_common.h"
  30.  
  31. /********************************************************/
  32. /* Defines */
  33. /********************************************************/
  34. #define VIDEO_TRACK_CLASS "android/dtv/video/VideoTrack"
  35. #define VIDEO_POSITION_CLASS "android/dtv/route/VideoPosition"
  36. #define MAIN_SERVICE_LIST_INDEX 0
  37. #define SERVICE_CLASS "android/dtv/service/Service"
  38. #define EPG_CLASS "android/dtv/epg/EpgEvent"
  39. #define SERVICE_INFO_CLASS "android/dtv/service/ServiceInfo"
  40. #define STRING_LENGTH 1024
  41. #define EXTENDED_SERVICE_INFO_CLASS "android/dtv/service/ExtendedServiceInfo"
  42. /********************************************************/
  43. /* Macros */
  44. /********************************************************/
  45. /********************************************************/
  46. /* Typedefs */
  47. /********************************************************/
  48. /********************************************************/
  49. /* Global Variables (GLOBAL/IMPORT) */
  50. /********************************************************/
  51. /********************************************************/
  52. /* Local Module Variables (MODULE) */
  53. /********************************************************/
  54. /********************************************************/
  55. /* Local File Variables (LOCAL) */
  56. /********************************************************/
  57. /********************************************************/
  58. /* Local Functions Declarations (LOCAL) */
  59. /********************************************************/
  60. void selectComponentCallback(void *user, MAL_SC_CompChangedEvent event);
  61. void zappCallback(void* userData, MAL_SZ_EventType event);
  62. void scanStatusCallback(MAL_TUNER_CallbackMessage* user_data, MAL_TUNER_Events event);
  63. /********************************************************/
  64. /* Functions Definitions (LOCAL/GLOBAL) */
  65. /********************************************************/
  66.  
  67. /*
  68. * Class: com_comedia_javanative_JavaNative
  69. * Method: initPlayer
  70. * Signature: (JI)Z
  71. */
  72. JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_initPlayer
  73. (JNIEnv * env, jobject jThis, jlong routeId, jint service)
  74. {
  75. bool ret = false;
  76. MAL_SZ_ErrorCode errorCode;
  77. mJNI_FCT_ENTER(__FUNCTION__);
  78. mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line:%d routeId:%ld service:%ld",__LINE__, (mal_uint32)routeId, (mal_uint32)service);
  79. errorCode = MAL_SZ_StartService((mal_uint32)routeId,(mal_uint32) service);
  80. if(MAL_SZ_NO_ERROR == errorCode)
  81. {
  82. mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line: %d: MAL_SZ_StartService - OK",__LINE__);
  83. ret = true;
  84. }
  85. else
  86. {
  87. mJNI_TRACE(" ERROR JNI_VIDEO_CONTROL - line: %d: Error in MAL_SZ_StartService:%d", __LINE__, errorCode);
  88. ret = false;
  89. }
  90. mJNI_FCT_END(__FUNCTION__);
  91.  
  92. mJNI_RETURN ret;
  93. }
  94.  
  95. /*
  96. * Class: com_comedia_javanative_JavaNative
  97. * Method: deinitPlayer
  98. * Signature: ()Z
  99. */
  100. JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_deinitPlayer
  101. (JNIEnv * env, jobject jThis, jlong routeId)
  102. {
  103. bool ret = false;
  104. MAL_SZ_ErrorCode errorCode;
  105. MAL_AVS_ErrorCode errorCodeAVS;
  106. mJNI_FCT_ENTER(__FUNCTION__);
  107. mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line:%d routeId:%ld",__LINE__, (mal_uint32)routeId);
  108. errorCode = MAL_SZ_StopService((mal_uint32)routeId);
  109. if(MAL_SZ_NO_ERROR == errorCode)
  110. {
  111. mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line: %d: MAL_SZ_StopService - OK",__LINE__);
  112. ret = true;
  113. }
  114. else
  115. {
  116. mJNI_TRACE(" ERROR JNI_VIDEO_CONTROL - line: %d: Error in MAL_SZ_StopService:%d", __LINE__, errorCode);
  117. ret = false;
  118. }
  119. errorCodeAVS = MAL_AVS_VideoBlank((mal_uint32)routeId, 1);
  120. if(MAL_AVS_NO_ERROR == errorCodeAVS)
  121. {
  122. mJNI_TRACE(" INFO JNI_VIDEO_CONTROL - line: %d: MAL_AVS_VideoBlank - OK",__LINE__);
  123. ret = true;
  124. }
  125. else
  126. {
  127. mJNI_TRACE(" ERROR JNI_VIDEO_CONTROL - line: %d: Error in MAL_AVS_VideoBlank:%d", __LINE__, errorCodeAVS);
  128. ret = false;
  129. }
  130. mJNI_FCT_END(__FUNCTION__);
  131.  
  132. mJNI_RETURN ret;
  133. }
  134.  
  135. /*
  136. * Class: com_comedia_javanative_JavaNative
  137. * Method: GetFrontendNumber
  138. * Signature: (Landroid/dtv/basic_types/LongHolder;)I
  139. */
  140. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetFrontendNumber
  141. (JNIEnv *env, jobject thiz, jobject frontentNumberObject)
  142. {
  143. MAL_ROUTE_ErrorCode errorCode;
  144. mal_uint32 frontendNumber;
  145.  
  146. mJNI_FCT_ENTER(__FUNCTION__);
  147.  
  148. if(frontentNumberObject==NULL)
  149. {
  150. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  151. mJNI_FCT_END(__FUNCTION__);
  152. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  153. }
  154.  
  155. errorCode=MAL_ROUTE_GetFrontendNumber(&frontendNumber);
  156.  
  157. if(errorCode==MAL_ROUTE_NO_ERROR)
  158. {
  159. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendNumber=%ld",__LINE__,frontendNumber);
  160.  
  161. jclass longHolderClass=env->GetObjectClass(frontentNumberObject);
  162. jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
  163. if(longValueId==NULL)
  164. {
  165. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
  166. mJNI_FCT_END(__FUNCTION__);
  167. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  168. }
  169.  
  170. env->SetLongField(frontentNumberObject, longValueId, frontendNumber);
  171. }
  172. else
  173. {
  174. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetFrontendNumber", __LINE__);
  175. mJNI_FCT_END(__FUNCTION__);
  176. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  177. }
  178.  
  179. mJNI_FCT_END(__FUNCTION__);
  180.  
  181. mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
  182. }
  183.  
  184. /*
  185. * Class: com_comedia_javanative_JavaNative
  186. * Method: GetDemuxNumber
  187. * Signature: (Landroid/dtv/basic_types/LongHolder;)I
  188. */
  189. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDemuxNumber
  190. (JNIEnv * env, jobject thiz, jobject demuxNumberObject)
  191. {
  192. MAL_ROUTE_ErrorCode errorCode;
  193. mal_uint32 demuxNumber;
  194.  
  195. mJNI_FCT_ENTER(__FUNCTION__);
  196.  
  197. if(demuxNumberObject==NULL)
  198. {
  199. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  200. mJNI_FCT_END(__FUNCTION__);
  201. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  202. }
  203.  
  204. errorCode = MAL_ROUTE_GetDemuxNumber(&demuxNumber);
  205.  
  206. if(errorCode==MAL_ROUTE_NO_ERROR)
  207. {
  208. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: demuxNumber=%ld",__LINE__,demuxNumber);
  209.  
  210. jclass longHolderClass=env->GetObjectClass(demuxNumberObject);
  211. jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
  212. if(longValueId==NULL)
  213. {
  214. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
  215. mJNI_FCT_END(__FUNCTION__);
  216. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  217. }
  218.  
  219. env->SetLongField(demuxNumberObject, longValueId, demuxNumber);
  220. }
  221. else
  222. {
  223. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDemuxNumber", __LINE__);
  224. mJNI_FCT_END(__FUNCTION__);
  225. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  226. }
  227.  
  228. mJNI_FCT_END(__FUNCTION__);
  229.  
  230. mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
  231. }
  232.  
  233. /*
  234. * Class: com_comedia_javanative_JavaNative
  235. * Method: GetDecoderNumber
  236. * Signature: (Landroid/dtv/basic_types/LongHolder;)I
  237. */
  238. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDecoderNumber
  239. (JNIEnv * env, jobject thiz, jobject decoderNumberObject)
  240. {
  241. MAL_ROUTE_ErrorCode errorCode;
  242. mal_uint32 decoderNumber;
  243.  
  244. mJNI_FCT_ENTER(__FUNCTION__);
  245.  
  246. /* TO_DO */
  247. /* Get decoder number (similar to getting frontend number) */
  248.  
  249. if(decoderNumberObject==NULL)
  250. {
  251. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  252. mJNI_FCT_END(__FUNCTION__);
  253. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  254. }
  255.  
  256. errorCode=MAL_ROUTE_GetDecoderNumber(&decoderNumber);
  257.  
  258. if(errorCode==MAL_ROUTE_NO_ERROR)
  259. {
  260. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: decoderNumber=%ld",__LINE__,decoderNumber);
  261.  
  262. jclass longHolderClass=env->GetObjectClass(decoderNumberObject);
  263. jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
  264. if(longValueId==NULL)
  265. {
  266. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
  267. mJNI_FCT_END(__FUNCTION__);
  268. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  269. }
  270.  
  271. env->SetLongField(decoderNumberObject, longValueId, decoderNumber);
  272. }
  273. else
  274. {
  275. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDecoderNumber", __LINE__);
  276. mJNI_FCT_END(__FUNCTION__);
  277. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  278. }
  279.  
  280. mJNI_FCT_END(__FUNCTION__);
  281.  
  282. mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
  283. }
  284.  
  285.  
  286. /*
  287. * Class: com_comedia_javanative_JavaNative
  288. * Method: GetoutputNumber
  289. * Signature: (Landroid/dtv/basic_types/LongHolder;)I
  290. */
  291. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetoutputNumber
  292. (JNIEnv * env, jobject thiz, jobject outputNumberObject)
  293. {
  294. MAL_ROUTE_ErrorCode errorCode;
  295. mal_uint32 outputNumber;
  296.  
  297. mJNI_FCT_ENTER(__FUNCTION__);
  298.  
  299. /* TO_DO */
  300. /* Get output number (similar to getting frontend number) */
  301. if(outputNumberObject==NULL)
  302. {
  303. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  304. mJNI_FCT_END(__FUNCTION__);
  305. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  306. }
  307.  
  308. errorCode=MAL_ROUTE_GetOutputNumber(&outputNumber);
  309.  
  310. if(errorCode==MAL_ROUTE_NO_ERROR)
  311. {
  312. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: outputNumber=%ld",__LINE__,outputNumber);
  313.  
  314. jclass longHolderClass=env->GetObjectClass(outputNumberObject);
  315. jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
  316. if(longValueId==NULL)
  317. {
  318. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
  319. mJNI_FCT_END(__FUNCTION__);
  320. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  321. }
  322.  
  323. env->SetLongField(outputNumberObject, longValueId, outputNumber);
  324. }
  325. else
  326. {
  327. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetOutputNumber", __LINE__);
  328. mJNI_FCT_END(__FUNCTION__);
  329. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  330. }
  331.  
  332. mJNI_FCT_END(__FUNCTION__);
  333.  
  334. mJNI_RETURN (int)MAL_ROUTE_NO_ERROR;
  335. }
  336.  
  337. /*
  338. * Class: com_comedia_javanative_JavaNative
  339. * Method: GetFrontendDescriptor
  340. * Signature: (JLandroid/dtv/route/FrontentDescriptor;)I
  341. */
  342. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetFrontendDescriptor
  343. (JNIEnv *env, jobject thiz, jlong frontendIndex, jobject descriptorObject)
  344. {
  345. MAL_ROUTE_FrontendDescriptor descriptor;
  346. MAL_ROUTE_ErrorCode errorCode;
  347.  
  348. mJNI_FCT_ENTER(__FUNCTION__);
  349.  
  350. if(descriptorObject==NULL)
  351. {
  352. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  353. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  354. }
  355.  
  356. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendIndex=%ld",__LINE__,(mal_uint32)frontendIndex);
  357.  
  358. memset(&descriptor,0,sizeof(MAL_ROUTE_FrontendDescriptor));
  359.  
  360. errorCode=MAL_ROUTE_GetFrontendDescriptor(frontendIndex,&descriptor);
  361.  
  362. if(errorCode==MAL_ROUTE_NO_ERROR)
  363. {
  364. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld - descriptor.type=%d ",__LINE__,descriptor.ID,descriptor.type);
  365.  
  366. jclass descriptorClass=env->GetObjectClass(descriptorObject);
  367.  
  368. jfieldID frontentIdId=env->GetFieldID(descriptorClass,"frontentId", "J");
  369. env->SetLongField(descriptorObject, frontentIdId, descriptor.ID);
  370.  
  371. jmethodID setFrontentTypeId=env->GetMethodID(descriptorClass,"setFrontentType", "(I)V");
  372. env->CallVoidMethod(descriptorObject,setFrontentTypeId,(int)descriptor.type);
  373. }
  374. else
  375. {
  376. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetFrontendDescriptor", __LINE__);
  377. mJNI_FCT_END(__FUNCTION__);
  378. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  379. }
  380.  
  381. mJNI_FCT_END(__FUNCTION__);
  382.  
  383. mJNI_RETURN (int)errorCode;
  384. }
  385.  
  386. /*
  387. * Class: com_comedia_javanative_JavaNative
  388. * Method: GetDemuxDescriptor
  389. * Signature: (JLandroid/dtv/route/DemuxDescriptor;)I
  390. */
  391. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDemuxDescriptor
  392. (JNIEnv *env , jobject thiz, jlong demuxIndex, jobject descriptorObject)
  393. {
  394. MAL_ROUTE_DemuxDescriptor descriptor;
  395. MAL_ROUTE_ErrorCode errorCode;
  396.  
  397. mJNI_FCT_ENTER(__FUNCTION__);
  398.  
  399. if(descriptorObject==NULL)
  400. {
  401. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  402. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  403. }
  404.  
  405. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: demuxIndex=%ld",__LINE__,(mal_uint32)demuxIndex);
  406.  
  407. memset(&descriptor,0,sizeof(MAL_ROUTE_DemuxDescriptor));
  408.  
  409. errorCode= MAL_ROUTE_GetDemuxDescriptor(demuxIndex,&descriptor);
  410.  
  411. if(errorCode==MAL_ROUTE_NO_ERROR)
  412. {
  413. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld",__LINE__,descriptor.ID);
  414.  
  415. jclass descriptorClass=env->GetObjectClass(descriptorObject);
  416.  
  417. jfieldID demuxIdId=env->GetFieldID(descriptorClass,"demuxId", "J");
  418. env->SetLongField(descriptorObject, demuxIdId, descriptor.ID);
  419. }
  420. else
  421. {
  422. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDemuxDescriptor", __LINE__);
  423. mJNI_FCT_END(__FUNCTION__);
  424. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  425. }
  426.  
  427. mJNI_FCT_END(__FUNCTION__);
  428.  
  429. mJNI_RETURN (int)errorCode;
  430. }
  431.  
  432.  
  433. /*
  434. * Class: com_comedia_javanative_JavaNative
  435. * Method: GetDecoderDescriptor
  436. * Signature: (JLandroid/dtv/route/DecoderDescriptor;)I
  437. */
  438. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetDecoderDescriptor
  439. (JNIEnv *env, jobject thiz, jlong decoderIndex, jobject descriptorObject)
  440. {
  441. MAL_ROUTE_DecoderDescriptor descriptor;
  442. MAL_ROUTE_ErrorCode errorCode;
  443.  
  444. mJNI_FCT_ENTER(__FUNCTION__);
  445.  
  446. /* TO_DO */
  447. /* Get decoder descriptor (similar to getting frontend descriptor) */
  448. if(descriptorObject==NULL)
  449. {
  450. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  451. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  452. }
  453.  
  454. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: decoderIndex=%ld",__LINE__,(mal_uint32)decoderIndex);
  455.  
  456. memset(&descriptor,0,sizeof(MAL_ROUTE_DecoderDescriptor));
  457.  
  458. errorCode=MAL_ROUTE_GetDecoderDescriptor(decoderIndex,&descriptor);
  459.  
  460. if(errorCode==MAL_ROUTE_NO_ERROR)
  461. {
  462. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld - descriptor.type=%d ",__LINE__,descriptor.ID,descriptor.type);
  463.  
  464. jclass descriptorClass=env->GetObjectClass(descriptorObject);
  465.  
  466. jfieldID decoderId=env->GetFieldID(descriptorClass,"decoderId", "J");
  467. env->SetLongField(descriptorObject, decoderId, descriptor.ID);
  468.  
  469. jmethodID setDecoderTypeId=env->GetMethodID(descriptorClass,"setDecoderType", "(I)V");
  470. env->CallVoidMethod(descriptorObject,setDecoderTypeId,(int)descriptor.type);
  471. }
  472. else
  473. {
  474. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetDecoderDescriptor", __LINE__);
  475. mJNI_FCT_END(__FUNCTION__);
  476. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  477. }
  478.  
  479. mJNI_FCT_END(__FUNCTION__);
  480.  
  481. mJNI_RETURN (int)errorCode;
  482. }
  483.  
  484.  
  485. /*
  486. * Class: com_comedia_javanative_JavaNative
  487. * Method: GetoutputDescriptor
  488. * Signature: (JLandroid/dtv/route/OutputDescriptor;)I
  489. */
  490. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetoutputDescriptor
  491. (JNIEnv * env, jobject thiz, jlong outputIndex, jobject descriptorObject)
  492. {
  493. MAL_ROUTE_OutputDescriptor descriptor;
  494. MAL_ROUTE_ErrorCode errorCode;
  495.  
  496. mJNI_FCT_ENTER(__FUNCTION__);
  497.  
  498.  
  499. /* TO_DO */
  500. /* Get output descriptor (similar to getting frontend descriptor) */
  501. if(descriptorObject==NULL)
  502. {
  503. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  504. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  505. }
  506.  
  507. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: outputIndex=%ld",__LINE__,(mal_uint32)outputIndex);
  508.  
  509. memset(&descriptor,0,sizeof(MAL_ROUTE_OutputDescriptor));
  510.  
  511. errorCode=MAL_ROUTE_GetOutputDescriptor(outputIndex,&descriptor);
  512.  
  513. if(errorCode==MAL_ROUTE_NO_ERROR)
  514. {
  515. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: descriptor.ID=%ld - descriptor.type=%d ",__LINE__,descriptor.ID,descriptor.type);
  516.  
  517. jclass descriptorClass=env->GetObjectClass(descriptorObject);
  518.  
  519. jfieldID outputId=env->GetFieldID(descriptorClass,"outputId", "J");
  520. env->SetLongField(descriptorObject, outputId, descriptor.ID);
  521.  
  522. jmethodID setOutputTypeId=env->GetMethodID(descriptorClass,"setOutputType", "(I)V");
  523. env->CallVoidMethod(descriptorObject,setOutputTypeId,(int)descriptor.type);
  524. }
  525. else
  526. {
  527. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetOutputDescriptor", __LINE__);
  528. mJNI_FCT_END(__FUNCTION__);
  529. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  530. }
  531.  
  532. mJNI_FCT_END(__FUNCTION__);
  533.  
  534. mJNI_RETURN (int)errorCode;
  535. }
  536.  
  537.  
  538. /*
  539. * Class: com_comedia_javanative_JavaNative
  540. * Method: GetInstallRoute
  541. * Signature: (JJLandroid/dtv/basic_types/LongHolder;)I
  542. */
  543. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetInstallRoute
  544. (JNIEnv * env, jobject thiz, jlong frontendID, jlong demuxID, jobject routeIDObject)
  545. {
  546. MAL_RouteID routeID;
  547. MAL_ROUTE_ErrorCode errorCode;
  548.  
  549. mJNI_FCT_ENTER(__FUNCTION__);
  550.  
  551. if(routeIDObject==NULL)
  552. {
  553. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  554. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  555. }
  556.  
  557. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendID=%ld demuxID=%ld",__LINE__,(mal_uint32)frontendID,(mal_uint32)demuxID);
  558.  
  559. errorCode = MAL_ROUTE_GetInstallRoute(frontendID, demuxID,&routeID);
  560.  
  561. if(errorCode==MAL_ROUTE_NO_ERROR)
  562. {
  563. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: routeID=%ld ",__LINE__,routeID);
  564.  
  565. jclass longHolderClass=env->GetObjectClass(routeIDObject);
  566. jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
  567. if(longValueId==NULL)
  568. {
  569. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
  570. mJNI_FCT_END(__FUNCTION__);
  571. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  572. }
  573.  
  574. env->SetLongField(routeIDObject, longValueId, routeID);
  575. }
  576. else
  577. {
  578. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetInstallRoute", __LINE__);
  579. mJNI_FCT_END(__FUNCTION__);
  580. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  581. }
  582.  
  583. mJNI_FCT_END(__FUNCTION__);
  584.  
  585. mJNI_RETURN (int)errorCode;
  586. }
  587.  
  588.  
  589. /*
  590. * Class: com_comedia_javanative_JavaNative
  591. * Method: GetLiveRoute
  592. * Signature: (JJJJLandroid/dtv/basic_types/LongHolder;)I
  593. */
  594. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_GetLiveRoute
  595. (JNIEnv * env, jobject thiz, jlong frontendID, jlong demuxID, jlong decoderID, jlong outputID, jobject routeIDObject)
  596. {
  597. MAL_RouteID routeID;
  598. MAL_ROUTE_ErrorCode errorCode;
  599.  
  600. mJNI_FCT_ENTER(__FUNCTION__);
  601.  
  602. /* TO_DO */
  603. /* Get live route (similar to getting install route) */
  604.  
  605. if(routeIDObject==NULL)
  606. {
  607. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  608. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  609. }
  610.  
  611. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: frontendID=%ld demuxID=%ld",__LINE__,(mal_uint32)frontendID,(mal_uint32)demuxID);
  612.  
  613. errorCode = MAL_ROUTE_GetLiveRoute(frontendID, demuxID, decoderID, outputID, &routeID);
  614. /*MAL_ROUTE_ErrorCode MAL_ROUTE_GetLiveRoute(const MAL_FrontendID frontendID,
  615. const MAL_DemuxID demuxID,
  616. const MAL_DecoderID decoderID,
  617. const MAL_OutputID outputID,
  618. MAL_RouteID *routeID);*/
  619.  
  620. if(errorCode==MAL_ROUTE_NO_ERROR)
  621. {
  622. mJNI_TRACE(" INFO JNI_ROUTE_CONTROL - line: %d: routeID=%ld ",__LINE__,routeID);
  623.  
  624. jclass longHolderClass=env->GetObjectClass(routeIDObject);
  625. jfieldID longValueId=env->GetFieldID(longHolderClass,"longValue", "J");
  626. if(longValueId==NULL)
  627. {
  628. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java fieldID is NULL", __LINE__);
  629. mJNI_FCT_END(__FUNCTION__);
  630. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  631. }
  632.  
  633. env->SetLongField(routeIDObject, longValueId, routeID);
  634. }
  635. else
  636. {
  637. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Error in MAL_ROUTE_GetLiveRoute", __LINE__);
  638. mJNI_FCT_END(__FUNCTION__);
  639. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  640. }
  641.  
  642. mJNI_FCT_END(__FUNCTION__);
  643.  
  644. mJNI_RETURN (int)errorCode;
  645. }
  646.  
  647. /*
  648. * Class: com_comedia_javanative_JavaNative
  649. * Method: getServiceListCount
  650. * Signature: (I)I
  651. */
  652. JNIEXPORT jint JNICALL Java_com_comedia_javanative_JavaNative_getServiceListCount
  653. (JNIEnv *env, jobject thiz, jint listIndex)
  654. {
  655. mal_uint32 serviceCount = 0;
  656. MAL_SZ_ErrorCode errorCode;
  657. mJNI_FCT_ENTER(__FUNCTION__);
  658.  
  659. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: listIndex=%ld",__LINE__,(mal_uint32) listIndex);
  660. errorCode = MAL_SZ_GetServiceListCount((mal_uint32)listIndex, &serviceCount);
  661. if(MAL_SZ_NO_ERROR == errorCode)
  662. {
  663. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SZ_GetServiceListCount - OK, serviceCount:%ld",__LINE__, serviceCount);
  664. }
  665. else
  666. {
  667. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_GetServiceListCount:%d", __LINE__, errorCode);
  668. }
  669. mJNI_FCT_END(__FUNCTION__);
  670. mJNI_RETURN serviceCount;
  671. }
  672.  
  673. /*
  674. * Class: com_comedia_javanative_JavaNative
  675. * Method: getService
  676. * Signature: (JII)Landroid/dtv/service/Service;
  677. */
  678. JNIEXPORT jobject JNICALL Java_com_comedia_javanative_JavaNative_getService
  679. (JNIEnv *env, jobject thiz, jlong routeID, jint listIndex, jint serviceIndex)
  680. {
  681. jclass clsService;
  682. jmethodID midService;
  683. jobject objService;
  684. jbyteArray utfArray;
  685. MAL_SZ_ErrorCode errorCode;
  686. MAL_SC_ErrorCode errorCodeSC;
  687. MAL_SZ_ServiceDesc serviceDesc;
  688. mal_uint16 audioCount = 0;
  689. mal_uint16 videoCount = 0;
  690. mal_uint16 subCount = 0;
  691. mal_uint16 txtCount = 0;
  692. mal_uint32 masterServiceIndex = 0;
  693. int type = 0;
  694.  
  695. mJNI_FCT_ENTER(__FUNCTION__);
  696.  
  697. clsService = env->FindClass(SERVICE_CLASS);
  698. midService = env->GetMethodID(clsService, "<init>", "(I[BZIIIII)V");
  699.  
  700. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: routeID:%ld listIndex=%ld serviceIndex:%ld",__LINE__, (mal_uint32)routeID,(mal_uint32) listIndex, (mal_uint32)serviceIndex);
  701. memset(&serviceDesc,0,sizeof(MAL_SZ_ServiceDesc));
  702. errorCode=MAL_SZ_GetServiceDesc((mal_uint32)listIndex, (mal_uint32)serviceIndex,&serviceDesc);
  703. if(MAL_SZ_NO_ERROR == errorCode)
  704. {
  705. 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);
  706. }
  707. else
  708. {
  709. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_GetServiceDesc:%d", __LINE__, errorCode);
  710. mJNI_FCT_END(__FUNCTION__);
  711. mJNI_RETURN NULL;
  712. }
  713. if(serviceDesc.serviceName)
  714. {
  715. utfArray = env->NewByteArray(strlen(serviceDesc.serviceName)+1);
  716. env->SetByteArrayRegion(utfArray,0,strlen(serviceDesc.serviceName)+1,(jbyte*)serviceDesc.serviceName);
  717. }else
  718. {
  719. utfArray = env->NewByteArray(2);
  720. env->SetByteArrayRegion(utfArray,0,2,(jbyte*)(" "));
  721. }
  722.  
  723. switch(serviceDesc.serviceType){
  724. case MAL_SZ_SERVICE_TYPE_DIG_TV://DIG_SD_TV
  725. case MAL_SZ_SERVICE_TYPE_ADV_CODEC_DIG_TV:
  726. switch(serviceDesc.sourceType)
  727. {
  728. case MAL_SZ_SOURCE_TYPE_CAB:
  729. type = 0;
  730. break;
  731. case MAL_SZ_SOURCE_TYPE_TER:
  732. type = 1;
  733. break;
  734. case MAL_SZ_SOURCE_TYPE_SAT:
  735. type = 2;
  736. break;
  737. default:
  738. type = 4;
  739. }
  740. break;
  741. case MAL_SZ_SERVICE_TYPE_MPEG2_HD_DIG_TV ://DIG_HD_TV:
  742. case MAL_SZ_SERVICE_TYPE_ADV_CODEC_HD_DIG_TV :
  743. switch(serviceDesc.sourceType)
  744. {
  745. case MAL_SZ_SOURCE_TYPE_CAB:
  746. type = 3;
  747. break;
  748. case MAL_SZ_SOURCE_TYPE_TER:
  749. type = 4;
  750. break;
  751. case MAL_SZ_SOURCE_TYPE_SAT:
  752. type = 5;
  753. break;
  754. default:
  755. type = 4;
  756. }
  757. break;
  758. case MAL_SZ_SERVICE_TYPE_DIG_RAD://DIG_RADIO
  759. case MAL_SZ_SERVICE_TYPE_ADV_CODEC_DIG_RAD:
  760. switch(serviceDesc.sourceType)
  761. {
  762. case MAL_SZ_SOURCE_TYPE_CAB:
  763. type = 6;
  764. break;
  765. case MAL_SZ_SOURCE_TYPE_TER:
  766. type = 7;
  767. break;
  768. case MAL_SZ_SOURCE_TYPE_SAT:
  769. type = 8;
  770. break;
  771. default:
  772. type = 4;
  773. }
  774. type = 6;
  775. break;
  776. case MAL_SZ_SERVICE_TYPE_DATA_BROADCAST://DATA
  777. type = 9;
  778. break;
  779. case MAL_SZ_SERVICE_TYPE_ANALOG://ANALOG
  780. type = 10;
  781. break;
  782. default:
  783. type = 4;
  784. }
  785. errorCode=MAL_SZ_GetActiveService((mal_uint32)routeID, &masterServiceIndex);
  786. if(MAL_SZ_NO_ERROR == errorCode)
  787. {
  788. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SZ_GetActiveService - OK masterServiceIndex:%ld",__LINE__, masterServiceIndex);
  789. }
  790. else
  791. {
  792. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_GetActiveService:%d", __LINE__, errorCode);
  793. mJNI_FCT_END(__FUNCTION__);
  794. mJNI_RETURN NULL;
  795. }
  796. if(serviceDesc.serviceIndexInMList == masterServiceIndex)
  797. {
  798. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: serviceDesc.serviceIndexInMList = masterServiceIndex, before getCompCount function.",__LINE__);
  799. errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_AUDIO, &audioCount);
  800. if(MAL_SC_NO_ERROR == errorCodeSC)
  801. {
  802. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK audioCount:%d",__LINE__, audioCount);
  803. }
  804. else
  805. {
  806. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
  807. }
  808. errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_VIDEO,&videoCount);
  809. if(MAL_SC_NO_ERROR == errorCodeSC)
  810. {
  811. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK videoCount:%d",__LINE__, videoCount);
  812. }
  813. else
  814. {
  815. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
  816. }
  817. errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_SUB, &subCount);
  818. if(MAL_SC_NO_ERROR == errorCodeSC)
  819. {
  820. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK subCount:%d",__LINE__, subCount);
  821. }
  822. else
  823. {
  824. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
  825. }
  826. errorCodeSC = MAL_SC_GetCompCount((mal_uint32)routeID, MAL_SC_COMP_TYPE_TTX, &txtCount);
  827. if(MAL_SC_NO_ERROR == errorCodeSC)
  828. {
  829. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetCompCount - OK txtCount:%d",__LINE__, txtCount);
  830. }
  831. else
  832. {
  833. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetCompCount:%d", __LINE__, errorCode);
  834. }
  835. }
  836. objService = env->NewObject(clsService,midService,serviceDesc.serviceIndexInMList, utfArray, serviceDesc.scrambled, type, audioCount, videoCount, subCount, txtCount);
  837. mJNI_FCT_END(__FUNCTION__);
  838. mJNI_RETURN objService;
  839. }
  840.  
  841. /*
  842. * Class: com_comedia_javanative_JavaNative
  843. * Method: setCurrentServiceByIndex
  844. * Signature: (JII)Z
  845. */
  846. JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_setCurrentServiceByIndex
  847. (JNIEnv *env, jobject thiz, jlong routeID,jint listIndex, jint serviceIndex)
  848. {
  849. MAL_SZ_ServiceDesc serviceDesc;
  850. MAL_SZ_ErrorCode errorCode;
  851. MAL_SZ_ServiceDesc descriptor;
  852. mal_uint32 MLserviceIndex;
  853.  
  854. mJNI_FCT_ENTER(__FUNCTION__);
  855. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: routeID:%ld",__LINE__, (mal_uint32)routeID);
  856.  
  857. /* TO_DO */
  858. /* Implement this function */
  859.  
  860. if(routeID==NULL)
  861. {
  862. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  863. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  864. }
  865.  
  866. if(listIndex==NULL)
  867. {
  868. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  869. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  870. }
  871.  
  872. if(serviceIndex==NULL)
  873. {
  874. mJNI_TRACE(" ERROR JNI_ROUTE_CONTROL - line: %d: Java object is NULL", __LINE__);
  875. mJNI_RETURN (int)MAL_ROUTE_ERROR;
  876. }
  877.  
  878. errorCode = MAL_SZ_GetServiceDesc((mal_uint32)listIndex, (mal_uint32)serviceIndex, &descriptor);
  879. if(MAL_SC_NO_ERROR == errorCode)
  880. {
  881. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_GetServiceDesc - OK serviceIndex:%d",__LINE__, serviceIndex);
  882. }
  883. else
  884. {
  885. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_GetServiceDesc:%d", __LINE__, errorCode);
  886. }
  887.  
  888. errorCode = MAL_SZ_StartService((MAL_RouteID)routeID, (mal_uint32)descriptor.serviceIndexInMList);
  889. if(MAL_SC_NO_ERROR == errorCode)
  890. {
  891. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SC_StartService - OK serviceIndex:%d",__LINE__, serviceIndex);
  892. }
  893. else
  894. {
  895. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SC_StartService:%d", __LINE__, errorCode);
  896. }
  897.  
  898. mJNI_FCT_END(__FUNCTION__);
  899. mJNI_RETURN true;
  900. }
  901.  
  902. /*
  903. * Class: com_comedia_javanative_JavaNative
  904. * Method: getCurrentServiceIndex
  905. * Signature: (J)J
  906. */
  907. JNIEXPORT jlong JNICALL Java_com_comedia_javanative_JavaNative_getCurrentServiceIndex
  908. (JNIEnv *env, jobject thiz, jlong routeID)
  909. {
  910. mal_uint32 masterServiceIndex = 0;
  911. MAL_SZ_ErrorCode errorCode;
  912. mJNI_FCT_ENTER(__FUNCTION__);
  913. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: routeID:%ld",__LINE__, (mal_uint32)routeID);
  914. errorCode =MAL_SZ_GetActiveService((mal_uint32)routeID, &masterServiceIndex);
  915. if(MAL_SZ_NO_ERROR == errorCode)
  916. {
  917. mJNI_TRACE(" INFO JNI_SERVICE_CONTROL - line: %d: MAL_SZ_GetActiveService - OK masterServiceIndex:%ld",__LINE__, masterServiceIndex);
  918. }
  919. else
  920. {
  921. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_SZ_StopService:%d", __LINE__, errorCode);
  922. }
  923. mJNI_FCT_END(__FUNCTION__);
  924. mJNI_RETURN masterServiceIndex;
  925. }
  926.  
  927. /*
  928. * Class: com_comedia_javanative_JavaNative
  929. * Method: getServiceInfo
  930. * Signature: (II)Landroid/dtv/service/ServiceInfo;
  931. */
  932. JNIEXPORT jobject JNICALL Java_com_comedia_javanative_JavaNative_getServiceInfo
  933. (JNIEnv *env, jobject thiz, jint listIndex, jint serviceIndex)
  934. {
  935. MAL_EPG_ErrorCode errorCode;
  936. jclass clsEpgEvent;
  937. jmethodID midEpgEvent;
  938. jobject objEpgEvent;
  939. jobject objEpgEventNext;
  940. clsEpgEvent = env->FindClass(EPG_CLASS);
  941. midEpgEvent = env->GetMethodID(clsEpgEvent, "<init>", "([B[B[B[B[B[B[BII[B)V");
  942. jbyteArray temp = env->NewByteArray(2);
  943. env->SetByteArrayRegion(temp,0,2,(jbyte*)(" "));
  944. MAL_EPG_Event event;
  945. jbyteArray name;
  946. jbyteArray description;
  947. jbyteArray extendedDescription;
  948. jbyteArray startTimeString;
  949. jbyteArray endTimeString;
  950. jbyteArray durationString;
  951. jbyteArray genre;
  952. jbyteArray language;
  953. MAL_EPG_Event eventNext;
  954. jbyteArray nameNext;
  955. jbyteArray descriptionNext;
  956. jbyteArray extendedDescriptionNext;
  957. jbyteArray startTimeStringNext;
  958. jbyteArray endTimeStringNext;
  959. jbyteArray durationStringNext;
  960. jbyteArray genreNext;
  961. jbyteArray languageNext;
  962. jclass clsServiceInfo;
  963. jmethodID midServiceInfo;
  964. jobject objServiceInfo;
  965. clsServiceInfo = env->FindClass(SERVICE_INFO_CLASS);
  966. midServiceInfo = env->GetMethodID(clsServiceInfo, "<init>", "(IIIILjava/lang/String;Landroid/dtv/epg/EpgEvent;Landroid/dtv/epg/EpgEvent;)V");
  967.  
  968. mJNI_FCT_ENTER(__FUNCTION__);
  969.  
  970. memset(&event,0,sizeof(MAL_EPG_Event));
  971. memset(&eventNext,0,sizeof(MAL_EPG_Event));
  972.  
  973. //errorCode = MAL_EPG_GetPresentFollowing(clientHandleGlobal, MAL_EPG_PRESENT_EVENT, &event);
  974.  
  975. //if(MAL_EPG_NO_ERROR == errorCode)
  976. if(0)
  977. {
  978. 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);
  979. if(event.name)
  980. {
  981. name = env->NewByteArray( strlen(event.name)+1);
  982. env->SetByteArrayRegion(name,0,strlen(event.name)+1,(jbyte*)event.name);
  983. }else
  984. {
  985. name = env->NewByteArray(2);
  986. env->SetByteArrayRegion(name,0,2,(jbyte*)(" "));
  987. }
  988. if(event.description)
  989. {
  990. description = env->NewByteArray( strlen(event.description)+1);
  991. env->SetByteArrayRegion(description,0,strlen(event.description)+1,(jbyte*)event.description);
  992. }else
  993. {
  994. description = env->NewByteArray(2);
  995. env->SetByteArrayRegion(description,0,2,(jbyte*)(" "));
  996. }
  997. if(event.extendedDescription)
  998. {
  999. extendedDescription = env->NewByteArray( strlen(event.extendedDescription)+1);
  1000. env->SetByteArrayRegion(extendedDescription,0,strlen(event.extendedDescription)+1,(jbyte*)event.extendedDescription);
  1001. }else
  1002. {
  1003. extendedDescription = env->NewByteArray(2);
  1004. env->SetByteArrayRegion(extendedDescription,0,2,(jbyte*)(" "));
  1005. }
  1006. if(event.startTimeString)
  1007. {
  1008. startTimeString = env->NewByteArray( strlen(event.startTimeString)+1);
  1009. env->SetByteArrayRegion(startTimeString,0,strlen(event.startTimeString)+1,(jbyte*)event.startTimeString);
  1010. }else
  1011. {
  1012. startTimeString = env->NewByteArray(2);
  1013. env->SetByteArrayRegion(startTimeString,0,2,(jbyte*)(" "));
  1014. }
  1015. if(event.endTimeString)
  1016. {
  1017. endTimeString = env->NewByteArray( strlen(event.endTimeString)+1);
  1018. env->SetByteArrayRegion(endTimeString,0,strlen(event.endTimeString)+1,(jbyte*)event.endTimeString);
  1019. }else
  1020. {
  1021. endTimeString = env->NewByteArray(2);
  1022. env->SetByteArrayRegion(endTimeString,0,2,(jbyte*)(" "));
  1023. }
  1024. if(event.durationString)
  1025. {
  1026. durationString = env->NewByteArray( strlen(event.durationString)+1);
  1027. env->SetByteArrayRegion(durationString,0,strlen(event.durationString)+1,(jbyte*)event.durationString);
  1028. }else
  1029. {
  1030. durationString = env->NewByteArray(2);
  1031. env->SetByteArrayRegion(durationString,0,2,(jbyte*)(" "));
  1032. }
  1033. if(event.genre)
  1034. {
  1035. genre = env->NewByteArray( strlen(event.genre)+1);
  1036. env->SetByteArrayRegion(genre,0,strlen(event.genre)+1,(jbyte*)event.genre);
  1037. }else
  1038. {
  1039. genre = env->NewByteArray(2);
  1040. env->SetByteArrayRegion(genre,0,2,(jbyte*)(" "));
  1041. }
  1042. if(event.language)
  1043. {
  1044. language = env->NewByteArray( strlen(event.language)+1);
  1045. env->SetByteArrayRegion(language,0,strlen(event.language)+1,(jbyte*)event.language);
  1046. }else
  1047. {
  1048. language = env->NewByteArray(2);
  1049. env->SetByteArrayRegion(language,0,2,(jbyte*)(" "));
  1050. }
  1051. objEpgEvent = env->NewObject(clsEpgEvent,midEpgEvent, name, description, extendedDescription, startTimeString, endTimeString, durationString, genre, serviceIndex,event.parentalRate,language);
  1052. }
  1053. else
  1054. {
  1055. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_EPG_GetPresentFollowing:%d PRESENT EVENT", __LINE__, errorCode);
  1056. objEpgEvent = env->NewObject(clsEpgEvent,midEpgEvent, temp, temp, temp, temp, temp, temp, temp, serviceIndex,0,temp);
  1057. }
  1058. //errorCode = MAL_EPG_GetPresentFollowing(clientHandleGlobal, MAL_EPG_FOLLOWING_EVENT, &eventNext);
  1059.  
  1060. //if(MAL_EPG_NO_ERROR == errorCode)
  1061. if(0)
  1062. {
  1063. 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);
  1064. if(eventNext.name)
  1065. {
  1066. nameNext = env->NewByteArray(strlen(eventNext.name)+1);
  1067. env->SetByteArrayRegion(nameNext,0,strlen(eventNext.name)+1,(jbyte*)eventNext.name);
  1068. }else
  1069. {
  1070. nameNext = env->NewByteArray(2);
  1071. env->SetByteArrayRegion(nameNext,0,2,(jbyte*)(" "));
  1072. }
  1073. if(eventNext.description)
  1074. {
  1075. descriptionNext = env->NewByteArray( strlen(eventNext.description)+1);
  1076. env->SetByteArrayRegion(descriptionNext,0,strlen(eventNext.description)+1,(jbyte*)eventNext.description);
  1077. }else
  1078. {
  1079. descriptionNext = env->NewByteArray(2);
  1080. env->SetByteArrayRegion(descriptionNext,0,2,(jbyte*)(" "));
  1081. }
  1082. if(eventNext.extendedDescription)
  1083. {
  1084. extendedDescriptionNext = env->NewByteArray( strlen(eventNext.extendedDescription)+1);
  1085. env->SetByteArrayRegion(extendedDescriptionNext,0,strlen(eventNext.extendedDescription)+1,(jbyte*)eventNext.extendedDescription);
  1086. }else
  1087. {
  1088. extendedDescriptionNext = env->NewByteArray(2);
  1089. env->SetByteArrayRegion(extendedDescriptionNext,0,2,(jbyte*)(" "));
  1090. }
  1091. if(eventNext.startTimeString)
  1092. {
  1093. startTimeStringNext = env->NewByteArray( strlen(eventNext.startTimeString)+1);
  1094. env->SetByteArrayRegion(startTimeStringNext,0,strlen(eventNext.startTimeString)+1,(jbyte*)eventNext.startTimeString);
  1095. }else
  1096. {
  1097. startTimeStringNext = env->NewByteArray(2);
  1098. env->SetByteArrayRegion(startTimeStringNext,0,2,(jbyte*)(" "));
  1099. }
  1100. if(eventNext.endTimeString)
  1101. {
  1102. endTimeStringNext = env->NewByteArray( strlen(eventNext.endTimeString)+1);
  1103. env->SetByteArrayRegion(endTimeStringNext,0,strlen(eventNext.endTimeString)+1,(jbyte*)eventNext.endTimeString);
  1104. }else
  1105. {
  1106. endTimeStringNext = env->NewByteArray(2);
  1107. env->SetByteArrayRegion(endTimeStringNext,0,2,(jbyte*)(" "));
  1108. }
  1109. if(eventNext.durationString)
  1110. {
  1111. durationStringNext = env->NewByteArray( strlen(eventNext.durationString)+1);
  1112. env->SetByteArrayRegion(durationStringNext,0,strlen(eventNext.durationString)+1,(jbyte*)eventNext.durationString);
  1113. }else
  1114. {
  1115. durationStringNext = env->NewByteArray(2);
  1116. env->SetByteArrayRegion(durationStringNext,0,2,(jbyte*)(" "));
  1117. }
  1118. if(eventNext.genre)
  1119. {
  1120. genreNext = env->NewByteArray( strlen(eventNext.genre)+1);
  1121. env->SetByteArrayRegion(genreNext,0,strlen(eventNext.genre)+1,(jbyte*)eventNext.genre);
  1122. }else
  1123. {
  1124. genreNext = env->NewByteArray(2);
  1125. env->SetByteArrayRegion(genreNext,0,2,(jbyte*)(" "));
  1126. }
  1127. if(eventNext.language)
  1128. {
  1129. languageNext = env->NewByteArray( strlen(eventNext.language)+1);
  1130. env->SetByteArrayRegion(languageNext,0,strlen(eventNext.language)+1,(jbyte*)eventNext.language);
  1131. }else
  1132. {
  1133. languageNext = env->NewByteArray(2);
  1134. env->SetByteArrayRegion(languageNext,0,2,(jbyte*)(" "));
  1135. }
  1136. objEpgEventNext = env->NewObject(clsEpgEvent,midEpgEvent, nameNext, descriptionNext, extendedDescriptionNext, startTimeStringNext, endTimeStringNext, durationStringNext, genreNext,serviceIndex,eventNext.parentalRate,languageNext);
  1137. }
  1138. else
  1139. {
  1140. mJNI_TRACE(" ERROR JNI_SERVICE_CONTROL - line: %d: Error in MAL_EPG_GetPresentFollowing:%d FOLLOWING EVENT", __LINE__, errorCode);
  1141. objEpgEventNext = env->NewObject(clsEpgEvent,midEpgEvent, temp, temp, temp, temp, temp, temp, temp,serviceIndex,0,temp);
  1142. }
  1143. mJNI_FCT_END(__FUNCTION__);
  1144. mJNI_RETURN env->NewObject(clsServiceInfo,midServiceInfo, eventNext.serviceIndex, 0, 0, 0, env->NewStringUTF(""),objEpgEvent, objEpgEventNext);
  1145. }
  1146.  
  1147. /*
  1148. * Class: com_comedia_javanative_JavaNative
  1149. * Method: scanAll
  1150. * Signature: (J)Z
  1151. */
  1152. JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_scanAll
  1153. (JNIEnv *env, jobject thiz, jlong installRouteID)
  1154. {
  1155. MAL_TUNER_ErrorCode errorCodeTUNER;
  1156. MAL_EPG_ErrorCode errorCodeEPG;
  1157.  
  1158. mJNI_FCT_ENTER(__FUNCTION__);
  1159. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: installRouteID=%ld",__LINE__, (mal_uint32)installRouteID);
  1160. #ifdef PRODUCT_USE_EIT
  1161. errorCodeEPG = MAL_EPG_UnregisterClientCallback(clientHandleGlobal, epgEventCallback);
  1162. if(MAL_EPG_NO_ERROR == errorCodeEPG)
  1163. {
  1164. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_EPG_UnregisterClientCallback - OK",__LINE__);
  1165. }
  1166. else
  1167. {
  1168. mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_EPG_UnregisterClientCallback:%d", __LINE__, errorCodeEPG);
  1169. mJNI_FCT_END(__FUNCTION__);
  1170. mJNI_RETURN false ;
  1171. }
  1172. #endif
  1173. errorCodeTUNER= MAL_TUNER_AutoScan((mal_uint32)installRouteID);
  1174. if(MAL_TUNER_NO_ERROR == errorCodeTUNER)
  1175. {
  1176. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_AutoScan - OK",__LINE__);
  1177. mJNI_FCT_END(__FUNCTION__);
  1178. mJNI_RETURN true ;
  1179. }
  1180. else
  1181. {
  1182. mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_TUNER_AutoScan:%d", __LINE__, errorCodeTUNER);
  1183. mJNI_FCT_END(__FUNCTION__);
  1184. mJNI_RETURN false ;
  1185. }
  1186. }
  1187.  
  1188. /*
  1189. * Class: com_comedia_javanative_JavaNative
  1190. * Method: abortScan
  1191. * Signature: (J)Z
  1192. */
  1193.  
  1194. /* TO_DO */
  1195. /* Implement abort scan function */
  1196. JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_abortScan
  1197. (JNIEnv *env, jobject thiz, jlong installRouteID)
  1198. {
  1199. MAL_TUNER_ErrorCode errorCodeTUNER;
  1200. MAL_EPG_ErrorCode errorCodeEPG;
  1201.  
  1202. mJNI_FCT_ENTER(__FUNCTION__);
  1203. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: installRouteID=%ld",__LINE__, (mal_uint32)installRouteID);
  1204.  
  1205. errorCodeTUNER= MAL_TUNER_AbortScan((mal_uint32)installRouteID);
  1206. if(MAL_TUNER_NO_ERROR == errorCodeTUNER)
  1207. {
  1208. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_AutoScan - OK",__LINE__);
  1209. mJNI_FCT_END(__FUNCTION__);
  1210. mJNI_RETURN true ;
  1211. }
  1212. else
  1213. {
  1214. mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_TUNER_AutoScan:%d", __LINE__, errorCodeTUNER);
  1215. mJNI_FCT_END(__FUNCTION__);
  1216. mJNI_RETURN false ;
  1217. }
  1218.  
  1219. }
  1220.  
  1221. /*
  1222. * Class: com_comedia_javanative_JavaNative
  1223. * Method: initNative
  1224. * Signature: ()Z
  1225. */
  1226. JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_initNative
  1227. (JNIEnv *env, jobject thiz)
  1228. {
  1229. MAL_ErrorCode errorCodeMAL;
  1230. MAL_TUNER_ErrorCode errorCodeTUNER;
  1231. MAL_SZ_ErrorCode errorCodeSZ;
  1232. MAL_SC_ErrorCode errorCodeSC;
  1233.  
  1234. mJNI_FCT_ENTER(__FUNCTION__);
  1235. errorCodeMAL = MAL_Init();
  1236. if(MAL_NO_ERROR == errorCodeMAL)
  1237. {
  1238. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_Init - OK",__LINE__);
  1239. }
  1240. else
  1241. {
  1242. mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_Init:%d", __LINE__, errorCodeMAL);
  1243. mJNI_FCT_END(__FUNCTION__);
  1244. mJNI_RETURN false;
  1245. }
  1246.  
  1247. errorCodeTUNER = MAL_TUNER_RegisterStatusCallback(scanStatusCallback);
  1248. if(MAL_TUNER_NO_ERROR == errorCodeTUNER)
  1249. {
  1250. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_RegisterStatusCallback - OK",__LINE__);
  1251. }
  1252. else
  1253. {
  1254. mJNI_TRACE(" ERROR JNI_SCAN_CONTROL - line: %d: Error in MAL_TUNER_RegisterStatusCallback:%d", __LINE__, errorCodeTUNER);
  1255. }
  1256.  
  1257. errorCodeSZ = MAL_SZ_RegisterCallback(zappCallback);
  1258. if(MAL_SZ_NO_ERROR == errorCodeSZ)
  1259. {
  1260. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_RegisterCallback - OK",__LINE__);
  1261. }
  1262. else
  1263. {
  1264. mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SZ_RegisterCallback:%d", __LINE__, errorCodeSZ);
  1265. mJNI_FCT_END(__FUNCTION__);
  1266. mJNI_RETURN false;
  1267. }
  1268. errorCodeSC = MAL_SC_RegisterStatusCallback(selectComponentCallback);
  1269. if(MAL_SC_NO_ERROR == errorCodeSC)
  1270. {
  1271. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SC_RegisterStatusCallback - OK",__LINE__);
  1272. }
  1273. else
  1274. {
  1275. mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SC_RegisterStatusCallback:%d", __LINE__, errorCodeSC);
  1276. }
  1277.  
  1278. mJNI_FCT_END(__FUNCTION__);
  1279. mJNI_RETURN true;
  1280. }
  1281.  
  1282. /*
  1283. * Class: com_comedia_javanative_JavaNative
  1284. * Method: deinitNative
  1285. * Signature: ()Z
  1286. */
  1287. JNIEXPORT jboolean JNICALL Java_com_comedia_javanative_JavaNative_deinitNative
  1288. (JNIEnv *env, jobject thiz)
  1289. {
  1290. MAL_ErrorCode errorCodeMAL;
  1291. bool ret = false;
  1292. mJNI_FCT_ENTER(__FUNCTION__);
  1293. errorCodeMAL = MAL_Terminate();
  1294. if(MAL_NO_ERROR == errorCodeMAL)
  1295. {
  1296. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_Terminate - OK",__LINE__);
  1297. ret = true;
  1298. }
  1299. else
  1300. {
  1301. mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_Terminate:%d", __LINE__, errorCodeMAL);
  1302. ret = false;
  1303. }
  1304. mJNI_FCT_END(__FUNCTION__);
  1305.  
  1306. mJNI_RETURN ret;
  1307. }
  1308.  
  1309. void scanStatusCallback(MAL_TUNER_CallbackMessage* user_data, MAL_TUNER_Events event)
  1310. {
  1311. mJNI_FCT_ENTER(__FUNCTION__);
  1312. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: event=%d",__LINE__, event);
  1313. MAL_EPG_ErrorCode errorCode;
  1314. switch(event)
  1315. {
  1316. case MAL_TUNER_EVENT_INSTALL_STATE_OK:
  1317. break;
  1318. case MAL_TUNER_EVENT_INSTALL_STATE_ERROR:
  1319. break;
  1320. case MAL_TUNER_EVENT_INSTALL_TS_INFO_FREQUENCY:
  1321. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_TS_INFO_FREQUENCY=%d",__LINE__, user_data->signal);
  1322. sendCallback(SCAN_TS_INFO_FREQUENCY, user_data->signal);
  1323. break;
  1324. case MAL_TUNER_EVENT_INSTALL_COMPLETE:
  1325. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_COMPLETE",__LINE__);
  1326. sendCallback(SCAN_COMPLETE, 100);
  1327. break;
  1328. case MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NAME:
  1329. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NAME:%s",__LINE__,user_data->service_name);
  1330. sendStringCallback(SCAN_SERVICE_TV_NAME, strlen(user_data->service_name), user_data->service_name);
  1331. break;
  1332. case MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NAME:
  1333. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NAME:%s",__LINE__,user_data->service_name);
  1334. sendStringCallback(SCAN_SERVICE_RADIO_NAME, strlen(user_data->service_name), user_data->service_name);
  1335. break;
  1336. case MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NUMBER:
  1337. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_TV_NUMBER:%d",__LINE__,user_data->service_num);
  1338. sendCallback(SCAN_SERVICE_TV_NUMBER, user_data->service_num);
  1339. break;
  1340. case MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NUMBER:
  1341. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_NUMBER:%d",__LINE__,user_data->service_num);
  1342. sendCallback(SCAN_SERVICE_RADIO_NUMBER, user_data->service_num);
  1343. break;
  1344. case MAL_TUNER_EVENT_INSTALL_SERVICE_TV_AK:
  1345. break;
  1346. case MAL_TUNER_EVENT_INSTALL_SERVICE_RADIO_AK:
  1347. break;
  1348. case MAL_TUNER_EVENT_INSTALL_SERVICE_ADDED:
  1349. break;
  1350. case MAL_TUNER_EVENT_INSTALL_SERVICE_ERROR:
  1351. break;
  1352. case MAL_TUNER_EVENT_TRIGGER_STATE_OK:
  1353. break;
  1354. case MAL_TUNER_EVENT_TRIGGER_STATE_ERROR:
  1355. break;
  1356. case MAL_TUNER_EVENT_INSTALL_PROGRESS:
  1357. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_PROGRESS:%d",__LINE__,user_data->install);
  1358. sendCallback(SCAN_PROGRESS, user_data->install);
  1359. break;
  1360. case MAL_TUNER_EVENT_INSTALL_SIGNAL_LEVEL:
  1361. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SIGNAL_LEVEL:%d",__LINE__,user_data->signal);
  1362. sendCallback(SCAN_SIGNAL_LEVEL, user_data->signal);
  1363. break;
  1364. case MAL_TUNER_EVENT_INSTALL_SIGNAL_QUALITY:
  1365. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SIGNAL_QUALITY:%d",__LINE__,user_data->signal);
  1366. sendCallback(SCAN_SIGNAL_QUALITY, user_data->signal);
  1367. break;
  1368. case MAL_TUNER_EVENT_INSTALL_SIGNAL_BER:
  1369. mJNI_TRACE(" INFO JNI_SCAN_CONTROL - line: %d: MAL_TUNER_EVENT_INSTALL_SIGNAL_BER:%d",__LINE__,user_data->signal);
  1370. sendCallback(SCAN_SIGNAL_BER, user_data->signal);
  1371. break;
  1372. default:;
  1373. }
  1374. mJNI_FCT_END(__FUNCTION__);
  1375.  
  1376. mJNI_RETURN;
  1377. }
  1378.  
  1379. void zappCallback(void* userData, MAL_SZ_EventType event)
  1380. {
  1381. mJNI_FCT_ENTER(__FUNCTION__);
  1382.  
  1383. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: event=%d routeID=%ld",__LINE__, event,*((mal_uint32 *)userData));
  1384.  
  1385. if(event == MAL_SZ_EVENT_SERVICE_STOPPED)
  1386. {
  1387. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_SERVICE_STOPPED send callback",__LINE__);
  1388. sendCallback(ZAPPING, event);
  1389. }
  1390. else if(event == MAL_SZ_EVENT_CHANNEL_CHANGE_FAIL)
  1391. {
  1392. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_CHANNEL_CHANGE_FAIL send callback",__LINE__);
  1393. sendCallback(ZAPPING, event);
  1394. }
  1395. else if(event == MAL_SZ_EVENT_CHANNEL_CHANGE_SUCCESS)
  1396. {
  1397. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_CHANNEL_CHANGE_SUCCESS",__LINE__);
  1398.  
  1399. mal_uint32 masterServiceIndex = 0;
  1400. MAL_SZ_ErrorCode errorCode;
  1401. MAL_SZ_ServiceDesc serviceDesc;
  1402.  
  1403. errorCode =MAL_SZ_GetActiveService(*((mal_uint32 *)userData), &masterServiceIndex);
  1404. if(MAL_SZ_NO_ERROR == errorCode)
  1405. {
  1406. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_GetActiveService - OK masterServiceIndex:%ld",__LINE__, masterServiceIndex);
  1407. }
  1408. else
  1409. {
  1410. mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SZ_GetActiveService:%d", __LINE__, errorCode);
  1411. mJNI_FCT_END(__FUNCTION__);
  1412.  
  1413. mJNI_RETURN;
  1414. }
  1415.  
  1416. memset(&serviceDesc,0,sizeof(MAL_SZ_ServiceDesc));
  1417. errorCode=MAL_SZ_GetServiceDesc(0, masterServiceIndex,&serviceDesc);
  1418.  
  1419. if(MAL_SZ_NO_ERROR == errorCode)
  1420. {
  1421. 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);
  1422. }
  1423. else
  1424. {
  1425. mJNI_TRACE(" ERROR JNI_SERVICE_LISTS_CONTROL - line: %d: Error in MAL_SZ_GetServiceDesc:%d", __LINE__, errorCode);
  1426. mJNI_FCT_END(__FUNCTION__);
  1427. mJNI_RETURN;
  1428. }
  1429.  
  1430. if(serviceDesc.scrambled==true)
  1431. {
  1432. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: Service is scrambled send callback",__LINE__);
  1433. sendCallback(ZAPPING, event);
  1434. }
  1435. else
  1436. {
  1437. if(serviceDesc.serviceType==MAL_SZ_SERVICE_TYPE_DIG_RAD ||
  1438. serviceDesc.serviceType==MAL_SZ_SERVICE_TYPE_ADV_CODEC_DIG_RAD ||
  1439. serviceDesc.serviceType==MAL_SZ_SERVICE_TYPE_DATA_BROADCAST)
  1440. {
  1441. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: Service is RADIO or DATA send callback",__LINE__);
  1442. sendCallback(ZAPPING, event);
  1443. }
  1444. }
  1445. }
  1446. else if(event == MAL_SZ_EVENT_SIGNAL_LOST)
  1447. {
  1448. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_SIGNAL_LOST send callback",__LINE__);
  1449. sendCallback(ANTENNA_CONNECTED, 0);
  1450. }
  1451. else if(event == MAL_SZ_EVENT_SIGNAL_OK)
  1452. {
  1453. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: MAL_SZ_EVENT_SIGNAL_OK send callback",__LINE__);
  1454. sendCallback(ANTENNA_CONNECTED, 1);
  1455. }
  1456.  
  1457. mJNI_FCT_END(__FUNCTION__);
  1458.  
  1459. mJNI_RETURN;
  1460. }
  1461.  
  1462. void selectComponentCallback(void *user, MAL_SC_CompChangedEvent event)
  1463. {
  1464. mJNI_FCT_ENTER(__FUNCTION__);
  1465.  
  1466. if(event==MAL_SC_COMP_AVAILABILITY_CHANGED)
  1467. {
  1468. mJNI_TRACE(" INFO JNI_SERVICE_LISTS_CONTROL - line: %d: event=%d user=%d",__LINE__, event,(mal_bool)user);
  1469. sendCallback(MHEG_STARTED,(mal_bool)user);
  1470. }
  1471.  
  1472. mJNI_FCT_END(__FUNCTION__);
  1473.  
  1474. mJNI_RETURN;
  1475. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement