⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btclient.cxx

📁 Windows CE操作系统中适用的蓝牙驱动程序
💻 CXX
📖 第 1 页 / 共 4 页
字号:
	if ((*pf) & 0x01)
		wprintf (L"\tpark\n");
	if ((*pf) & 0x02)
		wprintf (L"\tRSSI\n");
	if ((*pf) & 0x04)
		wprintf (L"\tchannel-quality driven rate\n");
	if ((*pf) & 0x08)
		wprintf (L"\tSCO\n");
	if ((*pf) & 0x10)
		wprintf (L"\tHV2\n");
	if ((*pf) & 0x20)
		wprintf (L"\tHV3\n");
	if ((*pf) & 0x40)
		wprintf (L"\tu-law log\n");
	if ((*pf) & 0x80)
		wprintf (L"\ta-law log\n");
	++pf;
	if ((*pf) & 0x01)
		wprintf (L"\tCVSD\n");
	if ((*pf) & 0x02)
		wprintf (L"\tpaging scheme\n");
	if ((*pf) & 0x04)
		wprintf (L"\tpower control\n");
	if ((*pf) & 0x08)
		wprintf (L"\ttransparent SCO data\n");
	if ((*pf) & 0x10)
		wprintf (L"\tflow lag bit 0\n");
	if ((*pf) & 0x20)
		wprintf (L"\tflow lag bit 0\n");
	if ((*pf) & 0x40)
		wprintf (L"\tflow lag bit 0\n");
}

