Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --strip-trailing-cr -uPr Org/BonDriver/BonDriver_Bulldog.ch.txt Mod/BonDriver/BonDriver_Bulldog.ch.txt
- --- Org/BonDriver/BonDriver_Bulldog.ch.txt 1970-01-01 09:00:00.000000000 +0900
- +++ Mod/BonDriver/BonDriver_Bulldog.ch.txt 2013-12-29 15:30:55.000000000 +0900
- @@ -0,0 +1,206 @@
- +; Bulldog 用 チャンネルファイル (2013/12/29)
- +;
- +; チャンネル情報を変更する場合は、このファイルを編集して
- +; プレフィックスが同じ名前のドライバと同ディレクトリに
- +; 拡張子 .ch.txt としてこのファイルを置くこと。
- +;
- +; ※ スペースの名前と順番は間違えてはいけないと思います。
- +;
- +; スペース名, サービスID, 物理チャンネル番号or周波数MHz, TSID, チャンネル名
- +
- + ; VHF
- +
- +VHF, 0, 1,0x0000, 1
- +VHF, 0, 2,0x0000, 2
- +VHF, 0, 3,0x0000, 3
- +VHF, 0, 4,0x0000, 4
- +VHF, 0, 5,0x0000, 5
- +VHF, 0, 6,0x0000, 6
- +VHF, 0, 7,0x0000, 7
- +VHF, 0, 8,0x0000, 8
- +VHF, 0, 9,0x0000, 9
- +VHF, 0,10,0x0000,10
- +VHF, 0,11,0x0000,11
- +VHF, 0,12,0x0000,12
- +
- + ; UHF
- +
- +UHF, 0,13,0x0000,13
- +UHF, 0,14,0x0000,14
- +UHF, 0,15,0x0000,15
- +UHF, 0,16,0x0000,16
- +UHF, 0,17,0x0000,17
- +UHF, 0,18,0x0000,18
- +UHF, 0,19,0x0000,19
- +UHF, 0,20,0x0000,20
- +UHF, 0,21,0x0000,21
- +UHF, 0,22,0x0000,22
- +UHF, 0,23,0x0000,23
- +UHF, 0,24,0x0000,24
- +UHF, 0,25,0x0000,25
- +UHF, 0,26,0x0000,26
- +UHF, 0,27,0x0000,27
- +UHF, 0,28,0x0000,28
- +UHF, 0,29,0x0000,29
- +UHF, 0,30,0x0000,30
- +UHF, 0,31,0x0000,31
- +UHF, 0,32,0x0000,32
- +UHF, 0,33,0x0000,33
- +UHF, 0,34,0x0000,34
- +UHF, 0,35,0x0000,35
- +UHF, 0,36,0x0000,36
- +UHF, 0,37,0x0000,37
- +UHF, 0,38,0x0000,38
- +UHF, 0,39,0x0000,39
- +UHF, 0,40,0x0000,40
- +UHF, 0,41,0x0000,41
- +UHF, 0,42,0x0000,42
- +UHF, 0,43,0x0000,43
- +UHF, 0,44,0x0000,44
- +UHF, 0,45,0x0000,45
- +UHF, 0,46,0x0000,46
- +UHF, 0,47,0x0000,47
- +UHF, 0,48,0x0000,48
- +UHF, 0,49,0x0000,49
- +UHF, 0,50,0x0000,50
- +UHF, 0,51,0x0000,51
- +UHF, 0,52,0x0000,52
- +UHF, 0,53,0x0000,53
- +UHF, 0,54,0x0000,54
- +UHF, 0,55,0x0000,55
- +UHF, 0,56,0x0000,56
- +UHF, 0,57,0x0000,57
- +UHF, 0,58,0x0000,58
- +UHF, 0,59,0x0000,59
- +UHF, 0,60,0x0000,60
- +UHF, 0,61,0x0000,61
- +UHF, 0,62,0x0000,62
- +
- + ; CATV
- +
- +CATV, 0,113,0x0000,C13
- +CATV, 0,114,0x0000,C14
- +CATV, 0,115,0x0000,C15
- +CATV, 0,116,0x0000,C16
- +CATV, 0,117,0x0000,C17
- +CATV, 0,118,0x0000,C18
- +CATV, 0,119,0x0000,C19
- +CATV, 0,120,0x0000,C20
- +CATV, 0,121,0x0000,C21
- +CATV, 0,122,0x0000,C22
- +CATV, 0,123,0x0000,C23
- +CATV, 0,124,0x0000,C24
- +CATV, 0,125,0x0000,C25
- +CATV, 0,126,0x0000,C26
- +CATV, 0,127,0x0000,C27
- +CATV, 0,128,0x0000,C28
- +CATV, 0,129,0x0000,C29
- +CATV, 0,130,0x0000,C30
- +CATV, 0,131,0x0000,C31
- +CATV, 0,132,0x0000,C32
- +CATV, 0,133,0x0000,C33
- +CATV, 0,134,0x0000,C34
- +CATV, 0,135,0x0000,C35
- +CATV, 0,136,0x0000,C36
- +CATV, 0,137,0x0000,C37
- +CATV, 0,138,0x0000,C38
- +CATV, 0,139,0x0000,C39
- +CATV, 0,140,0x0000,C40
- +CATV, 0,141,0x0000,C41
- +CATV, 0,142,0x0000,C42
- +CATV, 0,143,0x0000,C43
- +CATV, 0,144,0x0000,C44
- +CATV, 0,145,0x0000,C45
- +CATV, 0,146,0x0000,C46
- +CATV, 0,147,0x0000,C47
- +CATV, 0,148,0x0000,C48
- +CATV, 0,149,0x0000,C49
- +CATV, 0,150,0x0000,C50
- +CATV, 0,151,0x0000,C51
- +CATV, 0,152,0x0000,C52
- +CATV, 0,153,0x0000,C53
- +CATV, 0,154,0x0000,C54
- +CATV, 0,155,0x0000,C55
- +CATV, 0,156,0x0000,C56
- +CATV, 0,157,0x0000,C57
- +CATV, 0,158,0x0000,C58
- +CATV, 0,159,0x0000,C59
- +CATV, 0,160,0x0000,C60
- +CATV, 0,161,0x0000,C61
- +CATV, 0,162,0x0000,C62
- +CATV, 0,163,0x0000,C63
- +
- + ; BS (ストリームが重複するチャンネルはコメントアウトしている)
- +
- +BS, 151, 1,0x4010,BS1/TS0 ;BS朝日
- +BS, 161, 1,0x4011,BS1/TS1 ;BS-TBS
- +BS, 191, 3,0x4030,BS3/TS0 ;WOWOWプライム
- +;BS, 791,17,0x4030,BS3/TS0 ;navi
- +BS, 171, 3,0x4031,BS3/TS1 ;BSジャパン
- +BS, 192, 5,0x4450,BS5/TS0 ;WOWOWライブ
- +BS, 193, 5,0x4451,BS5/TS1 ;WOWOWシネマ
- +BS, 201, 7,0x4470,BS7/TS0 ;スター・チャンネル2
- +;BS, 202, 7,0x4470,BS7/TS0 ;スター・チャンネル3
- +BS, 236, 7,0x4671,BS7/TS1 ;BSアニマックス
- +BS, 256, 7,0x4672,BS7/TS2 ;ディズニー・チャンネル
- +BS, 211, 9,0x4090,BS9/TS0 ;BS11
- +BS, 200, 9,0x4091,BS9/TS1 ;スター・チャンネル1
- +BS, 222, 9,0x4092,BS9/TS2 ;TwellV
- +BS, 238,11,0x46B0,BS11/TS0 ;FOX bs238
- +BS, 241,11,0x46B1,BS11/TS1 ;BSスカパー!
- +BS, 231,11,0x46B2,BS11/TS2 ;放送大学BS1
- +;BS, 232,11,0x46B2,BS11/TS2 ;放送大学BS2
- +;BS, 233,11,0x46B2,BS11/TS2 ;放送大学BS3
- +BS, 141,13,0x40D0,BS13/TS0 ;BS日テレ
- +BS, 181,13,0x40D1,BS13/TS1 ;BSフジ
- +BS, 101,15,0x40F1,BS15/TS1 ;NHKBS1
- +BS, 103,15,0x40F2,BS15/TS2 ;NHKBSプレミアム
- +;BS, 910,17,0x40F2,BS15/TS2 ;WNI・910
- +BS, 291,17,0x4310,BS17/TS1 ;NHK総合・東京
- +;BS, 292,17,0x4310,BS17/TS1 ;NHKEテレ東京
- +BS, 294,17,0x4311,BS17/TS2 ;日テレ
- +;BS, 295,17,0x4311,BS17/TS2 ;テレビ朝日
- +;BS, 296,17,0x4311,BS17/TS2 ;TBS
- +;BS, 297,17,0x4311,BS17/TS2 ;テレビ東京
- +;BS, 298,17,0x4310,BS17/TS1 ;フジテレビ
- +;BS, 531,17,0x46B2,BS11/TS2 放送大学ラジオ
- +BS, 234,19,0x4730,BS19/TS0 ;グリーンチャンネル
- +BS, 242,19,0x4731,BS19/TS1 ;J SPORTS 1
- +BS, 243,19,0x4732,BS19/TS2 ;J SPORTS 2
- +BS, 252,21,0x4750,BS21/TS0 ;IMAGICA BS
- +BS, 244,21,0x4751,BS21/TS1 ;J SPORTS 3
- +BS, 245,21,0x4752,BS21/TS2 ;J SPORTS 4
- +BS, 251,23,0x4770,BS23/TS0 ;BS釣りビジョン
- +BS, 255,23,0x4771,BS23/TS1 ;日本映画専門チャンネル
- +BS, 258,23,0x4772,BS23/TS2 ;D-Life
- +
- + ; CS110
- +
- +CS110, 0, 2,0x6020,ND2
- +CS110, 0, 4,0x7040,ND4
- +CS110, 0, 6,0x7060,ND6
- +CS110, 0, 8,0x6080,ND8
- +CS110, 0,10,0x60A0,ND10
- +CS110, 0,12,0x70C0,ND12
- +CS110, 0,14,0x70E0,ND14
- +CS110, 0,16,0x7100,ND16
- +CS110, 0,18,0x7120,ND18
- +CS110, 0,20,0x7140,ND20
- +CS110, 0,22,0x7160,ND22
- +CS110, 0,24,0x7180,ND24
- +
- + ; CS110 ( MHz で記述する場合の例 )
- +
- +;CS110, 0, 1613.0MHz, 0x6020, ND2
- +;CS110, 0, 1653.0MHz, 0x7040, ND4
- +;CS110, 0, 1693.0MHz, 0x7060, ND6
- +;CS110, 0, 1733.0MHz, 0x6080, ND8
- +;CS110, 0, 1773.0MHz, 0x60A0, ND10
- +;CS110, 0, 1813.0MHz, 0x70C0, ND12
- +;CS110, 0, 1853.0MHz, 0x70E0, ND14
- +;CS110, 0, 1893.0MHz, 0x7100, ND16
- +;CS110, 0, 1933.0MHz, 0x7120, ND18
- +;CS110, 0, 1973.0MHz, 0x7140, ND20
- +;CS110, 0, 2013.0MHz, 0x7160, ND22
- +;CS110, 0, 2053.0MHz, 0x7180, ND24
- +
- diff --strip-trailing-cr -uPr Org/BonDriver/BonDriver_Bulldog.ini Mod/BonDriver/BonDriver_Bulldog.ini
- --- Org/BonDriver/BonDriver_Bulldog.ini 2012-03-17 13:01:48.000000000 +0900
- +++ Mod/BonDriver/BonDriver_Bulldog.ini 2013-12-28 22:21:20.000000000 +0900
- @@ -1,205 +1,10 @@
- -[BonDriverAKB02]
- -
- -
- -//Channel=ServiceID,PhysicalChannel,TSID,Name
- -[VHF]
- -0= 0, 1,0x0000,1
- -1= 0, 2,0x0000,2
- -2= 0, 3,0x0000,3
- -3= 0, 4,0x0000,4
- -4= 0, 5,0x0000,5
- -5= 0, 6,0x0000,6
- -6= 0, 7,0x0000,7
- -7= 0, 8,0x0000,8
- -8= 0, 9,0x0000,9
- -9= 0,10,0x0000,10
- -10= 0,11,0x0000,11
- -11= 0,12,0x0000,12
- -
- -[UHF]
- -0= 0,13,0x0000,13
- -1= 0,14,0x0000,14
- -2= 0,15,0x0000,15
- -3= 0,16,0x0000,16
- -4= 0,17,0x0000,17
- -5= 0,18,0x0000,18
- -6= 0,19,0x0000,19
- -7= 0,20,0x0000,20
- -8= 0,21,0x0000,21
- -9= 0,22,0x0000,22
- -10= 0,23,0x0000,23
- -11= 0,24,0x0000,24
- -12= 0,25,0x0000,25
- -13= 0,26,0x0000,26
- -14= 0,27,0x0000,27
- -15= 0,28,0x0000,28
- -16= 0,29,0x0000,29
- -17= 0,30,0x0000,30
- -18= 0,31,0x0000,31
- -19= 0,32,0x0000,32
- -20= 0,33,0x0000,33
- -21= 0,34,0x0000,34
- -22= 0,35,0x0000,35
- -23= 0,36,0x0000,36
- -24= 0,37,0x0000,37
- -25= 0,38,0x0000,38
- -26= 0,39,0x0000,39
- -27= 0,40,0x0000,40
- -28= 0,41,0x0000,41
- -29= 0,42,0x0000,42
- -30= 0,43,0x0000,43
- -31= 0,44,0x0000,44
- -32= 0,45,0x0000,45
- -33= 0,46,0x0000,46
- -34= 0,47,0x0000,47
- -35= 0,48,0x0000,48
- -36= 0,49,0x0000,49
- -37= 0,50,0x0000,50
- -38= 0,51,0x0000,51
- -39= 0,52,0x0000,52
- -40= 0,53,0x0000,53
- -41= 0,54,0x0000,54
- -42= 0,55,0x0000,55
- -43= 0,56,0x0000,56
- -44= 0,57,0x0000,57
- -45= 0,58,0x0000,58
- -46= 0,59,0x0000,59
- -47= 0,60,0x0000,60
- -48= 0,61,0x0000,61
- -49= 0,62,0x0000,62
- -
- -[CATV]
- -0= 0,113,0x0000,C13
- -1= 0,114,0x0000,C14
- -2= 0,115,0x0000,C15
- -3= 0,116,0x0000,C16
- -4= 0,117,0x0000,C17
- -5= 0,118,0x0000,C18
- -6= 0,119,0x0000,C19
- -7= 0,120,0x0000,C20
- -8= 0,121,0x0000,C21
- -9= 0,122,0x0000,C22
- -10= 0,123,0x0000,C23
- -11= 0,124,0x0000,C24
- -12= 0,125,0x0000,C25
- -13= 0,126,0x0000,C26
- -14= 0,127,0x0000,C27
- -15= 0,128,0x0000,C28
- -16= 0,129,0x0000,C29
- -17= 0,130,0x0000,C30
- -18= 0,131,0x0000,C31
- -19= 0,132,0x0000,C32
- -20= 0,123,0x0000,C33
- -21= 0,124,0x0000,C34
- -22= 0,125,0x0000,C35
- -23= 0,126,0x0000,C36
- -24= 0,127,0x0000,C37
- -25= 0,128,0x0000,C38
- -26= 0,129,0x0000,C39
- -27= 0,130,0x0000,C40
- -28= 0,131,0x0000,C41
- -29= 0,132,0x0000,C42
- -30= 0,123,0x0000,C43
- -31= 0,124,0x0000,C44
- -32= 0,125,0x0000,C45
- -33= 0,126,0x0000,C46
- -34= 0,127,0x0000,C47
- -35= 0,128,0x0000,C48
- -36= 0,129,0x0000,C49
- -37= 0,130,0x0000,C50
- -38= 0,131,0x0000,C51
- -39= 0,132,0x0000,C52
- -40= 0,123,0x0000,C53
- -41= 0,124,0x0000,C54
- -42= 0,125,0x0000,C55
- -43= 0,126,0x0000,C56
- -44= 0,127,0x0000,C57
- -45= 0,128,0x0000,C58
- -46= 0,129,0x0000,C59
- -47= 0,130,0x0000,C60
- -48= 0,131,0x0000,C61
- -49= 0,132,0x0000,C62
- -50= 0,123,0x0000,C63
- -
- -[BS]
- -0= 151, 1,0x4010,BS1/TS0 BS朝日
- -1= 161, 1,0x4011,BS1/TS1 BS-TBS
- -2= 191, 3,0x4030,BS3/TS0 WOWOWプライム
- -3= 791,17,0x4030,BS3/TS0 navi
- -4= 171, 3,0x4031,BS3/TS1 BSジャパン
- -5= 192, 5,0x4450,BS5/TS0 WOWOWライブ
- -6= 193, 5,0x4451,BS5/TS1 WOWOWシネマ
- -7= 201, 7,0x4470,BS7/TS0 スター・チャンネル2
- -8= 202, 7,0x4470,BS7/TS0 スター・チャンネル3
- -9= 236, 7,0x4671,BS7/TS1 BSアニマックス
- -10=256, 7,0x4672,BS7/TS2 ディズニー・チャンネル
- -11=211, 9,0x4090,BS9/TS0 BS11
- -12=200, 9,0x4091,BS9/TS1 スター・チャンネル1
- -13=222, 9,0x4092,BS9/TS2 TwellV
- -14=238,11,0x46B0,BS11/TS0 FOX bs238
- -15=241,11,0x46B1,BS11/TS1 BSスカパー!
- -16=231,11,0x46B2,BS11/TS2 放送大学BS1
- -17=232,11,0x46B2,BS11/TS2 放送大学BS2
- -18=233,11,0x46B2,BS11/TS2 放送大学BS3
- -19=141,13,0x40D0,BS13/TS0 BS日テレ
- -20=181,13,0x40D1,BS13/TS1 BSフジ
- -21=101,15,0x40F1,BS15/TS1 NHKBS1
- -22=103,15,0x40F2,BS15/TS2 NHKBSプレミアム
- -23=910,17,0x40F2,BS15/TS2 WNI・910
- -24=291,17,0x4310,BS17/TS1 NHK総合・東京
- -25=292,17,0x4310,BS17/TS1 NHKEテレ東京
- -26=294,17,0x4311,BS17/TS2 日テレ
- -27=295,17,0x4311,BS17/TS2 テレビ朝日
- -28=296,17,0x4311,BS17/TS2 TBS
- -29=297,17,0x4311,BS17/TS2 テレビ東京
- -30=298,17,0x4310,BS17/TS1 フジテレビ
- -31=531,17,0x46B2,BS11/TS2 放送大学ラジオ
- -32=234,19,0x4730,BS19/TS0 グリーンチャンネル
- -33=242,19,0x4731,BS19/TS1 J SPORTS 1
- -34=243,19,0x4732,BS19/TS2 J SPORTS 2
- -35=252,21,0x4750,BS21/TS0 IMAGICA BS
- -36=244,21,0x4751,BS21/TS1 J SPORTS 3
- -37=245,21,0x4752,BS21/TS2 J SPORTS 4
- -38=251,23,0x4770,BS23/TS0 BS釣りビジョン
- -39=255,23,0x4771,BS23/TS1 日本映画専門チャンネル
- -40=258,23,0x4772,BS23/TS2 D-Life
- -
- -
- -0= 101,15,0x40F1,NHKBS1
- -1= 102,15,0x40F1,NHK BS2
- -2= 103,15,0x40F2,NHK BSプレミアム
- -3= 141,13,0x40D0,BS日テレ
- -4= 151, 1,0x4010,BS朝日1
- -5= 161, 1,0x4011,BS-TBS
- -6= 171, 3,0x4031,BSジャパン
- -7= 181,13,0x40D1,BSフジ・181
- -8= 191, 3,0x4030,WOWOWプライム
- -9= 200, 9,0x4470,スター・チャンネル1,
- -10=211, 9,0x4090,BS11
- -11=222, 9,0x4092,TwellV
- -12=192, 5,0x4030,WOWOWライブ
- -13=193, 5,0x4030,WOWOWシネマ
- -14=201, 7,0x4470,スター・チャンネル2
- -15=202, 7,0x4470,スター・チャンネル3
- -16=231,11,0x46B2,放送大学テレビ
- -17=234,19,0x4730,グリーンチャンネル
- -18=236, 7,0x4671,BSアニマックス
- -19=238,11,0x46B0,FOX bs238
- -20=241,11,0x46B1,BSスカパー!
- -21=242,19,0x4731,J SPORTS 1
- -22=243,19,0x4732,J SPORTS 2
- -
- -[CS110]
- -0= 0, 2,0x6020,ND2
- -1= 0, 4,0x7040,ND4
- -2= 0, 6,0x7060,ND6
- -3= 0, 8,0x6080,ND8
- -4= 0,10,0x60A0,ND10
- -5= 0,12,0x70C0,ND12
- -6= 0,14,0x70E0,ND14
- -7= 0,16,0x7100,ND16
- -8= 0,18,0x7120,ND18
- -9= 0,20,0x7140,ND20
- -10=0,22,0x7160,ND22
- -11=0,24,0x7180,ND24
- +[BonTuner]
- +TSDATASIZE=65536
- +TSQUEUENUM=16
- +ASYNCTSQUEUENUM=512
- +
- +; Windows7以降の新OS用の推奨設定
- +;TSDATASIZE=196608
- +;TSQUEUENUM=24
- +;ASYNCTSQUEUENUM=768
- diff --strip-trailing-cr -uPr Org/BonDriver/BonTuner.cpp Mod/BonDriver/BonTuner.cpp
- --- Org/BonDriver/BonTuner.cpp 2012-04-07 16:37:52.000000000 +0900
- +++ Mod/BonDriver/BonTuner.cpp 2013-12-29 15:49:07.000000000 +0900
- @@ -20,15 +20,12 @@
- // 定数定義
- //////////////////////////////////////////////////////////////////////
- -// ミューテックス名
- -#define MUTEX_NAME TEXT("BonDriver Bulldog")
- -
- // 受信サイズ
- -#define TSDATASIZE 65536UL // TSデータのサイズ
- +DWORD TSDATASIZE = 65536UL ; // TSデータのサイズ
- +DWORD TSQUEUENUM = 16UL ; // TSデータの環状ストック数
- // FIFOバッファ設定
- -#define ASYNCBUFFTIME 4UL // バッファ長 = 4秒
- -#define ASYNCBUFFSIZE ( 0x400000 / TSDATASIZE * ASYNCBUFFTIME ) // 平均32Mbpsとする
- +DWORD ASYNCTSQUEUENUM = 256UL ; // 非同期TSデータの環状ストック数
- // エンドポイントインデックス
- #define EPINDEX_IN 0UL
- @@ -75,12 +72,12 @@
- _T("151, 1,0x4010,BS1/TS0 BS朝日"),
- _T("161, 1,0x4011,BS1/TS1 BS-TBS"),
- _T("191, 3,0x4030,BS3/TS0 WOWOWプライム"),
- -_T("791,17,0x4030,BS3/TS0 navi"),
- +//_T("791,17,0x4030,BS3/TS0 navi"),
- _T("171, 3,0x4031,BS3/TS1 BSジャパン"),
- _T("192, 5,0x4450,BS5/TS0 WOWOWライブ"),
- _T("193, 5,0x4451,BS5/TS1 WOWOWシネマ"),
- _T("201, 7,0x4470,BS7/TS0 スター・チャンネル2"),
- -_T("202, 7,0x4470,BS7/TS0 スター・チャンネル3"),
- +//_T("202, 7,0x4470,BS7/TS0 スター・チャンネル3"),
- _T("236, 7,0x4671,BS7/TS1 BSアニマックス"),
- _T("256, 7,0x4672,BS7/TS2 ディズニー・チャンネル"),
- _T("211, 9,0x4090,BS9/TS0 BS11"),
- @@ -89,21 +86,21 @@
- _T("238,11,0x46B0,BS11/TS0 FOX bs238"),
- _T("241,11,0x46B1,BS11/TS1 BSスカパー!"),
- _T("231,11,0x46B2,BS11/TS2 放送大学BS1"),
- -_T("232,11,0x46B2,BS11/TS2 放送大学BS2"),
- -_T("233,11,0x46B2,BS11/TS2 放送大学BS3"),
- +//_T("232,11,0x46B2,BS11/TS2 放送大学BS2"),
- +//_T("233,11,0x46B2,BS11/TS2 放送大学BS3"),
- _T("141,13,0x40D0,BS13/TS0 BS日テレ"),
- _T("181,13,0x40D1,BS13/TS1 BSフジ"),
- _T("101,15,0x40F1,BS15/TS1 NHKBS1"),
- _T("103,15,0x40F2,BS15/TS2 NHKBSプレミアム"),
- -_T("910,17,0x40F2,BS15/TS2 WNI・910"),
- +//_T("910,17,0x40F2,BS15/TS2 WNI・910"),
- _T("291,17,0x4310,BS17/TS1 NHK総合・東京"),
- -_T("292,17,0x4310,BS17/TS1 NHKEテレ東京"),
- +//_T("292,17,0x4310,BS17/TS1 NHKEテレ東京"),
- _T("294,17,0x4311,BS17/TS2 日テレ"),
- -_T("295,17,0x4311,BS17/TS2 テレビ朝日"),
- -_T("296,17,0x4311,BS17/TS2 TBS"),
- -_T("297,17,0x4311,BS17/TS2 テレビ東京"),
- -_T("298,17,0x4310,BS17/TS1 フジテレビ"),
- -_T("531,17,0x46B2,BS11/TS2 放送大学ラジオ"),
- +//_T("295,17,0x4311,BS17/TS2 テレビ朝日"),
- +//_T("296,17,0x4311,BS17/TS2 TBS"),
- +//_T("297,17,0x4311,BS17/TS2 テレビ東京"),
- +//_T("298,17,0x4310,BS17/TS1 フジテレビ"),
- +//_T("531,17,0x46B2,BS11/TS2 放送大学ラジオ"),
- _T("234,19,0x4730,BS19/TS0 グリーンチャンネル"),
- _T("242,19,0x4731,BS19/TS1 J SPORTS 1"),
- _T("243,19,0x4732,BS19/TS2 J SPORTS 2"),
- @@ -134,6 +131,7 @@
- NULL
- };
- +using namespace std ;
- //////////////////////////////////////////////////////////////////////
- // インスタンス生成メソッド
- @@ -151,6 +149,41 @@
- //////////////////////////////////////////////////////////////////////
- +// ユーティリティ
- +//////////////////////////////////////////////////////////////////////
- +
- +template<class String> String inline trim(const String &str)
- +{
- + String str2 ; str2.clear() ;
- + for(typename String::size_type i=0;i<str.size();i++) {
- + if(unsigned(str[i])>0x20UL) {
- + str2 = str.substr(i,str.size()-i) ;
- + break ;
- + }
- + }
- + if(str2.empty()) return str2 ;
- + for(typename String::size_type i=str2.size();i>0;i--) {
- + if(unsigned(str2[i-1])>0x20UL) {
- + return str2.substr(0,i) ;
- + }
- + }
- + str2.clear() ;
- + return str2 ;
- +}
- +
- +static wstring mbcs2wcs(string src)
- +{
- + if(src.empty()) return wstring(L"") ;
- + wchar_t *wcs = new wchar_t[src.length()*2 + 1];
- + size_t wLen = 0;
- + setlocale(LC_ALL,"japanese");
- + mbstowcs_s(&wLen, wcs, src.length()*2 , src.c_str(), _TRUNCATE);
- + wstring result = wcs;
- + delete [] wcs;
- + return result ;
- +}
- +
- +//////////////////////////////////////////////////////////////////////
- // 構築/消滅
- //////////////////////////////////////////////////////////////////////
- @@ -164,6 +197,7 @@
- : m_pUsbFx2Driver(NULL)
- , m_hOnStreamEvent(NULL)
- , m_hMutex(NULL)
- + , is_channel_valid(FALSE)
- {
- char bf[256];
- char key[8];
- @@ -171,7 +205,8 @@
- m_pThis = this;
- fOpened=false;
- - LoadIni();
- + m_yFx2Id = 0 ;
- + InitTunerProperty();
- }
- //***** Destructor *****
- @@ -203,7 +238,10 @@
- // カメレオンUSB FX2のドライバインスタンス生成
- m_pUsbFx2Driver = new CUsbFx2Driver(this);
- if(!m_pUsbFx2Driver)return false;
- -
- +
- + // ストリーム一時停止
- + is_channel_valid = FALSE ;
- +
- // FX2の初期化シーケンス
- try{
- // FIFOバッファ確保
- @@ -229,26 +267,26 @@
- }
- // ドライバオープン
- - if(!m_pUsbFx2Driver->OpenDriver(0x00U, BulldogFirmWare, sz,"Bulldog_FIFO"))throw (const DWORD)__LINE__; //xxxxx
- + if(!m_pUsbFx2Driver->OpenDriver(m_yFx2Id, BulldogFirmWare, sz,"Bulldog_FIFO"))throw (const DWORD)__LINE__; //xxxxx
- // エンドポイント追加
- if(!m_pUsbFx2Driver->AddEndPoint(0x81U))throw (const DWORD)__LINE__; // EPINDEX_IN
- if(!m_pUsbFx2Driver->AddEndPoint(0x01U))throw (const DWORD)__LINE__; // EPINDEX_OUT
- -
- +
- // FX2 I/Oポート設定 & MAX2初期パラメータ設定 & MAX2リセット
- // 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__;
- if(!m_pUsbFx2Driver->TransmitFormatedData(EPINDEX_OUT, 6UL, CMD_PORT_CFG, 0x00U, PIO_START, CMD_MODE_IDLE, CMD_IFCONFIG, 0xE3U))throw (const DWORD)__LINE__;
- // スレッド起動
- - if(!m_pUsbFx2Driver->CreateFifoThread(0x86U, NULL, TSDATASIZE))throw (const DWORD)__LINE__;
- + if(!m_pUsbFx2Driver->CreateFifoThread(0x86U, NULL, TSDATASIZE, TSQUEUENUM))throw (const DWORD)__LINE__;
- // 開始コマンド送信
- // 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__;
- if(!m_pUsbFx2Driver->TransmitFormatedData(EPINDEX_OUT, 3UL, CMD_EP6IN_START, CMD_PORT_WRITE, PIO_START))throw (const DWORD)__LINE__;
- // ミューテックス作成
- - if(!(m_hMutex = ::CreateMutex(NULL, TRUE, MUTEX_NAME)))throw (const DWORD)__LINE__;
- + if(!(m_hMutex = ::CreateMutex(NULL, TRUE, m_szTunerName)))throw (const DWORD)__LINE__;
- // 成功
- }
- @@ -316,10 +354,14 @@
- ch:13-62 UHF
- ch:113-163 ケーブルTV
- */
- -void CBonTuner::SetISDBTChannel(int ch)
- +void CBonTuner::SetISDBTChannel(int ch,float MegaHz)
- {
- - SetMxl5007(ch);
- - SetTC90502(ISDB_T);
- + const int retry_cnt=2 ;
- + for(int i=0;i<retry_cnt;i++) {
- + //if(i) Sleep(100) ;
- + SetMxl5007(ch,MegaHz);
- + if(TC90502_OK==SetTC90502(ISDB_T)) ; //break ;
- + }
- Sleep(100);
- }
- @@ -329,9 +371,9 @@
- ch:1-23 (奇数) BS
- ch:2-24 (偶数) CS
- */
- -void CBonTuner::SetISDBSChannel(int ch,int tsid)
- +void CBonTuner::SetISDBSChannel(int ch,int tsid,float MegaHz)
- {
- - SetStv6110a(ch);
- + SetStv6110a(ch,MegaHz);
- SetTC90502(ISDB_S);
- SetTSID(tsid);
- @@ -459,22 +501,57 @@
- return(ber);
- }
- +
- +//***** SetChannelSub *****
- +
- +const BOOL CBonTuner::SetChannelSub(const DWORD dwCh)
- +{
- + //ストリーム一時停止
- + is_channel_valid = FALSE;
- +
- + // 撮り溜めたTSストリームの破棄
- + PurgeTsStream();
- +
- + if(dwCh >= m_Channels.size()){
- + return FALSE;
- + }
- +
- + //チューニング
- + if(!m_Channels[dwCh].TSID) { // 地上波
- + SetISDBTChannel(m_Channels[dwCh].Channel,m_Channels[dwCh].MegaHz) ;
- + }else { // BS/CS
- + SetISDBSChannel(m_Channels[dwCh].Channel,
- + m_Channels[dwCh].TSID,m_Channels[dwCh].MegaHz) ;
- + }
- +
- + //ストリーム再開
- + is_channel_valid = TRUE;
- +
- + return TRUE ;
- +}
- +
- +
- //***** Set Channel *****
- const BOOL CBonTuner::SetChannel(const BYTE ch)
- {
- - if (ch<12)
- - m_dwCurSpace = 0;
- - else if (ch<63)
- - m_dwCurSpace = 1;
- - else if (ch<200)
- - m_dwCurSpace = 2;
- -
- - m_dwCurChannel = ch;
- + if(!SetChannelSub(ch)) return FALSE ;
- - SetISDBTChannel(ch);
- + // チャンネル情報を更新
- + m_dwCurSpace=0;
- + m_dwCurChannel=0;
- + wstring space;
- + for(int i=0;i<ch;i++) {
- + if(!i) space = m_Channels[ch].Space ;
- + else if (m_Channels[ch].Space!=space) {
- + space = m_Channels[ch].Space ;
- + m_dwCurSpace++,m_dwCurChannel=0 ;
- + continue ;
- + }
- + m_dwCurChannel++;
- + }
- - return TRUE;
- + return TRUE ;
- }
- //***** Get Signal Level *****
- @@ -486,7 +563,7 @@
- return((float)d);
- /*
- // FIFOバッファのFullnessを返す
- - return ((float)m_FifoBuffer.size() / (float)ASYNCBUFFSIZE * 100.0f);
- + return ((float)m_FifoBuffer.size() / (float)ASYNCTSQUEUENUM * 100.0f);
- */
- }
- @@ -602,7 +679,7 @@
- LPCTSTR CBonTuner::GetTunerName(void)
- {
- // チューナ名を返す
- - return TEXT("Bulldog");
- + return m_szTunerName ;
- }
- //***** Is Tuner Opening *****
- @@ -610,8 +687,8 @@
- const BOOL CBonTuner::IsTunerOpening(void)
- {
- // チューナの使用中の有無を返す(全プロセスを通して)
- - HANDLE hMutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME);
- -
- + HANDLE hMutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, m_szTunerName);
- +
- if(hMutex)
- {
- // 既にチューナは開かれている
- @@ -628,89 +705,63 @@
- LPCTSTR CBonTuner::EnumTuningSpace(const DWORD dwSpace)
- {
- - // 使用可能なチューニング空間を返す
- - switch(dwSpace)
- - {
- - case 0UL : return TEXT("VHF");
- - case 1UL : return TEXT("UHF");
- - case 2UL : return TEXT("CATV");
- - case 3UL : return TEXT("BS");
- - case 4UL : return TEXT("CS110");
- - default : return NULL;
- + // 0は最初の空間を返す
- + if ( dwSpace == 0 ) return m_Channels[0].Space.c_str() ;
- + // 次の空間名を探す
- + DWORD dwSpcIdx = 0 ;
- + int nIdx0 = 0 ;
- + for ( CHANNELS::size_type nIdx = 0 ; nIdx < m_Channels.size() ; nIdx++ ) {
- + if ( m_Channels[nIdx0].Space == m_Channels[nIdx].Space ) continue ;
- + nIdx0 = nIdx ;
- + dwSpcIdx++ ;
- + if ( dwSpace == dwSpcIdx ) return m_Channels[nIdx].Space.c_str() ;
- }
- + return NULL ;
- }
- //***** Enum Channel Name *****
- LPCTSTR CBonTuner::EnumChannelName(const DWORD dwSpace, const DWORD dwChannel)
- {
- - // 使用可能なチャンネルを返す
- - switch(dwSpace)
- - {
- - case 0UL : //VHF
- - if (dwChannel>=VHFNumChannel)
- - return(NULL);
- - return((LPCTSTR)VHFChInfo[dwChannel].Name);
- - case 1UL : //UHF
- - if (dwChannel>=UHFNumChannel)
- - return(NULL);
- - return((LPCTSTR)UHFChInfo[dwChannel].Name);
- - case 2UL : //CATV
- - if (dwChannel>=CATVNumChannel)
- - return(NULL);
- - return((LPCTSTR)CATVChInfo[dwChannel].Name);
- - case 3UL : //BS
- - if (dwChannel>=BSNumChannel)
- - return(NULL);
- - return((LPCTSTR)BSChInfo[dwChannel].Name);
- - case 4UL : //CS110
- - if (dwChannel>=CSNumChannel)
- - return(NULL);
- - return((LPCTSTR)CSChInfo[dwChannel].Name);
- - default :
- - // 非対応のチューニング空間
- - return NULL;
- + // 空間名を取得する
- + LPCTSTR pszSpace = EnumTuningSpace( dwSpace ) ;
- + if ( !pszSpace ) return NULL ;
- + wstring space = wstring(pszSpace) ;
- + // 空間名の一致するチャンネルを探す
- + DWORD dwChIdx = 0 ;
- + for ( CHANNELS::size_type nIdx = 0 ; nIdx < m_Channels.size() ; nIdx++ ) {
- + if ( space != m_Channels[nIdx].Space ) continue ;
- + if ( dwChIdx == dwChannel ) return m_Channels[nIdx].Name.c_str() ;
- + dwChIdx++ ;
- }
- + return NULL ;
- }
- //***** Set Channel *****
- const BOOL CBonTuner::SetChannel(const DWORD dwSpace, const DWORD dwChannel)
- {
- - switch(dwSpace)
- - {
- - case 0: //VHF
- - if (dwChannel>=VHFNumChannel)
- - return(FALSE);
- - SetISDBTChannel(VHFChInfo[dwChannel].Channel);
- - break;
- - case 1: //UHF
- - if (dwChannel>=UHFNumChannel)
- - return(FALSE);
- - SetISDBTChannel(UHFChInfo[dwChannel].Channel);
- - break;
- - case 2: //CATV
- - if (dwChannel>=CATVNumChannel)
- - return(FALSE);
- - SetISDBTChannel(CATVChInfo[dwChannel].Channel);
- - break;
- - case 3: //BS
- - if (dwChannel>=CATVNumChannel)
- - return(FALSE);
- - SetISDBSChannel(BSChInfo[dwChannel].Channel,BSChInfo[dwChannel].TSID);
- - break;
- - case 4: //CS
- - if (dwChannel>=CATVNumChannel)
- - return(FALSE);
- - SetISDBSChannel(CSChInfo[dwChannel].Channel,CSChInfo[dwChannel].TSID);
- - break;
- - default:
- - return(FALSE);
- + // 空間名を取得する
- + LPCTSTR pszSpace = EnumTuningSpace( dwSpace ) ;
- + if ( !pszSpace ) return FALSE ;
- + wstring space = wstring(pszSpace) ;
- + // 空間名の一致するチャンネルを探す
- + DWORD dwChIdx = 0 ;
- + for ( CHANNELS::size_type nIdx = 0 ; nIdx < m_Channels.size() ; nIdx++ ) {
- + if ( space != m_Channels[nIdx].Space ) continue ;
- + if ( dwChIdx == dwChannel ) {
- + // チャンネルを設定する
- + if( SetChannelSub(nIdx) ){
- + m_dwCurSpace = dwSpace;
- + m_dwCurChannel = dwChannel;
- + return TRUE;
- + }else{
- + return FALSE;
- + }
- + }
- + dwChIdx++ ;
- }
- - m_dwCurSpace = dwSpace;
- - m_dwCurChannel = dwChannel;
- -
- - return TRUE;
- + return FALSE ;
- }
- //***** Get Current Space *****
- @@ -744,8 +795,9 @@
- CBlockLock Lock(&m_CriticalLock);
- // FIFOバッファにプッシュ
- - PushFifoBuff(pData,dwLen);
- -
- + if(is_channel_valid) // チャンネル選択有効時のみ
- + PushFifoBuff(pData,dwLen);
- +
- // イベントセット
- ::SetEvent(m_hOnStreamEvent);
- @@ -760,12 +812,12 @@
- PurgeTsStream();
- // バッファプールを確保する
- - m_BufferPool.resize(ASYNCBUFFSIZE);
- + m_BufferPool.resize(ASYNCTSQUEUENUM);
- - for(DWORD dwPos = 0UL ; dwPos < ASYNCBUFFSIZE ; dwPos++){
- + for(DWORD dwPos = 0UL ; dwPos < ASYNCTSQUEUENUM ; dwPos++){
- m_BufferPool[dwPos].resize(TSDATASIZE);
- }
- -
- +
- m_dwEmptyFifoPos = 0UL;
- }
- @@ -785,7 +837,7 @@
- void CBonTuner::PushFifoBuff(const BYTE *pData,DWORD len)
- {
- // バッファプールの最大数を超える場合は最後尾を切り捨てる
- - while(m_FifoBuffer.size() >= ASYNCBUFFSIZE)
- + while(m_FifoBuffer.size() >= ASYNCTSQUEUENUM)
- {
- m_FifoBuffer.pop();
- }
- @@ -798,154 +850,155 @@
- m_FifoBuffer.push(pWritePointer);
- // バッファプール位置更新
- - if(++m_dwEmptyFifoPos >= ASYNCBUFFSIZE)m_dwEmptyFifoPos = 0UL;
- + if(++m_dwEmptyFifoPos >= ASYNCTSQUEUENUM)m_dwEmptyFifoPos = 0UL;
- }
- -//***** Load Ini File *****
- -void CBonTuner::LoadIni(void)
- +//***** Init Tuner Property *****
- +
- +void CBonTuner::InitTunerProperty()
- {
- - _TCHAR IniName[256];
- - _TCHAR bf[256];
- - _TCHAR key[32];
- - _TCHAR *p;
- - int i;
- + //自分の名前を取得
- + char szMyPath[_MAX_PATH] ;
- + GetModuleFileNameA( m_hModule, szMyPath, _MAX_PATH ) ;
- + char szMyDrive[_MAX_FNAME] ;
- + char szMyDir[_MAX_FNAME] ;
- + char szMyName[_MAX_FNAME] ;
- + _splitpath_s( szMyPath, szMyDrive, _MAX_FNAME,szMyDir, _MAX_FNAME, szMyName, _MAX_FNAME, NULL, 0 ) ;
- + _strupr_s( szMyName, sizeof(szMyName) ) ;
- - memset(VHFChInfo,0x00,sizeof(TChannelInfo)*VHFMAXCHANNELS);
- - memset(UHFChInfo,0x00,sizeof(TChannelInfo)*UHFMAXCHANNELS);
- - memset(CATVChInfo,0x00,sizeof(TChannelInfo)*CATVMAXCHANNELS);
- - memset(BSChInfo,0x00,sizeof(TChannelInfo)*BSMAXCHANNELS);
- - memset(CSChInfo,0x00,sizeof(TChannelInfo)*CSMAXCHANNELS);
- - VHFNumChannel=0;
- - UHFNumChannel=0;
- - CATVNumChannel=0;
- - BSNumChannel=0;
- - CSNumChannel=0;
- -
- - GetModuleFileName(NULL, IniName, MAX_PATH);
- - p=_tcsrchr(IniName, _T('\\'));
- - if (p)
- - *p=0;
- - _tcscat(IniName,_T("\\BonDriver_Bulldog.ini"));
- + // Fx2 の ID を決定
- + int nFx2Id=0 ;
- + sscanf_s( szMyName, "BONDRIVER_BULLDOG_%1d", &nFx2Id ) ;
- + m_yFx2Id = BYTE(nFx2Id) ;
- - if (GetFileAttributes(IniName)==-1)
- - {
- - for(i=1; i<=12; i++)
- - {
- - _stprintf(bf,_T("0,%d,0x0000,%d"),i,i);
- - GetChannelInfo(bf,&VHFChInfo[i-1]);
- - }
- - VHFNumChannel=i-1;
- - for(i=13; i<=62; i++)
- - {
- - _stprintf(bf,_T("0,%d,0x0000,%d"),i,i);
- - GetChannelInfo(bf,&UHFChInfo[i-13]);
- - }
- - UHFNumChannel=i-13;
- - for(i=13; i<=63; i++)
- - {
- - _stprintf(bf,_T("0,%d,0x0000,C%d"),i+100,i);
- - GetChannelInfo(bf,&CATVChInfo[i-13]);
- - }
- - CATVNumChannel=i-13;
- - for(i=0; DefBSChInfo[i] != NULL; i++)
- - {
- - GetChannelInfo(DefBSChInfo[i],&BSChInfo[i]);
- - }
- - BSNumChannel=i;
- - for(i=0; DefCSChInfo[i] != NULL; i++)
- - {
- - GetChannelInfo(DefCSChInfo[i],&CSChInfo[i]);
- - }
- - CSNumChannel=i;
- + //チューナー名を決定
- + _stprintf_s( m_szTunerName, 100, TEXT("%s(ID=%d)"), TEXT("ブルドッグ"), nFx2Id ) ;
- - return;
- + // Ini ファイルをロード
- + LoadIniFile(string(szMyDrive)+string(szMyDir)+"BonDriver_Bulldog.ini") ;
- + LoadIniFile(string(szMyDrive)+string(szMyDir)+string(szMyName)+".ini") ;
- +
- + // Channel ファイルをロード
- + if(!LoadChannelFile(string(szMyDrive)+string(szMyDir)+string(szMyName)+".ch.txt")) {
- + if(!LoadChannelFile(string(szMyDrive)+string(szMyDir)+"BonDriver_Bulldog.ch.txt"))
- + InitChannelToDefault() ;
- }
- +}
- -//Channel=ServiceID,PhysicalChannel,TSID,Name
- +//***** Laod Ini File *****
- - for(i=0; i<VHFMAXCHANNELS; i++)
- - {
- - _stprintf(key,_T("%d"),i);
- - GetPrivateProfileString(_T("VHF"),key,_T(""),bf,256,IniName);
- - if (bf[0]==0)
- - break;
- +bool CBonTuner::LoadIniFile(std::string strIniFileName)
- +{
- + if(GetFileAttributesA(strIniFileName.c_str())==-1) return false ;
- + #define LOADINT(key) do { \
- + key = GetPrivateProfileIntA("BonTuner",#key, \
- + key,strIniFileName.c_str()) ; \
- + }while(0)
- + LOADINT(TSDATASIZE) ;
- + LOADINT(TSQUEUENUM) ;
- + LOADINT(ASYNCTSQUEUENUM) ;
- + #undef LOADINT
- + return true ;
- +}
- - GetChannelInfo(bf,&VHFChInfo[i]);
- - }
- - VHFNumChannel=i;
- +//***** Load Channel File *****
- - for(i=0; i<UHFMAXCHANNELS; i++)
- - {
- - _stprintf(key,_T("%d"),i);
- - GetPrivateProfileString(_T("UHF"),key,_T(""),bf,256,IniName);
- - if (bf[0]==0)
- - break;
- +bool CBonTuner::LoadChannelFile(std::string strChannelFileName)
- +{
- + FILE *st=NULL ;
- + fopen_s(&st,strChannelFileName.c_str(),"rt") ;
- + if(!st) return false;
- + char s[512] ;
- - GetChannelInfo(bf,&UHFChInfo[i]);
- + m_Channels.clear() ;
- + while(!feof(st)) {
- + s[0]='\0' ;
- + fgets(s,512,st) ;
- + string strLine = trim(string(s)) ;
- + wstring wstrLine = mbcs2wcs(strLine) ;
- + AddChannel(wstrLine) ;
- + //DBGOUT("%s",s) ;
- }
- - UHFNumChannel=i;
- - for(i=0; i<CATVMAXCHANNELS; i++)
- - {
- - _stprintf(key,_T("%d"),i);
- - GetPrivateProfileString(_T("CATV"),key,_T(""),bf,256,IniName);
- - if (bf[0]==0)
- - break;
- + fclose(st) ;
- +
- + return true ;
- +
- +}
- +
- +//***** Init Channel To Default *****
- +
- +void CBonTuner::InitChannelToDefault()
- +{
- + _TCHAR bf[256];
- +
- + m_Channels.clear() ;
- - GetChannelInfo(bf,&CATVChInfo[i]);
- + for(int i=1; i<=12; i++)
- + {
- + _stprintf(bf,_T("VHF,0,%d,0x0000,%d"),i,i);
- + AddChannel(bf);
- }
- - CATVNumChannel=i;
- - for(i=0; i<BSMAXCHANNELS; i++)
- + for(int i=13; i<=62; i++)
- {
- - _stprintf(key,_T("%d"),i);
- - GetPrivateProfileString(_T("BS"),key,_T(""),bf,256,IniName);
- - if (bf[0]==0)
- - break;
- + _stprintf(bf,_T("UHF,0,%d,0x0000,%d"),i,i);
- + AddChannel(bf);
- + }
- - GetChannelInfo(bf,&BSChInfo[i]);
- + for(int i=13; i<=63; i++)
- + {
- + _stprintf(bf,_T("CATV,0,%d,0x0000,C%d"),i+100,i);
- + AddChannel(bf);
- }
- - BSNumChannel=i;
- - for(i=0; i<CSMAXCHANNELS; i++)
- + for(int i=0; DefBSChInfo[i] != NULL; i++)
- {
- - _stprintf(key,_T("%d"),i);
- - GetPrivateProfileString(_T("CS110"),key,_T(""),bf,256,IniName);
- - if (bf[0]==0)
- - break;
- + _stprintf(bf,_T("BS,%s"),DefBSChInfo[i]);
- + AddChannel(bf);
- + }
- - GetChannelInfo(bf,&CSChInfo[i]);
- + for(int i=0; DefCSChInfo[i] != NULL; i++)
- + {
- + _stprintf(bf,_T("CS110,%s"),DefCSChInfo[i]);
- + AddChannel(bf);
- }
- - CSNumChannel=i;
- -}
- -//***** Get Channel Info *****
- +}
- -//Channel=ServiceID,PhysicalChannel,TSID,Name
- +//***** Add Channel *****
- -void CBonTuner::GetChannelInfo(_TCHAR *bf,TChannelInfo *ChInfo)
- +bool CBonTuner::AddChannel(std::wstring wstrLine)
- {
- - _TCHAR *p,*q;
- -
- - memset(ChInfo,0x00,sizeof(TChannelInfo));
- -
- - ChInfo->ServiceID=_tcstol(bf,&q,10);
- - if ((q) && (*q==_T(',')))
- - {
- - p=q+1;
- - ChInfo->Channel=_tcstol(p,&q,10);
- - if ((q) && (*q==_T(',')))
- - {
- - p=q+1;
- - ChInfo->TSID=_tcstol(p,&q,16);
- - if ((q) && (*q==_T(',')))
- - {
- - p=q+1;
- - _tcsncpy(ChInfo->Name,p,256);
- - }
- - }
- + int t=0 ;
- + wstring params[5] ;
- + params[0] = params[1] = params[2] = params[3] = params[4] = L"" ;
- + for(int i=0;i<wstrLine.length();i++) {
- + if(wstrLine[i]==L';') break ;
- + else if(wstrLine[i]==L',') {
- + t++ ; if(t==5) break ;
- + }else params[t] += wstrLine[i] ;
- + }
- + if(t>=4) {
- + for(int i=0;i<5;i++) params[i] = trim(params[i]) ;
- + int ServiceID = 0 ;
- + int Channel = 0 ;
- + float MegaHz = 0.f ;
- + int TSID = 0 ;
- + swscanf(params[1].c_str(),L"%i",&ServiceID) ;
- + if( params[2].length()>3&&
- + params[2].substr(params[2].length()-3)==L"MHz" ) {
- + swscanf(params[2].c_str(),L"%fMHz",&MegaHz) ;
- + }else {
- + swscanf(params[2].c_str(),L"%i",&Channel) ;
- + }
- + swscanf(params[3].c_str(),L"%i",&TSID) ;
- + m_Channels.push_back(
- + CHANNEL(params[0],ServiceID,Channel,TSID,params[4],MegaHz)) ;
- + return true ;
- }
- + return false ;
- }
- //***** I2C Write *****
- diff --strip-trailing-cr -uPr Org/BonDriver/BonTuner.h Mod/BonDriver/BonTuner.h
- --- Org/BonDriver/BonTuner.h 2012-02-22 16:36:04.000000000 +0900
- +++ Mod/BonDriver/BonTuner.h 2013-12-29 15:50:37.000000000 +0900
- @@ -10,27 +10,86 @@
- #include "UsbFx2Driver.h"
- #include <vector>
- #include <queue>
- +#include <string>
- +#include <cstring>
- +#include <cstdio>
- +#include <cstdlib>
- +#include <cstdarg>
- using std::vector;
- using std::queue;
- -#define VHFMAXCHANNELS 12
- -#define UHFMAXCHANNELS 50
- -#define CATVMAXCHANNELS 51
- -#define BSMAXCHANNELS 64
- -#define CSMAXCHANNELS 256
- -
- -
- -typedef struct {
- - WORD ServiceID;
- - int Channel;
- - WORD TSID;
- - _TCHAR Name[256];
- -} TChannelInfo;
- -typedef enum CLockStatus {stLock, stLostLock, stNoSignal, stUnknown };
- +#ifdef _DEBUG
- -class CBonTuner : public IBonDriver2,
- +//#define DEBUG_TO_X_DRIVE
- +
- +void __inline DBGOUT( const char* pszFormat,... )
- +{
- + std::va_list marker ;
- + char edit_str[1024] ;
- + va_start( marker, pszFormat ) ;
- + vsprintf_s( edit_str, sizeof(edit_str), pszFormat, marker ) ;
- + va_end( marker ) ;
- + #ifndef DEBUG_TO_X_DRIVE
- + OutputDebugStringA(edit_str) ;
- + #else
- + FILE *fp = std::fopen("X:\\Debug.txt","a+t") ;
- + if(fp) {
- + std::fputs(edit_str,fp) ;
- + std::fclose(fp) ;
- + }
- + #endif
- +}
- +
- +#else
- +
- +#define DBGOUT /* empty */
- +
- +#endif
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +struct CHANNEL {
- + std::wstring Space ;
- + WORD ServiceID;
- + int Channel;
- + float MegaHz ;
- + WORD TSID;
- + std::wstring Name ;
- + bool isISDBT() { return TSID==0 ; }
- + bool isISDBS() { return !isISDBT() ; }
- + bool isChannelTuning() { return Channel!=0 ; }
- + bool isMegaHzTuning() { return !isChannelTuning() ; }
- + CHANNEL(std::wstring _Space, WORD _ServiceID,int _Channel,WORD _TSID,
- + std::wstring _Name, float _MegaHz=0.f) {
- + Space = _Space ;
- + ServiceID = _ServiceID ;
- + Channel = _Channel ;
- + TSID = _TSID ;
- + Name = _Name ;
- + MegaHz = _MegaHz ;
- + }
- + CHANNEL(const CHANNEL &_Src) {
- + Space = _Src.Space ;
- + ServiceID = _Src.ServiceID ;
- + Channel = _Src.Channel ;
- + TSID = _Src.TSID ;
- + Name = _Src.Name ;
- + MegaHz = _Src.MegaHz ;
- + }
- +} ;
- +typedef std::vector<CHANNEL> CHANNELS ;
- +
- +typedef enum CLockStatus {stLock, stLostLock, stNoSignal, stUnknown };
- +
- +class CBonTuner : public IBonDriver2,
- protected IUsbFx2DriverHost
- {
- public:
- @@ -41,14 +100,14 @@
- int I2CRead(unsigned char adrs,int len,unsigned char *data);
- int I2CRead(unsigned char adrs,unsigned char reg,int len,unsigned char *data);
- int I2CRead(unsigned char adrs,unsigned tadrs,unsigned char reg,int len,unsigned char *data);
- - void SetTSID(int tsid);
- - void SetISDBTChannel(int ch);
- - void SetISDBSChannel(int ch,int tsid);
- - CLockStatus IsLockISDBT(void);
- - CLockStatus IsLockISDBS(void);
- - CLockStatus IsLock(void);
- - double GetCN(void);
- - double GetBER(void);
- + void SetTSID(int tsid);
- + void SetISDBTChannel(int ch,float MegaHz=0.f);
- + void SetISDBSChannel(int ch,int tsid,float MegaHz=0.f);
- + CLockStatus IsLockISDBT(void);
- + CLockStatus IsLockISDBS(void);
- + CLockStatus IsLock(void);
- + double GetCN(void);
- + double GetBER(void);
- // IBonDriver
- const BOOL OpenTuner(void);
- @@ -69,12 +128,12 @@
- LPCTSTR GetTunerName(void);
- const BOOL IsTunerOpening(void);
- -
- +
- LPCTSTR EnumTuningSpace(const DWORD dwSpace);
- LPCTSTR EnumChannelName(const DWORD dwSpace, const DWORD dwChannel);
- const BOOL SetChannel(const DWORD dwSpace, const DWORD dwChannel);
- -
- +
- const DWORD GetCurSpace(void);
- const DWORD GetCurChannel(void);
- @@ -90,32 +149,32 @@
- inline void PushFifoBuff(const BYTE *pData,DWORD len);
- - void LoadIni(void);
- - void GetChannelInfo(_TCHAR *bf,TChannelInfo *ChInfo);
- + void InitTunerProperty() ;
- + bool LoadIniFile(std::string strIniFileName);
- + bool LoadChannelFile(std::string strChannelFileName);
- + void InitChannelToDefault() ;
- + bool AddChannel(std::wstring wstrLine) ;
- + const BOOL SetChannelSub(const DWORD dwCh) ;
- +
- + CUsbFx2Driver *m_pUsbFx2Driver;
- + CCriticalLock m_CriticalLock;
- + HANDLE m_hOnStreamEvent;
- +
- + queue<BYTE *> m_FifoBuffer;
- + vector<vector<BYTE>> m_BufferPool;
- + DWORD m_dwEmptyFifoPos;
- +
- + bool fOpened;
- + HANDLE m_hMutex;
- +
- + DWORD m_dwCurSpace;
- + DWORD m_dwCurChannel;
- +
- + // チューナーのプロパティ
- + BYTE m_yFx2Id ;
- + TCHAR m_szTunerName[100] ;
- + CHANNELS m_Channels ;
- +
- + BOOL is_channel_valid ;
- - CUsbFx2Driver *m_pUsbFx2Driver;
- - CCriticalLock m_CriticalLock;
- - HANDLE m_hOnStreamEvent;
- -
- - queue<BYTE *> m_FifoBuffer;
- - vector<vector<BYTE>> m_BufferPool;
- - DWORD m_dwEmptyFifoPos;
- -
- - bool fOpened;
- - HANDLE m_hMutex;
- -
- - DWORD m_dwCurSpace;
- - DWORD m_dwCurChannel;
- -
- - TChannelInfo VHFChInfo[VHFMAXCHANNELS];
- - TChannelInfo UHFChInfo[UHFMAXCHANNELS];
- - TChannelInfo CATVChInfo[CATVMAXCHANNELS];
- - TChannelInfo BSChInfo[BSMAXCHANNELS];
- - TChannelInfo CSChInfo[CSMAXCHANNELS];
- -
- - int VHFNumChannel;
- - int UHFNumChannel;
- - int CATVNumChannel;
- - int BSNumChannel;
- - int CSNumChannel;
- };
- diff --strip-trailing-cr -uPr Org/BonDriver/Cusb2/UsbFx2Dirver.cpp Mod/BonDriver/Cusb2/UsbFx2Dirver.cpp
- --- Org/BonDriver/Cusb2/UsbFx2Dirver.cpp 2012-02-22 15:50:18.000000000 +0900
- +++ Mod/BonDriver/Cusb2/UsbFx2Dirver.cpp 2013-12-24 18:00:06.000000000 +0900
- @@ -37,13 +37,17 @@
- // 一旦クローズする
- CloseDriver();
- -
- +
- // ファームウェアをコピーする(cusb2内で書き換えられるため)
- BYTE *abyFirmBuffer=new BYTE[size]; //[FIRMWARE_SIZE];
- ::CopyMemory(abyFirmBuffer, pFirmWare, size);
- -
- +
- // ファームウェアのダウンロードを行う
- - return fwload(byDeviceID, abyFirmBuffer, (BYTE *)lpszFirmName);
- + bool result = fwload(byDeviceID, abyFirmBuffer, (BYTE *)lpszFirmName);
- +
- + delete [] abyFirmBuffer ;
- +
- + return result ;
- }
- void CUsbFx2Driver::CloseDriver(void)
- diff --strip-trailing-cr -uPr Org/BonDriver/TC90532/tc90532.cpp Mod/BonDriver/TC90532/tc90532.cpp
- --- Org/BonDriver/TC90532/tc90532.cpp 2012-02-18 11:44:48.000000000 +0900
- +++ Mod/BonDriver/TC90532/tc90532.cpp 2013-12-29 15:49:47.000000000 +0900
- @@ -13,8 +13,6 @@
- #include "MxL5007.h"
- #include "tc90532.h"
- -#define TC90502_OK 0
- -#define TC90502_ERR 1
- #define CH_MAX 62//-13 //The Ch maximum number
- @@ -91,7 +89,7 @@
- 2053 //CH 24
- };
- -UINT8 SetMxl5007(UINT8 CH)
- +UINT8 SetMxl5007(UINT8 CH, float MegaHz)
- {
- UINT32 freq, x;
- MxL_ERR_MSG Status = MxL_OK;
- @@ -101,18 +99,22 @@
- unsigned long rf;
- unsigned char bw;
- - x = CH;
- + if(!CH) {
- + rf = UINT32(MegaHz * 1000000.f) ;
- + }else {
- + x = CH;
- +
- + if(CH < 4) freq = 93000 + (x - 1) * 6000;
- + else if(CH < 8) freq = 173000 + (x - 4) * 6000;
- + else if(CH < 13) freq = 195000 + (x - 8) * 6000;
- + else if(CH < 63) freq = 473143 + (x - 13) * 6000;
- + else if(CH < 123) freq = 111143 + (x - 113) * 6000;
- + else if(CH < 136) freq = 225143 + (x - 123) * 6000;
- + else freq = 303143 + (x - 136) * 6000;
- - if(CH < 4) freq = 93000 + (x - 1) * 6000;
- - else if(CH < 8) freq = 173000 + (x - 4) * 6000;
- - else if(CH < 13) freq = 195000 + (x - 8) * 6000;
- - else if(CH < 63) freq = 473143 + (x - 13) * 6000;
- - else if(CH < 123) freq = 111143 + (x - 113) * 6000;
- - else if(CH < 136) freq = 225143 + (x - 123) * 6000;
- - else freq = 303143 + (x - 136) * 6000;
- -
- - rf = freq * 1000UL;
- - bw = 6;
- + rf = freq * 1000UL;
- + }
- + bw = 6;
- myTuner.DemodAddr = DEMODTADRS;
- //Set Tuner's I2C Address
- @@ -162,7 +164,7 @@
- return 0;
- }
- -UINT8 SetStv6110a(UINT8 BSCh)
- +UINT8 SetStv6110a(UINT8 BSCh,float MegaHz)
- {
- UINT8 STB6110A[8] = {0x07,0x13,0xdc,0x85,0x17,0x01,0xe6,0x1e};
- UINT8 K;
- @@ -177,10 +179,14 @@
- float RF;
- float symb = 28.86;
- - if (BSCh & 1)
- - RF = BS_table[BSCh/2];
- - else
- - RF = CS_table[BSCh/2-1];
- + if(!BSCh) {
- + RF = MegaHz ;
- + }else {
- + if (BSCh & 1)
- + RF = BS_table[BSCh/2];
- + else
- + RF = CS_table[BSCh/2-1];
- + }
- for(i=0; i<8; i++)
- {
- @@ -231,7 +237,7 @@
- divider = (UINT16)(((RF * (float)r * pow(2.0,(double)(P+1)) * 10.0 / (float)XTAL) + 5.0) / 10.0) ;
- STB6110A[2] = divider & 0x00ff;
- - STB6110A[3] = ((rDivOpt & 0x3) << 6) | (Presc << 5) | (P << 4) | ((divider & 0x700) >> 8);
- + STB6110A[3] = ((rDivOpt & 0x3) << 6) | (Presc << 5) | (P << 4) | ((divider & 0xF00) >> 8);
- if(WriteTuner(DemodAddress+1,0xC6,0x02,STB6110A[2]) != 0)
- return 1;
- diff --strip-trailing-cr -uPr Org/BonDriver/TC90532/tc90532.h Mod/BonDriver/TC90532/tc90532.h
- --- Org/BonDriver/TC90532/tc90532.h 2012-02-07 20:05:32.000000000 +0900
- +++ Mod/BonDriver/TC90532/tc90532.h 2013-12-28 20:17:10.000000000 +0900
- @@ -2,6 +2,9 @@
- #ifndef TC90532_H
- #define TC90532_H
- +#define TC90502_OK 0
- +#define TC90502_ERR 1
- +
- #define DemodAddress 0x10
- #define DEMODTADRS 0x10
- @@ -14,8 +17,8 @@
- #define ISDB_S 2
- -UINT8 SetMxl5007(UINT8 CH);
- -UINT8 SetStv6110a(UINT8 BSCh);
- +UINT8 SetMxl5007(UINT8 CH,float MegaHz=0);
- +UINT8 SetStv6110a(UINT8 BSCh,float MegaHz=0);
- UINT8 SetTC90502(UINT8 TS);
- diff --strip-trailing-cr -uPr Org/BonDriver/readme_mod.txt Mod/BonDriver/readme_mod.txt
- --- Org/BonDriver/readme_mod.txt 1970-01-01 09:00:00.000000000 +0900
- +++ Mod/BonDriver/readme_mod.txt 2013-12-29 15:31:03.000000000 +0900
- @@ -0,0 +1,25 @@
- +Bulldog チューナー用 BonDriver 改変パッチ当てMODソース @ 2013/12/29
- +
- + 以下の2ファイルを BonDriver_Bulldog.dll と同じ場所において使用する。
- +
- + BonDriver_Bulldog.ini ; 設定ファル
- + BonDriver_Bulldog.ch.txt ; チャンネル定義ファイル
- +
- + オプティマイズで配布しているカメレオンUSBFX2のID書きツール(FX2WRID)を
- + 利用すると大量のBulldogチューナーを同時利用することもできる筈だが未検証。
- +
- + <例> ID=0 のチューナー
- + BonDriver_Bulldog_0.dll ; BonDriver_Bulldog.dll を複製したもの
- + BonDriver_Bulldog_0.ini ; BonDriver_Bulldog.ini を複製したもの
- + BonDriver_Bulldog_0.ch.txt ; BonDriver_Bulldog.ch.txt を複製したもの
- +
- + <例> ID=1 のチューナー
- + BonDriver_Bulldog_1.dll ; BonDriver_Bulldog.dll を複製したもの
- + BonDriver_Bulldog_1.ini ; BonDriver_Bulldog.ini を複製したもの
- + BonDriver_Bulldog_1.ch.txt ; BonDriver_Bulldog.ch.txt を複製したもの
- +
- + <例> ID=2 のチューナー
- + BonDriver_Bulldog_2.dll ; BonDriver_Bulldog.dll を複製したもの
- + BonDriver_Bulldog_2.ini ; BonDriver_Bulldog.ini を複製したもの
- + BonDriver_Bulldog_2.ch.txt ; BonDriver_Bulldog.ch.txt を複製したもの
- +
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement