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
193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#ifndef JFMTXNATIVE_H_
203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define JFMTXNATIVE_H_
213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruextern "C" {
233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#include "jni.h"
243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_SUCCESS 0
293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_FAILED 1
303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_PENDING 2
313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_ERR_THREAD_CREATION_FAILED 4
323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define DEFAULT_RADIO_DEVICE    "/dev/radio0"
353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FMTX_RDS_AF_SYSFS_ENTRY    "/sys/class/video4linux/radio0/fmtx_rds_af"
373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define DEFAULT_FM_ALSA_CARD    "hw:CARD=0"
393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define CTL_INDEX_0                0
413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_MODE_SWITCH_CTL_NAME   "Mode Switch"
433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_MODE_OFF		   0
443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_MODE_TX		   1
453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_MODE_TX	           2
463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_BAND_SWITCH_CTL_NAME    "Region Switch"
483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_BAND_EUROPE_US          0
493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_BAND_JAPAN              1
503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_MUTE_ON                 0
523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_MUTE_OFF                1
533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_MUTE_ATTENUATE          2
543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_RF_DEPENDENT_MUTE_CTL_NAME     "RF Dependent Mute"
563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_GET_RSSI_LVL_CTL_NAME 	  "RSSI Level"
573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_RSSI_THRESHOLD_LVL_CTL_NAME "RSSI Threshold"
583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_STEREO_MONO_CTL_NAME	          "Stereo/Mono"
593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_DEEMPHASIS_CTL_NAME    	  "De-emphasis Filter"
603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_RDS_SWITCH_CTL_NAME    	  "RDS Switch"
613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_RDS_DISABLE                    0
623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_RDS_ENABLE                     1
633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_RDS_OPMODE_CTL_NAME	  "RDS Operation Mode"
643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_AF_SWITCH_CTL_NAME	  "AF Switch"
653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querutypedef unsigned long    FMC_U32;
693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querutypedef unsigned int     FMC_UINT;
703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querutypedef unsigned char    FMC_U8;
713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*-------------------------------------------------------------------------------
733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * FmcRdsRepertoire Type
743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * 	RDS Repertoire used for text data encoding and decoding
763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru */
773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querutypedef  FMC_UINT  FmcRdsRepertoire;
783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FMC_RDS_REPERTOIRE_G0_CODE_TABLE			((FmcRdsRepertoire)0)
803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FMC_RDS_REPERTOIRE_G1_CODE_TABLE			((FmcRdsRepertoire)1)
813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FMC_RDS_REPERTOIRE_G2_CODE_TABLE			((FmcRdsRepertoire)2)
823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define RDS_BIT_0_TO_BIT_3		0x0f
853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define RDS_BIT_4_TO_BIT_7		0xf0
863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/********************************************************************************
893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * Events sent to the application
913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *******************************************************************************/
933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*-------------------------------------------------------------------------------
953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * FmTxEventType structure
963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru */
983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querutypedef FMC_UINT FmTxEventType;
993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querutypedef FMC_UINT FmTxStatus;
1003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/*-------------------------------------------------------------------------------
1033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru * FmTxCmdType structure
1043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru *
1053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru */
1063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querutypedef FMC_UINT FmTxCmdType;
1073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_ENABLE							((FmTxCmdType)0)	/* Enable command */
1093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_DISABLE							((FmTxCmdType)1)	/* Disable command */
1103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_BAND						((FmTxCmdType)2)	/* Set Band command */
1113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_BAND						((FmTxCmdType)3)	/* Get Band command */
1123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_MONO_STEREO_MODE			((FmTxCmdType)4)	/* Set Mono/Stereo command */
1133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_MONO_STEREO_MODE			((FmTxCmdType)5)	/* Get Mono/Stereo command */
1143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_MUTE_MODE					((FmTxCmdType)6)	/* Set Mute mode command */
1153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_MUTE_MODE					((FmTxCmdType)7)	/* Get Mute mode command */
1163ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RF_DEPENDENT_MUTE_MODE	((FmTxCmdType)8)	/* Set RF-Dependent Mute Mode command */
1173ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_RF_DEPENDENT_MUTE_MODE	((FmTxCmdType)9)	/* Get RF-Dependent Mute Mode command */
1183ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RSSI_THRESHOLD				((FmTxCmdType)10)	/* Set RSSI Threshold command */
1193ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_RSSI_THRESHOLD				((FmTxCmdType)11)	/* Get RSSI Threshold command */
1203ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_DEEMPHASIS_FILTER			((FmTxCmdType)12)	/* Set De-Emphassi Filter command */
1213ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_DEEMPHASIS_FILTER			((FmTxCmdType)13)	/* Get De-Emphassi Filter command */
1223ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_VOLUME						((FmTxCmdType)14)	/* Set Volume command */
1233ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_VOLUME						((FmTxCmdType)15)	/* Get Volume command */
1243ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_TUNE								((FmTxCmdType)16)	/* Tune command */
1253ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_TUNED_FREQUENCY			((FmTxCmdType)17)	/* Get Tuned Frequency command */
1263ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SEEK								((FmTxCmdType)18)	/* Seek command */
1273ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_STOP_SEEK						((FmTxCmdType)19)	/* Stop Seek command */
1283ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_RSSI						((FmTxCmdType)20)	/* Get RSSI command */
1293ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_ENABLE_RDS						((FmTxCmdType)21)	/* Enable RDS command */
1303ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_DISABLE_RDS						((FmTxCmdType)22)	/* Disable RDS command */
1313ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RDS_SYSTEM					((FmTxCmdType)23)	/* Set RDS System command */
1323ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_RDS_SYSTEM					((FmTxCmdType)24)	/* Get RDS System command */
1333ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RDS_GROUP_MASK			((FmTxCmdType)25)	/* Set RDS groups to be recieved */
1343ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_RDS_GROUP_MASK			((FmTxCmdType)26)	/*  Get RDS groups to be recieved*/
1353ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RDS_AF_SWITCH_MODE		((FmTxCmdType)27)	/* Set AF Switch Mode command */
1363ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_RDS_AF_SWITCH_MODE		((FmTxCmdType)28)	/* Get AF Switch Mode command */
1373ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_ENABLE_AUDIO				((FmTxCmdType)29)	/* Set Audio Routing command */
1383ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_DISABLE_AUDIO 				((FmTxCmdType)30)	/* Get Audio Routing command */
1393ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_DESTROY							((FmTxCmdType)31)	/* Destroy command */
1403ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_CHANGE_AUDIO_TARGET					((FmTxCmdType)32)	/* Change the audio target*/
1413ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_CHANGE_DIGITAL_AUDIO_CONFIGURATION	((FmTxCmdType)33)	/* Change the digital target configuration*/
1423ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_INIT_ASYNC                              	((FmTxCmdType)34)	/* */
1433ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_INIT                              	((FmTxCmdType)35)	/* */
1443ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_DEINIT                              	((FmTxCmdType)36)	/* */
1453ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_CHANNEL_SPACING                              	((FmTxCmdType)37)	/* */
1463ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_CHANNEL_SPACING                              	((FmTxCmdType)38)	/* */
1473ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_FW_VERSION                            	((FmTxCmdType)39)	/*Gets the FW version */
1483ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_IS_CHANNEL_VALID                            	((FmTxCmdType)40)	/*Verify that the tuned channel is valid*/
1493ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_COMPLETE_SCAN                            	((FmTxCmdType)41)	/*Perfrom Complete Scan on the selected Band*/
1503ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_COMPLETE_SCAN_PROGRESS                            	((FmTxCmdType)42)
1513ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_STOP_COMPLETE_SCAN                            	((FmTxCmdType)43)
1523ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_START_TRANSMISSION                            	((FmTxCmdType)44)
1533ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_STOP_TRANSMISSION                            		((FmTxCmdType)45)
1543ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RDS_TEXT_RT_MSG                            	((FmTxCmdType)46)
1553ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RDS_TEXT_PS_MSG                            	((FmTxCmdType)47)
1563ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RDS_PTY_CODE					((FmTxCmdType)48)
1573ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_GET_RDS_PTY_CODE					((FmTxCmdType)49)
1583ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_SET_RDS_AF_CODE                                       ((FmTxCmdType)50)
1593ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1603ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_LAST_API_CMD                                              (FM_TX_CMD_SET_RDS_AF_CODE)
1613ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define FM_TX_CMD_NONE					0xFFFFFFFF
1623ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1633ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1643ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querunamespace android {
1653ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1663ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruextern JNIEnv *getJBtlEnv();
1673ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queruextern void setJBtlEnv(JNIEnv *env);
1683ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1693ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru}
1703ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1713ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/* Following macros and structs are re-declared since android
1723ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   file system has old videodev2.h but kfmapp needs new K35 videodev2.h
1733ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   declarations, So need to remove these definitions once android headers
1743ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru   move to K35 plus */
1753ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1763ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CTRL_CLASS_FM_TX 0x009b0000        /* FM Modulator control class */
1773ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru/* FM Modulator class control IDs */
1783ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_FM_TX_CLASS_BASE               (V4L2_CTRL_CLASS_FM_TX | 0x900)
1793ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_FM_TX_CLASS                    (V4L2_CTRL_CLASS_FM_TX | 1)
1803ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1813ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_TUNE_PREEMPHASIS               (V4L2_CID_FM_TX_CLASS_BASE + 112)
1823ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1833ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_RDS_TX_DEVIATION               (V4L2_CID_FM_TX_CLASS_BASE + 1)
1843ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_RDS_TX_PI                      (V4L2_CID_FM_TX_CLASS_BASE + 2)
1853ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_RDS_TX_PTY                     (V4L2_CID_FM_TX_CLASS_BASE + 3)
1863ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_RDS_TX_PS_NAME                 (V4L2_CID_FM_TX_CLASS_BASE + 5)
1873ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_RDS_TX_RADIO_TEXT              (V4L2_CID_FM_TX_CLASS_BASE + 6)
1883ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1893ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_TUNE_POWER_LEVEL               (V4L2_CID_FM_TX_CLASS_BASE + 113)
1903ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_CID_TUNE_ANTENNA_CAPACITOR         (V4L2_CID_FM_TX_CLASS_BASE + 114)
1913ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define V4L2_TUNER_SUB_RDS              0x0010
1923ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1933ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1943ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#undef VIDIOC_S_MODULATOR
1953ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#define VIDIOC_S_MODULATOR    1078220343
1963ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
1973ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustruct v4l2_ext_control_kfmapp {
1983ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	__u32 id;
1993ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	__u32 size;
2003ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	__u32 reserved2[1];
2013ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	union {
2023ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru		__s32 value;
2033ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru		__s64 value64;
2043ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru		char *string;
2053ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	};
2063ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru} __attribute__ ((packed));
2073ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru
2083ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Querustruct v4l2_ext_controls_kfmapp {
2093ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	__u32 ctrl_class;
2103ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	__u32 count;
2113ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	__u32 error_idx;
2123ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	__u32 reserved[2];
2133ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru	struct v4l2_ext_control_kfmapp *controls;
2143ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru};
2153ece7d9e08052989401e008bc397dbcd2557cfd0Jean-Baptiste Queru#endif /* JFMTXNATIVE_H_ */
216