ScbcCopyKey.cpp 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042
  1. // ScbcCopyKey.cpp : 定义 DLL 应用程序的导出函数。
  2. //
  3. #include "stdafx.h"
  4. #include "ScbcCopyKey.h"
  5. #include "OTA.h"
  6. #ifdef __MAKE_PYD__
  7. #include "Python.h"
  8. #endif
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #endif
  12. CSIACP g_objSiacp;
  13. std::string g_strData;
  14. bool ReadKeyFile(const char *lpfile, std::string& data)
  15. {
  16. if (!lpfile || _taccess(lpfile, 0) == -1)
  17. return false;
  18. FILE* pf = NULL;
  19. if (_tfopen_s(&pf, lpfile, _T("rb")) == 0)
  20. {
  21. if (pf)
  22. {
  23. fseek(pf, 0, SEEK_END);
  24. size_t fs = ftell(pf);
  25. fseek(pf, 0, SEEK_SET);
  26. byte* pdata = (byte*)malloc(fs);
  27. if (pdata)
  28. {
  29. fread(pdata, fs, 1, pf);
  30. fclose(pf);
  31. data.append((char*)pdata, fs);
  32. free(pdata);
  33. return true;
  34. }
  35. fclose(pf);
  36. }
  37. }
  38. return false;
  39. }
  40. // 唯一的应用程序对象
  41. #ifdef __CONSOLE__
  42. CWinApp theApp;
  43. using namespace std;
  44. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  45. {
  46. int nRetCode = 0;
  47. // 初始化 MFC 并在失败时显示错误
  48. if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
  49. {
  50. // TODO: 更改错误代码以符合您的需要
  51. _tprintf(_T("错误: MFC 初始化失败\n"));
  52. nRetCode = 1;
  53. }
  54. else
  55. {
  56. // TODO: 在此处为应用程序的行为编写代码。
  57. if ( Open(5, 115200, 8, 0, 1) )
  58. {
  59. if ( EnterFactory() )
  60. {
  61. printf("%d\n",GetProjectId());
  62. printf("%s\n",GetSoftVersion());
  63. printf("%s\n",GetDeviceId());
  64. printf("%s\n",GetClientType());
  65. printf("%s\n",GetMAC());
  66. printf("%s\n",GetHDCPKey());
  67. printf("%s\n",GetHDCPKey22());
  68. printf("%s\n",GetWidi());
  69. printf("%s\n",GetNetflixESN());
  70. printf("%s\n",GetWidevine());
  71. printf("%s\n",GetCiKey());
  72. printf("%s\n",GetOSDLanguage());
  73. printf("%s\n",GetShopLanguage());
  74. printf("%s\n",GetChannel());
  75. LeaveFactory();
  76. }
  77. Close();
  78. }
  79. }
  80. system("pause");
  81. return nRetCode;
  82. }
  83. #endif
  84. #ifndef __MAKE_PYD__
  85. SCBCCOPYKEY_API BOOL Open(int nPort, DWORD dwBaudrate, BYTE ByteSize, BYTE Parity, BYTE StopBits)
  86. {
  87. return g_objSiacp.OpenComm(nPort, dwBaudrate);
  88. }
  89. SCBCCOPYKEY_API void Close()
  90. {
  91. g_objSiacp.CloseComm();
  92. }
  93. SCBCCOPYKEY_API BOOL IsOpen()
  94. {
  95. return g_objSiacp.IsOpen();
  96. }
  97. SCBCCOPYKEY_API BOOL EnterFactory()
  98. {
  99. return g_objSiacp.SCBC_EnterFactory();
  100. }
  101. SCBCCOPYKEY_API BOOL LeaveFactory()
  102. {
  103. return g_objSiacp.SCBC_LeaveFactory();
  104. }
  105. //////////////////////////////////////////////////////////////////////////
  106. // 读取;
  107. SCBCCOPYKEY_API INT GetProjectId()
  108. {
  109. int pid = 0;
  110. if ( g_objSiacp.SCBC_GetProjectId(pid) )
  111. return pid;
  112. // 获取失败返回-1;
  113. return -1;
  114. }
  115. SCBCCOPYKEY_API LPCTSTR GetSoftVersion()
  116. {
  117. g_strData.clear();
  118. if ( g_objSiacp.SCBC_GetSoftVersion(g_strData) )
  119. return g_strData.c_str();
  120. return _T("");
  121. }
  122. SCBCCOPYKEY_API LPCTSTR GetDeviceId()
  123. {
  124. g_strData.clear();
  125. if ( g_objSiacp.SCBC_GetDeviceId(g_strData) )
  126. return g_strData.c_str();
  127. return _T("");
  128. }
  129. SCBCCOPYKEY_API LPCTSTR GetClientType()
  130. {
  131. g_strData.clear();
  132. if ( g_objSiacp.SCBC_GetClientType(g_strData) )
  133. return g_strData.c_str();
  134. return _T("");
  135. }
  136. SCBCCOPYKEY_API LPCTSTR GetMAC()
  137. {
  138. g_strData.clear();
  139. if ( g_objSiacp.SCBC_GetMAC(g_strData) )
  140. return g_strData.c_str();
  141. return _T("");
  142. }
  143. SCBCCOPYKEY_API LPCTSTR GetHDCPKey()
  144. {
  145. g_strData.clear();
  146. if ( g_objSiacp.SCBC_GetHDCPKey(g_strData) )
  147. return g_strData.c_str();
  148. return _T("");
  149. }
  150. SCBCCOPYKEY_API LPCTSTR GetHDCPKey22()
  151. {
  152. g_strData.clear();
  153. if ( g_objSiacp.SCBC_GetHDCPKey22(g_strData) )
  154. return g_strData.c_str();
  155. return _T("");
  156. }
  157. SCBCCOPYKEY_API LPCTSTR GetWidi()
  158. {
  159. g_strData.clear();
  160. if ( g_objSiacp.SCBC_GetWidi(g_strData) )
  161. return g_strData.c_str();
  162. return _T("");
  163. }
  164. SCBCCOPYKEY_API LPCTSTR GetNetflixESN()
  165. {
  166. g_strData.clear();
  167. if ( g_objSiacp.SCBC_GetNetflixESN(g_strData) )
  168. return g_strData.c_str();
  169. return _T("");
  170. }
  171. SCBCCOPYKEY_API LPCTSTR GetWidevine()
  172. {
  173. g_strData.clear();
  174. if ( g_objSiacp.SCBC_GetWidevine(g_strData) )
  175. return g_strData.c_str();
  176. return _T("");
  177. }
  178. SCBCCOPYKEY_API LPCTSTR GetCiKey()
  179. {
  180. g_strData.clear();
  181. if ( g_objSiacp.SCBC_GetCiKey(g_strData) )
  182. return g_strData.c_str();
  183. return _T("");
  184. }
  185. SCBCCOPYKEY_API LPCTSTR GetOSDLanguage()
  186. {
  187. g_strData.clear();
  188. if ( g_objSiacp.SCBC_GetOSDLanguage(g_strData) )
  189. return g_strData.c_str();
  190. return _T("");
  191. }
  192. SCBCCOPYKEY_API LPCTSTR GetShopLanguage()
  193. {
  194. g_strData.clear();
  195. if ( g_objSiacp.SCBC_GetShopLanguage(g_strData) )
  196. return g_strData.c_str();
  197. return _T("");
  198. }
  199. SCBCCOPYKEY_API LPCTSTR GetChannel()
  200. {
  201. g_strData.clear();
  202. if ( g_objSiacp.SCBC_GetChannel(g_strData) )
  203. return g_strData.c_str();
  204. return _T("");
  205. }
  206. //////////////////////////////////////////////////////////////////////////
  207. // 设置;
  208. SCBCCOPYKEY_API BOOL SetProjectId(int pid)
  209. {
  210. return g_objSiacp.SCBC_SetProjectId(pid);
  211. }
  212. SCBCCOPYKEY_API BOOL SetProjectId(LPCTSTR lpPid)
  213. {
  214. if ( lpPid == NULL)
  215. return FALSE;
  216. return g_objSiacp.SCBC_SetProjectId(lpPid);
  217. }
  218. SCBCCOPYKEY_API BOOL SetProjectId(const byte* pBuffer, const int& nLen)
  219. {
  220. return g_objSiacp.SCBC_SetProjectId(pBuffer, nLen);
  221. }
  222. SCBCCOPYKEY_API BOOL SetDeviceId(LPCTSTR lpDeviceId)
  223. {
  224. if ( lpDeviceId == NULL)
  225. return FALSE;
  226. return g_objSiacp.SCBC_SetDeviceId(lpDeviceId);
  227. }
  228. SCBCCOPYKEY_API BOOL SetDeviceId(const byte* pBuffer, const int &nLen)
  229. {
  230. return g_objSiacp.SCBC_SetDeviceId(pBuffer, nLen);
  231. }
  232. SCBCCOPYKEY_API BOOL SetMAC(LPCTSTR lpMac)
  233. {
  234. if ( lpMac == NULL)
  235. return FALSE;
  236. return g_objSiacp.SCBC_SetMAC(lpMac);
  237. }
  238. SCBCCOPYKEY_API BOOL SetMAC(const byte* pBuffer, const int& nLen)
  239. {
  240. return g_objSiacp.SCBC_SetMAC(pBuffer, nLen);
  241. }
  242. SCBCCOPYKEY_API BOOL SetHDCPKey(LPCTSTR lpHDCP, BOOL bHasSpace)
  243. {
  244. if ( lpHDCP == NULL)
  245. return FALSE;
  246. return g_objSiacp.SCBC_SetHDCPKey(lpHDCP, bHasSpace);
  247. }
  248. SCBCCOPYKEY_API BOOL SetHDCPKey(const byte* pBuffer, const int& nLen)
  249. {
  250. return g_objSiacp.SCBC_SetHDCPKey(pBuffer, nLen);
  251. }
  252. SCBCCOPYKEY_API BOOL SetHDCPKey22(LPCTSTR lpHDCP22, BOOL bHasSpace)
  253. {
  254. if ( lpHDCP22 == NULL)
  255. return FALSE;
  256. return g_objSiacp.SCBC_SetHDCPKey22(lpHDCP22, bHasSpace);
  257. }
  258. SCBCCOPYKEY_API BOOL SetHDCPKey22(const byte* pBuffer, const int& nLen)
  259. {
  260. return g_objSiacp.SCBC_SetHDCPKey22(pBuffer, nLen);
  261. }
  262. SCBCCOPYKEY_API BOOL SetNetflixESN(LPCTSTR lpESN, BOOL bHasSpace)
  263. {
  264. if ( lpESN == NULL)
  265. return FALSE;
  266. return g_objSiacp.SCBC_SetNetflixESN(lpESN, bHasSpace);
  267. }
  268. SCBCCOPYKEY_API BOOL SetNetflixESN(const byte* pBuffer, const int& nLen)
  269. {
  270. return g_objSiacp.SCBC_SetNetflixESN(pBuffer, nLen);
  271. }
  272. SCBCCOPYKEY_API BOOL SetWidi(LPCTSTR lpWidi, BOOL bHasSpace)
  273. {
  274. if ( lpWidi == NULL)
  275. return FALSE;
  276. return g_objSiacp.SCBC_SetWidi(lpWidi, bHasSpace);
  277. }
  278. SCBCCOPYKEY_API BOOL SetWidi(const byte* pBuffer, const int& nLen)
  279. {
  280. return g_objSiacp.SCBC_SetWidi(pBuffer, nLen);
  281. }
  282. SCBCCOPYKEY_API BOOL SetWidevine(LPCTSTR lpWidevine, BOOL bHasSpace)
  283. {
  284. if ( lpWidevine == NULL)
  285. return FALSE;
  286. return g_objSiacp.SCBC_SetWidevine(lpWidevine, bHasSpace);
  287. }
  288. SCBCCOPYKEY_API BOOL SetWidevine(const byte* pBuffer, const int& nLen)
  289. {
  290. return g_objSiacp.SCBC_SetWidevine(pBuffer, nLen);
  291. }
  292. SCBCCOPYKEY_API BOOL SetCiKey(LPCTSTR lpCiKey, BOOL bHasSpace)
  293. {
  294. if ( lpCiKey == NULL)
  295. return FALSE;
  296. return g_objSiacp.SCBC_SetCiKey(lpCiKey, bHasSpace);
  297. }
  298. SCBCCOPYKEY_API BOOL SetCiKey(const byte* pBuffer, const int& nLen)
  299. {
  300. return g_objSiacp.SCBC_SetCiKey(pBuffer, nLen);
  301. }
  302. SCBCCOPYKEY_API BOOL SetOSDLanguage(LPCTSTR lan, BOOL bHasSpace)
  303. {
  304. if ( lan == NULL)
  305. return FALSE;
  306. return g_objSiacp.SCBC_SetOSDLanguage(lan, bHasSpace);
  307. }
  308. SCBCCOPYKEY_API BOOL SetOSDLanguage(const byte* pBuffer, const int& nLen)
  309. {
  310. return g_objSiacp.SCBC_SetOSDLanguage(pBuffer, nLen);
  311. }
  312. SCBCCOPYKEY_API BOOL SetShopLanguage(LPCTSTR lan, BOOL bHasSpace)
  313. {
  314. if ( lan == NULL)
  315. return FALSE;
  316. return g_objSiacp.SCBC_SetShopLanguage(lan, bHasSpace);
  317. }
  318. SCBCCOPYKEY_API BOOL SetShopLanguage(const byte* pBuffer, const int& nLen)
  319. {
  320. return g_objSiacp.SCBC_SetShopLanguage(pBuffer, nLen);
  321. }
  322. SCBCCOPYKEY_API BOOL SetChannel(LPCTSTR channel, BOOL bHasSpace)
  323. {
  324. if ( channel == NULL)
  325. return FALSE;
  326. return g_objSiacp.SCBC_SetChannel(channel, bHasSpace);
  327. }
  328. SCBCCOPYKEY_API BOOL SetChannel(const byte* pBuffer, const int& nLen)
  329. {
  330. return g_objSiacp.SCBC_SetChannel(pBuffer, nLen);
  331. }
  332. SCBCCOPYKEY_API BOOL SetWBNormal(LPCTSTR data)
  333. {
  334. if ( data == NULL)
  335. return FALSE;
  336. return g_objSiacp.SCBC_SetWBNormal(data);
  337. }
  338. SCBCCOPYKEY_API BOOL SetWBNormal(const byte* pBuffer, const int& nLen)
  339. {
  340. return g_objSiacp.SCBC_SetWBNormal(pBuffer, nLen);
  341. }
  342. SCBCCOPYKEY_API BOOL SetWBCool(LPCTSTR data)
  343. {
  344. if ( data == NULL)
  345. return FALSE;
  346. return g_objSiacp.SCBC_SetWBCool(data);
  347. }
  348. SCBCCOPYKEY_API BOOL SetWBCool(const byte* pBuffer, const int& nLen)
  349. {
  350. return g_objSiacp.SCBC_SetWBCool(pBuffer, nLen);
  351. }
  352. SCBCCOPYKEY_API BOOL SetWBWarm(LPCTSTR data)
  353. {
  354. if ( data == NULL)
  355. return FALSE;
  356. return g_objSiacp.SCBC_SetWBWarm(data);
  357. }
  358. SCBCCOPYKEY_API BOOL SetWBWarm(const byte* pBuffer, const int& nLen)
  359. {
  360. return g_objSiacp.SCBC_SetWBWarm(pBuffer, nLen);
  361. }
  362. //////////////////////////////////////////////////////////////////////////
  363. // 检验;
  364. SCBCCOPYKEY_API BOOL CheckDeviceId()
  365. {
  366. return g_objSiacp.SCBC_CheckDeviceId();
  367. }
  368. SCBCCOPYKEY_API BOOL CheckMAC()
  369. {
  370. return g_objSiacp.SCBC_CheckMAC();
  371. }
  372. SCBCCOPYKEY_API BOOL CheckHDCP()
  373. {
  374. return g_objSiacp.SCBC_CheckHDCP();
  375. }
  376. SCBCCOPYKEY_API BOOL CheckHDCP22()
  377. {
  378. return g_objSiacp.SCBC_CheckHDCP22();
  379. }
  380. SCBCCOPYKEY_API BOOL CheckNetflixESN()
  381. {
  382. return g_objSiacp.SCBC_CheckNetflixESN();
  383. }
  384. SCBCCOPYKEY_API BOOL CheckWidi()
  385. {
  386. return g_objSiacp.SCBC_CheckWidi();
  387. }
  388. SCBCCOPYKEY_API BOOL CheckWidevine()
  389. {
  390. return g_objSiacp.SCBC_CheckWidevine();
  391. }
  392. SCBCCOPYKEY_API BOOL CheckCikey()
  393. {
  394. return g_objSiacp.SCBC_CheckCikey();
  395. }
  396. SCBCCOPYKEY_API BOOL StarWarmUpMode()
  397. {
  398. return g_objSiacp.SCBC_StarWarmUpMode();
  399. }
  400. SCBCCOPYKEY_API BOOL StopWarmUpMode()
  401. {
  402. return g_objSiacp.SCBC_StopWarmUpMode();
  403. }
  404. #else
  405. static PyObject* Open(PyObject* self, PyObject* args)
  406. {
  407. int nPort;
  408. int Baudrate;
  409. int ByteSize, Parity, StopBits;
  410. if (!PyArg_ParseTuple(args, "iiiii", &nPort, &Baudrate, &ByteSize, &Parity, &StopBits ))
  411. return NULL;
  412. return Py_BuildValue("b", (bool)g_objSiacp.OpenComm(nPort, Baudrate));
  413. }
  414. static PyObject* Close(PyObject* self, PyObject* args)
  415. {
  416. g_objSiacp.CloseComm();
  417. return Py_None;
  418. }
  419. static PyObject* IsOpen(PyObject* self, PyObject* args)
  420. {
  421. return Py_BuildValue("b", (bool)g_objSiacp.IsOpen());
  422. }
  423. static PyObject* EnterFactory(PyObject* self, PyObject* args)
  424. {
  425. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_EnterFactory());
  426. }
  427. static PyObject* LeaveFactory(PyObject* self, PyObject* args)
  428. {
  429. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_LeaveFactory());
  430. }
  431. //////////////////////////////////////////////////////////////////////////
  432. // 读取;
  433. static PyObject* GetProjectId(PyObject* self, PyObject* args)
  434. {
  435. int pid = -1;
  436. g_objSiacp.SCBC_GetProjectId(pid);
  437. // 获取失败返回-1;
  438. return Py_BuildValue("i", pid);
  439. }
  440. static PyObject* GetSoftVersion(PyObject* self, PyObject* args)
  441. {
  442. g_strData.clear();
  443. g_objSiacp.SCBC_GetSoftVersion(g_strData);
  444. // 获取失败返回"";
  445. return Py_BuildValue("s", g_strData.c_str());
  446. }
  447. static PyObject* GetDeviceId(PyObject* self, PyObject* args)
  448. {
  449. g_strData.clear();
  450. g_objSiacp.SCBC_GetDeviceId(g_strData);
  451. // 获取失败返回"";
  452. return Py_BuildValue("s", g_strData.c_str());
  453. }
  454. static PyObject* GetClientType(PyObject* self, PyObject* args)
  455. {
  456. g_strData.clear();
  457. g_objSiacp.SCBC_GetClientType(g_strData);
  458. // 获取失败返回"";
  459. return Py_BuildValue("s", g_strData.c_str());
  460. }
  461. static PyObject* GetMAC(PyObject* self, PyObject* args)
  462. {
  463. g_strData.clear();
  464. g_objSiacp.SCBC_GetMAC(g_strData);
  465. // 获取失败返回"";
  466. return Py_BuildValue("s", g_strData.c_str());
  467. }
  468. static PyObject* GetHDCPKey(PyObject* self, PyObject* args)
  469. {
  470. g_strData.clear();
  471. g_objSiacp.SCBC_GetHDCPKey(g_strData);
  472. // 获取失败返回"";
  473. return Py_BuildValue("s", g_strData.c_str());
  474. }
  475. static PyObject* GetHDCPKey22(PyObject* self, PyObject* args)
  476. {
  477. g_strData.clear();
  478. g_objSiacp.SCBC_GetHDCPKey22(g_strData);
  479. // 获取失败返回"";
  480. return Py_BuildValue("s", g_strData.c_str());
  481. }
  482. static PyObject* GetWidi(PyObject* self, PyObject* args)
  483. {
  484. g_strData.clear();
  485. g_objSiacp.SCBC_GetWidi(g_strData);
  486. // 获取失败返回"";
  487. return Py_BuildValue("s", g_strData.c_str());
  488. }
  489. static PyObject* GetNetflixESN(PyObject* self, PyObject* args)
  490. {
  491. g_strData.clear();
  492. g_objSiacp.SCBC_GetNetflixESN(g_strData);
  493. // 获取失败返回"";
  494. return Py_BuildValue("s", g_strData.c_str());
  495. }
  496. static PyObject* GetWidevine(PyObject* self, PyObject* args)
  497. {
  498. g_strData.clear();
  499. g_objSiacp.SCBC_GetWidevine(g_strData);
  500. // 获取失败返回"";
  501. return Py_BuildValue("s", g_strData.c_str());
  502. }
  503. static PyObject* GetCiKey(PyObject* self, PyObject* args)
  504. {
  505. g_strData.clear();
  506. g_objSiacp.SCBC_GetCiKey(g_strData);
  507. // 获取失败返回"";
  508. return Py_BuildValue("s", g_strData.c_str());
  509. }
  510. static PyObject* GetOSDLanguage(PyObject* self, PyObject* args)
  511. {
  512. g_strData.clear();
  513. g_objSiacp.SCBC_GetOSDLanguage(g_strData);
  514. // 获取失败返回"";
  515. return Py_BuildValue("s", g_strData.c_str());
  516. }
  517. static PyObject* GetShopLanguage(PyObject* self, PyObject* args)
  518. {
  519. g_strData.clear();
  520. g_objSiacp.SCBC_GetShopLanguage(g_strData);
  521. // 获取失败返回"";
  522. return Py_BuildValue("s", g_strData.c_str());
  523. }
  524. static PyObject* GetChannel(PyObject* self, PyObject* args)
  525. {
  526. g_strData.clear();
  527. g_objSiacp.SCBC_GetChannel(g_strData);
  528. // 获取失败返回"";
  529. return Py_BuildValue("s", g_strData.c_str());
  530. }
  531. //////////////////////////////////////////////////////////////////////////
  532. // 设置;
  533. static PyObject* SetProjectId(PyObject* self, PyObject* args)
  534. {
  535. int pid = 0;
  536. if (!PyArg_ParseTuple(args, "i", &pid))
  537. return NULL;
  538. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetProjectId(pid));
  539. }
  540. static PyObject* SetDeviceId(PyObject* self, PyObject* args)
  541. {
  542. const char* pszdata= 0;
  543. if (!PyArg_ParseTuple(args, "s", &pszdata))
  544. return NULL;
  545. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetDeviceId(pszdata));
  546. }
  547. static PyObject* SetDeviceIdBF(PyObject* self, PyObject* args)
  548. {
  549. const char* pszfile = 0;
  550. if (!PyArg_ParseTuple(args, "s", &pszfile))
  551. return NULL;
  552. // 打开文件;
  553. std::string data;
  554. if ( ReadKeyFile(pszfile, data) )
  555. {
  556. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetDeviceId((BYTE*)data.c_str(), data.size()));
  557. }
  558. return Py_BuildValue("b", false);
  559. }
  560. static PyObject* SetMAC(PyObject* self, PyObject* args)
  561. {
  562. const char* pszdata = 0;
  563. if (!PyArg_ParseTuple(args, "s", &pszdata))
  564. return NULL;
  565. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetMAC(pszdata));
  566. }
  567. static PyObject* SetMACBF(PyObject* self, PyObject* args)
  568. {
  569. const char* pszfile = 0;
  570. if (!PyArg_ParseTuple(args, "s", &pszfile))
  571. return NULL;
  572. // 打开文件;
  573. std::string data;
  574. if ( ReadKeyFile(pszfile, data) )
  575. {
  576. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetMAC((BYTE*)data.c_str(), data.size()));
  577. }
  578. return Py_BuildValue("b", false);
  579. }
  580. static PyObject* SetHDCPKey(PyObject* self, PyObject* args)
  581. {
  582. BOOL bHasSpace;
  583. const char* pszdata = 0;
  584. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  585. return NULL;
  586. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetHDCPKey(pszdata, bHasSpace));
  587. }
  588. static PyObject* SetHDCPKeyBF(PyObject* self, PyObject* args)
  589. {
  590. const char* pszfile = 0;
  591. if (!PyArg_ParseTuple(args, "s", &pszfile))
  592. return NULL;
  593. // 打开文件;
  594. std::string data;
  595. if ( ReadKeyFile(pszfile, data) )
  596. {
  597. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetHDCPKey((BYTE*)data.c_str(), data.size()));
  598. }
  599. return Py_BuildValue("b", false);
  600. }
  601. static PyObject* SetHDCPKey22(PyObject* self, PyObject* args)
  602. {
  603. BOOL bHasSpace;
  604. const char* pszdata = 0;
  605. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  606. return NULL;
  607. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetHDCPKey22(pszdata, bHasSpace));
  608. }
  609. static PyObject* SetHDCPKey22BF(PyObject* self, PyObject* args)
  610. {
  611. const char* pszfile = 0;
  612. if (!PyArg_ParseTuple(args, "s", &pszfile))
  613. return NULL;
  614. // 打开文件;
  615. std::string data;
  616. if ( ReadKeyFile(pszfile, data) )
  617. {
  618. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetHDCPKey22((BYTE*)data.c_str(), data.size()));
  619. }
  620. return Py_BuildValue("b", false);
  621. }
  622. static PyObject* SetNetflixESN(PyObject* self, PyObject* args)
  623. {
  624. BOOL bHasSpace;
  625. const char* pszdata = 0;
  626. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  627. return NULL;
  628. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetNetflixESN(pszdata, bHasSpace));
  629. }
  630. static PyObject* SetNetflixESNBF(PyObject* self, PyObject* args)
  631. {
  632. const char* pszfile = 0;
  633. if (!PyArg_ParseTuple(args, "s", &pszfile))
  634. return NULL;
  635. // 打开文件;
  636. std::string data;
  637. if ( ReadKeyFile(pszfile, data) )
  638. {
  639. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetNetflixESN((BYTE*)data.c_str(), data.size()));
  640. }
  641. return Py_BuildValue("b", false);
  642. }
  643. static PyObject* SetWidi(PyObject* self, PyObject* args)
  644. {
  645. BOOL bHasSpace;
  646. const char* pszdata = 0;
  647. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  648. return NULL;
  649. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetWidi(pszdata, bHasSpace));
  650. }
  651. static PyObject* SetWidiBF(PyObject* self, PyObject* args)
  652. {
  653. const char* pszfile = 0;
  654. if (!PyArg_ParseTuple(args, "s", &pszfile))
  655. return NULL;
  656. // 打开文件;
  657. std::string data;
  658. if ( ReadKeyFile(pszfile, data) )
  659. {
  660. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetWidi((BYTE*)data.c_str(), data.size()));
  661. }
  662. return Py_BuildValue("b", false);
  663. }
  664. static PyObject* SetWidevine(PyObject* self, PyObject* args)
  665. {
  666. BOOL bHasSpace;
  667. const char* pszdata = 0;
  668. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  669. return NULL;
  670. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetWidevine(pszdata, bHasSpace));
  671. }
  672. static PyObject* SetWidevineBF(PyObject* self, PyObject* args)
  673. {
  674. const char* pszfile = 0;
  675. if (!PyArg_ParseTuple(args, "s", &pszfile))
  676. return NULL;
  677. // 打开文件;
  678. std::string data;
  679. if ( ReadKeyFile(pszfile, data) )
  680. {
  681. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetWidevine((BYTE*)data.c_str(), data.size()));
  682. }
  683. return Py_BuildValue("b", false);
  684. }
  685. static PyObject* SetCiKey(PyObject* self, PyObject* args)
  686. {
  687. BOOL bHasSpace;
  688. const char* pszdata = 0;
  689. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  690. return NULL;
  691. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetCiKey(pszdata, bHasSpace));
  692. }
  693. static PyObject* SetCiKeyBF(PyObject* self, PyObject* args)
  694. {
  695. const char* pszfile = 0;
  696. if (!PyArg_ParseTuple(args, "s", &pszfile))
  697. return NULL;
  698. // 打开文件;
  699. std::string data;
  700. if ( ReadKeyFile(pszfile, data) )
  701. {
  702. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetCiKey((BYTE*)data.c_str(), data.size()));
  703. }
  704. return Py_BuildValue("b", false);
  705. }
  706. static PyObject* SetOSDLanguage(PyObject* self, PyObject* args)
  707. {
  708. BOOL bHasSpace;
  709. const char* pszdata = 0;
  710. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  711. return NULL;
  712. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetOSDLanguage(pszdata, bHasSpace));
  713. }
  714. static PyObject* SetShopLanguage(PyObject* self, PyObject* args)
  715. {
  716. BOOL bHasSpace;
  717. const char* pszdata = 0;
  718. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  719. return NULL;
  720. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetShopLanguage(pszdata, bHasSpace));
  721. }
  722. static PyObject* SetChannel(PyObject* self, PyObject* args)
  723. {
  724. BOOL bHasSpace;
  725. const char* pszdata = 0;
  726. if (!PyArg_ParseTuple(args, "sb", &pszdata, &bHasSpace))
  727. return NULL;
  728. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetChannel(pszdata, bHasSpace));
  729. }
  730. static PyObject* SetWBNormal(PyObject* self, PyObject* args)
  731. {
  732. const char* pszdata = 0;
  733. if (!PyArg_ParseTuple(args, "s", &pszdata))
  734. return NULL;
  735. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetWBNormal(pszdata));
  736. }
  737. static PyObject* SetWBCool(PyObject* self, PyObject* args)
  738. {
  739. const char* pszdata = 0;
  740. if (!PyArg_ParseTuple(args, "s", &pszdata))
  741. return NULL;
  742. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetWBCool(pszdata));
  743. }
  744. static PyObject* SetWBWarm(PyObject* self, PyObject* args)
  745. {
  746. const char* pszdata = 0;
  747. if (!PyArg_ParseTuple(args, "s", &pszdata))
  748. return NULL;
  749. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_SetWBWarm(pszdata));
  750. }
  751. //////////////////////////////////////////////////////////////////////////
  752. // 校验;
  753. static PyObject* CheckDeviceId(PyObject* self, PyObject* args)
  754. {
  755. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckDeviceId());
  756. }
  757. static PyObject* CheckMAC(PyObject* self, PyObject* args)
  758. {
  759. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckMAC());
  760. }
  761. static PyObject* CheckHDCP(PyObject* self, PyObject* args)
  762. {
  763. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckHDCP());
  764. }
  765. static PyObject* CheckHDCP22(PyObject* self, PyObject* args)
  766. {
  767. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckHDCP22());
  768. }
  769. static PyObject* CheckNetflixESN(PyObject* self, PyObject* args)
  770. {
  771. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckNetflixESN());
  772. }
  773. static PyObject* CheckWidi(PyObject* self, PyObject* args)
  774. {
  775. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckWidi());
  776. }
  777. static PyObject* CheckWidevine(PyObject* self, PyObject* args)
  778. {
  779. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckWidevine());
  780. }
  781. static PyObject* CheckCikey(PyObject* self, PyObject* args)
  782. {
  783. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_CheckCikey());
  784. }
  785. static PyObject* StarWarmUpMode(PyObject* self, PyObject* args)
  786. {
  787. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_StarWarmUpMode());
  788. }
  789. static PyObject* StopWarmUpMode(PyObject* self, PyObject* args)
  790. {
  791. return Py_BuildValue("b", (bool)g_objSiacp.SCBC_StopWarmUpMode());
  792. }
  793. // 描述方法,暴露给python的函数;
  794. static PyMethodDef ScbcCopyKey_Methods[] = {
  795. {"Open",Open,METH_VARARGS,"打开串口"},
  796. {"Close", Close, METH_VARARGS, "关闭串口"},
  797. {"IsOpen", IsOpen, METH_VARARGS, "串口是否打开"},
  798. {"EnterFactory", EnterFactory, METH_VARARGS, "进入工厂模式"},
  799. {"LeaveFactory", LeaveFactory, METH_VARARGS, "离开工厂模式"},
  800. //////////////////////////////////////////////////////////////////////////
  801. // 读取;
  802. {"GetProjectId", GetProjectId, METH_VARARGS, "获取pid"},
  803. {"GetSoftVersion", GetSoftVersion, METH_VARARGS, "获取版本号"},
  804. {"GetDeviceId", GetDeviceId, METH_VARARGS, "获取DeviceID"},
  805. {"GetClientType", GetClientType, METH_VARARGS, "获取ClientType"},
  806. {"GetMAC", GetMAC, METH_VARARGS, "获取MAC"},
  807. {"GetHDCPKey", GetHDCPKey, METH_VARARGS, "获取HDCP"},
  808. {"GetHDCPKey22", GetHDCPKey22, METH_VARARGS, "获取HDCP22"},
  809. {"GetWidi", GetWidi, METH_VARARGS, "获取WIDI"},
  810. {"GetNetflixESN", GetNetflixESN, METH_VARARGS, "获取ESN"},
  811. {"GetWidevine", GetWidevine, METH_VARARGS, "获取WIDEVINE"},
  812. {"GetCiKey", GetCiKey, METH_VARARGS, "获取CIKEY"},
  813. {"GetOSDLanguage", GetOSDLanguage, METH_VARARGS, "获取OSDLAN"},
  814. {"GetShopLanguage", GetShopLanguage, METH_VARARGS, "获取SHOPLAN"},
  815. {"GetChannel", GetChannel, METH_VARARGS, "获取频道号"},
  816. //////////////////////////////////////////////////////////////////////////
  817. // 设置;
  818. {"SetProjectId", SetProjectId, METH_VARARGS, "设置pid"},
  819. {"SetDeviceId", SetDeviceId, METH_VARARGS, "设置DeviceId"},
  820. {"SetDeviceIdBF", SetDeviceIdBF, METH_VARARGS, "设置DeviceId"},
  821. {"SetMAC", SetMAC, METH_VARARGS, "设置MAC"},
  822. {"SetMACBF", SetMACBF, METH_VARARGS, "设置MAC"},
  823. {"SetHDCPKey", SetHDCPKey, METH_VARARGS, "设置HDCP"},
  824. {"SetHDCPKeyBF", SetHDCPKeyBF, METH_VARARGS, "设置HDCP"},
  825. {"SetHDCPKey22", SetHDCPKey22, METH_VARARGS, "设置HDCP22"},
  826. {"SetHDCPKey22BF", SetHDCPKey22BF, METH_VARARGS, "设置HDCP22"},
  827. {"SetWidi", SetWidi, METH_VARARGS, "设置WIDI"},
  828. {"SetWidiBF", SetWidiBF, METH_VARARGS, "设置WIDI"},
  829. {"SetNetflixESN", SetNetflixESN, METH_VARARGS, "设置ESN"},
  830. {"SetNetflixESNBF", SetNetflixESNBF, METH_VARARGS, "设置ESN"},
  831. {"SetWidevine", SetWidevine, METH_VARARGS, "设置WIDEVINE"},
  832. {"SetWidevineBF", SetWidevineBF, METH_VARARGS, "设置WIDEVINE"},
  833. {"SetCiKey", SetCiKey, METH_VARARGS, "设置CIKEY"},
  834. {"SetCiKeyBF", SetCiKeyBF, METH_VARARGS, "设置CIKEY"},
  835. {"SetOSDLanguage", SetOSDLanguage, METH_VARARGS, "设置OSDLAN"},
  836. {"SetShopLanguage", SetShopLanguage, METH_VARARGS, "设置SHOPLAN"},
  837. {"SetChannel", SetChannel, METH_VARARGS, "设置频道号"},
  838. {"SetWBNormal", SetWBNormal, METH_VARARGS, "设置OSDLAN"},
  839. {"SetWBCool", SetWBCool, METH_VARARGS, "设置SHOPLAN"},
  840. {"SetWBWarm", SetWBWarm, METH_VARARGS, "设置频道号"},
  841. //////////////////////////////////////////////////////////////////////////
  842. // 校验;
  843. {"CheckDeviceId", CheckDeviceId, METH_VARARGS, "检验pid"},
  844. {"CheckMAC", CheckMAC, METH_VARARGS, "检验MAC"},
  845. {"CheckHDCP", CheckHDCP, METH_VARARGS, "检验HDCP"},
  846. {"CheckHDCP22", CheckHDCP22, METH_VARARGS, "检验HDCP22"},
  847. {"CheckWidi", CheckWidi, METH_VARARGS, "检验WIDI"},
  848. {"CheckNetflixESN", CheckNetflixESN, METH_VARARGS, "检验ESN"},
  849. {"CheckWidevine", CheckWidevine, METH_VARARGS, "检验WIDEVINE"},
  850. {"CheckCikey", CheckCikey, METH_VARARGS, "检验CIKEY"},
  851. {"StarWarmUpMode", StarWarmUpMode, METH_VARARGS, "检验OSDLAN"},
  852. {"StopWarmUpMode", StopWarmUpMode, METH_VARARGS, "检验SHOPLAN"},
  853. {NULL,NULL}
  854. };
  855. // 初始模块;//格式:init<模块名称>
  856. PyMODINIT_FUNC initScbcCopyKey()
  857. {
  858. // 初始化pyd函数列表;
  859. PyObject* m, * d;
  860. m = Py_InitModule("ScbcCopyKey", ScbcCopyKey_Methods);
  861. d = PyModule_GetDict(m);
  862. }
  863. #endif