private void btnEstablish_Click(object sender, EventArgs e) { HCICmds.GAPCmds.GAP_EstablishLinkRequest establishLinkRequest = new HCICmds.GAPCmds.GAP_EstablishLinkRequest(); establishLinkRequest.highDutyCycle = HCICmds.GAP_EnableDisable.Disable; establishLinkRequest.whiteList = !ckBoxConnWhiteList.Checked ? HCICmds.GAP_EnableDisable.Disable : HCICmds.GAP_EnableDisable.Enable; establishLinkRequest.addrTypePeer = (HCICmds.GAP_AddrType)cbConnAddrType.SelectedIndex; if (cbConnSlaveDeviceBDAddress.Text == "None") { msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Error, "Select a Slave BDAddress\n"); cbConnSlaveDeviceBDAddress.Focus(); } else { discoverConnectStatus = DiscoverConnectStatus.Establish; DiscoverConnectUserInputControl(); ShowProgress(true); devForm.StartTimer(DeviceForm.EventType.Establish); establishLinkRequest.peerAddr = cbConnSlaveDeviceBDAddress.Text; if (devForm.sendCmds.SendGAP(establishLinkRequest)) return; ShowProgress(false); devForm.StopTimer(DeviceForm.EventType.Establish); msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Error, "Invalid Slave BDA\n"); cbConnSlaveDeviceBDAddress.Focus(); } }
private void btnGetParams_Click(object sender, EventArgs e) { discoverConnectStatus = DiscoverConnectStatus.GetSet; DiscoverConnectUserInputControl(); GetConnectionParameters(); discoverConnectStatus = DiscoverConnectStatus.Idle; DiscoverConnectUserInputControl(); }
public void TabDiscoverConnectInitValues() { ckBoxActiveScan.Checked = true; ckBoxWhiteList.Checked = false; cbScanMode.SelectedIndex = 3; ResetSlaveDevices(); cbConnAddrType.SelectedIndex = 0; ckBoxConnWhiteList.Checked = false; discoverConnectStatus = DiscoverConnectStatus.Idle; DiscoverConnectUserInputControl(); }
private void btnEstablishCancel_Click(object sender, EventArgs e) { discoverConnectStatus = DiscoverConnectStatus.EstablishCancel; DiscoverConnectUserInputControl(); HCICmds.GAPCmds.GAP_TerminateLinkRequest terminateLinkRequest = new HCICmds.GAPCmds.GAP_TerminateLinkRequest(); try { terminateLinkRequest.connHandle = (ushort)65534; terminateLinkRequest.discReason = HCICmds.GAP_DisconnectReason.Remote_User_Terminated; devForm.sendCmds.SendGAP(terminateLinkRequest); } catch (Exception ex) { string msg = string.Format("Failed To Send Terminate Link Message.\n\n{0}\n", ex.Message); msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Error, msg); } }
public void ShowProgress(bool enable) { if (InvokeRequired) BeginInvoke((Delegate)new DeviceTabsForm.ShowProgressDelegate(ShowProgress), enable); else if (enable) { pbSharedDevice.Style = ProgressBarStyle.Marquee; pbSharedDevice.Enabled = true; btnSendShared.Enabled = false; } else { Cursor = Cursors.Default; discoverConnectStatus = DiscoverConnectStatus.Idle; DiscoverConnectUserInputControl(); pbSharedDevice.Style = ProgressBarStyle.Continuous; pbSharedDevice.Enabled = false; btnSendShared.Enabled = true; } }
private void tsmiSendAdvCmd_Click(object sender, EventArgs e) { try { switch (tvAdvCmdList.SelectedNode.Text) { case "HCIExt_SetRxGain": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetRxGain); break; case "HCIExt_SetTxPower": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetTxPower); break; case "HCIExt_OnePktPerEvt": devForm.sendCmds.SendHCIExt(devForm.HCIExt_OnePktPerEvt); break; case "HCIExt_ClkDivideOnHalt": devForm.sendCmds.SendHCIExt(devForm.HCIExt_ClkDivideOnHalt); break; case "HCIExt_DeclareNvUsage": devForm.sendCmds.SendHCIExt(devForm.HCIExt_DeclareNvUsage); break; case "HCIExt_Decrypt": devForm.sendCmds.SendHCIExt(devForm.HCIExt_Decrypt); break; case "HCIExt_SetLocalSupportedFeatures": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetLocalSupportedFeatures); break; case "HCIExt_SetFastTxRespTime": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetFastTxRespTime); break; case "HCIExt_ModemTestTx": devForm.sendCmds.SendHCIExt(devForm.HCIExt_ModemTestTx); break; case "HCIExt_ModemHopTestTx": devForm.sendCmds.SendHCIExt(devForm.HCIExt_ModemHopTestTx); break; case "HCIExt_ModemTestRx": devForm.sendCmds.SendHCIExt(devForm.HCIExt_ModemTestRx); break; case "HCIExt_EndModemTest": devForm.sendCmds.SendHCIExt(devForm.HCIExt_EndModemTest); break; case "HCIExt_SetBDADDR": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetBDADDR); break; case "HCIExt_SetSCA": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetSCA); break; case "HCIExt_EnablePTM": devForm.sendCmds.SendHCIExt(devForm.HCIExt_EnablePTM); break; case "HCIExt_SetFreqTune": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetFreqTune); break; case "HCIExt_SaveFreqTune": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SaveFreqTune); break; case "HCIExt_SetMaxDtmTxPower": devForm.sendCmds.SendHCIExt(devForm.HCIExt_SetMaxDtmTxPower); break; case "HCIExt_MapPmIoPort": devForm.sendCmds.SendHCIExt(devForm.HCIExt_MapPmIoPort); break; case "HCIExt_DisconnectImmed": devForm.sendCmds.SendHCIExt(devForm.HCIExt_DisconnectImmed); break; case "HCIExt_PER": devForm.sendCmds.SendHCIExt(devForm.HCIExt_PER); break; case "L2CAP_InfoReq": devForm.sendCmds.SendL2CAP(devForm.L2CAP_InfoReq); break; case "L2CAP_ConnParamUpdateReq": devForm.sendCmds.SendL2CAP(devForm.L2CAP_ConnParamUpdateReq); break; case "ATT_ErrorRsp": devForm.sendCmds.SendATT(devForm.ATT_ErrorRsp); break; case "ATT_ExchangeMTUReq": devForm.sendCmds.SendATT(devForm.ATT_ExchangeMTUReq); break; case "ATT_ExchangeMTURsp": devForm.sendCmds.SendATT(devForm.ATT_ExchangeMTURsp); break; case "ATT_FindInfoReq": devForm.sendCmds.SendATT(devForm.ATT_FindInfoReq, TxDataOut.CmdTypes.General); break; case "ATT_FindInfoRsp": devForm.sendCmds.SendATT(devForm.ATT_FindInfoRsp); break; case "ATT_FindByTypeValueReq": devForm.sendCmds.SendATT(devForm.ATT_FindByTypeValueReq); break; case "ATT_FindByTypeValueRsp": devForm.sendCmds.SendATT(devForm.ATT_FindByTypeValueRsp); break; case "ATT_ReadByTypeReq": devForm.sendCmds.SendATT(devForm.ATT_ReadByTypeReq); break; case "ATT_ReadByTypeRsp": devForm.sendCmds.SendATT(devForm.ATT_ReadByTypeRsp); ((Control)pgAdvCmds).Refresh(); break; case "ATT_ReadReq": devForm.sendCmds.SendATT(devForm.ATT_ReadReq, TxDataOut.CmdTypes.General, (SendCmds.SendCmdResult)null); break; case "ATT_ReadRsp": devForm.sendCmds.SendATT(devForm.ATT_ReadRsp); break; case "ATT_ReadBlobReq": devForm.sendCmds.SendATT(devForm.ATT_ReadBlobReq, TxDataOut.CmdTypes.General, (SendCmds.SendCmdResult)null); break; case "ATT_ReadBlobRsp": devForm.sendCmds.SendATT(devForm.ATT_ReadBlobRsp); break; case "ATT_ReadMultiReq": devForm.sendCmds.SendATT(devForm.ATT_ReadMultiReq); break; case "ATT_ReadMultiRsp": devForm.sendCmds.SendATT(devForm.ATT_ReadMultiRsp); break; case "ATT_ReadByGrpTypeReq": devForm.sendCmds.SendATT(devForm.ATT_ReadByGrpTypeReq, TxDataOut.CmdTypes.General); break; case "ATT_ReadByGrpTypeRsp": devForm.sendCmds.SendATT(devForm.ATT_ReadByGrpTypeRsp); ((Control)pgAdvCmds).Refresh(); break; case "ATT_WriteReq": devForm.sendCmds.SendATT(devForm.ATT_WriteReq, (SendCmds.SendCmdResult)null); break; case "ATT_WriteRsp": devForm.sendCmds.SendATT(devForm.ATT_WriteRsp); break; case "ATT_PrepareWriteReq": devForm.sendCmds.SendATT(devForm.ATT_PrepareWriteReq); break; case "ATT_PrepareWriteRsp": devForm.sendCmds.SendATT(devForm.ATT_PrepareWriteRsp); break; case "ATT_ExecuteWriteReq": devForm.sendCmds.SendATT(devForm.ATT_ExecuteWriteReq, (SendCmds.SendCmdResult)null); break; case "ATT_ExecuteWriteRsp": devForm.sendCmds.SendATT(devForm.ATT_ExecuteWriteRsp); break; case "ATT_HandleValueNotification": devForm.sendCmds.SendATT(devForm.ATT_HandleValueNotification); break; case "ATT_HandleValueIndication": devForm.sendCmds.SendATT(devForm.ATT_HandleValueIndication); break; case "ATT_HandleValueConfirmation": devForm.sendCmds.SendATT(devForm.ATT_HandleValueConfirmation); break; case "GATT_ExchangeMTU": devForm.sendCmds.SendGATT(devForm.GATT_ExchangeMTU); break; case "GATT_DiscAllPrimaryServices": devForm.sendCmds.SendGATT(devForm.GATT_DiscAllPrimaryServices, TxDataOut.CmdTypes.General); break; case "GATT_DiscPrimaryServiceByUUID": devForm.sendCmds.SendGATT(devForm.GATT_DiscPrimaryServiceByUUID); break; case "GATT_FindIncludedServices": devForm.sendCmds.SendGATT(devForm.GATT_FindIncludedServices); break; case "GATT_DiscAllChars": devForm.sendCmds.SendGATT(devForm.GATT_DiscAllChars); break; case "GATT_DiscCharsByUUID": devForm.sendCmds.SendGATT(devForm.GATT_DiscCharsByUUID); break; case "GATT_DiscAllCharDescs": devForm.sendCmds.SendGATT(devForm.GATT_DiscAllCharDescs, TxDataOut.CmdTypes.General); break; case "GATT_ReadCharValue": devForm.sendCmds.SendGATT(devForm.GATT_ReadCharValue, TxDataOut.CmdTypes.General, (SendCmds.SendCmdResult)null); break; case "GATT_ReadUsingCharUUID": devForm.sendCmds.SendGATT(devForm.GATT_ReadUsingCharUUID); break; case "GATT_ReadLongCharValue": devForm.sendCmds.SendGATT(devForm.GATT_ReadLongCharValue, TxDataOut.CmdTypes.General, (SendCmds.SendCmdResult)null); break; case "GATT_ReadMultiCharValues": devForm.sendCmds.SendGATT(devForm.GATT_ReadMultiCharValues); break; case "GATT_WriteNoRsp": devForm.sendCmds.SendGATT(devForm.GATT_WriteNoRsp); break; case "GATT_SignedWriteNoRsp": devForm.sendCmds.SendGATT(devForm.GATT_SignedWriteNoRsp); break; case "GATT_WriteCharValue": devForm.sendCmds.SendGATT(devForm.GATT_WriteCharValue, (SendCmds.SendCmdResult)null); break; case "GATT_WriteLongCharValue": devForm.sendCmds.SendGATT(devForm.GATT_WriteLongCharValue, (byte[])null, (SendCmds.SendCmdResult)null); break; case "GATT_ReliableWrites": devForm.sendCmds.SendGATT(devForm.GATT_ReliableWrites); ((Control)pgAdvCmds).Refresh(); break; case "GATT_ReadCharDesc": devForm.sendCmds.SendGATT(devForm.GATT_ReadCharDesc); break; case "GATT_ReadLongCharDesc": devForm.sendCmds.SendGATT(devForm.GATT_ReadLongCharDesc); break; case "GATT_WriteCharDesc": devForm.sendCmds.SendGATT(devForm.GATT_WriteCharDesc); break; case "GATT_WriteLongCharDesc": devForm.sendCmds.SendGATT(devForm.GATT_WriteLongCharDesc); break; case "GATT_Notification": devForm.sendCmds.SendGATT(devForm.GATT_Notification); break; case "GATT_Indication": devForm.sendCmds.SendGATT(devForm.GATT_Indication); break; case "GATT_AddService": devForm.sendCmds.SendGATT(devForm.GATT_AddService); break; case "GATT_DelService": devForm.sendCmds.SendGATT(devForm.GATT_DelService); break; case "GATT_AddAttribute": devForm.sendCmds.SendGATT(devForm.GATT_AddAttribute); break; case "GAP_DeviceInit": devForm.sendCmds.SendGAP(devForm.GAP_DeviceInit); break; case "GAP_ConfigDeviceAddr": devForm.sendCmds.SendGAP(devForm.GAP_ConfigDeviceAddr); break; case "GAP_DeviceDiscoveryRequest": ShowProgress(true); devForm.StartTimer(DeviceForm.EventType.Scan); discoverConnectStatus = DiscoverConnectStatus.Scan; DiscoverConnectUserInputControl(); ResetSlaveDevices(); devForm.sendCmds.SendGAP(devForm.GAP_DeviceDiscoveryRequest); break; case "GAP_DeviceDiscoveryCancel": devForm.sendCmds.SendGAP(devForm.GAP_DeviceDiscoveryCancel); break; case "GAP_MakeDiscoverable": devForm.sendCmds.SendGAP(devForm.GAP_MakeDiscoverable); break; case "GAP_UpdateAdvertisingData": devForm.sendCmds.SendGAP(devForm.GAP_UpdateAdvertisingData); ((Control)pgAdvCmds).Refresh(); break; case "GAP_EndDiscoverable": devForm.sendCmds.SendGAP(devForm.GAP_EndDiscoverable); break; case "GAP_EstablishLinkRequest": devForm.sendCmds.SendGAP(devForm.GAP_EstablishLinkRequest); break; case "GAP_TerminateLinkRequest": devForm.sendCmds.SendGAP(devForm.GAP_TerminateLinkRequest); break; case "GAP_Authenticate": devForm.sendCmds.SendGAP(devForm.GAP_Authenticate); break; case "GAP_PasskeyUpdate": devForm.sendCmds.SendGAP(devForm.GAP_PasskeyUpdate); break; case "GAP_SlaveSecurityRequest": devForm.sendCmds.SendGAP(devForm.GAP_SlaveSecurityRequest); break; case "GAP_Signable": devForm.sendCmds.SendGAP(devForm.GAP_Signable); break; case "GAP_Bond": devForm.sendCmds.SendGAP(devForm.GAP_Bond); break; case "GAP_TerminateAuth": devForm.sendCmds.SendGAP(devForm.GAP_TerminateAuth); break; case "GAP_UpdateLinkParamReq": devForm.sendCmds.SendGAP(devForm.GAP_UpdateLinkParamReq); break; case "GAP_SetParam": devForm.sendCmds.SendGAP(devForm.GAP_SetParam); break; case "GAP_GetParam": devForm.sendCmds.SendGAP(devForm.GAP_GetParam); break; case "GAP_ResolvePrivateAddr": devForm.sendCmds.SendGAP(devForm.GAP_ResolvePrivateAddr); break; case "GAP_SetAdvToken": devForm.sendCmds.SendGAP(devForm.GAP_SetAdvToken); ((Control)pgAdvCmds).Refresh(); break; case "GAP_RemoveAdvToken": devForm.sendCmds.SendGAP(devForm.GAP_RemoveAdvToken); break; case "GAP_UpdateAdvTokens": devForm.sendCmds.SendGAP(devForm.GAP_UpdateAdvTokens); break; case "GAP_BondSetParam": devForm.sendCmds.SendGAP(devForm.GAP_BondSetParam); ((Control)pgAdvCmds).Refresh(); break; case "GAP_BondGetParam": devForm.sendCmds.SendGAP(devForm.GAP_BondGetParam); break; case "UTIL_Reset": devForm.sendCmds.SendUTIL(devForm.UTIL_Reset); break; case "UTIL_NVRead": devForm.sendCmds.SendUTIL(devForm.UTIL_NVRead); break; case "UTIL_NVWrite": devForm.sendCmds.SendUTIL(devForm.UTIL_NVWrite); ((Control)pgAdvCmds).Refresh(); break; case "UTIL_ForceBoot": string msg1 = "This Command Will Invalidate The Image On The Device\nDo You Wish To Send The Command?\n"; if (DisplayMsgCallback != null) DisplayMsgCallback(SharedAppObjs.MsgType.Warning, msg1); if (msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Warning, MsgBox.MsgButtons.OkCancel, MsgBox.MsgResult.OK, msg1) == MsgBox.MsgResult.OK) { if (DisplayMsgCallback != null) DisplayMsgCallback(SharedAppObjs.MsgType.Info, "User Selected OK\n"); if (devForm.sendCmds.SendUTIL(devForm.UTIL_ForceBoot)) { string msg2 = "Command Sent\n" + "\n" + "There Should Be No Response To This Command\n" + "(If There Is A Response -> There Is No BootLoader On The Device)\n" + "\n" + "After Noting That There Is No Response\n" + "Start The 'Serial Bootloader' Tool To Download The New Firmware\n\n" + "You May Close BTool Now\n" + "<Or>\n" + "You Can 'Close Device' Then 'Start Device' In BTool After The Serial Bootloader Is Complete\n"; if (DisplayMsgCallback != null) DisplayMsgCallback(SharedAppObjs.MsgType.Warning, msg2); msgBox.UserMsgBox(MsgBox.MsgTypes.Info, msg2); break; } else { string msg2 = "Command Failed\nSerial Bootloader Setup Failed\n"; if (DisplayMsgCallback != null) DisplayMsgCallback(SharedAppObjs.MsgType.Error, msg2); msgBox.UserMsgBox(MsgBox.MsgTypes.Error, msg2); break; } } else { if (DisplayMsgCallback != null) DisplayMsgCallback(SharedAppObjs.MsgType.Info, "User Selected Cancel\n"); string msg2 = "Operation Aborted\n"; if (DisplayMsgCallback != null) DisplayMsgCallback(SharedAppObjs.MsgType.Info, msg2); msgBox.UserMsgBox(MsgBox.MsgTypes.Info, msg2); break; } case "HCI_ReadRSSI": devForm.sendCmds.SendHCIOther(devForm.HCIOther_ReadRSSI); break; case "HCI_LEClearWhiteList": devForm.sendCmds.SendHCIOther(devForm.HCIOther_LEClearWhiteList); break; case "HCI_LEAddDeviceToWhiteList": devForm.sendCmds.SendHCIOther(devForm.HCIOther_LEAddDeviceToWhiteList); break; case "HCI_LERemoveDeviceFromWhiteList": devForm.sendCmds.SendHCIOther(devForm.HCIOther_LERemoveDeviceFromWhiteList); break; case "HCI_LEConnectionUpdate": devForm.sendCmds.SendHCIOther(devForm.HCIOther_LEConnectionUpdate); break; case "MISC_GenericCommand": devForm.sendCmds.SendMISC(devForm.MISC_GenericCommand); ((Control)pgAdvCmds).Refresh(); break; case "MISC_RawTxMessage": devForm.sendCmds.SendMISC(devForm.MISC_RawTxMessage); break; case "Send All Msgs": devForm.SendAllMsgs(); break; case "Send All Events": devForm.SendEventWaves(false); break; case "Send All Forever": devForm.SendAllForever(); break; case "Send Attr Data Cmds": devForm.SendAttrDataCmds(); break; case "Test Case": devForm.TestCase(); break; default: msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Warning, "Select A Command First\n"); break; } } catch { msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Warning, "Select A Command First\n"); } }
private void btnTerminate_Click(object sender, EventArgs e) { discoverConnectStatus = DiscoverConnectStatus.Terminate; DiscoverConnectUserInputControl(); HCICmds.GAPCmds.GAP_TerminateLinkRequest terminateLinkRequest = new HCICmds.GAPCmds.GAP_TerminateLinkRequest(); bool flag; try { terminateLinkRequest.connHandle = Convert.ToUInt16(tbTermConnHandle.Text, 16); terminateLinkRequest.discReason = HCICmds.GAP_DisconnectReason.Remote_User_Terminated; flag = devForm.sendCmds.SendGAP(terminateLinkRequest); } catch (Exception ex) { string msg = string.Format("Invalid Connection Handle\n\n{0}\n", ex.Message); msgBox.UserMsgBox(SharedObjects.MainWin, MsgBox.MsgTypes.Error, msg); tbTermConnHandle.Focus(); flag = false; } if (flag) return; discoverConnectStatus = DiscoverConnectStatus.Idle; DiscoverConnectUserInputControl(); }
private void btnScan_Click(object sender, EventArgs e) { if (!(Cursor != Cursors.WaitCursor)) return; ShowProgress(true); devForm.StartTimer(DeviceForm.EventType.Scan); discoverConnectStatus = DiscoverConnectStatus.Scan; DiscoverConnectUserInputControl(); ResetSlaveDevices(); SlaveDeviceFound = (ushort)0; lblDeviceFound.Text = SlaveDeviceFound.ToString(); devForm.sendCmds.SendGAP(new HCICmds.GAPCmds.GAP_DeviceDiscoveryRequest() { activeScan = !ckBoxActiveScan.Checked ? HCICmds.GAP_EnableDisable.Disable : HCICmds.GAP_EnableDisable.Enable, whiteList = !ckBoxWhiteList.Checked ? HCICmds.GAP_EnableDisable.Disable : HCICmds.GAP_EnableDisable.Enable, mode = (HCICmds.GAP_DiscoveryMode)cbScanMode.SelectedIndex }); }
private void btnScanCancel_Click(object sender, EventArgs e) { discoverConnectStatus = DiscoverConnectStatus.ScanCancel; DiscoverConnectUserInputControl(); devForm.sendCmds.SendGAP(new HCICmds.GAPCmds.GAP_DeviceDiscoveryCancel()); }