13ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
23ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
33ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * Copyright 2001-2011 Texas Instruments, Inc. - http://www.ti.com/
43ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
53ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License");
63ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * you may not use this file except in compliance with the License.
73ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * You may obtain a copy of the License at
83ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
93ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *     http://www.apache.org/licenses/LICENSE-2.0
103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software
123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS,
133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * See the License for the specific language governing permissions and
153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * limitations under the License.
163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru */
173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include "android_runtime/AndroidRuntime.h"
193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include "jni.h"
203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include "JNIHelp.h"
213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include "v4l2_JbtlLog.h"
223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include "JFmTxNative.h"
233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <stdlib.h>
253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define LOG_TAG "JFmTxNative"
273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <cutils/properties.h>
283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruusing namespace android;
303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int radio_fd;
313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruextern long jContext;
323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#undef VIDIOC_S_MODULATOR
343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define VIDIOC_S_MODULATOR    1078220343
353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruextern "C" {
373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <stdio.h>
383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <fcntl.h>
393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <asoundlib.h>
403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <linux/videodev.h>
413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <math.h>
423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <pthread.h>
433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <errno.h>
443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include <string.h>
453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruvoid nativeJFmTx_Callback(long context, int status,
473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                        int command, long value);
483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruextern void MCP_HAL_LOG_EnableLogToAndroid(const char *app_name);
493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru} //extern "C"
513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jclass _sJClass;
533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic JavaVM *g_jVM = NULL;
543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdEnable;
563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdDisable;
573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdDestroy;
583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdTune;
593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetTunedFrequency;
603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdStartTransmission;
613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdStopTransmission;
623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdEnableRds;
633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdDisableRds;
643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsTextRtMsg;
653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsTextPsMsg;
663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsTransmissionMode;
683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru//  static jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsTransmissionMode;
693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsTrafficCodes;
703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsTrafficCodes;
713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsTextPsMsg;
723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsTextRtMsg;
733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdWriteRdsRawData;
743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdReadRdsRawData;
753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdChangeAudioSource;
763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetInterruptMask;
783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetMonoStereoMode;
793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetMonoStereoMode;
803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetPowerLevel;
813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetPowerLevel;
823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetMuteMode;
833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetMuteMode;
843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsAfCode;
853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsAfCode;
863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsPiCode;
873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsPiCode;
883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsPtyCode;
893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsPtyCode;
903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsTextRepertoire;
913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsTextRepertoire;
923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsPsDispalyMode;
933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsPsDispalyMode;
943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsPsDisplaySpeed;
953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsPsDisplaySpeed;
963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsTransmittedMask;
973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsTransmittedMask;
983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsMusicSpeechFlag  ;
993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsMusicSpeechFlag  ;
1003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetPreEmphasisFilter;
1013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetPreEmphasisFilter;
1023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdSetRdsExtendedCountryCode;
1033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdGetRdsExtendedCountryCode;
1043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jmethodID _sMethodId_nativeCb_fmTxCmdChangeDigitalAudioConfiguration;
1053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruint fm_read_transmitter_capabilities(int radio_fd)
1093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
1103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  struct v4l2_capability cap;
1113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  int res;
1123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  res = ioctl(radio_fd,VIDIOC_QUERYCAP,&cap);
1143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  if(res < 0)
1153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  {
1163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("Failed to read %s capabilities\n",DEFAULT_RADIO_DEVICE);
1173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return FM_FAILED;
1183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  }
1193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  if((cap.capabilities & V4L2_CAP_RADIO) == 0)
1203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  {
1213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("%s is not radio devcie",DEFAULT_RADIO_DEVICE);
1223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return FM_FAILED;
1233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  }
1243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  V4L2_JBTL_LOGD("\n***%s Info ****\n",DEFAULT_RADIO_DEVICE);
1253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  V4L2_JBTL_LOGD("Driver       : %s\n",cap.driver);
1263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  V4L2_JBTL_LOGD("Card         : %s\n",cap.card);
1273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  V4L2_JBTL_LOGD("Bus          : %s\n",cap.bus_info);
1283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  V4L2_JBTL_LOGD("Capabilities : 0x%x\n",cap.capabilities);
1293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  return FM_SUCCESS;
1313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
1323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_Create(JNIEnv *env,jobject obj,jobject jContextValue)
1343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
1353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    int fmStatus ;
1363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("Java_JFmRx_nativeJFmRx_Create(): Entered");
1383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   radio_fd = open(DEFAULT_RADIO_DEVICE, O_RDWR);
1403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   if(radio_fd < 0)
1413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   {
1423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru       V4L2_JBTL_LOGD("Unable to open %s ..\n",DEFAULT_RADIO_DEVICE);
1433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      jniThrowIOException(env, errno);
1443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru       return FM_FAILED;
1453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   }
1463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   fmStatus = fm_read_transmitter_capabilities(radio_fd);
1483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   if(fmStatus< 0)
1493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   {
1503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru     close(radio_fd);
1513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru     return fmStatus;
1523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   }
1533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmRx_create:Exiting Successfully");
1553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return fmStatus;
1573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
1583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
1593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic jint nativeJFmTx_Destroy(JNIEnv *env, jobject obj,jlong jContextValue)
1613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
1623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
1643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
1663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_Enable(JNIEnv *env, jobject obj, jlong jContextValue)
1703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
1713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   int  status ;
1723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   struct v4l2_modulator vm;
1733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("nativeJFmRx_enable(): Entered");
1753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   jContext = jContextValue;
1773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   vm.index = 0;
1783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   status = ioctl(radio_fd, VIDIOC_S_MODULATOR, &vm);
1803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   if(status < 0)
1813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   {
1823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru     V4L2_JBTL_LOGD("Failed to Enable FM\n");
1833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru     return status;
1843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   }
1853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("nativeJFmRx_enable: FM_RX_Enable() returned %d",(int)status);
1873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   nativeJFmTx_Callback(jContext,status,FM_TX_CMD_ENABLE,status);
1883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("nativeJFmRx_enable(): Exit");
1893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   return status;
1913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
1923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_Disable(JNIEnv *env, jobject obj, jlong jContextValue)
1953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
1963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_disable(): Entered");
1973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   jContext = jContextValue;
1993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    close(radio_fd);
2003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    nativeJFmTx_Callback(jContext,0,FM_TX_CMD_DISABLE,0);
2013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_disable(): Exit");;
2033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return FM_SUCCESS;
2053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
2063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_Tune(JNIEnv *env, jobject obj,jlong jContextValue,jlong user_freq)
2093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
2103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    struct v4l2_frequency vf;
2113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    struct v4l2_tuner vt;
2123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    int status, div;
2133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmRx_tune(): Entered");
2153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vf.tuner = 0;
2173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vf.frequency = rint(user_freq * 16 + 0.5);
2183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    status = ioctl(radio_fd, VIDIOC_S_FREQUENCY, &vf);
2203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    if(status < 0)
2213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {
2223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        V4L2_JBTL_LOGD("Failed to tune to frequency %d\n",user_freq);
2233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        return FM_FAILED;
2243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
2253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("Tuned to frequency %2.1f MHz\n",user_freq);
2263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   jContext = jContextValue;
2283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste QuerunativeJFmTx_Callback(jContext,status,FM_TX_CMD_TUNE,user_freq);
2293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmRx_Tune(): Exit");
2313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru     return FM_PENDING;
2323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
2343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetTunedFrequency(JNIEnv *env, jobject obj,jlong jContextValue)
2363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
2373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
2383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
2403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_StartTransmission(JNIEnv *env, jobject obj, jlong jContextValue)
2413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
2423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("nativeJFmRx_enable(): Init");
2433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   jContext = jContextValue;
2443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   nativeJFmTx_Callback(jContext,0,FM_TX_CMD_START_TRANSMISSION,0);
2453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("nativeJFmRx_enable(): Exit");
2463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
2483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
2503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_StopTransmission(JNIEnv *env, jobject obj, jlong jContextValue)
2523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
2533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("nativeJFmRx_enable(): Init");
2543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   jContext = jContextValue;
2553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   nativeJFmTx_Callback(jContext,0,FM_TX_CMD_STOP_TRANSMISSION,0);
2563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   V4L2_JBTL_LOGD("nativeJFmRx_enable(): Exit");
2573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
2583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
2603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_EnableRds(JNIEnv *env, jobject obj, jlong jContextValue)
2633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
2643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  struct v4l2_modulator vmod;
2653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  int ret;
2663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  V4L2_JBTL_LOGD("nativeJFmTx_EnableRds(): Init");
2683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  vmod.index = 0;
2693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  ret = ioctl(radio_fd, VIDIOC_G_MODULATOR, &vmod);
2703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  if(ret < 0)
2713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  {
2723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      printf("Failed to get TX mode\n");
2733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      return -1;
2743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  }
2753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  vmod.txsubchans = vmod.txsubchans | V4L2_TUNER_SUB_RDS;
2763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  ret = ioctl(radio_fd, VIDIOC_S_MODULATOR, &vmod);
2783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  if(ret < 0)
2793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  {
2803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      printf("Failed to set TX mode\n");
2813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      return -1;
2823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  }
2833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   jContext = jContextValue;
2853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  nativeJFmTx_Callback(jContext,0,FM_TX_CMD_ENABLE_RDS,0);
2863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_EnableRds(): Exit");;
2883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
2903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
2923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_DisableRds(JNIEnv *env, jobject obj, jlong jContextValue)
2953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
2963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  struct v4l2_modulator vmod;
2973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  int ret;
2983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  V4L2_JBTL_LOGD("nativeJFmTx_DisableRds(): Init");
3003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  vmod.index = 0;
3013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  ret = ioctl(radio_fd, VIDIOC_G_MODULATOR, &vmod);
3023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  if(ret < 0)
3033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  {
3043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      printf("Failed to get TX mode\n");
3053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      return -1;
3063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  }
3073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  vmod.txsubchans = vmod.txsubchans & ~V4L2_TUNER_SUB_RDS;
3083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  ret = ioctl(radio_fd, VIDIOC_S_MODULATOR, &vmod);
3103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  if(ret < 0)
3113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  {
3123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      printf("Failed to set TX mode\n");
3133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru      return -1;
3143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  }
3153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  jContext = jContextValue;
3173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  nativeJFmTx_Callback(jContext,0,FM_TX_CMD_DISABLE_RDS,0);
3183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_DisableRds(): Exit");;
3203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
3223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
3233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsTransmissionMode(JNIEnv *env, jobject obj, jlong jContextValue,jint mode)
3253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
3263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
3281a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTransmissionMode(): Entered");
3293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_SetRdsTransmissionMode(fmTxContext,(FmTxRdsTransmissionMode)mode);
3311a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTransmissionMode: FM_TX_SetRdsTransmissionMode() returned %d",(int)status);
3323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
3331a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTransmissionMode(): Exit");
3343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return 0;
3353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
3363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
3383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsTransmissionMode(JNIEnv *env, jobject obj, jlong jContextValue)
3393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
3403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
3421a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTransmissionMode(): Entered");
3433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsTransmissionMode(fmTxContext);
3451a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTransmissionMode: FM_TX_GetRdsTransmissionMode() returned %d",(int)status);
3463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3471a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTransmissionMode(): Exit");
3483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
3493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
3503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
3523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsTextPsMsg(JNIEnv *env, jobject obj, jlong jContextValue,jstring psString,jint length)
3533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
3543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
3563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    const char *psStr = (char*) env->GetStringUTFChars(psString, &iscopy);
3573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3581a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTextPsMsg(): Entered");
3591a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTextPsMsg():--> psStr= %s",psStr);
3603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_SetRdsTextPsMsg(fmTxContext,(const FMC_U8 *)psStr,(FMC_UINT)length);
3621a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTextPsMsg: FM_TX_SetRdsTextPsMsg() returned %d",(int)status);
3633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
3643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    struct v4l2_ext_controls_kfmapp vec;
3653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    struct v4l2_ext_control_kfmapp vctrls;
3663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        jboolean iscopy;
3673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    int res;
3683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    char rds_text[100];
3693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vec.ctrl_class = V4L2_CTRL_CLASS_FM_TX;
3713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vec.count = 1;
3723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vctrls.id = V4L2_CID_RDS_TX_PS_NAME;
3733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vctrls.string = (char*) env->GetStringUTFChars(psString, &iscopy);
3743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vctrls.size = strlen(rds_text) + 1;
3753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vec.controls = &vctrls;
3763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3771a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGE("Entered RDS  PS Name is - %s\n",vctrls.string);
3783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    res = ioctl(radio_fd, VIDIOC_S_EXT_CTRLS, &vec);
3793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    if(res < 0)
3803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {
3811a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru        ALOGE("Failed to set FM Tx RDS Radio PS Name\n");
3823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        return res;
3833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
3843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3851a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTextPsMsg(): Exit");
3863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return res;
3883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
3893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
3903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsTextPsMsg(JNIEnv *env, jobject obj, jlong jContextValue)
3913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
3923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
3941a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTextPsMsg(): Entered");
3953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsTextPsMsg(fmTxContext);
3971a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTextPsMsg: FM_TX_GetRdsTextPsMsg() returned %d",(int)status);
3983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
3991a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTextPsMsg(): Exit");
4003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
4023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
4033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_WriteRdsRawData(JNIEnv *env, jobject obj, jlong jContextValue,jstring msg,jint length)
4053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
4063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
4081a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_WriteRdsRawData(): Entered");
4093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    jboolean iscopy;
4113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    const char *rawData = (char*) env->GetStringUTFChars(msg, &iscopy);
4123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_WriteRdsRawData(fmTxContext,(const FMC_U8 *)rawData,(FMC_UINT)length);
4151a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_WriteRdsRawData: FM_TX_WriteRdsRawData() returned %d",(int)status);
4163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4171a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_WriteRdsRawData(): Exit");
4183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
4193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
4203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_ReadRdsRawData(JNIEnv *env, jobject obj, jlong jContextValue)
4233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
4243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
4261a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_ReadRdsRawData(): Entered");
4273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_ReadRdsRawData(fmTxContext);
4291a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_ReadRdsRawData: FM_TX_ReadRdsRawData() returned %d",(int)status);
4303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4311a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_ReadRdsRawData(): Exit");
4323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
4333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
4343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
4353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetMuteMode(JNIEnv *env, jobject obj, jlong jContextValue,jint mode)
4363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
4373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   struct v4l2_control vt;
4393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   int status;
4403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4411a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru   ALOGD("nativeJFmTx_SetMuteMode(): Entered");
4423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   vt.id = V4L2_CID_AUDIO_MUTE;
4433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   if (mode == 0)
4453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru       vt.value = FM_MUTE_OFF;
4463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   else
4473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vt.value = FM_MUTE_ON;
4483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   status = ioctl(radio_fd,VIDIOC_S_CTRL,&vt);
4503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   if(status < 0)
4513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   {
4521a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru     ALOGD("nativeJFmTx_SetMuteMode(): Faile returned %d\n", status);
4533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru     return status;
4543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   }
4553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4561a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetMuteMode(): Exit");
4573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
4583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
4593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetMuteMode(JNIEnv *env, jobject obj, jlong jContextValue)
4613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
4621a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetMuteMode(): Entered");
4633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4641a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetMuteMode(): Exit");
4653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return 0;
4663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
4673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
4683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsPsDisplayMode(JNIEnv *env, jobject obj, jlong jContextValue, jint displayMode)
4693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
4703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
4721a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsPsDisplayMode(): Entered");
4733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_SetRdsPsDisplayMode(fmTxContext,(FmcRdsPsDisplayMode)displayMode);
4751a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsPsDisplayMode: FM_TX_SetRdsPsDisplayMode() returned %d",(int)status);
4763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4771a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsPsDisplayMode(): Exit");
4783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
4793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
4803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsPsDisplayMode(JNIEnv *env, jobject obj, jlong jContextValue)
4833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
4843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
4861a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsPsDisplayMode(): Entered");
4873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsPsDisplayMode(fmTxContext);
4891a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsPsDisplayMode: FM_TX_GetRdsPsDisplayMode() returned %d",(int)status);
4903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4911a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsPsDisplayMode(): Exit");
4923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
4933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
4943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
4963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsTextRtMsg(JNIEnv *env, jobject obj, jlong jContextValue, jint msgType,jstring msg,jint length)
4973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
4983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
4993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru //   FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
5003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    jboolean iscopy;
5023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    const char *rtMsg = (char*) env->GetStringUTFChars(msg, &iscopy);
5033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    struct v4l2_ext_controls_kfmapp vec;
5043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    struct v4l2_ext_control_kfmapp vctrls;
5053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    int res;
5063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    char rds_text[100];
5073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5081a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTextRtMsg(): Entered");
5093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vec.ctrl_class = V4L2_CTRL_CLASS_FM_TX;
5123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vec.count = 1;
5133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vctrls.id = V4L2_CID_RDS_TX_RADIO_TEXT;
5143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vctrls.string = (char*) env->GetStringUTFChars(msg, &iscopy);
5153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vctrls.size = strlen(rtMsg) + 1;
5163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    vec.controls = &vctrls;
5173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5181a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTextRtMsg():--> RTMsg = %s",vctrls.string);
5193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    res = ioctl(radio_fd, VIDIOC_S_EXT_CTRLS, &vec);
5203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    if(res < 0)
5213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {
5221a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru            ALOGE("Failed to set FM Tx RDS Radio text");
5233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        return res;
5243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
5253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    //    FmTxStatus  status =FM_TX_SetRdsTextRtMsg(fmTxContext,(FmcRdsRtMsgType)msgType,(const FMC_U8 *)rtMsg,(FMC_UINT)length);
5271a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    //    ALOGD("nativeJFmTx_SetRdsTextRtMsg: FM_TX_SetRdsTextRtMsg() returned %d",(int)status);
5283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5291a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTextRtMsg(): Exit");
5303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return 0;
5313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
5323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
5343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsTextRtMsg(JNIEnv *env, jobject obj, jlong jContextValue)
5353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
5363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
5381a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTextRtMsg(): Entered");
5393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsTextRtMsg(fmTxContext);
5401a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTextRtMsg: FM_TX_SetRdsTextRtMsg() returned %d",(int)status);
5413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5421a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTextRtMsg(): Exit");
5433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
5443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
5453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
5473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsTransmittedGroupsMask(JNIEnv *env, jobject obj, jlong jContextValue, jlong fieldMask)
5483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
5493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
5511a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTransmittedGroupsMask(): Entered");
5523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_SetRdsTransmittedGroupsMask(fmTxContext,(FmTxRdsTransmittedGroupsMask)fieldMask);
5541a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTransmittedGroupsMask: FM_TX_SetRdsTransmittedGroupsMask() returned %d",(int)status);
5553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
5561a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTransmittedGroupsMask(): Exit");
5573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return 0;
5583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
5593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
5613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsTransmittedGroupsMask(JNIEnv *env, jobject obj, jlong jContextValue)
5623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
5633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
5651a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTransmittedGroupsMask(): Entered");
5663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsTransmittedGroupsMask(fmTxContext);
5681a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTransmittedGroupsMask: FM_TX_GetRdsTransmittedGroupsMask() returned %d",(int)status);
5693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5701a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTransmittedGroupsMask(): Exit");
5713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
5723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
5733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsTrafficCodes(JNIEnv *env, jobject obj, jlong jContextValue, jint taCode,jint tpCode)
5753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
5763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
5781a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTrafficCodes(): Entered");
5793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_SetRdsTrafficCodes(fmTxContext,(FmcRdsTaCode)taCode,(FmcRdsTpCode)tpCode);
5811a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTrafficCodes: FM_TX_SetRdsTrafficCodes() returned %d",(int)status);
5823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5831a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsTrafficCodes(): Exit");
5843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
5853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
5863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsTrafficCodes(JNIEnv *env, jobject obj, jlong jContextValue)
5883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
5893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
5911a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTrafficCodes(): Entered");
5923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsTrafficCodes(fmTxContext);
5941a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTrafficCodes: FM_TX_GetRdsTrafficCodes() returned %d",(int)status);
5953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
5961a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsTrafficCodes(): Exit");
5973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
5983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
5993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsMusicSpeechFlag(JNIEnv *env, jobject obj, jlong jContextValue, jint musicSpeechFlag)
6013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
6041a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsMusicSpeechFlag(): Entered");
6053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_SetRdsMusicSpeechFlag(fmTxContext,(FmcRdsMusicSpeechFlag)musicSpeechFlag);
6071a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsMusicSpeechFlag: FM_TX_SetRdsMusicSpeechFlag() returned %d",(int)status);
6083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6091a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsMusicSpeechFlag(): Exit");
6103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
6113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsMusicSpeechFlag(JNIEnv *env, jobject obj, jlong jContextValue)
6153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
6181a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsMusicSpeechFlag(): Entered");
6193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsMusicSpeechFlag(fmTxContext);
6211a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsMusicSpeechFlag: FM_TX_GetRdsMusicSpeechFlag() returned %d",(int)status);
6223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6231a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsMusicSpeechFlag(): Exit");
6243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
6253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsExtendedCountryCode(JNIEnv *env, jobject obj, jlong jContextValue, jint ecc)
6283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
6311a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsExtendedCountryCode(): Entered");
6323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_SetRdsECC(fmTxContext,(FmcRdsExtendedCountryCode)ecc);
6341a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsExtendedCountryCode: FM_TX_SetRdsECC() returned %d",(int)status);
6353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6361a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsExtendedCountryCode(): Exit");
6373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
6383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsExtendedCountryCode(JNIEnv *env, jobject obj, jlong jContextValue)
6413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
6441a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsExtendedCountryCode(): Entered");
6453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_GetRdsECC(fmTxContext);
6471a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsExtendedCountryCode: FM_TX_GetRdsECC() returned %d",(int)status);
6483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6491a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_GetRdsExtendedCountryCode(): Exit");
6503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
6513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_ChangeAudioSource(JNIEnv *env, jobject obj, jlong jContextValue,jint txSource,jint eSampleFreq)
6543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxContext * fmTxContext = (FmTxContext *)jContextValue;
6571a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_ChangeAudioSource(): Entered");
6583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6591a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD(" txSource = %d , Sampling frequency = %d ",(int) txSource, (int) eSampleFreq);
6603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    FmTxStatus  status =FM_TX_ChangeAudioSource(fmTxContext,(FmTxAudioSource)txSource,(ECAL_SampleFrequency)eSampleFreq);
6611a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_ChangeAudioSource: FM_TX_ChangeAudioSource() returned %d",(int)status);
6623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6631a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_ChangeAudioSource(): Exit");
6643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return status;
6653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
6673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_ChangeDigitalSourceConfiguration(JNIEnv *env, jobject obj, jlong jContextValue,jint eSampleFreq)
6693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
6713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsTextRepertoire(JNIEnv *env, jobject obj, jlong jContextValue,jint repertoire)
6763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
6783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsTextRepertoire(JNIEnv *env, jobject obj, jlong jContextValue,jint repertoire)
6833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
6853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
6863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsPtyCode(JNIEnv *env, jobject obj, jlong jContextValue,jint ptyCode)
6883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
6893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	int user_val;
6903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	int res;
6913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	struct v4l2_ext_controls_kfmapp vec;
6923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	struct v4l2_ext_control_kfmapp vctrls;
6933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6941a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru	ALOGE("nativeJFmTx_SetRdsPtyCode(): Entered");
6953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
6963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.ctrl_class = V4L2_CTRL_CLASS_FM_TX;
6973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.count = 1;
6983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.id = V4L2_CID_RDS_TX_PTY;
6993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.value = ptyCode;
7003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.size = 0;
7013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.controls = &vctrls;
7023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	res = ioctl(radio_fd, VIDIOC_S_EXT_CTRLS, &vec);
7043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	if(res < 0)
7053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	{
7061a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru		ALOGE("Failed to set FM Tx RDS PTY\n");
7073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru		return res;
7083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	}
7093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7101a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru	ALOGE("nativeJFmTx_SetRdsPtyCode(): Exit");
7113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	return res;
7133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsPtyCode(JNIEnv *env, jobject obj, jlong jContextValue,jint ptyCode)
7163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	return 0;
7183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsPiCode(JNIEnv *env, jobject obj, jlong jContextValue,jint piCode)
7213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	struct v4l2_ext_controls_kfmapp vec;
7233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	struct v4l2_ext_control_kfmapp vctrls;
7243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	int res;
7253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7261a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru	ALOGD("nativeJFmTx_SetRdsPiCode(): Enter");
7273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.ctrl_class = V4L2_CTRL_CLASS_FM_TX;
7293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.count = 1;
7303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.id = V4L2_CID_RDS_TX_PI;
7313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.value = piCode;
7323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.size = 0;
7333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.controls = &vctrls;
7343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	res = ioctl(radio_fd, VIDIOC_S_EXT_CTRLS, &vec);
7363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	if(res < 0)
7373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	{
7381a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru		ALOGE("Failed to set FM Tx RDS PI Code\n");
7393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru		return res;
7403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	}
7413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7421a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru	ALOGD("Setting FM Tx RDS PI Code is Succesful\n");
7433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	return res;
7453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsPiCode(JNIEnv *env, jobject obj, jlong jContextValue)
7483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
7503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsAfCode(JNIEnv *env, jobject obj, jlong jContextValue,jint afCode)
7523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    int fd, res;
7543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    char str[10];
7553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    sprintf(str, "%d", afCode);
7573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7581a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("nativeJFmTx_SetRdsAfCode(): Enter");
7593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    fd = open(FMTX_RDS_AF_SYSFS_ENTRY, O_RDWR);
7613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    if (fd < 0) {
7621a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru        ALOGD("Can't open %s", FMTX_RDS_AF_SYSFS_ENTRY);
7633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        return -1;
7643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
7653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    /* Need max 6 cahrs to set AF between 75000 KHz to 108000 KHz */
7673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    res = write(fd, str, 6);
7683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    if(res <= 0) {
7691a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru        ALOGD("Failed to set FM TX RDS AF Frequency\n");
7703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        goto exit;
7713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
7723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7731a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru    ALOGD("FM RDS Alternate Frequency Set is succesfull\n");
7743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruexit:
7753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    close(fd);
7763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return res;
7773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsAfCode(JNIEnv *env, jobject obj, jlong jContextValue)
7803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return 0;
7823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetMonoStereoMode(JNIEnv *env, jobject obj, jlong jContextValue,jint monoStereoMode)
7853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
7873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetMonoStereoMode(JNIEnv *env, jobject obj, jlong jContextValue)
7903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
7923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
7943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
7953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetPowerLevel(JNIEnv *env, jobject obj, jlong jContextValue,jint powerLevel)
7963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
7973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	struct v4l2_ext_controls_kfmapp vec;
7983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	struct v4l2_ext_control_kfmapp vctrls;
7993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	int res;
8003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8011a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru	ALOGD("nativeJFmTx_SetPowerLevel(): Enter and power level = %d\n",powerLevel);
8023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.ctrl_class = V4L2_CTRL_CLASS_FM_TX;
8043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.count = 1;
8053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.id = V4L2_CID_TUNE_POWER_LEVEL;
8063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.value = 122 - powerLevel;
8073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vctrls.size = 0;
8083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	vec.controls = &vctrls;
8093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	res = ioctl(radio_fd, VIDIOC_S_EXT_CTRLS, &vec);
8113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	if(res < 0)
8123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	{
8131a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru		ALOGE("Failed to set FM Tx power level\n");
8143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru		return res;
8153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	}
8163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8171a29fdc598bb26d4a1d4ad50e1ac0ee1d34e1ec9Jean-Baptiste Queru	ALOGE("Setting FM Tx Power level to ---> %d\n", 122 - vctrls.value);
8183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	return res;
8203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
8213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetPowerLevel(JNIEnv *env, jobject obj, jlong jContextValue)
8233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
8243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
8253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
8273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetPreEmphasisFilter(JNIEnv *env, jobject obj, jlong jContextValue,jint preEmpFilter)
8293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
8303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
8313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
8323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetPreEmphasisFilter(JNIEnv *env, jobject obj, jlong jContextValue)
8353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
8363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
8373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
8393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_SetRdsPsScrollSpeed(JNIEnv *env, jobject obj, jlong jContextValue,jint scrollSpeed)
8413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
8423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
8433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
8453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic int nativeJFmTx_GetRdsPsScrollSpeed(JNIEnv *env, jobject obj, jlong jContextValue)
8473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
8483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querureturn 0;
8493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
8513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru//################################################################################
8523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru//                                 SIGNALS
8543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru//###############################################################################
8563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    void nativeJFmTx_Callback(long context, int status,
8583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                        int command, long value)
8593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {
8603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        V4L2_JBTL_LOGI("nativeJFmTx_Callback: Entered, ");
8623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        JNIEnv* env = NULL;
8643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        bool attachedThread = false;
8653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        int jRet ;
8663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    jRet = g_jVM->GetEnv((void **)&env,JNI_VERSION_1_4);
8683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        if(jRet < 0)
8713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        {
8723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                 V4L2_JBTL_LOGI("failed to get JNI env,assuming native thread");
8733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                jRet = g_jVM->AttachCurrentThread((&env), NULL);
8743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                if(jRet != JNI_OK)
8763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                {
8773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                         V4L2_JBTL_LOGI("failed to atatch to current thread %d",jRet);
8783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                        return ;
8793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                }
8803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                attachedThread = true;
8823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        }
8833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        if(env == NULL)
8853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        {
8863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                 V4L2_JBTL_LOGD("nativeJFmRx_Callback: Entered, env is null");
8873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        }
8883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        switch (command) {
8913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
8923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_ENABLE:
8933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_ENABLE:Status: %d ",status);
8943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdEnable,
8953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
8963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
8973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
8983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
8993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_DISABLE:
9013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_DISABLE:Status: %d ",status);
9023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdDisable,
9033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
9083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_INTERRUPT_MASK:
9093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_INTERRUPT_MASK:Status: %d ",status);
9103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetInterruptMask,
9113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_INTERRUPT_STATUS:
9173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_DISABLE:Status: %d ",status);
9183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetInterruptMask,
9193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                     (jlong)context,
9203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                     (jint)status,
9213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                     (jint)value);
9223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            */
9253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_START_TRANSMISSION:
9263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_START_TRANSMISSION:Status: %d ",status);
9273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru//            lptUnavailResources = (jclass *)event->p.cmdDone.v.audioOperation.ptUnavailResources;
9283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdStartTransmission,
9293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status);
9313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_STOP_TRANSMISSION:
9343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_STOP_TRANSMISSION:Status: %d ",status);
9353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdStopTransmission,
9363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_TUNE:
9423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_TUNE:Status: %d ",status);
9433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdTune,
9443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_TUNED_FREQUENCY:
9503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_TUNED_FREQUENCY:Status: %d,Value: %d ",status,value);
9513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetTunedFrequency,
9523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_MONO_STEREO_MODE:
9593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_MONO_STEREO_MODE:Status: %d ",status);
9603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetMonoStereoMode,
9613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_MONO_STEREO_MODE:
9673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_MONO_STEREO_MODE:Status: %d,Value: %d ",status,value);
9683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetMonoStereoMode,
9693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
9753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_POWER_LEVEL:
9763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_POWER_LEVEL:Status: %d ",status);
9773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetPowerLevel,
9783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_POWER_LEVEL:
9843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_POWER_LEVEL:Status: %d,Value: %d ",status,value);
9853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetPowerLevel,
9863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
9913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_MUTE_MODE:
9923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_MUTE_MODE:Status: %d ",status);
9933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetMuteMode,
9943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
9953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
9963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
9973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
9983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
9993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_MUTE_MODE:
10003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_MUTE_MODE:Status: %d ",status);
10013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetMuteMode,
10023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_ENABLE_RDS:
10083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_ENABLE_RDS:Status: %d ",status);
10093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdEnableRds,
10103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_DISABLE_RDS:
10163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_DISABLE_RDS:Status: %d ",status);
10173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdDisableRds,
10183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_TEXT_RT_MSG:
10243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_TEXT_RT_MSG:Status: %d ",status);
10253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	    env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsTextRtMsg,
10273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru			    (jlong)context,
10283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru			    (jint)status,
10293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru			    (jint)value);
10303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        break;
10323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_TEXT_PS_MSG:
10343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_TEXT_PS_MSG:Status: %d ",status);
10353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsTextPsMsg,
10373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru			(jlong)context,
10383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru			(jint)status,
10393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru			(jint)value);
10403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	break;
10423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_PTY_CODE:
10443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_PI_CODE:Status: %d ",status);
10453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsPtyCode,
10463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
10523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_TRANSMISSION_MODE:
10533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_TRANSMISSION_MODE:Status: %d ",status);
10543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsTransmissionMode,
10553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_TRANSMISSION_MODE
10613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_POWER_LEVEL:Status: %d,Value: %d ",status,value);
10623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsTransmissionMode,
10633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                     (jlong)context,
10643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                     (jint)status,
10653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                     (jint)value);
10663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
10683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_AF_CODE:
10693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_AF_CODE:Status: %d ",status);
10703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsAfCode,
10713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
10763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_AF_CODE:
10773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_POWER_LEVEL:Status: %d,Value: %d ",status,value);
10783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsAfCode,
10793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_PI_CODE:
10853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_PI_CODE:Status: %d ",status);
10863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsPiCode,
10873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
10923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_PI_CODE:
10933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_PI_CODE:Status: %d,Value: %d ",status,value);
10943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsPiCode,
10953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
10963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
10973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
10983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
10993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_PTY_CODE:
11013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_PTY_CODE:Status: %d,Value: %d ",status,value);
11023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsPtyCode,
11033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
11063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_TEXT_REPERTOIRE:
11093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_TEXT_REPERTOIRE:Status: %d ",status);
11103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsTextRepertoire,
11113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
11143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_TEXT_REPERTOIRE:
11173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_TEXT_REPERTOIRE:Status: %d,Value: %d ",status,value);
11183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsTextRepertoire,
11193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
11223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_PS_DISPLAY_MODE:
11253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_PS_DISPLAY_MODE:Status: %d ",status);
11263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsPsDispalyMode,
11273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
11303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_PS_DISPLAY_MODE:
11333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_PS_DISPLAY_MODE:Status: %d,Value: %d ",status,value);
11343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsPsDispalyMode,
11353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
11383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_PS_DISPLAY_SPEED:
11413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_PS_DISPLAY_SPEED:Status: %d ",status);
11423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsPsDisplaySpeed,
11433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
11463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_PS_DISPLAY_SPEED:
11493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_PS_DISPLAY_SPEED:Status: %d,Value: %d ",status,value);
11503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsPsDisplaySpeed,
11513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
11543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_TEXT_PS_MSG:
11573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_TEXT_PS_MSG:Status: %d ",status);
11583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            jRadioTextMsg = env->NewByteArray(event->p.cmdDone.v.psMsg.len);
11603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (jRadioTextMsg == NULL)
11623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            {
11633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_GET_RDS_TEXT_PS_MSG: Failed converting elements");
11643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
11653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
11663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->SetByteArrayRegion(jRadioTextMsg,0,event->p.cmdDone.v.psMsg.len,(jbyte*)event->p.cmdDone.v.psMsg.msg);
11683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (env->ExceptionOccurred())    {
11703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_GET_RDS_TEXT_PS_MSG: env->SetByteArrayRegion failed");
11713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
11723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
11733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsTextPsMsg,
11753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
11763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
11773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.psMsg.len,
11783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      jRadioTextMsg);
11793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
11803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_TEXT_RT_MSG:
11823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_TEXT_RT_MSG:Status: %d ",status);
11833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            jRadioTextMsg = env->NewByteArray(event->p.cmdDone.v.rtMsg.len);
11853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (jRadioTextMsg == NULL)
11873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            {
11883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_GET_RDS_TEXT_RT_MSG: Failed converting elements");
11893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
11903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
11913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->SetByteArrayRegion(jRadioTextMsg,0,event->p.cmdDone.v.rtMsg.len,(jbyte*)event->p.cmdDone.v.rtMsg.msg);
11933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (env->ExceptionOccurred())    {
11953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_GET_RDS_TEXT_RT_MSG: env->SetByteArrayRegion failed");
11963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
11973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
11983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
11993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsTextRtMsg,
12003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.rtMsg.rtMsgType,
12033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.rtMsg.len,
12043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      jRadioTextMsg);
12053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_TRANSMITTED_MASK:
12083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_TRANSMITTED_MASK:Status: %d ",status);
12093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsTransmittedMask,
12103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_TRANSMITTED_MASK:
12163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_TRANSMITTED_MASK:Status: %d ",status);
12173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsTransmittedMask,
12183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_TRAFFIC_CODES:
12243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_TRAFFIC_CODES:Status: %d ",status);
12253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsTrafficCodes,
12263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.trafficCodes.taCode,
12293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.trafficCodes.tpCode);
12303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_TRAFFIC_CODES:
12333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_TRAFFIC_CODES:Status: %d , taCode: %d ,tpCode: %d ",status,event->p.cmdDone.v.trafficCodes.taCode,event->p.cmdDone.v.trafficCodes.tpCode);
12343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsTrafficCodes,
12353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.trafficCodes.taCode,
12383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.trafficCodes.tpCode);
12393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_MUSIC_SPEECH_FLAG:
12423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_MUSIC_SPEECH_FLAG:Status: %d ",status);
12433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsMusicSpeechFlag,
12443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_MUSIC_SPEECH_FLAG:
12503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_RDS_MUSIC_SPEECH_FLAG:Status: %d,Value: %d ",status,value);
12513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsMusicSpeechFlag,
12523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_PRE_EMPHASIS_FILTER:
12583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_PRE_EMPHASIS_FILTER:Status: %d ",status);
12593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetPreEmphasisFilter,
12603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_PRE_EMPHASIS_FILTER:
12663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_PRE_EMPHASIS_FILTER:Status: %d,Value: %d ",status,value);
12673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetPreEmphasisFilter,
12683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_SET_RDS_EXTENDED_COUNTRY_CODE:
12743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_SET_RDS_EXTENDED_COUNTRY_CODE:Status: %d ",status);
12753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdSetRdsExtendedCountryCode,
12763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_GET_RDS_EXTENDED_COUNTRY_CODE:
12823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_GET_PRE_EMPHASIS_FILTER:Status: %d,Value: %d ",status,value);
12833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdGetRdsExtendedCountryCode,
12843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
12853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
12863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
12873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
12883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_WRITE_RDS_RAW_DATA:
12903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_WRITE_RDS_RAW_DATA:Status: %d ",status);
12913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            jRadioTextMsg = env->NewByteArray(event->p.cmdDone.v.rawRds.len);
12923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (jRadioTextMsg == NULL)
12943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            {
12953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_WRITE_RDS_RAW_DATA: Failed converting elements");
12963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
12973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
12983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
12993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->SetByteArrayRegion(jRadioTextMsg,0,event->p.cmdDone.v.rawRds.len,(jbyte*)event->p.cmdDone.v.rawRds.data);
13003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (env->ExceptionOccurred())    {
13023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_WRITE_RDS_RAW_DATA: env->SetByteArrayRegion failed");
13033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
13043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
13053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdWriteRdsRawData,
13073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
13083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
13093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.rawRds.len,
13103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      jRadioTextMsg);
13113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
13123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_READ_RDS_RAW_DATA:
13143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_READ_RDS_RAW_DATA:Status: %d ",status);
13153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            jRadioTextMsg = env->NewByteArray(event->p.cmdDone.v.rawRds.len);
13163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (jRadioTextMsg == NULL)
13183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            {
13193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_READ_RDS_RAW_DATA: Failed converting elements");
13203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
13213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
13223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->SetByteArrayRegion(jRadioTextMsg,0,event->p.cmdDone.v.rawRds.len,(jbyte*)event->p.cmdDone.v.rawRds.data);
13243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            if (env->ExceptionOccurred())    {
13263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                V4L2_JBTL_LOGE("FM_TX_CMD_READ_RDS_RAW_DATA: env->SetByteArrayRegion failed");
13273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                goto EXCEPTION;
13283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            }
13293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdReadRdsRawData,
13313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
13323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
13333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)event->p.cmdDone.v.rawRds.len,
13343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      jRadioTextMsg);
13353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
13363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_CHANGE_AUDIO_SOURCE:
13383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_CHANGE_AUDIO_SOURCE:Status: %d ",status);
13393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            lptUnavailResources = (jclass *)event->p.cmdDone.v.audioOperation.ptUnavailResources;
13403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdChangeAudioSource,
13413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
13423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
13433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jclass)lptUnavailResources);
13443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
13453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
13463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        case FM_TX_CMD_CHANGE_DIGITAL_AUDIO_CONFIGURATION:
13473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGI("FM_TX_CMD_CHANGE_AUDIO_SOURCE:Status: %d ",status);
13483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->CallStaticVoidMethod(_sJClass,_sMethodId_nativeCb_fmTxCmdChangeDigitalAudioConfiguration,
13493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jlong)context,
13503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)status,
13513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      (jint)value);
13523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
13533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        default:
13553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGE("nativeJFmTx_Callback():EVENT cmdType-------------->default");
13563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru//            V4L2_JBTL_LOGE("unhandled fm cmdType %d", event->p.cmdDone.cmdType);
13573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            break;
13583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        } //end switch
13593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        if (env->ExceptionOccurred())    {
13613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGE("nativeJFmTx_Callback:  ExceptionOccurred");
13623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            goto EXCEPTION;
13633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        }
13643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*Delete the local references
13663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        if (jRadioTextMsg!= NULL)
13673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->DeleteLocalRef(jRadioTextMsg);
13683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
13693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        V4L2_JBTL_LOGD("nativeJFmTx_Callback: Exiting, Calling DetachCurrentThread at the END");
13703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru//        g_jVM->DetachCurrentThread();
13723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        return;
13743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste QueruEXCEPTION:
13763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        V4L2_JBTL_LOGE("nativeJFmTx_Callback: Exiting due to failure");
13773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*        if (jRadioTextMsg!= NULL)
13783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->DeleteLocalRef(jRadioTextMsg);
13793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
13803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        if (env->ExceptionOccurred())    {
13813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->ExceptionDescribe();
13823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            env->ExceptionClear();
13833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        }
13843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        g_jVM->DetachCurrentThread();
13863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        return;
13883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
13903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/**********************************************************************
13923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*                Callback registration
13933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
13943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru***********************************************************************/
13953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define VERIFY_METHOD_ID(methodId) \
13963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        if (!_VerifyMethodId(methodId, #methodId)) { \
13973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            V4L2_JBTL_LOGE("Error obtaining method id for %s", #methodId);    \
13983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            return;     \
13993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        }
14003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustatic bool _VerifyMethodId(jmethodID methodId, const char *name)
14023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
14033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    bool result = true;
14043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    if (methodId == NULL)
14063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {
14073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        V4L2_JBTL_LOGE("_VerifyMethodId: Failed getting method id of %s", name);
14083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        result = false;
14093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
14103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return result;
14123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
14133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruvoid nativeJFmTx_ClassInitNative(JNIEnv* env, jclass clazz){
14173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_ClassInitNative: Entered");
14183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    if (NULL == env)
14213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {
14223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru        V4L2_JBTL_LOGE("nativeJFmRx_ClassInitNative: NULL == env");
14233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    }
14243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    env->GetJavaVM(&g_jVM);
14263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    /* Save class information in global reference in order to prevent class unloading */
14283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sJClass = (jclass)env->NewGlobalRef(clazz);
14293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    /* Initialize structure of RBTL callbacks */
14313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_ClassInitNative: Initializing FMTX callback structure");
14323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_ClassInitNative: Obtaining method IDs");
14353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdEnable = env->GetStaticMethodID(clazz,
14383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                        "nativeCb_fmTxCmdEnable",
14393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                        "(JIJ)V");
14403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdEnable);
14413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdDisable = env->GetStaticMethodID(clazz,
14443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                         "nativeCb_fmTxCmdDisable",
14453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                         "(JIJ)V");
14463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdDisable);
14473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdDestroy = env->GetStaticMethodID(clazz,
14493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                         "nativeCb_fmTxCmdDestroy",
14503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                         "(JIJ)V");
14513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdDestroy);
14523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdTune = env->GetStaticMethodID(clazz,
14553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      "nativeCb_fmTxCmdTune",
14563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                      "(JIJ)V");
14573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdTune);
14583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetTunedFrequency= env->GetStaticMethodID(clazz,
14613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetTunedFrequency",
14623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
14633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetTunedFrequency);
14643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdStartTransmission = env->GetStaticMethodID(clazz,
14683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdStartTransmission",
14693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JI)V");
14703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdStartTransmission);
14713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdStopTransmission = env->GetStaticMethodID(clazz,
14743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdStopTransmission",
14753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
14763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdStopTransmission);
14773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdEnableRds = env->GetStaticMethodID(clazz,
14803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                           "nativeCb_fmTxCmdEnableRds",
14813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                           "(JIJ)V");
14823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdEnableRds);
14833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdDisableRds = env->GetStaticMethodID(clazz,
14863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                            "nativeCb_fmTxCmdDisableRds",
14873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                            "(JIJ)V");
14883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdDisableRds);
14893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsTextRtMsg= env->GetStaticMethodID(clazz,
14913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsTextRtMsg",
14923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIII[B)V");
14933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsTextRtMsg);
14943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
14963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
14973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsTransmissionMode = env->GetStaticMethodID(clazz,
14983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsTransmissionMode",
14993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsTransmissionMode);
15013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsTransmissionMode = env->GetStaticMethodID(clazz,
15023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsTransmissionMode",
15033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsTransmissionMode);
15053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsTrafficCodes= env->GetStaticMethodID(clazz,
15073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsTrafficCodes",
15083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIII)V");
15093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsTrafficCodes);
15103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsTrafficCodes= env->GetStaticMethodID(clazz,
15133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsTrafficCodes",
15143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIII)V");
15153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsTrafficCodes);
15163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
15193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsTextPsMsg= env->GetStaticMethodID(clazz,
15203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsTextPsMsg",
15213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JII[B)V");
15223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsTextPsMsg);
15233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
15253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsTextPsMsg= env->GetStaticMethodID(clazz,
15263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsTextPsMsg",
15273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JII[B)V");
15283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsTextPsMsg);
15293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsTextRtMsg= env->GetStaticMethodID(clazz,
15323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsTextRtMsg",
15333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIII[B)V");
15343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsTextRtMsg);
15353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdWriteRdsRawData= env->GetStaticMethodID(clazz,
15383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdWriteRdsRawData",
15393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JII[B)V");
15403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdWriteRdsRawData);
15413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdReadRdsRawData= env->GetStaticMethodID(clazz,
15443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdReadRdsRawData",
15453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JII[B)V");
15463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdReadRdsRawData);
15473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    */
15493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetInterruptMask= env->GetStaticMethodID(clazz,
15513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetInterruptMask",
15523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetInterruptMask);
15543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    /*
15563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetInterruptMask= env->GetStaticMethodID(clazz,
15573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetInterruptMask",
15583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetInterruptMask);
15603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    */
15613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetMonoStereoMode= env->GetStaticMethodID(clazz,
15643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetMonoStereoMode",
15653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetMonoStereoMode);
15673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetMonoStereoMode= env->GetStaticMethodID(clazz,
15703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetMonoStereoMode",
15713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetMonoStereoMode);
15733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetPowerLevel= env->GetStaticMethodID(clazz,
15773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetPowerLevel",
15783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetPowerLevel);
15803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetPowerLevel= env->GetStaticMethodID(clazz,
15843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetPowerLevel",
15853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
15863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetPowerLevel);
15873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetMuteMode= env->GetStaticMethodID(clazz,
15903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                            "nativeCb_fmTxCmdSetMuteMode",
15913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                            "(JIJ)V");
15923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetMuteMode);
15933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
15953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetMuteMode= env->GetStaticMethodID(clazz,
15963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                            "nativeCb_fmTxCmdGetMuteMode",
15973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru                                            "(JIJ)V");
15983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetMuteMode);
15993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsAfCode= env->GetStaticMethodID(clazz,
16023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsAfCode",
16033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsAfCode);
16053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsAfCode= env->GetStaticMethodID(clazz,
16093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsAfCode",
16103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsAfCode);
16123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsPiCode= env->GetStaticMethodID(clazz,
16163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsPiCode",
16173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsPiCode);
16193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsPiCode= env->GetStaticMethodID(clazz,
16223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsPiCode",
16233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsPiCode);
16253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsPtyCode= env->GetStaticMethodID(clazz,
16283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsPtyCode",
16293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsPtyCode);
16313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsPtyCode= env->GetStaticMethodID(clazz,
16343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsPtyCode",
16353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsPtyCode);
16373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsPsDispalyMode= env->GetStaticMethodID(clazz,
16413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsPsDispalyMode",
16423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsPsDispalyMode);
16443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsPsDispalyMode= env->GetStaticMethodID(clazz,
16483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsPsDispalyMode",
16493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsPsDispalyMode);
16513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsPsDisplaySpeed= env->GetStaticMethodID(clazz,
16553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsPsDisplaySpeed",
16563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsPsDisplaySpeed);
16583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsPsDisplaySpeed= env->GetStaticMethodID(clazz,
16613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsPsDisplaySpeed",
16623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsPsDisplaySpeed);
16643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsTransmittedMask= env->GetStaticMethodID(clazz,
16673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsTransmittedMask",
16683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsTransmittedMask);
16703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsTransmittedMask= env->GetStaticMethodID(clazz,
16733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsTransmittedMask",
16743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsTransmittedMask);
16763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsMusicSpeechFlag = env->GetStaticMethodID(clazz,
16793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsMusicSpeechFlag",
16803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V") ;
16813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsMusicSpeechFlag);
16823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsMusicSpeechFlag = env->GetStaticMethodID(clazz,
16853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsMusicSpeechFlag",
16863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V") ;
16873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsMusicSpeechFlag);
16883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetPreEmphasisFilter= env->GetStaticMethodID(clazz,
16913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetPreEmphasisFilter",
16923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetPreEmphasisFilter);
16943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
16963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetPreEmphasisFilter= env->GetStaticMethodID(clazz,
16973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetPreEmphasisFilter",
16983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
16993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetPreEmphasisFilter);
17003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsExtendedCountryCode= env->GetStaticMethodID(clazz,
17043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsExtendedCountryCode",
17053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
17063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsExtendedCountryCode);
17073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsExtendedCountryCode= env->GetStaticMethodID(clazz,
17103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsExtendedCountryCode",
17113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
17123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsExtendedCountryCode);
17133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdChangeDigitalAudioConfiguration= env->GetStaticMethodID(clazz,
17163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdChangeDigitalAudioConfiguration",
17173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
17183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdChangeDigitalAudioConfiguration);
17193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
17213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdChangeAudioSource= env->GetStaticMethodID(clazz,
17223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdChangeAudioSource",
17233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JILcom/ti/jfm/core/JFmCcmVacUnavailResourceList;)V");
17243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdChangeAudioSource);
17253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
17263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdSetRdsTextRepertoire= env->GetStaticMethodID(clazz,
17273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdSetRdsTextRepertoire",
17283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
17293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdSetRdsTextRepertoire);
17303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    _sMethodId_nativeCb_fmTxCmdGetRdsTextRepertoire= env->GetStaticMethodID(clazz,
17333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "nativeCb_fmTxCmdGetRdsTextRepertoire",
17343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru            "(JIJ)V");
17353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    VERIFY_METHOD_ID(_sMethodId_nativeCb_fmTxCmdGetRdsTextRepertoire);
17363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    V4L2_JBTL_LOGD("nativeJFmTx_ClassInitNative:Exiting");
17383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
17393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru  JNINativeMethod JFmTxNative_sMethods[] = {
17413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    /* name, signature, funcPtr */
17423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_ClassInitNative", "()V", (void*)nativeJFmTx_ClassInitNative},
17433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_Create","(Lcom/ti/jfm/core/JFmContext;)I", (void*)nativeJFmTx_Create},
17443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_Destroy","(J)I", (void*)nativeJFmTx_Destroy},
17453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_Enable","(J)I", (void*)nativeJFmTx_Enable},
17463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_Disable","(J)I", (void*)nativeJFmTx_Disable},
17473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_Tune","(JJ)I", (void*)nativeJFmTx_Tune},
17483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_StopTransmission","(J)I", (void*)nativeJFmTx_StopTransmission},
17493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_StartTransmission","(J)I", (void*)nativeJFmTx_StartTransmission},
17503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_EnableRds","(J)I", (void*)nativeJFmTx_EnableRds},
17513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_DisableRds","(J)I", (void*)nativeJFmTx_DisableRds},
17523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsTransmissionMode","(JI)I", (void*)nativeJFmTx_SetRdsTransmissionMode},
17533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsTextPsMsg","(JLjava/lang/String;I)I", (void*)nativeJFmTx_SetRdsTextPsMsg},
17543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
17553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsTextPsMsg","(J)I", (void*)nativeJFmTx_GetRdsTextPsMsg},
17563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_WriteRdsRawData","(JLjava/lang/String;I)I", (void*)nativeJFmTx_WriteRdsRawData},
17573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
17583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetMuteMode","(JI)I", (void*)nativeJFmTx_SetMuteMode},
17593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetMuteMode","(J)I", (void*)nativeJFmTx_GetMuteMode},
17603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsTextRtMsg","(JILjava/lang/String;I)I", (void*)nativeJFmTx_SetRdsTextRtMsg},
17613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsTransmittedGroupsMask","(JJ)I", (void*)nativeJFmTx_SetRdsTransmittedGroupsMask},
17623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
17633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsPsDisplayMode","(JI)I", (void*)nativeJFmTx_SetRdsPsDisplayMode},
17643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsPsDisplayMode","(J)I", (void*)nativeJFmTx_GetRdsPsDisplayMode},
17653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsTextRtMsg","(J)I", (void*)nativeJFmTx_GetRdsTextRtMsg},
17663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsTransmittedGroupsMask","(J)I", (void*)nativeJFmTx_GetRdsTransmittedGroupsMask},
17673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsTrafficCodes","(JII)I", (void*)nativeJFmTx_SetRdsTrafficCodes},
17683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsTrafficCodes","(J)I", (void*)nativeJFmTx_GetRdsTrafficCodes},
17693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsMusicSpeechFlag","(JI)I", (void*)nativeJFmTx_SetRdsMusicSpeechFlag},
17703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsMusicSpeechFlag","(J)I", (void*)nativeJFmTx_GetRdsMusicSpeechFlag},
17713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsExtendedCountryCode","(JI)I", (void*)nativeJFmTx_SetRdsExtendedCountryCode},
17723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsExtendedCountryCode","(J)I", (void*)nativeJFmTx_GetRdsExtendedCountryCode},
17733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_ReadRdsRawData","(J)I", (void*)nativeJFmTx_ReadRdsRawData},
17743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_ChangeAudioSource","(JII)I", (void*)nativeJFmTx_ChangeAudioSource},
17753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru*/
17763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_ChangeDigitalSourceConfiguration","(JI)I", (void*)nativeJFmTx_ChangeDigitalSourceConfiguration},
17773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsTextRepertoire","(JI)I", (void*)nativeJFmTx_SetRdsTextRepertoire},
17783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsTextRepertoire","(J)I", (void*)nativeJFmTx_GetRdsTextRepertoire},
17793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsPtyCode","(JI)I", (void*)nativeJFmTx_SetRdsPtyCode},
17803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsPtyCode","(J)I", (void*)nativeJFmTx_GetRdsPtyCode},
17813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsPiCode","(JI)I", (void*)nativeJFmTx_SetRdsPiCode},
17823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsPiCode","(J)I", (void*)nativeJFmTx_GetRdsPiCode},
17833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsAfCode","(JI)I", (void*)nativeJFmTx_SetRdsAfCode},
17843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsAfCode","(J)I", (void*)nativeJFmTx_GetRdsAfCode},
17853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetMonoStereoMode","(JI)I", (void*)nativeJFmTx_SetMonoStereoMode},
17863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetMonoStereoMode","(J)I", (void*)nativeJFmTx_GetMonoStereoMode},
17873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetPowerLevel","(JI)I", (void*)nativeJFmTx_SetPowerLevel},
17883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetPowerLevel","(J)I", (void*)nativeJFmTx_GetPowerLevel},
17893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetPreEmphasisFilter","(JI)I", (void*)nativeJFmTx_SetPreEmphasisFilter},
17903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetPreEmphasisFilter","(J)I", (void*)nativeJFmTx_GetPreEmphasisFilter},
17913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_SetRdsPsScrollSpeed","(JI)I", (void*)nativeJFmTx_SetRdsPsScrollSpeed},
17923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    {"nativeJFmTx_GetRdsPsScrollSpeed","(J)I", (void*)nativeJFmTx_GetRdsPsScrollSpeed}
17933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru};
17953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
17963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*
17973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * Register several native methods for one class.
17983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru */
17993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
18003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruint getTxNativeSize()
18013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru{
18023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru    return NELEM(JFmTxNative_sMethods);
18033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
18043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1805