Advertisement
Guest User

BonDriver_Bulldog_MOD.patch.20131229.txt

a guest
Dec 29th, 2013
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 45.01 KB | None | 0 0
  1. diff --strip-trailing-cr -uPr Org/BonDriver/BonDriver_Bulldog.ch.txt Mod/BonDriver/BonDriver_Bulldog.ch.txt
  2. --- Org/BonDriver/BonDriver_Bulldog.ch.txt  1970-01-01 09:00:00.000000000 +0900
  3. +++ Mod/BonDriver/BonDriver_Bulldog.ch.txt  2013-12-29 15:30:55.000000000 +0900
  4. @@ -0,0 +1,206 @@
  5. +; Bulldog 用 チャンネルファイル (2013/12/29)
  6. +;
  7. +;       チャンネル情報を変更する場合は、このファイルを編集して
  8. +;       プレフィックスが同じ名前のドライバと同ディレクトリに
  9. +;       拡張子 .ch.txt としてこのファイルを置くこと。
  10. +;
  11. +;       ※ スペースの名前と順番は間違えてはいけないと思います。
  12. +;
  13. +; スペース名, サービスID, 物理チャンネル番号or周波数MHz, TSID, チャンネル名
  14. +
  15. +  ; VHF
  16. +
  17. +VHF, 0, 1,0x0000, 1
  18. +VHF, 0, 2,0x0000, 2
  19. +VHF, 0, 3,0x0000, 3
  20. +VHF, 0, 4,0x0000, 4
  21. +VHF, 0, 5,0x0000, 5
  22. +VHF, 0, 6,0x0000, 6
  23. +VHF, 0, 7,0x0000, 7
  24. +VHF, 0, 8,0x0000, 8
  25. +VHF, 0, 9,0x0000, 9
  26. +VHF, 0,10,0x0000,10
  27. +VHF, 0,11,0x0000,11
  28. +VHF, 0,12,0x0000,12
  29. +
  30. +  ; UHF
  31. +
  32. +UHF, 0,13,0x0000,13
  33. +UHF, 0,14,0x0000,14
  34. +UHF, 0,15,0x0000,15
  35. +UHF, 0,16,0x0000,16
  36. +UHF, 0,17,0x0000,17
  37. +UHF, 0,18,0x0000,18
  38. +UHF, 0,19,0x0000,19
  39. +UHF, 0,20,0x0000,20
  40. +UHF, 0,21,0x0000,21
  41. +UHF, 0,22,0x0000,22
  42. +UHF, 0,23,0x0000,23
  43. +UHF, 0,24,0x0000,24
  44. +UHF, 0,25,0x0000,25
  45. +UHF, 0,26,0x0000,26
  46. +UHF, 0,27,0x0000,27
  47. +UHF, 0,28,0x0000,28
  48. +UHF, 0,29,0x0000,29
  49. +UHF, 0,30,0x0000,30
  50. +UHF, 0,31,0x0000,31
  51. +UHF, 0,32,0x0000,32
  52. +UHF, 0,33,0x0000,33
  53. +UHF, 0,34,0x0000,34
  54. +UHF, 0,35,0x0000,35
  55. +UHF, 0,36,0x0000,36
  56. +UHF, 0,37,0x0000,37
  57. +UHF, 0,38,0x0000,38
  58. +UHF, 0,39,0x0000,39
  59. +UHF, 0,40,0x0000,40
  60. +UHF, 0,41,0x0000,41
  61. +UHF, 0,42,0x0000,42
  62. +UHF, 0,43,0x0000,43
  63. +UHF, 0,44,0x0000,44
  64. +UHF, 0,45,0x0000,45
  65. +UHF, 0,46,0x0000,46
  66. +UHF, 0,47,0x0000,47
  67. +UHF, 0,48,0x0000,48
  68. +UHF, 0,49,0x0000,49
  69. +UHF, 0,50,0x0000,50
  70. +UHF, 0,51,0x0000,51
  71. +UHF, 0,52,0x0000,52
  72. +UHF, 0,53,0x0000,53
  73. +UHF, 0,54,0x0000,54
  74. +UHF, 0,55,0x0000,55
  75. +UHF, 0,56,0x0000,56
  76. +UHF, 0,57,0x0000,57
  77. +UHF, 0,58,0x0000,58
  78. +UHF, 0,59,0x0000,59
  79. +UHF, 0,60,0x0000,60
  80. +UHF, 0,61,0x0000,61
  81. +UHF, 0,62,0x0000,62
  82. +
  83. +  ; CATV
  84. +
  85. +CATV, 0,113,0x0000,C13
  86. +CATV, 0,114,0x0000,C14
  87. +CATV, 0,115,0x0000,C15
  88. +CATV, 0,116,0x0000,C16
  89. +CATV, 0,117,0x0000,C17
  90. +CATV, 0,118,0x0000,C18
  91. +CATV, 0,119,0x0000,C19
  92. +CATV, 0,120,0x0000,C20
  93. +CATV, 0,121,0x0000,C21
  94. +CATV, 0,122,0x0000,C22
  95. +CATV, 0,123,0x0000,C23
  96. +CATV, 0,124,0x0000,C24
  97. +CATV, 0,125,0x0000,C25
  98. +CATV, 0,126,0x0000,C26
  99. +CATV, 0,127,0x0000,C27
  100. +CATV, 0,128,0x0000,C28
  101. +CATV, 0,129,0x0000,C29
  102. +CATV, 0,130,0x0000,C30
  103. +CATV, 0,131,0x0000,C31
  104. +CATV, 0,132,0x0000,C32
  105. +CATV, 0,133,0x0000,C33
  106. +CATV, 0,134,0x0000,C34
  107. +CATV, 0,135,0x0000,C35
  108. +CATV, 0,136,0x0000,C36
  109. +CATV, 0,137,0x0000,C37
  110. +CATV, 0,138,0x0000,C38
  111. +CATV, 0,139,0x0000,C39
  112. +CATV, 0,140,0x0000,C40
  113. +CATV, 0,141,0x0000,C41
  114. +CATV, 0,142,0x0000,C42
  115. +CATV, 0,143,0x0000,C43
  116. +CATV, 0,144,0x0000,C44
  117. +CATV, 0,145,0x0000,C45
  118. +CATV, 0,146,0x0000,C46
  119. +CATV, 0,147,0x0000,C47
  120. +CATV, 0,148,0x0000,C48
  121. +CATV, 0,149,0x0000,C49
  122. +CATV, 0,150,0x0000,C50
  123. +CATV, 0,151,0x0000,C51
  124. +CATV, 0,152,0x0000,C52
  125. +CATV, 0,153,0x0000,C53
  126. +CATV, 0,154,0x0000,C54
  127. +CATV, 0,155,0x0000,C55
  128. +CATV, 0,156,0x0000,C56
  129. +CATV, 0,157,0x0000,C57
  130. +CATV, 0,158,0x0000,C58
  131. +CATV, 0,159,0x0000,C59
  132. +CATV, 0,160,0x0000,C60
  133. +CATV, 0,161,0x0000,C61
  134. +CATV, 0,162,0x0000,C62
  135. +CATV, 0,163,0x0000,C63
  136. +
  137. +  ; BS (ストリームが重複するチャンネルはコメントアウトしている)
  138. +
  139. +BS, 151, 1,0x4010,BS1/TS0 ;BS朝日
  140. +BS, 161, 1,0x4011,BS1/TS1 ;BS-TBS
  141. +BS, 191, 3,0x4030,BS3/TS0 ;WOWOWプライム
  142. +;BS, 791,17,0x4030,BS3/TS0 ;navi
  143. +BS, 171, 3,0x4031,BS3/TS1 ;BSジャパン
  144. +BS, 192, 5,0x4450,BS5/TS0 ;WOWOWライブ
  145. +BS, 193, 5,0x4451,BS5/TS1 ;WOWOWシネマ
  146. +BS, 201, 7,0x4470,BS7/TS0 ;スター・チャンネル2
  147. +;BS, 202, 7,0x4470,BS7/TS0 ;スター・チャンネル3
  148. +BS, 236, 7,0x4671,BS7/TS1 ;BSアニマックス
  149. +BS, 256, 7,0x4672,BS7/TS2 ;ディズニー・チャンネル
  150. +BS, 211, 9,0x4090,BS9/TS0 ;BS11
  151. +BS, 200, 9,0x4091,BS9/TS1 ;スター・チャンネル1
  152. +BS, 222, 9,0x4092,BS9/TS2 ;TwellV
  153. +BS, 238,11,0x46B0,BS11/TS0 ;FOX bs238
  154. +BS, 241,11,0x46B1,BS11/TS1 ;BSスカパー!
  155. +BS, 231,11,0x46B2,BS11/TS2 ;放送大学BS1
  156. +;BS, 232,11,0x46B2,BS11/TS2 ;放送大学BS2
  157. +;BS, 233,11,0x46B2,BS11/TS2 ;放送大学BS3
  158. +BS, 141,13,0x40D0,BS13/TS0 ;BS日テレ
  159. +BS, 181,13,0x40D1,BS13/TS1 ;BSフジ
  160. +BS, 101,15,0x40F1,BS15/TS1 ;NHKBS1
  161. +BS, 103,15,0x40F2,BS15/TS2 ;NHKBSプレミアム
  162. +;BS, 910,17,0x40F2,BS15/TS2 ;WNI・910
  163. +BS, 291,17,0x4310,BS17/TS1 ;NHK総合・東京
  164. +;BS, 292,17,0x4310,BS17/TS1 ;NHKEテレ東京
  165. +BS, 294,17,0x4311,BS17/TS2 ;日テレ
  166. +;BS, 295,17,0x4311,BS17/TS2 ;テレビ朝日
  167. +;BS, 296,17,0x4311,BS17/TS2 ;TBS
  168. +;BS, 297,17,0x4311,BS17/TS2 ;テレビ東京
  169. +;BS, 298,17,0x4310,BS17/TS1 ;フジテレビ
  170. +;BS, 531,17,0x46B2,BS11/TS2 放送大学ラジオ
  171. +BS, 234,19,0x4730,BS19/TS0 ;グリーンチャンネル
  172. +BS, 242,19,0x4731,BS19/TS1 ;J SPORTS 1
  173. +BS, 243,19,0x4732,BS19/TS2 ;J SPORTS 2
  174. +BS, 252,21,0x4750,BS21/TS0 ;IMAGICA BS
  175. +BS, 244,21,0x4751,BS21/TS1 ;J SPORTS 3
  176. +BS, 245,21,0x4752,BS21/TS2 ;J SPORTS 4
  177. +BS, 251,23,0x4770,BS23/TS0 ;BS釣りビジョン
  178. +BS, 255,23,0x4771,BS23/TS1 ;日本映画専門チャンネル
  179. +BS, 258,23,0x4772,BS23/TS2 ;D-Life
  180. +
  181. +  ; CS110
  182. +
  183. +CS110, 0, 2,0x6020,ND2
  184. +CS110, 0, 4,0x7040,ND4
  185. +CS110, 0, 6,0x7060,ND6
  186. +CS110, 0, 8,0x6080,ND8
  187. +CS110, 0,10,0x60A0,ND10
  188. +CS110, 0,12,0x70C0,ND12
  189. +CS110, 0,14,0x70E0,ND14
  190. +CS110, 0,16,0x7100,ND16
  191. +CS110, 0,18,0x7120,ND18
  192. +CS110, 0,20,0x7140,ND20
  193. +CS110, 0,22,0x7160,ND22
  194. +CS110, 0,24,0x7180,ND24
  195. +
  196. +  ; CS110 ( MHz で記述する場合の例 )
  197. +
  198. +;CS110, 0, 1613.0MHz, 0x6020, ND2
  199. +;CS110, 0, 1653.0MHz, 0x7040, ND4
  200. +;CS110, 0, 1693.0MHz, 0x7060, ND6
  201. +;CS110, 0, 1733.0MHz, 0x6080, ND8
  202. +;CS110, 0, 1773.0MHz, 0x60A0, ND10
  203. +;CS110, 0, 1813.0MHz, 0x70C0, ND12
  204. +;CS110, 0, 1853.0MHz, 0x70E0, ND14
  205. +;CS110, 0, 1893.0MHz, 0x7100, ND16
  206. +;CS110, 0, 1933.0MHz, 0x7120, ND18
  207. +;CS110, 0, 1973.0MHz, 0x7140, ND20
  208. +;CS110, 0, 2013.0MHz, 0x7160, ND22
  209. +;CS110, 0, 2053.0MHz, 0x7180, ND24
  210. +
  211. diff --strip-trailing-cr -uPr Org/BonDriver/BonDriver_Bulldog.ini Mod/BonDriver/BonDriver_Bulldog.ini
  212. --- Org/BonDriver/BonDriver_Bulldog.ini 2012-03-17 13:01:48.000000000 +0900
  213. +++ Mod/BonDriver/BonDriver_Bulldog.ini 2013-12-28 22:21:20.000000000 +0900
  214. @@ -1,205 +1,10 @@
  215. -[BonDriverAKB02]
  216. -
  217. -
  218. -//Channel=ServiceID,PhysicalChannel,TSID,Name
  219. -[VHF]
  220. -0=  0, 1,0x0000,1
  221. -1=  0, 2,0x0000,2
  222. -2=  0, 3,0x0000,3
  223. -3=  0, 4,0x0000,4
  224. -4=  0, 5,0x0000,5
  225. -5=  0, 6,0x0000,6
  226. -6=  0, 7,0x0000,7
  227. -7=  0, 8,0x0000,8
  228. -8=  0, 9,0x0000,9
  229. -9=  0,10,0x0000,10
  230. -10= 0,11,0x0000,11
  231. -11= 0,12,0x0000,12
  232. -
  233. -[UHF]
  234. -0=  0,13,0x0000,13
  235. -1=  0,14,0x0000,14
  236. -2=  0,15,0x0000,15
  237. -3=  0,16,0x0000,16
  238. -4=  0,17,0x0000,17
  239. -5=  0,18,0x0000,18
  240. -6=  0,19,0x0000,19
  241. -7=  0,20,0x0000,20
  242. -8=  0,21,0x0000,21
  243. -9=  0,22,0x0000,22
  244. -10= 0,23,0x0000,23
  245. -11= 0,24,0x0000,24
  246. -12= 0,25,0x0000,25
  247. -13= 0,26,0x0000,26
  248. -14= 0,27,0x0000,27
  249. -15= 0,28,0x0000,28
  250. -16= 0,29,0x0000,29
  251. -17= 0,30,0x0000,30
  252. -18= 0,31,0x0000,31
  253. -19= 0,32,0x0000,32
  254. -20= 0,33,0x0000,33
  255. -21= 0,34,0x0000,34
  256. -22= 0,35,0x0000,35
  257. -23= 0,36,0x0000,36
  258. -24= 0,37,0x0000,37
  259. -25= 0,38,0x0000,38
  260. -26= 0,39,0x0000,39
  261. -27= 0,40,0x0000,40
  262. -28= 0,41,0x0000,41
  263. -29= 0,42,0x0000,42
  264. -30= 0,43,0x0000,43
  265. -31= 0,44,0x0000,44
  266. -32= 0,45,0x0000,45
  267. -33= 0,46,0x0000,46
  268. -34= 0,47,0x0000,47
  269. -35= 0,48,0x0000,48
  270. -36= 0,49,0x0000,49
  271. -37= 0,50,0x0000,50
  272. -38= 0,51,0x0000,51
  273. -39= 0,52,0x0000,52
  274. -40= 0,53,0x0000,53
  275. -41= 0,54,0x0000,54
  276. -42= 0,55,0x0000,55
  277. -43= 0,56,0x0000,56
  278. -44= 0,57,0x0000,57
  279. -45= 0,58,0x0000,58
  280. -46= 0,59,0x0000,59
  281. -47= 0,60,0x0000,60
  282. -48= 0,61,0x0000,61
  283. -49= 0,62,0x0000,62
  284. -
  285. -[CATV]
  286. -0=  0,113,0x0000,C13
  287. -1=  0,114,0x0000,C14
  288. -2=  0,115,0x0000,C15
  289. -3=  0,116,0x0000,C16
  290. -4=  0,117,0x0000,C17
  291. -5=  0,118,0x0000,C18
  292. -6=  0,119,0x0000,C19
  293. -7=  0,120,0x0000,C20
  294. -8=  0,121,0x0000,C21
  295. -9=  0,122,0x0000,C22
  296. -10= 0,123,0x0000,C23
  297. -11= 0,124,0x0000,C24
  298. -12= 0,125,0x0000,C25
  299. -13= 0,126,0x0000,C26
  300. -14= 0,127,0x0000,C27
  301. -15= 0,128,0x0000,C28
  302. -16= 0,129,0x0000,C29
  303. -17= 0,130,0x0000,C30
  304. -18= 0,131,0x0000,C31
  305. -19= 0,132,0x0000,C32
  306. -20= 0,123,0x0000,C33
  307. -21= 0,124,0x0000,C34
  308. -22= 0,125,0x0000,C35
  309. -23= 0,126,0x0000,C36
  310. -24= 0,127,0x0000,C37
  311. -25= 0,128,0x0000,C38
  312. -26= 0,129,0x0000,C39
  313. -27= 0,130,0x0000,C40
  314. -28= 0,131,0x0000,C41
  315. -29= 0,132,0x0000,C42
  316. -30= 0,123,0x0000,C43
  317. -31= 0,124,0x0000,C44
  318. -32= 0,125,0x0000,C45
  319. -33= 0,126,0x0000,C46
  320. -34= 0,127,0x0000,C47
  321. -35= 0,128,0x0000,C48
  322. -36= 0,129,0x0000,C49
  323. -37= 0,130,0x0000,C50
  324. -38= 0,131,0x0000,C51
  325. -39= 0,132,0x0000,C52
  326. -40= 0,123,0x0000,C53
  327. -41= 0,124,0x0000,C54
  328. -42= 0,125,0x0000,C55
  329. -43= 0,126,0x0000,C56
  330. -44= 0,127,0x0000,C57
  331. -45= 0,128,0x0000,C58
  332. -46= 0,129,0x0000,C59
  333. -47= 0,130,0x0000,C60
  334. -48= 0,131,0x0000,C61
  335. -49= 0,132,0x0000,C62
  336. -50= 0,123,0x0000,C63
  337. -
  338. -[BS]
  339. -0= 151, 1,0x4010,BS1/TS0 BS朝日
  340. -1= 161, 1,0x4011,BS1/TS1 BS-TBS
  341. -2= 191, 3,0x4030,BS3/TS0 WOWOWプライム
  342. -3= 791,17,0x4030,BS3/TS0 navi
  343. -4= 171, 3,0x4031,BS3/TS1 BSジャパン
  344. -5= 192, 5,0x4450,BS5/TS0 WOWOWライブ
  345. -6= 193, 5,0x4451,BS5/TS1 WOWOWシネマ
  346. -7= 201, 7,0x4470,BS7/TS0 スター・チャンネル2
  347. -8= 202, 7,0x4470,BS7/TS0 スター・チャンネル3
  348. -9= 236, 7,0x4671,BS7/TS1 BSアニマックス
  349. -10=256, 7,0x4672,BS7/TS2 ディズニー・チャンネル
  350. -11=211, 9,0x4090,BS9/TS0 BS11
  351. -12=200, 9,0x4091,BS9/TS1 スター・チャンネル1
  352. -13=222, 9,0x4092,BS9/TS2 TwellV
  353. -14=238,11,0x46B0,BS11/TS0 FOX bs238
  354. -15=241,11,0x46B1,BS11/TS1 BSスカパー!
  355. -16=231,11,0x46B2,BS11/TS2 放送大学BS1
  356. -17=232,11,0x46B2,BS11/TS2 放送大学BS2
  357. -18=233,11,0x46B2,BS11/TS2 放送大学BS3
  358. -19=141,13,0x40D0,BS13/TS0 BS日テレ
  359. -20=181,13,0x40D1,BS13/TS1 BSフジ
  360. -21=101,15,0x40F1,BS15/TS1 NHKBS1
  361. -22=103,15,0x40F2,BS15/TS2 NHKBSプレミアム
  362. -23=910,17,0x40F2,BS15/TS2 WNI・910
  363. -24=291,17,0x4310,BS17/TS1 NHK総合・東京
  364. -25=292,17,0x4310,BS17/TS1 NHKEテレ東京
  365. -26=294,17,0x4311,BS17/TS2 日テレ
  366. -27=295,17,0x4311,BS17/TS2 テレビ朝日
  367. -28=296,17,0x4311,BS17/TS2 TBS
  368. -29=297,17,0x4311,BS17/TS2 テレビ東京
  369. -30=298,17,0x4310,BS17/TS1 フジテレビ
  370. -31=531,17,0x46B2,BS11/TS2 放送大学ラジオ
  371. -32=234,19,0x4730,BS19/TS0 グリーンチャンネル
  372. -33=242,19,0x4731,BS19/TS1 J SPORTS 1
  373. -34=243,19,0x4732,BS19/TS2 J SPORTS 2
  374. -35=252,21,0x4750,BS21/TS0 IMAGICA BS
  375. -36=244,21,0x4751,BS21/TS1 J SPORTS 3
  376. -37=245,21,0x4752,BS21/TS2 J SPORTS 4
  377. -38=251,23,0x4770,BS23/TS0 BS釣りビジョン
  378. -39=255,23,0x4771,BS23/TS1 日本映画専門チャンネル
  379. -40=258,23,0x4772,BS23/TS2 D-Life
  380. -
  381. -
  382. -0= 101,15,0x40F1,NHKBS1
  383. -1= 102,15,0x40F1,NHK BS2
  384. -2= 103,15,0x40F2,NHK BSプレミアム
  385. -3= 141,13,0x40D0,BS日テレ
  386. -4= 151, 1,0x4010,BS朝日1
  387. -5= 161, 1,0x4011,BS-TBS
  388. -6= 171, 3,0x4031,BSジャパン
  389. -7= 181,13,0x40D1,BSフジ・181
  390. -8= 191, 3,0x4030,WOWOWプライム
  391. -9= 200, 9,0x4470,スター・チャンネル1,
  392. -10=211, 9,0x4090,BS11
  393. -11=222, 9,0x4092,TwellV
  394. -12=192, 5,0x4030,WOWOWライブ
  395. -13=193, 5,0x4030,WOWOWシネマ
  396. -14=201, 7,0x4470,スター・チャンネル2
  397. -15=202, 7,0x4470,スター・チャンネル3
  398. -16=231,11,0x46B2,放送大学テレビ
  399. -17=234,19,0x4730,グリーンチャンネル
  400. -18=236, 7,0x4671,BSアニマックス
  401. -19=238,11,0x46B0,FOX bs238
  402. -20=241,11,0x46B1,BSスカパー!
  403. -21=242,19,0x4731,J SPORTS 1
  404. -22=243,19,0x4732,J SPORTS 2
  405. -
  406. -[CS110]
  407. -0= 0, 2,0x6020,ND2
  408. -1= 0, 4,0x7040,ND4
  409. -2= 0, 6,0x7060,ND6
  410. -3= 0, 8,0x6080,ND8
  411. -4= 0,10,0x60A0,ND10
  412. -5= 0,12,0x70C0,ND12
  413. -6= 0,14,0x70E0,ND14
  414. -7= 0,16,0x7100,ND16
  415. -8= 0,18,0x7120,ND18
  416. -9= 0,20,0x7140,ND20
  417. -10=0,22,0x7160,ND22
  418. -11=0,24,0x7180,ND24
  419. +[BonTuner]
  420. +TSDATASIZE=65536
  421. +TSQUEUENUM=16
  422. +ASYNCTSQUEUENUM=512
  423. +
  424. +; Windows7以降の新OS用の推奨設定
  425. +;TSDATASIZE=196608
  426. +;TSQUEUENUM=24
  427. +;ASYNCTSQUEUENUM=768
  428.  
  429. diff --strip-trailing-cr -uPr Org/BonDriver/BonTuner.cpp Mod/BonDriver/BonTuner.cpp
  430. --- Org/BonDriver/BonTuner.cpp  2012-04-07 16:37:52.000000000 +0900
  431. +++ Mod/BonDriver/BonTuner.cpp  2013-12-29 15:49:07.000000000 +0900
  432. @@ -20,15 +20,12 @@
  433.  // 定数定義
  434.  //////////////////////////////////////////////////////////////////////
  435.  
  436. -// ミューテックス名
  437. -#define MUTEX_NAME         TEXT("BonDriver Bulldog")
  438. -
  439.  // 受信サイズ
  440. -#define TSDATASIZE         65536UL                                     // TSデータのサイズ
  441. +DWORD TSDATASIZE        =   65536UL ;       // TSデータのサイズ
  442. +DWORD TSQUEUENUM        =   16UL    ;       // TSデータの環状ストック数
  443.  
  444.  // FIFOバッファ設定
  445. -#define ASYNCBUFFTIME      4UL                                         // バッファ長 = 4秒
  446. -#define ASYNCBUFFSIZE      ( 0x400000 / TSDATASIZE * ASYNCBUFFTIME )   // 平均32Mbpsとする
  447. +DWORD ASYNCTSQUEUENUM   =   256UL   ;       // 非同期TSデータの環状ストック数
  448.  
  449.  // エンドポイントインデックス
  450.  #define EPINDEX_IN         0UL
  451. @@ -75,12 +72,12 @@
  452.  _T("151, 1,0x4010,BS1/TS0 BS朝日"),
  453.  _T("161, 1,0x4011,BS1/TS1 BS-TBS"),
  454.  _T("191, 3,0x4030,BS3/TS0 WOWOWプライム"),
  455. -_T("791,17,0x4030,BS3/TS0 navi"),
  456. +//_T("791,17,0x4030,BS3/TS0 navi"),
  457.  _T("171, 3,0x4031,BS3/TS1 BSジャパン"),
  458.  _T("192, 5,0x4450,BS5/TS0 WOWOWライブ"),
  459.  _T("193, 5,0x4451,BS5/TS1 WOWOWシネマ"),
  460.  _T("201, 7,0x4470,BS7/TS0 スター・チャンネル2"),
  461. -_T("202, 7,0x4470,BS7/TS0 スター・チャンネル3"),
  462. +//_T("202, 7,0x4470,BS7/TS0 スター・チャンネル3"),
  463.  _T("236, 7,0x4671,BS7/TS1 BSアニマックス"),
  464.  _T("256, 7,0x4672,BS7/TS2 ディズニー・チャンネル"),
  465.  _T("211, 9,0x4090,BS9/TS0 BS11"),
  466. @@ -89,21 +86,21 @@
  467.  _T("238,11,0x46B0,BS11/TS0 FOX bs238"),
  468.  _T("241,11,0x46B1,BS11/TS1 BSスカパー!"),
  469.  _T("231,11,0x46B2,BS11/TS2 放送大学BS1"),
  470. -_T("232,11,0x46B2,BS11/TS2 放送大学BS2"),
  471. -_T("233,11,0x46B2,BS11/TS2 放送大学BS3"),
  472. +//_T("232,11,0x46B2,BS11/TS2 放送大学BS2"),
  473. +//_T("233,11,0x46B2,BS11/TS2 放送大学BS3"),
  474.  _T("141,13,0x40D0,BS13/TS0 BS日テレ"),
  475.  _T("181,13,0x40D1,BS13/TS1 BSフジ"),
  476.  _T("101,15,0x40F1,BS15/TS1 NHKBS1"),
  477.  _T("103,15,0x40F2,BS15/TS2 NHKBSプレミアム"),
  478. -_T("910,17,0x40F2,BS15/TS2 WNI・910"),
  479. +//_T("910,17,0x40F2,BS15/TS2 WNI・910"),
  480.  _T("291,17,0x4310,BS17/TS1 NHK総合・東京"),
  481. -_T("292,17,0x4310,BS17/TS1 NHKEテレ東京"),
  482. +//_T("292,17,0x4310,BS17/TS1 NHKEテレ東京"),
  483.  _T("294,17,0x4311,BS17/TS2 日テレ"),
  484. -_T("295,17,0x4311,BS17/TS2 テレビ朝日"),
  485. -_T("296,17,0x4311,BS17/TS2 TBS"),
  486. -_T("297,17,0x4311,BS17/TS2 テレビ東京"),
  487. -_T("298,17,0x4310,BS17/TS1 フジテレビ"),
  488. -_T("531,17,0x46B2,BS11/TS2 放送大学ラジオ"),
  489. +//_T("295,17,0x4311,BS17/TS2 テレビ朝日"),
  490. +//_T("296,17,0x4311,BS17/TS2 TBS"),
  491. +//_T("297,17,0x4311,BS17/TS2 テレビ東京"),
  492. +//_T("298,17,0x4310,BS17/TS1 フジテレビ"),
  493. +//_T("531,17,0x46B2,BS11/TS2 放送大学ラジオ"),
  494.  _T("234,19,0x4730,BS19/TS0 グリーンチャンネル"),
  495.  _T("242,19,0x4731,BS19/TS1 J SPORTS 1"),
  496.  _T("243,19,0x4732,BS19/TS2 J SPORTS 2"),
  497. @@ -134,6 +131,7 @@
  498.  NULL
  499.  };
  500.  
  501. +using namespace std ;
  502.  
  503.  //////////////////////////////////////////////////////////////////////
  504.  // インスタンス生成メソッド
  505. @@ -151,6 +149,41 @@
  506.  
  507.  
  508.  //////////////////////////////////////////////////////////////////////
  509. +// ユーティリティ
  510. +//////////////////////////////////////////////////////////////////////
  511. +
  512. +template<class String> String inline trim(const String &str)
  513. +{
  514. +  String str2 ; str2.clear() ;
  515. +  for(typename String::size_type i=0;i<str.size();i++) {
  516. +   if(unsigned(str[i])>0x20UL) {
  517. +     str2 = str.substr(i,str.size()-i) ;
  518. +     break ;
  519. +   }
  520. +  }
  521. +  if(str2.empty()) return str2 ;
  522. +  for(typename String::size_type i=str2.size();i>0;i--) {
  523. +   if(unsigned(str2[i-1])>0x20UL) {
  524. +     return str2.substr(0,i) ;
  525. +   }
  526. +  }
  527. +  str2.clear() ;
  528. +  return str2 ;
  529. +}
  530. +
  531. +static wstring mbcs2wcs(string src)
  532. +{
  533. +   if(src.empty()) return wstring(L"") ;
  534. +   wchar_t *wcs = new wchar_t[src.length()*2 + 1];
  535. +   size_t wLen = 0;
  536. +   setlocale(LC_ALL,"japanese");
  537. +   mbstowcs_s(&wLen, wcs, src.length()*2 , src.c_str(), _TRUNCATE);
  538. +   wstring result = wcs;
  539. +   delete [] wcs;
  540. +   return result ;
  541. +}
  542. +
  543. +//////////////////////////////////////////////////////////////////////
  544.  // 構築/消滅
  545.  //////////////////////////////////////////////////////////////////////
  546.  
  547. @@ -164,6 +197,7 @@
  548.     : m_pUsbFx2Driver(NULL)
  549.     , m_hOnStreamEvent(NULL)
  550.     , m_hMutex(NULL)
  551. +   , is_channel_valid(FALSE)
  552.  {
  553.     char    bf[256];
  554.     char    key[8];
  555. @@ -171,7 +205,8 @@
  556.     m_pThis = this;
  557.     fOpened=false;
  558.  
  559. -   LoadIni();
  560. +   m_yFx2Id = 0 ;
  561. +   InitTunerProperty();
  562.  }
  563.  
  564.  //*****    Destructor  *****
  565. @@ -203,7 +238,10 @@
  566.     // カメレオンUSB FX2のドライバインスタンス生成
  567.     m_pUsbFx2Driver = new CUsbFx2Driver(this);
  568.     if(!m_pUsbFx2Driver)return false;
  569. -  
  570. +
  571. +   // ストリーム一時停止
  572. +   is_channel_valid = FALSE ;
  573. +
  574.     // FX2の初期化シーケンス
  575.     try{
  576.         // FIFOバッファ確保
  577. @@ -229,26 +267,26 @@
  578.         }
  579.  
  580.         // ドライバオープン
  581. -       if(!m_pUsbFx2Driver->OpenDriver(0x00U, BulldogFirmWare, sz,"Bulldog_FIFO"))throw (const DWORD)__LINE__;             //xxxxx
  582. +       if(!m_pUsbFx2Driver->OpenDriver(m_yFx2Id, BulldogFirmWare, sz,"Bulldog_FIFO"))throw (const DWORD)__LINE__;              //xxxxx
  583.  
  584.         // エンドポイント追加
  585.         if(!m_pUsbFx2Driver->AddEndPoint(0x81U))throw (const DWORD)__LINE__;    // EPINDEX_IN
  586.         if(!m_pUsbFx2Driver->AddEndPoint(0x01U))throw (const DWORD)__LINE__;    // EPINDEX_OUT
  587. -      
  588. +
  589.  
  590.         // FX2 I/Oポート設定 & MAX2初期パラメータ設定 & MAX2リセット
  591.  //     if(!m_pUsbFx2Driver->TransmitFormatedData(EPINDEX_OUT, 6UL, CMD_PORT_CFG, 0x00U, PIO_START | PIO_IR_OUT | PIO_TS_BACK, CMD_MODE_IDLE, CMD_IFCONFIG, 0xE3U))throw (const DWORD)__LINE__;
  592.         if(!m_pUsbFx2Driver->TransmitFormatedData(EPINDEX_OUT, 6UL, CMD_PORT_CFG, 0x00U, PIO_START, CMD_MODE_IDLE, CMD_IFCONFIG, 0xE3U))throw (const DWORD)__LINE__;
  593.  
  594.         // スレッド起動
  595. -       if(!m_pUsbFx2Driver->CreateFifoThread(0x86U, NULL, TSDATASIZE))throw (const DWORD)__LINE__;
  596. +       if(!m_pUsbFx2Driver->CreateFifoThread(0x86U, NULL, TSDATASIZE, TSQUEUENUM))throw (const DWORD)__LINE__;
  597.  
  598.         // 開始コマンド送信
  599.  //     if(!m_pUsbFx2Driver->TransmitFormatedData(EPINDEX_OUT, 3UL, CMD_EP6IN_START, CMD_PORT_WRITE, PIO_START | PIO_IR_OUT | PIO_TS_BACK))throw (const DWORD)__LINE__;
  600.         if(!m_pUsbFx2Driver->TransmitFormatedData(EPINDEX_OUT, 3UL, CMD_EP6IN_START, CMD_PORT_WRITE, PIO_START))throw (const DWORD)__LINE__;
  601.  
  602.         // ミューテックス作成
  603. -       if(!(m_hMutex = ::CreateMutex(NULL, TRUE, MUTEX_NAME)))throw (const DWORD)__LINE__;
  604. +       if(!(m_hMutex = ::CreateMutex(NULL, TRUE, m_szTunerName)))throw (const DWORD)__LINE__;
  605.  
  606.         // 成功
  607.     }
  608. @@ -316,10 +354,14 @@
  609.     ch:13-62    UHF
  610.     ch:113-163  ケーブルTV
  611.  */
  612. -void   CBonTuner::SetISDBTChannel(int ch)
  613. +void   CBonTuner::SetISDBTChannel(int ch,float MegaHz)
  614.  {
  615. -   SetMxl5007(ch);
  616. -   SetTC90502(ISDB_T);
  617. +   const int retry_cnt=2 ;
  618. +   for(int i=0;i<retry_cnt;i++) {
  619. +     //if(i) Sleep(100) ;
  620. +     SetMxl5007(ch,MegaHz);
  621. +     if(TC90502_OK==SetTC90502(ISDB_T)) ; //break ;
  622. +   }
  623.     Sleep(100);
  624.  }
  625.  
  626. @@ -329,9 +371,9 @@
  627.     ch:1-23 (奇数)    BS
  628.     ch:2-24 (偶数)    CS
  629.  */
  630. -void   CBonTuner::SetISDBSChannel(int ch,int tsid)
  631. +void   CBonTuner::SetISDBSChannel(int ch,int tsid,float MegaHz)
  632.  {
  633. -   SetStv6110a(ch);
  634. +   SetStv6110a(ch,MegaHz);
  635.     SetTC90502(ISDB_S);
  636.     SetTSID(tsid);
  637.  
  638. @@ -459,22 +501,57 @@
  639.     return(ber);
  640.  }
  641.  
  642. +
  643. +//*****    SetChannelSub   *****
  644. +
  645. +const BOOL CBonTuner::SetChannelSub(const DWORD dwCh)
  646. +{
  647. +   //ストリーム一時停止
  648. +   is_channel_valid = FALSE;
  649. +
  650. +   // 撮り溜めたTSストリームの破棄
  651. +   PurgeTsStream();
  652. +
  653. +   if(dwCh >= m_Channels.size()){
  654. +       return FALSE;
  655. +   }
  656. +
  657. +   //チューニング
  658. +   if(!m_Channels[dwCh].TSID) {  // 地上波
  659. +     SetISDBTChannel(m_Channels[dwCh].Channel,m_Channels[dwCh].MegaHz) ;
  660. +   }else { // BS/CS
  661. +     SetISDBSChannel(m_Channels[dwCh].Channel,
  662. +       m_Channels[dwCh].TSID,m_Channels[dwCh].MegaHz) ;
  663. +   }
  664. +
  665. +   //ストリーム再開
  666. +   is_channel_valid = TRUE;
  667. +
  668. +   return TRUE ;
  669. +}
  670. +
  671. +
  672.  //*****    Set Channel *****
  673.  
  674.  const BOOL CBonTuner::SetChannel(const BYTE ch)
  675.  {
  676. -   if (ch<12)
  677. -       m_dwCurSpace = 0;
  678. -   else if (ch<63)
  679. -       m_dwCurSpace = 1;
  680. -   else if (ch<200)
  681. -       m_dwCurSpace = 2;
  682. -
  683. -   m_dwCurChannel = ch;
  684. +   if(!SetChannelSub(ch)) return FALSE ;
  685.  
  686. -   SetISDBTChannel(ch);
  687. +   // チャンネル情報を更新
  688. +   m_dwCurSpace=0;
  689. +   m_dwCurChannel=0;
  690. +   wstring space;
  691. +   for(int i=0;i<ch;i++) {
  692. +     if(!i) space = m_Channels[ch].Space ;
  693. +     else if (m_Channels[ch].Space!=space) {
  694. +       space = m_Channels[ch].Space ;
  695. +       m_dwCurSpace++,m_dwCurChannel=0 ;
  696. +       continue ;
  697. +     }
  698. +     m_dwCurChannel++;
  699. +   }
  700.  
  701. -   return TRUE;
  702. +   return TRUE ;
  703.  }
  704.  
  705.  //*****    Get Signal Level    *****
  706. @@ -486,7 +563,7 @@
  707.     return((float)d);
  708.  /*
  709.     // FIFOバッファのFullnessを返す
  710. -   return ((float)m_FifoBuffer.size() / (float)ASYNCBUFFSIZE * 100.0f);
  711. +   return ((float)m_FifoBuffer.size() / (float)ASYNCTSQUEUENUM * 100.0f);
  712.  */
  713.  }
  714.  
  715. @@ -602,7 +679,7 @@
  716.  LPCTSTR CBonTuner::GetTunerName(void)
  717.  {
  718.     // チューナ名を返す
  719. -   return TEXT("Bulldog");
  720. +   return m_szTunerName ;
  721.  }
  722.  
  723.  //*****    Is Tuner Opening    *****
  724. @@ -610,8 +687,8 @@
  725.  const BOOL CBonTuner::IsTunerOpening(void)
  726.  {
  727.     // チューナの使用中の有無を返す(全プロセスを通して)
  728. -   HANDLE hMutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME);
  729. -  
  730. +   HANDLE hMutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, m_szTunerName);
  731. +
  732.     if(hMutex)
  733.     {
  734.         // 既にチューナは開かれている
  735. @@ -628,89 +705,63 @@
  736.  
  737.  LPCTSTR CBonTuner::EnumTuningSpace(const DWORD dwSpace)
  738.  {
  739. -   // 使用可能なチューニング空間を返す
  740. -   switch(dwSpace)
  741. -   {
  742. -       case 0UL :  return TEXT("VHF");
  743. -       case 1UL :  return TEXT("UHF");
  744. -       case 2UL :  return TEXT("CATV");
  745. -       case 3UL :  return TEXT("BS");
  746. -       case 4UL :  return TEXT("CS110");
  747. -       default  :  return NULL;       
  748. +   // 0は最初の空間を返す
  749. +   if ( dwSpace == 0 ) return m_Channels[0].Space.c_str() ;
  750. +   // 次の空間名を探す
  751. +   DWORD dwSpcIdx = 0 ;
  752. +   int nIdx0 = 0 ;
  753. +   for ( CHANNELS::size_type nIdx = 0 ; nIdx < m_Channels.size() ; nIdx++ ) {
  754. +       if ( m_Channels[nIdx0].Space == m_Channels[nIdx].Space ) continue ;
  755. +       nIdx0 = nIdx ;
  756. +       dwSpcIdx++ ;
  757. +       if ( dwSpace == dwSpcIdx ) return m_Channels[nIdx].Space.c_str() ;
  758.     }
  759. +   return NULL ;
  760.  }
  761.  
  762.  //*****    Enum Channel Name   *****
  763.  
  764.  LPCTSTR CBonTuner::EnumChannelName(const DWORD dwSpace, const DWORD dwChannel)
  765.  {
  766. -   // 使用可能なチャンネルを返す
  767. -   switch(dwSpace)
  768. -   {
  769. -       case 0UL :                              //VHF
  770. -           if (dwChannel>=VHFNumChannel)
  771. -               return(NULL);
  772. -           return((LPCTSTR)VHFChInfo[dwChannel].Name);
  773. -       case 1UL :                              //UHF
  774. -           if (dwChannel>=UHFNumChannel)
  775. -               return(NULL);
  776. -           return((LPCTSTR)UHFChInfo[dwChannel].Name);
  777. -       case 2UL :                              //CATV
  778. -           if (dwChannel>=CATVNumChannel)
  779. -               return(NULL);
  780. -           return((LPCTSTR)CATVChInfo[dwChannel].Name);
  781. -       case 3UL :                              //BS
  782. -           if (dwChannel>=BSNumChannel)
  783. -               return(NULL);
  784. -           return((LPCTSTR)BSChInfo[dwChannel].Name);
  785. -       case 4UL :                              //CS110
  786. -           if (dwChannel>=CSNumChannel)
  787. -               return(NULL);
  788. -           return((LPCTSTR)CSChInfo[dwChannel].Name);
  789. -       default  :
  790. -           // 非対応のチューニング空間
  791. -           return NULL;
  792. +   // 空間名を取得する
  793. +   LPCTSTR pszSpace = EnumTuningSpace( dwSpace ) ;
  794. +   if ( !pszSpace ) return NULL ;
  795. +   wstring space = wstring(pszSpace) ;
  796. +   // 空間名の一致するチャンネルを探す
  797. +   DWORD dwChIdx = 0 ;
  798. +   for ( CHANNELS::size_type nIdx = 0 ; nIdx < m_Channels.size() ; nIdx++ ) {
  799. +       if ( space != m_Channels[nIdx].Space ) continue ;
  800. +       if ( dwChIdx == dwChannel ) return m_Channels[nIdx].Name.c_str() ;
  801. +       dwChIdx++ ;
  802.     }
  803. +   return NULL ;
  804.  }
  805.  
  806.  //*****    Set Channel *****
  807.  
  808.  const BOOL CBonTuner::SetChannel(const DWORD dwSpace, const DWORD dwChannel)
  809.  {
  810. -   switch(dwSpace)
  811. -   {
  812. -   case 0:                                         //VHF
  813. -       if (dwChannel>=VHFNumChannel)
  814. -           return(FALSE);
  815. -       SetISDBTChannel(VHFChInfo[dwChannel].Channel);
  816. -       break;
  817. -   case 1:                                         //UHF
  818. -       if (dwChannel>=UHFNumChannel)
  819. -           return(FALSE);
  820. -       SetISDBTChannel(UHFChInfo[dwChannel].Channel);
  821. -       break;
  822. -   case 2:                                         //CATV
  823. -       if (dwChannel>=CATVNumChannel)
  824. -           return(FALSE);
  825. -       SetISDBTChannel(CATVChInfo[dwChannel].Channel);
  826. -       break;
  827. -   case 3:                                         //BS
  828. -       if (dwChannel>=CATVNumChannel)
  829. -           return(FALSE);
  830. -       SetISDBSChannel(BSChInfo[dwChannel].Channel,BSChInfo[dwChannel].TSID);
  831. -       break;
  832. -   case 4:                                         //CS
  833. -       if (dwChannel>=CATVNumChannel)
  834. -           return(FALSE);
  835. -       SetISDBSChannel(CSChInfo[dwChannel].Channel,CSChInfo[dwChannel].TSID);
  836. -       break;
  837. -   default:
  838. -       return(FALSE);
  839. +   // 空間名を取得する
  840. +   LPCTSTR pszSpace = EnumTuningSpace( dwSpace ) ;
  841. +   if ( !pszSpace ) return FALSE ;
  842. +   wstring space = wstring(pszSpace) ;
  843. +   // 空間名の一致するチャンネルを探す
  844. +   DWORD dwChIdx = 0 ;
  845. +   for ( CHANNELS::size_type nIdx = 0 ; nIdx < m_Channels.size() ; nIdx++ ) {
  846. +       if ( space != m_Channels[nIdx].Space ) continue ;
  847. +       if ( dwChIdx == dwChannel ) {
  848. +           // チャンネルを設定する
  849. +           if( SetChannelSub(nIdx) ){
  850. +               m_dwCurSpace = dwSpace;
  851. +               m_dwCurChannel = dwChannel;
  852. +               return TRUE;
  853. +           }else{
  854. +               return FALSE;
  855. +           }
  856. +       }
  857. +       dwChIdx++ ;
  858.     }
  859. -   m_dwCurSpace = dwSpace;
  860. -   m_dwCurChannel = dwChannel;
  861. -
  862. -   return TRUE;
  863. +   return FALSE ;
  864.  }
  865.  
  866.  //*****    Get Current Space   *****
  867. @@ -744,8 +795,9 @@
  868.     CBlockLock Lock(&m_CriticalLock);
  869.  
  870.     // FIFOバッファにプッシュ
  871. -   PushFifoBuff(pData,dwLen);
  872. -  
  873. +   if(is_channel_valid) // チャンネル選択有効時のみ
  874. +     PushFifoBuff(pData,dwLen);
  875. +
  876.     // イベントセット
  877.     ::SetEvent(m_hOnStreamEvent);
  878.  
  879. @@ -760,12 +812,12 @@
  880.     PurgeTsStream();
  881.  
  882.     // バッファプールを確保する
  883. -   m_BufferPool.resize(ASYNCBUFFSIZE);
  884. +   m_BufferPool.resize(ASYNCTSQUEUENUM);
  885.  
  886. -   for(DWORD dwPos = 0UL ; dwPos < ASYNCBUFFSIZE ; dwPos++){
  887. +   for(DWORD dwPos = 0UL ; dwPos < ASYNCTSQUEUENUM ; dwPos++){
  888.         m_BufferPool[dwPos].resize(TSDATASIZE);
  889.         }
  890. -      
  891. +
  892.     m_dwEmptyFifoPos = 0UL;
  893.  }
  894.  
  895. @@ -785,7 +837,7 @@
  896.  void CBonTuner::PushFifoBuff(const BYTE *pData,DWORD len)
  897.  {
  898.     // バッファプールの最大数を超える場合は最後尾を切り捨てる
  899. -   while(m_FifoBuffer.size() >= ASYNCBUFFSIZE)
  900. +   while(m_FifoBuffer.size() >= ASYNCTSQUEUENUM)
  901.     {
  902.         m_FifoBuffer.pop();
  903.     }
  904. @@ -798,154 +850,155 @@
  905.     m_FifoBuffer.push(pWritePointer);
  906.  
  907.     // バッファプール位置更新
  908. -   if(++m_dwEmptyFifoPos >= ASYNCBUFFSIZE)m_dwEmptyFifoPos = 0UL;
  909. +   if(++m_dwEmptyFifoPos >= ASYNCTSQUEUENUM)m_dwEmptyFifoPos = 0UL;
  910.  }
  911.  
  912. -//*****    Load Ini File   *****
  913.  
  914. -void   CBonTuner::LoadIni(void)
  915. +//***** Init Tuner Property *****
  916. +
  917. +void CBonTuner::InitTunerProperty()
  918.  {
  919. -   _TCHAR  IniName[256];
  920. -   _TCHAR  bf[256];
  921. -   _TCHAR  key[32];
  922. -   _TCHAR  *p;
  923. -   int     i;
  924. +   //自分の名前を取得
  925. +   char szMyPath[_MAX_PATH] ;
  926. +   GetModuleFileNameA( m_hModule, szMyPath, _MAX_PATH ) ;
  927. +   char szMyDrive[_MAX_FNAME] ;
  928. +   char szMyDir[_MAX_FNAME] ;
  929. +   char szMyName[_MAX_FNAME] ;
  930. +   _splitpath_s( szMyPath, szMyDrive, _MAX_FNAME,szMyDir, _MAX_FNAME, szMyName, _MAX_FNAME, NULL, 0 ) ;
  931. +   _strupr_s( szMyName, sizeof(szMyName) ) ;
  932.  
  933. -   memset(VHFChInfo,0x00,sizeof(TChannelInfo)*VHFMAXCHANNELS);
  934. -   memset(UHFChInfo,0x00,sizeof(TChannelInfo)*UHFMAXCHANNELS);
  935. -   memset(CATVChInfo,0x00,sizeof(TChannelInfo)*CATVMAXCHANNELS);
  936. -   memset(BSChInfo,0x00,sizeof(TChannelInfo)*BSMAXCHANNELS);
  937. -   memset(CSChInfo,0x00,sizeof(TChannelInfo)*CSMAXCHANNELS);
  938. -   VHFNumChannel=0;
  939. -   UHFNumChannel=0;
  940. -   CATVNumChannel=0;
  941. -   BSNumChannel=0;
  942. -   CSNumChannel=0;
  943. -
  944. -   GetModuleFileName(NULL, IniName, MAX_PATH);
  945. -   p=_tcsrchr(IniName, _T('\\'));
  946. -   if (p)
  947. -       *p=0;
  948. -   _tcscat(IniName,_T("\\BonDriver_Bulldog.ini"));
  949. +   // Fx2 の ID を決定
  950. +   int nFx2Id=0 ;
  951. +   sscanf_s( szMyName, "BONDRIVER_BULLDOG_%1d", &nFx2Id ) ;
  952. +   m_yFx2Id = BYTE(nFx2Id) ;
  953.  
  954. -   if (GetFileAttributes(IniName)==-1)
  955. -   {
  956. -       for(i=1;    i<=12;  i++)
  957. -       {
  958. -           _stprintf(bf,_T("0,%d,0x0000,%d"),i,i);
  959. -           GetChannelInfo(bf,&VHFChInfo[i-1]);
  960. -       }
  961. -       VHFNumChannel=i-1;
  962. -       for(i=13;   i<=62;  i++)
  963. -       {
  964. -           _stprintf(bf,_T("0,%d,0x0000,%d"),i,i);
  965. -           GetChannelInfo(bf,&UHFChInfo[i-13]);
  966. -       }
  967. -       UHFNumChannel=i-13;
  968. -       for(i=13;   i<=63;  i++)
  969. -       {
  970. -           _stprintf(bf,_T("0,%d,0x0000,C%d"),i+100,i);
  971. -           GetChannelInfo(bf,&CATVChInfo[i-13]);
  972. -       }
  973. -       CATVNumChannel=i-13;
  974. -       for(i=0;    DefBSChInfo[i] != NULL; i++)
  975. -       {
  976. -           GetChannelInfo(DefBSChInfo[i],&BSChInfo[i]);
  977. -       }
  978. -       BSNumChannel=i;
  979. -       for(i=0;    DefCSChInfo[i] != NULL; i++)
  980. -       {
  981. -           GetChannelInfo(DefCSChInfo[i],&CSChInfo[i]);
  982. -       }
  983. -       CSNumChannel=i;
  984. +   //チューナー名を決定
  985. +   _stprintf_s( m_szTunerName, 100, TEXT("%s(ID=%d)"), TEXT("ブルドッグ"), nFx2Id ) ;
  986.  
  987. -       return;
  988. +   // Ini ファイルをロード
  989. +   LoadIniFile(string(szMyDrive)+string(szMyDir)+"BonDriver_Bulldog.ini") ;
  990. +   LoadIniFile(string(szMyDrive)+string(szMyDir)+string(szMyName)+".ini") ;
  991. +
  992. +   // Channel ファイルをロード
  993. +   if(!LoadChannelFile(string(szMyDrive)+string(szMyDir)+string(szMyName)+".ch.txt")) {
  994. +      if(!LoadChannelFile(string(szMyDrive)+string(szMyDir)+"BonDriver_Bulldog.ch.txt"))
  995. +        InitChannelToDefault() ;
  996.     }
  997. +}
  998.  
  999. -//Channel=ServiceID,PhysicalChannel,TSID,Name
  1000. +//*****    Laod Ini File *****
  1001.  
  1002. -   for(i=0;    i<VHFMAXCHANNELS;   i++)
  1003. -   {
  1004. -       _stprintf(key,_T("%d"),i);
  1005. -       GetPrivateProfileString(_T("VHF"),key,_T(""),bf,256,IniName);
  1006. -       if (bf[0]==0)
  1007. -           break;
  1008. +bool    CBonTuner::LoadIniFile(std::string strIniFileName)
  1009. +{
  1010. +  if(GetFileAttributesA(strIniFileName.c_str())==-1) return false ;
  1011. +  #define LOADINT(key) do { \
  1012. +     key = GetPrivateProfileIntA("BonTuner",#key, \
  1013. +       key,strIniFileName.c_str()) ; \
  1014. +   }while(0)
  1015. +  LOADINT(TSDATASIZE) ;
  1016. +  LOADINT(TSQUEUENUM) ;
  1017. +  LOADINT(ASYNCTSQUEUENUM) ;
  1018. +  #undef LOADINT
  1019. +  return true ;
  1020. +}
  1021.  
  1022. -       GetChannelInfo(bf,&VHFChInfo[i]);
  1023. -   }
  1024. -   VHFNumChannel=i;
  1025. +//*****    Load Channel File *****
  1026.  
  1027. -   for(i=0;    i<UHFMAXCHANNELS;   i++)
  1028. -   {
  1029. -       _stprintf(key,_T("%d"),i);
  1030. -       GetPrivateProfileString(_T("UHF"),key,_T(""),bf,256,IniName);
  1031. -       if (bf[0]==0)
  1032. -           break;
  1033. +bool   CBonTuner::LoadChannelFile(std::string strChannelFileName)
  1034. +{
  1035. +   FILE *st=NULL ;
  1036. +   fopen_s(&st,strChannelFileName.c_str(),"rt") ;
  1037. +   if(!st) return false;
  1038. +   char s[512] ;
  1039.  
  1040. -       GetChannelInfo(bf,&UHFChInfo[i]);
  1041. +   m_Channels.clear() ;
  1042. +   while(!feof(st)) {
  1043. +     s[0]='\0' ;
  1044. +     fgets(s,512,st) ;
  1045. +     string strLine = trim(string(s)) ;
  1046. +     wstring wstrLine = mbcs2wcs(strLine) ;
  1047. +     AddChannel(wstrLine) ;
  1048. +     //DBGOUT("%s",s) ;
  1049.     }
  1050. -   UHFNumChannel=i;
  1051.  
  1052. -   for(i=0;    i<CATVMAXCHANNELS;  i++)
  1053. -   {
  1054. -       _stprintf(key,_T("%d"),i);
  1055. -       GetPrivateProfileString(_T("CATV"),key,_T(""),bf,256,IniName);
  1056. -       if (bf[0]==0)
  1057. -           break;
  1058. +   fclose(st) ;
  1059. +
  1060. +   return true ;
  1061. +
  1062. +}
  1063. +
  1064. +//*****    Init Channel To Default *****
  1065. +
  1066. +void    CBonTuner::InitChannelToDefault()
  1067. +{
  1068. +   _TCHAR  bf[256];
  1069. +
  1070. +   m_Channels.clear() ;
  1071.  
  1072. -       GetChannelInfo(bf,&CATVChInfo[i]);
  1073. +   for(int i=1;    i<=12;  i++)
  1074. +   {
  1075. +       _stprintf(bf,_T("VHF,0,%d,0x0000,%d"),i,i);
  1076. +       AddChannel(bf);
  1077.     }
  1078. -   CATVNumChannel=i;
  1079.  
  1080. -   for(i=0;    i<BSMAXCHANNELS;    i++)
  1081. +   for(int i=13;   i<=62;  i++)
  1082.     {
  1083. -       _stprintf(key,_T("%d"),i);
  1084. -       GetPrivateProfileString(_T("BS"),key,_T(""),bf,256,IniName);
  1085. -       if (bf[0]==0)
  1086. -           break;
  1087. +       _stprintf(bf,_T("UHF,0,%d,0x0000,%d"),i,i);
  1088. +       AddChannel(bf);
  1089. +   }
  1090.  
  1091. -       GetChannelInfo(bf,&BSChInfo[i]);
  1092. +   for(int i=13;   i<=63;  i++)
  1093. +   {
  1094. +       _stprintf(bf,_T("CATV,0,%d,0x0000,C%d"),i+100,i);
  1095. +       AddChannel(bf);
  1096.     }
  1097. -   BSNumChannel=i;
  1098.  
  1099. -   for(i=0;    i<CSMAXCHANNELS;    i++)
  1100. +   for(int i=0;    DefBSChInfo[i] != NULL; i++)
  1101.     {
  1102. -       _stprintf(key,_T("%d"),i);
  1103. -       GetPrivateProfileString(_T("CS110"),key,_T(""),bf,256,IniName);
  1104. -       if (bf[0]==0)
  1105. -           break;
  1106. +       _stprintf(bf,_T("BS,%s"),DefBSChInfo[i]);
  1107. +       AddChannel(bf);
  1108. +   }
  1109.  
  1110. -       GetChannelInfo(bf,&CSChInfo[i]);
  1111. +   for(int i=0;    DefCSChInfo[i] != NULL; i++)
  1112. +   {
  1113. +       _stprintf(bf,_T("CS110,%s"),DefCSChInfo[i]);
  1114. +       AddChannel(bf);
  1115.     }
  1116. -   CSNumChannel=i;
  1117. -}
  1118.  
  1119. -//*****    Get Channel Info    *****
  1120. +}
  1121.  
  1122. -//Channel=ServiceID,PhysicalChannel,TSID,Name
  1123. +//*****    Add Channel *****
  1124.  
  1125. -void   CBonTuner::GetChannelInfo(_TCHAR *bf,TChannelInfo *ChInfo)
  1126. +bool CBonTuner::AddChannel(std::wstring wstrLine)
  1127.  {
  1128. -   _TCHAR  *p,*q;
  1129. -
  1130. -   memset(ChInfo,0x00,sizeof(TChannelInfo));
  1131. -
  1132. -   ChInfo->ServiceID=_tcstol(bf,&q,10);
  1133. -   if ((q) && (*q==_T(',')))
  1134. -   {
  1135. -       p=q+1;
  1136. -       ChInfo->Channel=_tcstol(p,&q,10);
  1137. -       if ((q) && (*q==_T(',')))
  1138. -       {
  1139. -           p=q+1;
  1140. -           ChInfo->TSID=_tcstol(p,&q,16);
  1141. -           if ((q) && (*q==_T(',')))
  1142. -           {
  1143. -               p=q+1;
  1144. -               _tcsncpy(ChInfo->Name,p,256);
  1145. -           }
  1146. -       }
  1147. +   int t=0 ;
  1148. +   wstring params[5] ;
  1149. +   params[0] = params[1] = params[2] = params[3] = params[4] = L"" ;
  1150. +   for(int i=0;i<wstrLine.length();i++) {
  1151. +     if(wstrLine[i]==L';') break ;
  1152. +     else if(wstrLine[i]==L',') {
  1153. +       t++ ; if(t==5) break ;
  1154. +     }else params[t] += wstrLine[i] ;
  1155. +   }
  1156. +   if(t>=4) {
  1157. +     for(int i=0;i<5;i++) params[i] = trim(params[i]) ;
  1158. +     int ServiceID = 0 ;
  1159. +     int Channel = 0 ;
  1160. +     float MegaHz = 0.f ;
  1161. +     int TSID = 0 ;
  1162. +     swscanf(params[1].c_str(),L"%i",&ServiceID) ;
  1163. +     if( params[2].length()>3&&
  1164. +         params[2].substr(params[2].length()-3)==L"MHz" ) {
  1165. +       swscanf(params[2].c_str(),L"%fMHz",&MegaHz) ;
  1166. +     }else {
  1167. +       swscanf(params[2].c_str(),L"%i",&Channel) ;
  1168. +     }
  1169. +     swscanf(params[3].c_str(),L"%i",&TSID) ;
  1170. +     m_Channels.push_back(
  1171. +       CHANNEL(params[0],ServiceID,Channel,TSID,params[4],MegaHz)) ;
  1172. +     return true ;
  1173.     }
  1174. +   return false ;
  1175.  }
  1176.  
  1177.  //*****    I2C Write   *****
  1178. diff --strip-trailing-cr -uPr Org/BonDriver/BonTuner.h Mod/BonDriver/BonTuner.h
  1179. --- Org/BonDriver/BonTuner.h    2012-02-22 16:36:04.000000000 +0900
  1180. +++ Mod/BonDriver/BonTuner.h    2013-12-29 15:50:37.000000000 +0900
  1181. @@ -10,27 +10,86 @@
  1182.  #include "UsbFx2Driver.h"
  1183.  #include <vector>
  1184.  #include <queue>
  1185. +#include <string>
  1186. +#include <cstring>
  1187. +#include <cstdio>
  1188. +#include <cstdlib>
  1189. +#include <cstdarg>
  1190.  
  1191.  using std::vector;
  1192.  using std::queue;
  1193.  
  1194. -#define    VHFMAXCHANNELS  12
  1195. -#define    UHFMAXCHANNELS  50
  1196. -#define    CATVMAXCHANNELS 51
  1197. -#define    BSMAXCHANNELS   64
  1198. -#define    CSMAXCHANNELS   256
  1199. -
  1200. -
  1201. -typedef    struct {
  1202. -   WORD    ServiceID;
  1203. -   int     Channel;
  1204. -   WORD    TSID;
  1205. -   _TCHAR  Name[256];
  1206. -}  TChannelInfo;
  1207.  
  1208. -typedef enum   CLockStatus {stLock, stLostLock, stNoSignal, stUnknown };
  1209. +#ifdef _DEBUG
  1210.  
  1211. -class CBonTuner :  public IBonDriver2,
  1212. +//#define DEBUG_TO_X_DRIVE
  1213. +
  1214. +void __inline DBGOUT( const char* pszFormat,... )
  1215. +{
  1216. +   std::va_list marker ;
  1217. +   char edit_str[1024] ;
  1218. +   va_start( marker, pszFormat ) ;
  1219. +   vsprintf_s( edit_str, sizeof(edit_str), pszFormat, marker ) ;
  1220. +   va_end( marker ) ;
  1221. +   #ifndef DEBUG_TO_X_DRIVE
  1222. +   OutputDebugStringA(edit_str) ;
  1223. +   #else
  1224. +   FILE *fp = std::fopen("X:\\Debug.txt","a+t") ;
  1225. +   if(fp) {
  1226. +     std::fputs(edit_str,fp) ;
  1227. +     std::fclose(fp) ;
  1228. +   }
  1229. +   #endif
  1230. +}
  1231. +
  1232. +#else
  1233. +
  1234. +#define DBGOUT /* empty */
  1235. +
  1236. +#endif
  1237. +
  1238. +
  1239. +
  1240. +
  1241. +
  1242. +
  1243. +
  1244. +
  1245. +
  1246. +struct CHANNEL {
  1247. +   std::wstring Space ;
  1248. +   WORD        ServiceID;
  1249. +   int         Channel;
  1250. +   float       MegaHz ;
  1251. +   WORD        TSID;
  1252. +   std::wstring    Name ;
  1253. +   bool isISDBT() { return TSID==0 ; }
  1254. +   bool isISDBS() { return !isISDBT() ; }
  1255. +   bool isChannelTuning() { return Channel!=0 ; }
  1256. +   bool isMegaHzTuning() { return !isChannelTuning() ; }
  1257. +   CHANNEL(std::wstring _Space, WORD _ServiceID,int _Channel,WORD _TSID,
  1258. +     std::wstring _Name, float _MegaHz=0.f) {
  1259. +       Space = _Space ;
  1260. +       ServiceID = _ServiceID ;
  1261. +       Channel = _Channel ;
  1262. +       TSID = _TSID ;
  1263. +       Name = _Name ;
  1264. +       MegaHz = _MegaHz ;
  1265. +   }
  1266. +   CHANNEL(const CHANNEL &_Src) {
  1267. +       Space = _Src.Space ;
  1268. +       ServiceID = _Src.ServiceID ;
  1269. +       Channel = _Src.Channel ;
  1270. +       TSID = _Src.TSID ;
  1271. +       Name = _Src.Name ;
  1272. +       MegaHz = _Src.MegaHz ;
  1273. +   }
  1274. +} ;
  1275. +typedef std::vector<CHANNEL> CHANNELS ;
  1276. +
  1277. +typedef enum    CLockStatus {stLock, stLostLock, stNoSignal, stUnknown };
  1278. +
  1279. +class CBonTuner :   public IBonDriver2,
  1280.             protected IUsbFx2DriverHost
  1281.  {
  1282.  public:
  1283. @@ -41,14 +100,14 @@
  1284.     int I2CRead(unsigned char adrs,int len,unsigned char *data);
  1285.     int I2CRead(unsigned char adrs,unsigned char reg,int len,unsigned char *data);
  1286.     int I2CRead(unsigned char adrs,unsigned tadrs,unsigned char reg,int len,unsigned char *data);
  1287. -   void    SetTSID(int tsid);
  1288. -   void    SetISDBTChannel(int ch);
  1289. -   void    SetISDBSChannel(int ch,int tsid);
  1290. -   CLockStatus IsLockISDBT(void);
  1291. -   CLockStatus IsLockISDBS(void);
  1292. -   CLockStatus IsLock(void);
  1293. -   double  GetCN(void);
  1294. -   double  GetBER(void);
  1295. +   void    SetTSID(int tsid);
  1296. +   void    SetISDBTChannel(int ch,float MegaHz=0.f);
  1297. +   void    SetISDBSChannel(int ch,int tsid,float MegaHz=0.f);
  1298. +   CLockStatus IsLockISDBT(void);
  1299. +   CLockStatus IsLockISDBS(void);
  1300. +   CLockStatus IsLock(void);
  1301. +   double  GetCN(void);
  1302. +   double  GetBER(void);
  1303.  
  1304.  // IBonDriver
  1305.     const BOOL OpenTuner(void);
  1306. @@ -69,12 +128,12 @@
  1307.     LPCTSTR GetTunerName(void);
  1308.  
  1309.     const BOOL IsTunerOpening(void);
  1310. -  
  1311. +
  1312.     LPCTSTR EnumTuningSpace(const DWORD dwSpace);
  1313.     LPCTSTR EnumChannelName(const DWORD dwSpace, const DWORD dwChannel);
  1314.  
  1315.     const BOOL SetChannel(const DWORD dwSpace, const DWORD dwChannel);
  1316. -  
  1317. +
  1318.     const DWORD GetCurSpace(void);
  1319.     const DWORD GetCurChannel(void);
  1320.  
  1321. @@ -90,32 +149,32 @@
  1322.  
  1323.     inline void PushFifoBuff(const BYTE *pData,DWORD len);
  1324.  
  1325. -   void    LoadIni(void);
  1326. -   void    GetChannelInfo(_TCHAR *bf,TChannelInfo *ChInfo);
  1327. +   void    InitTunerProperty() ;
  1328. +   bool    LoadIniFile(std::string strIniFileName);
  1329. +   bool    LoadChannelFile(std::string strChannelFileName);
  1330. +   void    InitChannelToDefault() ;
  1331. +   bool    AddChannel(std::wstring wstrLine) ;
  1332. +   const BOOL SetChannelSub(const DWORD dwCh) ;
  1333. +
  1334. +   CUsbFx2Driver   *m_pUsbFx2Driver;
  1335. +   CCriticalLock   m_CriticalLock;
  1336. +   HANDLE          m_hOnStreamEvent;
  1337. +
  1338. +   queue<BYTE *>   m_FifoBuffer;
  1339. +   vector<vector<BYTE>>    m_BufferPool;
  1340. +   DWORD           m_dwEmptyFifoPos;
  1341. +
  1342. +   bool            fOpened;
  1343. +   HANDLE          m_hMutex;
  1344. +
  1345. +   DWORD           m_dwCurSpace;
  1346. +   DWORD           m_dwCurChannel;
  1347. +
  1348. +   // チューナーのプロパティ
  1349. +   BYTE m_yFx2Id ;
  1350. +   TCHAR m_szTunerName[100] ;
  1351. +   CHANNELS m_Channels ;
  1352. +
  1353. +   BOOL is_channel_valid ;
  1354.  
  1355. -   CUsbFx2Driver   *m_pUsbFx2Driver;
  1356. -   CCriticalLock   m_CriticalLock;
  1357. -   HANDLE          m_hOnStreamEvent;
  1358. -
  1359. -   queue<BYTE *>   m_FifoBuffer;
  1360. -   vector<vector<BYTE>>    m_BufferPool;
  1361. -   DWORD           m_dwEmptyFifoPos;
  1362. -  
  1363. -   bool            fOpened;
  1364. -   HANDLE          m_hMutex;
  1365. -
  1366. -   DWORD           m_dwCurSpace;
  1367. -   DWORD           m_dwCurChannel;
  1368. -
  1369. -   TChannelInfo    VHFChInfo[VHFMAXCHANNELS];
  1370. -   TChannelInfo    UHFChInfo[UHFMAXCHANNELS];
  1371. -   TChannelInfo    CATVChInfo[CATVMAXCHANNELS];
  1372. -   TChannelInfo    BSChInfo[BSMAXCHANNELS];
  1373. -   TChannelInfo    CSChInfo[CSMAXCHANNELS];
  1374. -
  1375. -   int             VHFNumChannel;
  1376. -   int             UHFNumChannel;
  1377. -   int             CATVNumChannel;
  1378. -   int             BSNumChannel;
  1379. -   int             CSNumChannel;
  1380.  };
  1381. diff --strip-trailing-cr -uPr Org/BonDriver/Cusb2/UsbFx2Dirver.cpp Mod/BonDriver/Cusb2/UsbFx2Dirver.cpp
  1382. --- Org/BonDriver/Cusb2/UsbFx2Dirver.cpp    2012-02-22 15:50:18.000000000 +0900
  1383. +++ Mod/BonDriver/Cusb2/UsbFx2Dirver.cpp    2013-12-24 18:00:06.000000000 +0900
  1384. @@ -37,13 +37,17 @@
  1385.  
  1386.     // 一旦クローズする
  1387.     CloseDriver();
  1388. -  
  1389. +
  1390.     // ファームウェアをコピーする(cusb2内で書き換えられるため)
  1391.     BYTE *abyFirmBuffer=new BYTE[size]; //[FIRMWARE_SIZE];
  1392.     ::CopyMemory(abyFirmBuffer, pFirmWare, size);
  1393. -  
  1394. +
  1395.     // ファームウェアのダウンロードを行う
  1396. -   return fwload(byDeviceID, abyFirmBuffer, (BYTE *)lpszFirmName);
  1397. +   bool result = fwload(byDeviceID, abyFirmBuffer, (BYTE *)lpszFirmName);
  1398. +
  1399. +   delete [] abyFirmBuffer ;
  1400. +
  1401. +   return result ;
  1402.  }
  1403.  
  1404.  void CUsbFx2Driver::CloseDriver(void)
  1405. diff --strip-trailing-cr -uPr Org/BonDriver/TC90532/tc90532.cpp Mod/BonDriver/TC90532/tc90532.cpp
  1406. --- Org/BonDriver/TC90532/tc90532.cpp   2012-02-18 11:44:48.000000000 +0900
  1407. +++ Mod/BonDriver/TC90532/tc90532.cpp   2013-12-29 15:49:47.000000000 +0900
  1408. @@ -13,8 +13,6 @@
  1409.  #include "MxL5007.h"
  1410.  #include "tc90532.h"
  1411.  
  1412. -#define TC90502_OK              0
  1413. -#define TC90502_ERR             1
  1414.  
  1415.  #define    CH_MAX                  62//-13         //The Ch maximum number
  1416.  
  1417. @@ -91,7 +89,7 @@
  1418.     2053        //CH 24
  1419.  };
  1420.  
  1421. -UINT8 SetMxl5007(UINT8 CH)
  1422. +UINT8 SetMxl5007(UINT8 CH, float MegaHz)
  1423.  {
  1424.      UINT32 freq, x;
  1425.      MxL_ERR_MSG Status = MxL_OK;
  1426. @@ -101,18 +99,22 @@
  1427.      unsigned long rf;
  1428.      unsigned char bw;
  1429.  
  1430. -    x = CH;
  1431. +   if(!CH) {
  1432. +     rf = UINT32(MegaHz * 1000000.f) ;
  1433. +   }else {
  1434. +     x = CH;
  1435. +
  1436. +     if(CH < 4)          freq =  93000 + (x - 1) * 6000;
  1437. +     else if(CH < 8)     freq = 173000 + (x - 4) * 6000;
  1438. +     else if(CH < 13)    freq = 195000 + (x - 8) * 6000;
  1439. +     else if(CH < 63)  freq = 473143 + (x - 13) * 6000;
  1440. +     else if(CH < 123) freq = 111143 + (x - 113) * 6000;
  1441. +     else if(CH < 136) freq = 225143 + (x - 123) * 6000;
  1442. +     else              freq = 303143 + (x - 136) * 6000;
  1443.  
  1444. -    if(CH < 4)          freq =  93000 + (x - 1) * 6000;
  1445. -    else if(CH < 8)     freq = 173000 + (x - 4) * 6000;
  1446. -    else if(CH < 13)    freq = 195000 + (x - 8) * 6000;
  1447. -    else if(CH < 63)   freq = 473143 + (x - 13) * 6000;
  1448. -   else if(CH < 123)   freq = 111143 + (x - 113) * 6000;
  1449. -   else if(CH < 136)   freq = 225143 + (x - 123) * 6000;
  1450. -   else                freq = 303143 + (x - 136) * 6000;
  1451. -
  1452. -    rf = freq * 1000UL;
  1453. -    bw = 6;
  1454. +     rf = freq * 1000UL;
  1455. +   }
  1456. +   bw = 6;
  1457.  
  1458.     myTuner.DemodAddr = DEMODTADRS;
  1459.      //Set Tuner's I2C Address
  1460. @@ -162,7 +164,7 @@
  1461.      return 0;
  1462.  }
  1463.  
  1464. -UINT8 SetStv6110a(UINT8 BSCh)
  1465. +UINT8 SetStv6110a(UINT8 BSCh,float MegaHz)
  1466.  {
  1467.     UINT8 STB6110A[8] = {0x07,0x13,0xdc,0x85,0x17,0x01,0xe6,0x1e};
  1468.     UINT8 K;
  1469. @@ -177,10 +179,14 @@
  1470.     float RF;
  1471.     float symb = 28.86;
  1472.  
  1473. -   if (BSCh & 1)
  1474. -       RF = BS_table[BSCh/2];
  1475. -   else
  1476. -       RF = CS_table[BSCh/2-1];
  1477. +   if(!BSCh) {
  1478. +     RF = MegaHz ;
  1479. +   }else {
  1480. +     if (BSCh & 1)
  1481. +         RF = BS_table[BSCh/2];
  1482. +     else
  1483. +         RF = CS_table[BSCh/2-1];
  1484. +   }
  1485.  
  1486.     for(i=0; i<8; i++)
  1487.     {
  1488. @@ -231,7 +237,7 @@
  1489.  
  1490.     divider = (UINT16)(((RF * (float)r * pow(2.0,(double)(P+1)) * 10.0 / (float)XTAL) + 5.0) / 10.0) ;
  1491.     STB6110A[2] = divider & 0x00ff;
  1492. -   STB6110A[3] = ((rDivOpt & 0x3) << 6) | (Presc << 5) | (P << 4) | ((divider & 0x700) >> 8);
  1493. +   STB6110A[3] = ((rDivOpt & 0x3) << 6) | (Presc << 5) | (P << 4) | ((divider & 0xF00) >> 8);
  1494.  
  1495.     if(WriteTuner(DemodAddress+1,0xC6,0x02,STB6110A[2]) != 0)
  1496.         return 1;
  1497. diff --strip-trailing-cr -uPr Org/BonDriver/TC90532/tc90532.h Mod/BonDriver/TC90532/tc90532.h
  1498. --- Org/BonDriver/TC90532/tc90532.h 2012-02-07 20:05:32.000000000 +0900
  1499. +++ Mod/BonDriver/TC90532/tc90532.h 2013-12-28 20:17:10.000000000 +0900
  1500. @@ -2,6 +2,9 @@
  1501.  #ifndef TC90532_H
  1502.  #define TC90532_H
  1503.  
  1504. +#define TC90502_OK              0
  1505. +#define TC90502_ERR             1
  1506. +
  1507.  #define DemodAddress            0x10
  1508.  
  1509.  #define    DEMODTADRS              0x10
  1510. @@ -14,8 +17,8 @@
  1511.  #define ISDB_S                 2
  1512.  
  1513.  
  1514. -UINT8 SetMxl5007(UINT8 CH);
  1515. -UINT8 SetStv6110a(UINT8 BSCh);
  1516. +UINT8 SetMxl5007(UINT8 CH,float MegaHz=0);
  1517. +UINT8 SetStv6110a(UINT8 BSCh,float MegaHz=0);
  1518.  UINT8 SetTC90502(UINT8 TS);
  1519.  
  1520.  
  1521. diff --strip-trailing-cr -uPr Org/BonDriver/readme_mod.txt Mod/BonDriver/readme_mod.txt
  1522. --- Org/BonDriver/readme_mod.txt    1970-01-01 09:00:00.000000000 +0900
  1523. +++ Mod/BonDriver/readme_mod.txt    2013-12-29 15:31:03.000000000 +0900
  1524. @@ -0,0 +1,25 @@
  1525. +Bulldog チューナー用 BonDriver 改変パッチ当てMODソース @ 2013/12/29
  1526. +
  1527. +  以下の2ファイルを BonDriver_Bulldog.dll と同じ場所において使用する。
  1528. +
  1529. +  BonDriver_Bulldog.ini     ; 設定ファル
  1530. +  BonDriver_Bulldog.ch.txt  ; チャンネル定義ファイル
  1531. +
  1532. +  オプティマイズで配布しているカメレオンUSBFX2のID書きツール(FX2WRID)
  1533. +  利用すると大量のBulldogチューナーを同時利用することもできる筈だが未検証。
  1534. +
  1535. +  <例> ID=0 のチューナー
  1536. +    BonDriver_Bulldog_0.dll     ; BonDriver_Bulldog.dll を複製したもの
  1537. +    BonDriver_Bulldog_0.ini     ; BonDriver_Bulldog.ini を複製したもの
  1538. +    BonDriver_Bulldog_0.ch.txt  ; BonDriver_Bulldog.ch.txt を複製したもの
  1539. +
  1540. +  <例> ID=1 のチューナー
  1541. +    BonDriver_Bulldog_1.dll     ; BonDriver_Bulldog.dll を複製したもの
  1542. +    BonDriver_Bulldog_1.ini     ; BonDriver_Bulldog.ini を複製したもの
  1543. +    BonDriver_Bulldog_1.ch.txt  ; BonDriver_Bulldog.ch.txt を複製したもの
  1544. +
  1545. +  <例> ID=2 のチューナー
  1546. +    BonDriver_Bulldog_2.dll     ; BonDriver_Bulldog.dll を複製したもの
  1547. +    BonDriver_Bulldog_2.ini     ; BonDriver_Bulldog.ini を複製したもの
  1548. +    BonDriver_Bulldog_2.ch.txt  ; BonDriver_Bulldog.ch.txt を複製したもの
  1549. +
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement