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