int wmain (int argc, WCHAR **argv) {
#if defined (USE_RPC)
	WCHAR	*pszUuid = NULL;
	WCHAR 	*pszProtocolSequence = L"ncalrpc";
	WCHAR   *pszNetworkAddress   = NULL;
	WCHAR	*pszEndpoint         = L"bt_server";
	WCHAR   *pszOptions          = NULL;
	WCHAR   *pszStringBinding    = NULL;

	RpcStringBindingCompose (pszUuid, pszProtocolSequence, pszNetworkAddress,
					pszEndpoint, pszOptions, &pszStringBinding);

	wprintf (L"String binding : %s\n", pszStringBinding);

	RpcBindingFromStringBinding (pszStringBinding, &bluetooth_IfHandle);
#endif

	for ( ; ; ) {
		WCHAR szBuffer[512];
		wprintf (L"> ");
		szBuffer[0] = L'\0';
		if (NULL == fgetws (szBuffer,sizeof(szBuffer)/sizeof(WCHAR)-1,stdin))
			break;

		// trim trailing carriage return characters.
		int iBufLen = wcslen(szBuffer)-1;
		for (; iBufLen; iBufLen--) {
			if (! (szBuffer[iBufLen] == L'\r' || szBuffer[iBufLen] == L'\n'))
				break;

			szBuffer[iBufLen] = 0;
		}

		if (szBuffer[0] == L'\0')
			continue;

		if (wcsicmp (szBuffer, L"exit") == 0) {
			break;
		} else if (wcsicmp (szBuffer, L"help") == 0) {
			wprintf (L"\n\tCommand syntax:\n");
			wprintf (L"exit                                  exit\n");
			wprintf (L"help                                  print this text\n");
			wprintf (L"start [card]                          starts all BT services or HCI transport\n");
			wprintf (L"stop [card]                           stops all BT services or HCI transport\n");
			wprintf (L"l2cap load                            loads l2cap API driver\n");
			wprintf (L"l2cap unload                          unloads l2cap API driver\n");
			wprintf (L"ping bt_addr string                   l2cap-ping the peer device\n");
			wprintf (L"connect bt_addr psm mtu               establish new L2CAP connection\n");
			wprintf (L"unaccept psm                          stop accepting L2CAP connections for psm\n");
			wprintf (L"accept psm mtu                        start accepting L2CAP connections for psm\n");
			wprintf (L"write cid string                      write string to cid\n");
			wprintf (L"writeansi cid string                  write string to cid\n");
			wprintf (L"rep number cid string                 write string to cid a number of times\n");
			wprintf (L"disconnect cid                        disconnect\n");
			wprintf (L"inquiry LAP length numresp            start inquiry\n");
			wprintf (L"name bt_addr                          query remote name\n");
			wprintf (L"set/getscan [mask]                    set or retrieve current scan mask\n");
			wprintf (L"set/getpage [timeout]                 set or retrieve current page timeout\n");
			wprintf (L"set/getcod [cod]                      set or retrieve current class of device\n");
			wprintf (L"getremotecod bt_addr                  get remote COD for given BT_ADDR\n");
			wprintf (L"park bt_addr beacon_max beacon_min    enter park mode\n");
			wprintf (L"sniff bt_addr max min attempt t/o     enter sniff mode\n");
			wprintf (L"readbd                                read bd address\n");
			wprintf (L"readhw                                read hardware state\n");
			wprintf (L"readversion [bt_addr]                 read local or remote hardware version\n");
			wprintf (L"setpin bt_addr byteseq                set PIN code\n");
			wprintf (L"revpin bt_addr                        revoke PIN code\n");
			wprintf (L"setlink bt_addr byteseq               set link key\n");
			wprintf (L"getlink bt_addr                       get link key\n");
			wprintf (L"revlink bt_addr                       revoke link key\n");
			wprintf (L"auth bt_addr                          authenticate connection\n");
			wprintf (L"encrypt bt_addr on/off                start/stop encryption\n");
			wprintf (L"uptest1 cid                           send unplugfest test 1 sequence\n");
			wprintf (L"uptest2 cid                           send unplugfest test 2 sequence\n");
			wprintf (L"uptest3 cid                           send unplugfest test 3 sequence\n");
			wprintf (L"send cid mtu filename                 send file <filename> to <cid> in chunks of <mtu>\n");
			wprintf (L"nsInquiry [-name]                     inqury using NSP (-name retrieves device name also)\n");
			wprintf (L"sdpAddRecord filename                 adds <filename> to SDP record database\n");
			wprintf (L"sdpDelRecord handle                   removes sdp database handle\n");
			wprintf (L"sdpServiceSearch bt_addr filename         ServiceSearch, GUIDS from <filename>\n");
			wprintf (L"sdpAttribSearch bt_addr filename          AttributeSearch,AttribIDs from <filename>\n");
			wprintf (L"sdpServAttribSearch bt_addr filename      ServiceAttributeSearch, from <filename>\n");
			wprintf (L"\n\tData format:\n");
			wprintf (L"handle                                8 hex digits preceeded by 0x\n");
			wprintf (L"psm, mtu, LAP and cid, timeout        4 hex digits preceeded by 0x\n");
			wprintf (L"length and numresp                    2 hex digits preceeded by 0x\n");
			wprintf (L"bt_addr                               12 hex digits without leading 0x\n");
			wprintf (L"string                                any set of characters\n");
			ProcessRFCOMMCommand (L"help");
			continue;
		} else if (wcsicmp (szBuffer, L"l2cap load") == 0) {
#if defined (UNDER_CE)
			wprintf (L"L2CAPLoad : %d\n", L2CAPLoad ());
#endif
			continue;
		} else if (wcsicmp (szBuffer, L"l2cap unload") == 0) {
#if defined (UNDER_CE)
			wprintf (L"L2CAPUnload : %d\n", L2CAPUnload ());
#endif
			continue;
		} else if (wcsnicmp (szBuffer, L"setscan ", 8) == 0) {
			WCHAR *p = szBuffer + 8;
			unsigned char scan;
			if (! GetUC(&p, &scan)) {
				wprintf (L"Syntax: scan\n");
				continue;
			}
			int iError = BthWriteScanEnableMask (scan);
			wprintf (L"BthWriteScanEnableMask returns 0x%08x %d\n", iError, iError);
			continue;
		} else if (wcsicmp (szBuffer, L"getscan") == 0) {
			unsigned char mask;
			int iError = BthReadScanEnableMask (&mask);
			wprintf (L"BthSetScanEnableMask returns 0x%08x %d\n", iError, iError);
			if (iError == ERROR_SUCCESS)
				wprintf (L"scan = %d\n", mask);

			continue;
		} else if (wcsnicmp (szBuffer, L"setpage ", 8) == 0) {
			WCHAR *p = szBuffer + 8;
			unsigned short page;
			if (! GetUS(&p, &page)) {
				wprintf (L"Syntax: page\n");
				continue;
			}
			int iError = BthWritePageTimeout (page);
			wprintf (L"BthWritePageTimeout returns 0x%08x %d\n", iError, iError);
			continue;
		} else if (wcsicmp (szBuffer, L"getpage") == 0) {
			unsigned short page;
			int iError = BthReadPageTimeout (&page);
			wprintf (L"BthReadPageTimeout returns 0x%08x %d\n", iError, iError);
			if (iError == ERROR_SUCCESS)
				wprintf (L"page = 0x%04x\n", page);

			continue;
		} else if (wcsnicmp (szBuffer, L"setauth ", 8) == 0) {
			WCHAR *p = szBuffer + 8;
			unsigned char ae;
			if (! GetUC(&p, &ae)) {
				wprintf (L"Syntax: authn mask\n");
				continue;
			}
			int iError = BthWriteAuthenticationEnable (ae);
			wprintf (L"BthWriteAuthenticationEnable returns 0x%08x %d\n", iError, iError);
			continue;
		} else if (wcsicmp (szBuffer, L"getauth") == 0) {
			unsigned char ae;
			int iError = BthReadAuthenticationEnable (&ae);
			wprintf (L"BthReadAuthenticationEnable returns 0x%08x %d\n", iError, iError);
			if (iError == ERROR_SUCCESS)
				wprintf (L"auth = 0x%04x\n", ae);

			continue;
		} else if (wcsnicmp (szBuffer, L"setcod ", 7) == 0) {
			WCHAR *p = szBuffer + 7;
			unsigned int cod;
			if (! GetUx(&p, &cod, 8)) {
				wprintf (L"Syntax: page\n");
				continue;
			}
			int iError = BthWriteCOD (cod);
			wprintf (L"BthWriteCOD returns 0x%08x %d\n", iError, iError);
			continue;
		} else if (wcsicmp (szBuffer, L"getcod") == 0) {
			unsigned int cod;
			int iError = BthReadCOD (&cod);
			wprintf (L"BthReadCOD returns 0x%08x %d\n", iError, iError);
			if (iError == ERROR_SUCCESS)
				wprintf (L"cod = 0x%08x\n", cod);

			continue;
		} else if (wcsnicmp (szBuffer, L"getremotecod ", 13) == 0) {
			WCHAR *p = szBuffer + 13;
			unsigned int cod = 0;
			BT_ADDR ba;
			if (! GetBA(&p, &ba)) {
				wprintf (L"Syntax: bt_addr\n");
				continue;
			}

			int iError = BthGetRemoteCOD (&ba, &cod);
			wprintf (L"BthGetRemoteCOD returns 0x%08x %d\n", iError, iError);
			if (iError == ERROR_SUCCESS)
				wprintf (L"cod = 0x%08x\n", cod);
			
			continue;	
		} else if (wcsnicmp (szBuffer, L"park ", 5) == 0) {
			WCHAR *p = szBuffer + 5;
			BT_ADDR ba;
			if (! GetBA(&p, &ba)) {
				wprintf (L"Syntax: bt_addr\n");
				continue;
			}

			USHORT b_max = 0;
			if (! GetUS(&p, &b_max)) {
				wprintf (L"Syntax: beacon_max\n");
				continue;
			}

			USHORT b_min = 0;
			if (! GetUS(&p, &b_min)) {
				wprintf (L"Syntax: beacon_min\n");
				continue;
			}

			USHORT pInt = 0;
			int iError = BthEnterParkMode (&ba, b_max, b_min, &pInt);
			wprintf (L"BthEnterParkMode returns 0x%08x %d\n", iError, iError);
			
			continue;
		} else if (wcsnicmp (szBuffer, L"sniff ", 6) == 0) {
			WCHAR *p = szBuffer + 5;
			BT_ADDR ba;
			if (! GetBA(&p, &ba)) {
				wprintf (L"Syntax: bt_addr\n");
				continue;
			}

			USHORT max = 0;
			if (! GetUS(&p, &max)) {
				wprintf (L"Syntax: sniff_mode_max\n");
				continue;
			}

			USHORT min = 0;
			if (! GetUS(&p, &min)) {
				wprintf (L"Syntax: sniff_mode_min\n");
				continue;
			}

			USHORT attempt = 0;
			if (! GetUS(&p, &attempt)) {
				wprintf (L"Syntax: sniff_attempt\n");
				continue;
			}

			USHORT to = 0;
			if (! GetUS(&p, &to)) {
				wprintf (L"Syntax: sniff_timeout\n");
				continue;
			}			

			USHORT pInt = 0;
			int iError = BthEnterSniffMode (&ba, max, min, attempt, to, &pInt);
			wprintf (L"BthEnterSniffMode returns 0x%08x %d\n", iError, iError);
			
			continue;
		} else if (wcsnicmp (szBuffer, L"readversion ", 12) == 0) {
			WCHAR *p = szBuffer + 12;
			BT_ADDR ba;
			if (! GetBA(&p, &ba)) {
				wprintf (L"Syntax: bt_addr\n");
				continue;
			}
			unsigned char lmp_version;
			unsigned short lmp_subversion, manufacturer;
			unsigned char lmp_features[8];
			int iError = BthReadRemoteVersion (&ba, &lmp_version, &lmp_subversion, &manufacturer, lmp_features);
			wprintf (L"BthAuthenticate returns 0x%08x %d\n", iError, iError);
			if (iError == ERROR_SUCCESS) {
				wprintf (L"LMP Version : %d\n", lmp_version);
				wprintf (L"LMP Subversion : %d\n", lmp_subversion);
				wprintf (L"Manufacturer: ");
				switch (manufacturer) {
				case 0:
					wprintf (L"Ericsson\n");
					break;
				case 1:
					wprintf (L"Nokia\n");
					break;
				case 2:
					wprintf (L"Intel\n");
					break;
				case 3:
					wprintf (L"IBM\n");
					break;
				case 4:
					wprintf (L"Toshiba\n");
					break;
				case 5:
					wprintf (L"3COM\n");
					break;
				case 6:
					wprintf (L"Microsoft\n");
					break;
				case 7:
					wprintf (L"Lucent\n");
					break;
				case 8:
					wprintf (L"Motorola\n");
					break;
				case 9:
					wprintf (L"Infineon\n");
					break;
				case 10:
					wprintf (L"CSR\n");
					break;
				case 11:
					wprintf (L"Silicon Wave\n");
					break;
				case 12:
					wprintf (L"Digianswer\n");
					break;
				default:
					wprintf (L"Unknown, code %d\n", manufacturer);
					break;
				}
				DumpFeatures (lmp_features);
			}
			continue;
		} else if (wcsicmp (szBuffer, L"readversion") == 0) {
			unsigned char lmp_version, hci_version;
			unsigned short hci_subversion, lmp_subversion, manufacturer;
			unsigned char lmp_features[8];
			int iError = BthReadLocalVersion (&hci_version, &hci_subversion, &lmp_version, &lmp_subversion, &manufacturer, lmp_features);
			wprintf (L"BthAuthenticate returns 0x%08x %d\n", iError, iError);
			if (iError == ERROR_SUCCESS) {
				wprintf (L"HCI Version : %d\n", hci_version);
				wprintf (L"HCI Subversion : %d\n", hci_subversion);
				wprintf (L"LMP Version : %d\n", lmp_version);
				wprintf (L"LMP Subversion : %d\n", lmp_subversion);
				wprintf (L"Manufacturer: ");
				switch (manufacturer) {
				case 0:
					wprintf (L"Ericsson\n");
					break;
				case 1:
					wprintf (L"Nokia\n");
					break;
				case 2:
					wprintf (L"Intel\n");
					break;
				case 3:
					wprintf (L"IBM\n");
					break;
				case 4:
					wprintf (L"Toshiba\n");
					break;
				case 5:
					wprintf (L"3COM\n");
					break;
				case 6:
					wprintf (L"Microsoft\n");
					break;
				case 7:
					wprintf (L"Lucent\n");
					break;
				case 8:
					wprintf (L"Motorola\n");
					break;
				case 9:
					wprintf (L"Infineon\n");
					break;
				case 10:
					wprintf (L"CSR\n");
					break;
				case 11:
					wprintf (L"Silicon Wave\n");
					break;
				case 12:
					wprintf (L"Digianswer\n");
					break;
				default:
					wprintf (L"Unknown, code %d\n", manufacturer);
					break;
				}
				DumpFeatures (lmp_features);
			}
			continue;
		} else if (wcsnicmp (szBuffer, L"setpin ", 7) == 0) {
			WCHAR *p = szBuffer + 7;
			BT_ADDR ba;
			if (! GetBA(&p, &ba)) {
				wprintf (L"Syntax: bt_addr\n");
				continue;
			}
			int iLen = 16;
			unsigned char pin[16];
			if (! GetBytes(&p, pin, &iLen)) {
				wprintf (L"Syntax: pin code\n");
				continue;
			}
			int iError = BthSetPIN (&ba, iLen, pin);
			wprintf (L"BthSetPIN returns 0x%08x %d\n", iError, iError);
			continue;
		} else if (wcsnicmp (szBuffer, L"setlink ", 8) == 0) {
			WCHAR *p = szBuffer + 8;
			BT_ADDR ba;
			if (! GetBA(&p, &ba)) {
				wprintf (L"Syntax: bt_addr\n");
				continue;
			}
			int iLen = 16;
			unsigned char key[16];
			if ((! GetBytes(&p, key, &iLen)) || (iLen != 16)) {
				wprintf (L"Syntax: link key (16 bytes)\n");
				continue;
			}
			int iError = BthSetLinkKey (&ba, key);
			wprintf (L"BthSetLinkKey returns 0x%08x %d\n", iError, iError);
			continue;
		} else if (wcsnicmp (szBuffer, L"getlink ", 8) == 0) {
			WCHAR *p = szBuffer + 8;
			BT_ADDR ba;
			if (! GetBA(&p, &ba)) {
				wprintf (L"Syntax: bt_addr\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -