/Mate20_9_0_0/src/main/java/com/huawei/android/hardware/fmradio/FmRxControls.java

https://github.com/SivanLiu/HwFrameWorkSource · Java · 232 lines · 214 code · 18 blank · 0 comment · 18 complexity · 2df858d88b10bc5dd01f52edddee2646 MD5 · raw file

  1. package com.huawei.android.hardware.fmradio;
  2. import android.util.Log;
  3. class FmRxControls {
  4. static final int FREQ_MUL = 1000;
  5. static final int SCAN_BACKWARD = 3;
  6. static final int SCAN_FORWARD = 2;
  7. static final int SEEK_BACKWARD = 1;
  8. static final int SEEK_FORWARD = 0;
  9. private static final String TAG = "FmRxControls";
  10. private static final int V4L2_CID_AUDIO_MUTE = 9963785;
  11. private static final int V4L2_CID_BASE = 9963776;
  12. private static final int V4L2_CID_PRIVATE_BASE = 134217728;
  13. private static final int V4L2_CID_PRIVATE_TAVARUA_EMPHASIS = 134217740;
  14. private static final int V4L2_CID_PRIVATE_TAVARUA_LP_MODE = 134217745;
  15. private static final int V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK = 134217734;
  16. private static final int V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC = 134217744;
  17. private static final int V4L2_CID_PRIVATE_TAVARUA_RDSON = 134217743;
  18. private static final int V4L2_CID_PRIVATE_TAVARUA_RDS_STD = 134217741;
  19. private static final int V4L2_CID_PRIVATE_TAVARUA_REGION = 134217735;
  20. private static final int V4L2_CID_PRIVATE_TAVARUA_SCANDWELL = 134217730;
  21. private static final int V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH = 134217736;
  22. private static final int V4L2_CID_PRIVATE_TAVARUA_SPACING = 134217742;
  23. private static final int V4L2_CID_PRIVATE_TAVARUA_SRCHMODE = 134217729;
  24. private static final int V4L2_CID_PRIVATE_TAVARUA_SRCHON = 134217731;
  25. private static final int V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT = 134217739;
  26. private static final int V4L2_CID_PRIVATE_TAVARUA_SRCH_PI = 134217738;
  27. private static final int V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY = 134217737;
  28. private static final int V4L2_CID_PRIVATE_TAVARUA_STATE = 134217732;
  29. private static final int V4L2_CID_PRIVATE_TAVARUA_TRANSMIT_MODE = 134217733;
  30. private static final int V4L2_CTRL_CLASS_USER = 9961472;
  31. private int mFreq;
  32. FmRxControls() {
  33. }
  34. public void fmOn(int fd, int device) {
  35. FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_STATE, device);
  36. }
  37. public void fmOff(int fd) {
  38. FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_STATE, 0);
  39. }
  40. public void muteControl(int fd, boolean on) {
  41. if (on) {
  42. FmReceiverWrapper.setControlNative(fd, V4L2_CID_AUDIO_MUTE, 3);
  43. } else {
  44. FmReceiverWrapper.setControlNative(fd, V4L2_CID_AUDIO_MUTE, 0);
  45. }
  46. }
  47. public int setStation(int fd) {
  48. String str = TAG;
  49. StringBuilder stringBuilder = new StringBuilder();
  50. stringBuilder.append("** Tune Using: ");
  51. stringBuilder.append(fd);
  52. Log.d(str, stringBuilder.toString());
  53. int ret = FmReceiverWrapper.setFreqNative(fd, this.mFreq);
  54. String str2 = TAG;
  55. StringBuilder stringBuilder2 = new StringBuilder();
  56. stringBuilder2.append("** Returned: ");
  57. stringBuilder2.append(ret);
  58. Log.d(str2, stringBuilder2.toString());
  59. return ret;
  60. }
  61. public int getTunedFrequency(int fd) {
  62. int frequency = FmReceiverWrapper.getFreqNative(fd);
  63. String str = TAG;
  64. StringBuilder stringBuilder = new StringBuilder();
  65. stringBuilder.append("getTunedFrequency: ");
  66. stringBuilder.append(frequency);
  67. Log.d(str, stringBuilder.toString());
  68. return frequency;
  69. }
  70. public int getFreq() {
  71. return this.mFreq;
  72. }
  73. public void setFreq(int f) {
  74. this.mFreq = f;
  75. }
  76. public int searchStationList(int fd, int mode, int preset_num, int dir, int pty) {
  77. int re = FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, mode);
  78. if (re != 0) {
  79. return re;
  80. }
  81. re = FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT, preset_num);
  82. if (re != 0) {
  83. return re;
  84. }
  85. if (pty > 0) {
  86. re = FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY, pty);
  87. }
  88. if (re != 0) {
  89. return re;
  90. }
  91. re = FmReceiverWrapper.startSearchNative(fd, dir);
  92. if (re != 0) {
  93. return re;
  94. }
  95. return 0;
  96. }
  97. public int[] stationList(int fd) {
  98. byte[] sList = new byte[100];
  99. float lowBand = (float) (((double) FmReceiverWrapper.getLowerBandNative(fd)) / 1000.0d);
  100. String str = TAG;
  101. StringBuilder stringBuilder = new StringBuilder();
  102. stringBuilder.append("lowBand: ");
  103. stringBuilder.append(lowBand);
  104. Log.d(str, stringBuilder.toString());
  105. FmReceiverWrapper.getBufferNative(fd, sList, 0);
  106. int station_num = sList[0];
  107. int[] stationList = new int[(station_num + 1)];
  108. String str2 = TAG;
  109. StringBuilder stringBuilder2 = new StringBuilder();
  110. stringBuilder2.append("station_num: ");
  111. stringBuilder2.append(station_num);
  112. Log.d(str2, stringBuilder2.toString());
  113. for (int i = 0; i < station_num; i++) {
  114. str2 = TAG;
  115. stringBuilder2 = new StringBuilder();
  116. stringBuilder2.append(" Byte1 = ");
  117. stringBuilder2.append(sList[(i * 2) + 1]);
  118. Log.d(str2, stringBuilder2.toString());
  119. str2 = TAG;
  120. stringBuilder2 = new StringBuilder();
  121. stringBuilder2.append(" Byte2 = ");
  122. stringBuilder2.append(sList[(i * 2) + 2]);
  123. Log.d(str2, stringBuilder2.toString());
  124. int tmpFreqByte1 = sList[(i * 2) + 1] & 255;
  125. int tmpFreqByte2 = sList[(i * 2) + 2] & 255;
  126. str2 = TAG;
  127. stringBuilder2 = new StringBuilder();
  128. stringBuilder2.append(" tmpFreqByte1 = ");
  129. stringBuilder2.append(tmpFreqByte1);
  130. Log.d(str2, stringBuilder2.toString());
  131. str2 = TAG;
  132. stringBuilder2 = new StringBuilder();
  133. stringBuilder2.append(" tmpFreqByte2 = ");
  134. stringBuilder2.append(tmpFreqByte2);
  135. Log.d(str2, stringBuilder2.toString());
  136. int freq = ((tmpFreqByte1 & 3) << 8) | tmpFreqByte2;
  137. str2 = TAG;
  138. stringBuilder2 = new StringBuilder();
  139. stringBuilder2.append(" freq: ");
  140. stringBuilder2.append(freq);
  141. Log.d(str2, stringBuilder2.toString());
  142. float real_freq = ((float) (freq * 50)) + (1000.0f * lowBand);
  143. str2 = TAG;
  144. stringBuilder2 = new StringBuilder();
  145. stringBuilder2.append(" real_freq: ");
  146. stringBuilder2.append(real_freq);
  147. Log.d(str2, stringBuilder2.toString());
  148. stationList[i] = (int) real_freq;
  149. str2 = TAG;
  150. stringBuilder2 = new StringBuilder();
  151. stringBuilder2.append(" stationList: ");
  152. stringBuilder2.append(stationList[i]);
  153. Log.d(str2, stringBuilder2.toString());
  154. }
  155. try {
  156. stationList[station_num] = 0;
  157. } catch (ArrayIndexOutOfBoundsException e) {
  158. Log.d(TAG, "ArrayIndexOutOfBoundsException !!");
  159. }
  160. return stationList;
  161. }
  162. public void searchStations(int fd, int mode, int dwell, int dir, int pty, int pi) {
  163. String str = TAG;
  164. StringBuilder stringBuilder = new StringBuilder();
  165. stringBuilder.append("Mode is ");
  166. stringBuilder.append(mode);
  167. stringBuilder.append(" Dwell is ");
  168. stringBuilder.append(dwell);
  169. Log.d(str, stringBuilder.toString());
  170. str = TAG;
  171. stringBuilder = new StringBuilder();
  172. stringBuilder.append("dir is ");
  173. stringBuilder.append(dir);
  174. stringBuilder.append(" PTY is ");
  175. stringBuilder.append(pty);
  176. Log.d(str, stringBuilder.toString());
  177. str = TAG;
  178. stringBuilder = new StringBuilder();
  179. stringBuilder.append("pi is ");
  180. stringBuilder.append(pi);
  181. stringBuilder.append(" id ");
  182. stringBuilder.append(V4L2_CID_PRIVATE_TAVARUA_SRCHMODE);
  183. Log.d(str, stringBuilder.toString());
  184. int re = FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, mode);
  185. re = FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_SCANDWELL, dwell);
  186. if (pty != 0) {
  187. re = FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY, pty);
  188. }
  189. if (pi != 0) {
  190. re = FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_SRCH_PI, pi);
  191. }
  192. re = FmReceiverWrapper.startSearchNative(fd, dir);
  193. }
  194. public int stereoControl(int fd, boolean stereo) {
  195. if (stereo) {
  196. return FmReceiverWrapper.setMonoStereoNative(fd, 1);
  197. }
  198. return FmReceiverWrapper.setMonoStereoNative(fd, 0);
  199. }
  200. public void searchRdsStations(int mode, int dwelling, int direction, int RdsSrchPty, int RdsSrchPI) {
  201. }
  202. public void cancelSearch(int fd) {
  203. FmReceiverWrapper.cancelSearchNative(fd);
  204. }
  205. public int setLowPwrMode(int fd, boolean lpmOn) {
  206. if (lpmOn) {
  207. return FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_LP_MODE, 1);
  208. }
  209. return FmReceiverWrapper.setControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_LP_MODE, 0);
  210. }
  211. public int getPwrMode(int fd) {
  212. return FmReceiverWrapper.getControlNative(fd, V4L2_CID_PRIVATE_TAVARUA_LP_MODE);
  213. }
  214. }