] by
chw
2021-08-14 04:06:07.
0000: 44 20 32 30 32 31 2d 30 38 2d 31 34 54 30 34 3a D 2021-08-14T04:
0010: 30 36 3a 30 37 2e 39 33 34 0a 4c 20 62 6c 65 5c 06:07.934.L ble\
0020: 73 63 6f 6d 6d 61 6e 64 0a 50 20 64 36 31 32 30 scommand.P d6120
0030: 38 30 38 35 31 63 37 36 63 66 38 62 37 38 63 62 80851c76cf8b78cb
0040: 35 66 34 39 38 64 66 36 64 31 63 61 61 36 63 61 5f498df6d1caa6ca
0050: 65 61 66 0a 55 20 63 68 77 0a 57 20 32 30 39 31 eaf.U chw.W 2091
0060: 30 0a 3c 68 32 3e 62 6c 65 20 63 6f 6d 6d 61 6e 0.<h2>ble comman
0070: 64 3c 2f 68 32 3e 0d 0a 0d 0a 3c 68 33 3e 4e 61 d</h2>....<h3>Na
0080: 6d 65 3c 2f 68 33 3e 0d 0a 0d 0a 3c 62 3e 62 6c me</h3>....<b>bl
0090: 65 3c 2f 62 3e 20 2d 20 69 6e 74 65 72 61 63 74 e</b> - interact
00a0: 20 77 69 74 68 20 42 6c 75 65 74 6f 6f 74 68 20 with Bluetooth
00b0: 4c 6f 77 20 45 6e 65 72 67 79 20 28 42 4c 45 29 Low Energy (BLE)
00c0: 20 64 65 76 69 63 65 73 2e 20 52 65 71 75 69 72 devices. Requir
00d0: 65 73 20 41 6e 64 72 6f 69 64 20 34 2e 33 20 6f es Android 4.3 o
00e0: 72 20 68 69 67 68 65 72 2e 0d 0a 0d 0a 3c 68 33 r higher.....<h3
00f0: 3e 53 79 6e 6f 70 73 69 73 3c 2f 68 33 3e 0d 0a >Synopsis</h3>..
0100: 0d 0a 3c 74 74 3e 70 61 63 6b 61 67 65 20 72 65 ..<tt>package re
0110: 71 75 69 72 65 20 42 6c 65 3c 2f 74 74 3e 3c 62 quire Ble</tt><b
0120: 72 3e 0d 0a 3c 74 74 3e 62 6c 65 20 73 75 62 63 r>..<tt>ble subc
0130: 6f 6d 6d 61 6e 64 20 3f 6f 70 74 69 6f 6e 73 3f ommand ?options?
0140: 3c 2f 74 74 3e 0d 0a 0d 0a 3c 68 33 3e 44 65 73 </tt>....<h3>Des
0150: 63 72 69 70 74 69 6f 6e 3c 2f 68 33 3e 0d 0a 0d cription</h3>...
0160: 0a 54 68 69 73 20 63 6f 6d 6d 61 6e 64 20 69 73 .This command is
0170: 20 75 73 65 64 20 74 6f 20 64 65 61 6c 20 77 69 used to deal wi
0180: 74 68 20 42 6c 75 65 74 6f 6f 74 68 20 4c 6f 77 th Bluetooth Low
0190: 20 45 6e 65 72 67 79 20 28 42 4c 45 29 20 64 65 Energy (BLE) de
01a0: 76 69 63 65 73 2e 20 54 68 65 20 6c 65 67 61 6c vices. The legal
01b0: 20 3c 74 74 3e 73 75 62 63 6f 6d 6d 61 6e 64 73 <tt>subcommands
01c0: 3c 2f 74 74 3e 20 28 77 68 69 63 68 20 6d 61 79 </tt> (which may
01d0: 20 62 65 20 61 62 62 72 65 76 69 61 74 65 64 29 be abbreviated)
01e0: 20 61 72 65 3a 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 are:....<tt>ble
01f0: 20 61 62 6f 72 74 20 3c 69 3e 68 61 6e 64 6c 65 abort <i>handle
0200: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 </i></tt>....
0210: 20 41 62 6f 72 74 20 74 68 65 20 63 75 72 72 65 Abort the curre
0220: 6e 74 20 77 72 69 74 65 20 74 72 61 6e 73 61 63 nt write transac
0230: 74 69 6f 6e 20 6f 6e 20 74 68 65 20 42 4c 45 20 tion on the BLE
0240: 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 64 65 6e 74 connection ident
0250: 69 66 69 65 64 20 62 79 20 3c 74 74 3e 3c 69 3e ified by <tt><i>
0260: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 handle</i></tt>
0270: 77 68 69 63 68 20 77 61 73 20 6f 62 74 61 69 6e which was obtain
0280: 65 64 20 65 61 72 6c 69 65 72 20 62 79 20 61 20 ed earlier by a
0290: 3c 74 74 3e 62 6c 65 20 63 6f 6e 6e 65 63 74 3c <tt>ble connect<
02a0: 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 2e 20 52 65 /tt> command. Re
02b0: 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 turns an integer
02c0: 20 69 6e 64 69 63 61 74 69 6e 67 20 73 75 63 63 indicating succ
02d0: 65 73 73 20 28 31 29 2c 20 66 61 69 6c 75 72 65 ess (1), failure
02e0: 20 28 30 29 2c 20 6f 72 20 73 79 73 74 65 6d 20 (0), or system
02f0: 65 72 72 6f 72 20 28 6c 65 73 73 20 74 68 61 6e error (less than
0300: 20 30 29 2e 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 20 0).....<tt>ble
0310: 62 65 67 69 6e 20 3c 69 3e 68 61 6e 64 6c 65 3c begin <i>handle<
0320: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
0330: 53 74 61 72 74 73 20 61 20 77 72 69 74 65 20 74 Starts a write t
0340: 72 61 6e 73 61 63 74 69 6f 6e 20 6f 6e 20 74 68 ransaction on th
0350: 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 69 6f 6e e BLE connection
0360: 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 3c identified by <
0370: 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e tt><i>handle</i>
0380: 3c 2f 74 74 3e 20 77 68 69 63 68 20 77 61 73 20 </tt> which was
0390: 6f 62 74 61 69 6e 65 64 20 65 61 72 6c 69 65 72 obtained earlier
03a0: 20 62 79 20 61 20 3c 74 74 3e 62 6c 65 20 63 6f by a <tt>ble co
03b0: 6e 6e 65 63 74 3c 2f 74 74 3e 20 63 6f 6d 6d 61 nnect</tt> comma
03c0: 6e 64 2e 20 52 65 74 75 72 6e 73 20 61 6e 20 69 nd. Returns an i
03d0: 6e 74 65 67 65 72 20 69 6e 64 69 63 61 74 69 6e nteger indicatin
03e0: 67 20 73 75 63 63 65 73 73 20 28 31 29 2c 20 66 g success (1), f
03f0: 61 69 6c 75 72 65 20 28 30 29 2c 20 6f 72 20 73 ailure (0), or s
0400: 79 73 74 65 6d 20 65 72 72 6f 72 20 28 6c 65 73 ystem error (les
0410: 73 20 74 68 61 6e 20 30 29 2e 0d 0a 0d 0a 3c 74 s than 0).....<t
0420: 74 3e 62 6c 65 20 63 61 6c 6c 62 61 63 6b 20 3c t>ble callback <
0430: 69 3e 68 61 6e 64 6c 65 20 3f 63 61 6c 6c 62 61 i>handle ?callba
0440: 63 6b 3f 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a ck?</i></tt>....
0450: 20 20 20 20 49 66 20 74 68 65 20 3c 74 74 3e 3c If the <tt><
0460: 69 3e 63 61 6c 6c 62 61 63 6b 3c 2f 69 3e 3c 2f i>callback</i></
0470: 74 74 3e 20 61 72 67 75 6d 65 6e 74 20 69 73 20 tt> argument is
0480: 70 72 6f 76 69 64 65 64 20 74 68 61 74 20 61 72 provided that ar
0490: 67 75 6d 65 6e 74 20 72 65 70 6c 61 63 65 73 20 gument replaces
04a0: 74 68 65 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e the callback fun
04b0: 63 74 69 6f 6e 20 6f 6e 20 74 68 65 20 42 4c 45 ction on the BLE
04c0: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 64 65 6e connection iden
04d0: 74 69 66 69 65 64 20 62 79 20 3c 74 74 3e 3c 69 tified by <tt><i
04e0: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
04f0: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 74 68 65 and returns the
0500: 20 6f 6c 64 20 63 61 6c 6c 62 61 63 6b 20 66 75 old callback fu
0510: 6e 63 74 69 6f 6e 2e 20 4f 74 68 65 72 77 69 73 nction. Otherwis
0520: 65 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 61 e the current ca
0530: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 llback function
0540: 69 73 20 72 65 74 75 72 6e 65 64 2e 20 49 6e 20 is returned. In
0550: 63 6f 6e 74 72 61 73 74 20 74 6f 20 65 2e 67 2e contrast to e.g.
0560: 20 74 68 65 20 54 6b 20 65 76 65 6e 74 20 62 69 the Tk event bi
0570: 6e 64 20 6d 65 63 68 61 6e 69 73 6d 2c 20 74 68 nd mechanism, th
0580: 65 20 3c 74 74 3e 3c 69 3e 63 61 6c 6c 62 61 63 e <tt><i>callbac
0590: 6b 3c 2f 69 3e 3c 2f 74 74 3e 20 61 72 67 75 6d k</i></tt> argum
05a0: 65 6e 74 20 68 61 73 20 6e 6f 74 20 61 6c 6c 20 ent has not all
05b0: 74 68 65 20 66 72 65 65 64 6f 6d 20 6f 66 20 61 the freedom of a
05c0: 20 54 63 6c 20 62 69 6e 64 20 73 63 72 69 70 74 Tcl bind script
05d0: 2c 20 69 2e 65 2e 20 69 74 20 6d 75 73 74 20 62 , i.e. it must b
05e0: 65 20 61 20 73 69 6e 67 6c 65 20 63 6f 6d 6d 61 e a single comma
05f0: 6e 64 20 61 6e 64 20 62 65 20 70 61 72 73 65 61 nd and be parsea
0600: 62 6c 65 20 61 73 20 61 20 6c 69 73 74 20 73 69 ble as a list si
0610: 6e 63 65 20 69 6e 74 65 72 6e 61 6c 6c 79 20 74 nce internally t
0620: 68 65 20 54 63 6c 20 63 6f 72 65 20 66 75 6e 63 he Tcl core func
0630: 74 69 6f 6e 20 54 63 6c 5f 45 76 61 6c 4f 62 6a tion Tcl_EvalObj
0640: 76 28 29 20 69 73 20 75 73 65 64 20 66 6f 72 20 v() is used for
0650: 65 78 65 63 75 74 69 6e 67 20 74 68 65 20 63 61 executing the ca
0660: 6c 6c 62 61 63 6b 20 69 6e 73 74 65 61 64 20 6f llback instead o
0670: 66 20 74 68 65 20 54 63 6c 5f 45 76 61 6c 2a 28 f the Tcl_Eval*(
0680: 29 20 66 75 6e 63 74 69 6f 6e 20 66 61 6d 69 6c ) function famil
0690: 79 20 73 75 70 70 6f 72 74 69 6e 67 20 66 75 6c y supporting ful
06a0: 6c 20 73 63 72 69 70 74 73 2e 0d 0a 0d 0a 3c 74 l scripts.....<t
06b0: 74 3e 62 6c 65 20 63 68 61 72 61 63 74 65 72 69 t>ble characteri
06c0: 73 74 69 63 73 20 3c 69 3e 68 61 6e 64 6c 65 20 stics <i>handle
06d0: 73 75 75 69 64 20 73 69 6e 73 74 61 6e 63 65 3c suuid sinstance<
06e0: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
06f0: 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f Returns a list o
0700: 66 20 63 68 61 72 61 63 74 65 72 69 73 74 69 63 f characteristic
0710: 73 20 6f 66 20 74 68 65 20 73 65 72 76 69 63 65 s of the service
0720: 20 64 65 73 63 72 69 62 65 64 20 62 79 20 69 74 described by it
0730: 73 20 55 55 49 44 20 3c 74 74 3e 3c 69 3e 73 75 s UUID <tt><i>su
0740: 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 uid</i></tt> and
0750: 20 69 6e 73 74 61 6e 63 65 20 6e 75 6d 62 65 72 instance number
0760: 20 3c 74 74 3e 3c 69 3e 73 69 6e 73 74 61 6e 63 <tt><i>sinstanc
0770: 65 3c 2f 69 3e 3c 2f 74 74 3e 20 6f 6e 20 74 68 e</i></tt> on th
0780: 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 69 6f 6e e BLE connection
0790: 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f <tt><i>handle</
07a0: 69 3e 3c 2f 74 74 3e 2e 20 54 68 65 20 6c 69 73 i></tt>. The lis
07b0: 74 20 69 73 20 6c 61 79 65 64 20 6f 75 74 20 61 t is layed out a
07c0: 73 20 61 20 74 61 62 6c 65 20 77 69 74 68 20 74 s a table with t
07d0: 68 65 20 66 69 76 65 20 63 6f 6c 75 6d 6e 73 20 he five columns
07e0: 63 68 61 72 61 63 74 65 72 69 73 74 69 63 20 55 characteristic U
07f0: 55 49 44 2c 20 63 68 61 72 61 63 74 65 72 69 73 UID, characteris
0800: 74 69 63 20 69 6e 73 74 61 6e 63 65 20 6e 75 6d tic instance num
0810: 62 65 72 2c 20 70 65 72 6d 69 73 73 69 6f 6e 73 ber, permissions
0820: 2c 20 70 72 6f 70 65 72 74 69 65 73 2c 20 61 6e , properties, an
0830: 64 20 77 72 69 74 65 20 74 79 70 65 20 73 75 69 d write type sui
0840: 74 61 62 6c 65 20 66 6f 72 20 69 74 65 72 61 74 table for iterat
0850: 69 6e 67 20 75 73 69 6e 67 20 3c 74 74 3e 66 6f ing using <tt>fo
0860: 72 65 61 63 68 20 7b 63 75 75 69 64 20 63 69 6e reach {cuuid cin
0870: 73 74 61 6e 63 65 20 70 65 72 6d 20 70 72 6f 70 stance perm prop
0880: 20 77 72 74 79 70 65 7d 20 3c 6e 6f 77 69 6b 69 wrtype} <nowiki
0890: 3e 5b 62 6c 65 20 63 68 61 72 61 63 74 65 72 69 >[ble characteri
08a0: 73 74 69 63 73 20 2e 2e 2e 5d 3c 2f 6e 6f 77 69 stics ...]</nowi
08b0: 6b 69 3e 20 7b 2e 2e 2e 7d 3c 2f 74 74 3e 2e 0d ki> {...}</tt>..
08c0: 0a 0d 0a 3c 74 74 3e 62 6c 65 20 63 6c 6f 73 65 ...<tt>ble close
08d0: 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f <i>handle</i></
08e0: 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 6c 6f 73 65 tt>.... Close
08f0: 73 20 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 s the BLE connec
0900: 74 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 64 20 tion identified
0910: 62 79 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 by <tt><i>handle
0920: 3c 2f 69 3e 3c 2f 74 74 3e 20 77 68 69 63 68 20 </i></tt> which
0930: 77 61 73 20 6f 62 74 61 69 6e 65 64 20 65 61 72 was obtained ear
0940: 6c 69 65 72 20 62 79 20 61 20 3c 74 74 3e 62 6c lier by a <tt>bl
0950: 65 20 63 6f 6e 6e 65 63 74 3c 2f 74 74 3e 20 6f e connect</tt> o
0960: 72 20 3c 74 74 3e 62 6c 65 20 73 63 61 6e 6e 65 r <tt>ble scanne
0970: 72 3c 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 2e 0d r</tt> command..
0980: 0a 0d 0a 3c 74 74 3e 62 6c 65 20 63 6f 6e 6e 65 ...<tt>ble conne
0990: 63 74 20 3c 69 3e 61 64 64 72 65 73 73 20 63 61 ct <i>address ca
09a0: 6c 6c 62 61 63 6b 20 3f 66 6c 61 67 3f 3c 2f 69 llback ?flag?</i
09b0: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 6f ></tt>.... Co
09c0: 6e 6e 65 63 74 73 20 74 6f 20 74 68 65 20 42 6c nnects to the Bl
09d0: 75 65 74 6f 6f 74 68 20 4c 45 20 64 65 76 69 63 uetooth LE devic
09e0: 65 20 77 69 74 68 20 61 64 64 72 65 73 73 20 3c e with address <
09f0: 74 74 3e 3c 69 3e 61 64 64 72 65 73 73 3c 2f 69 tt><i>address</i
0a00: 3e 3c 2f 74 74 3e 20 28 65 78 70 72 65 73 73 65 ></tt> (expresse
0a10: 64 20 61 73 20 73 69 78 20 68 65 78 61 64 65 63 d as six hexadec
0a20: 69 6d 61 6c 20 38 20 62 69 74 20 6e 75 6d 62 65 imal 8 bit numbe
0a30: 72 73 20 73 65 70 61 72 61 74 65 64 20 62 79 20 rs separated by
0a40: 63 6f 6c 6f 6e 73 2c 20 6c 69 6b 65 20 61 20 45 colons, like a E
0a50: 74 68 65 72 6e 65 74 20 4d 41 43 20 61 64 64 72 thernet MAC addr
0a60: 65 73 73 29 2c 20 61 6e 64 20 61 72 72 61 6e 67 ess), and arrang
0a70: 65 73 20 66 6f 72 20 74 68 65 20 3c 74 74 3e 3c es for the <tt><
0a80: 69 3e 63 61 6c 6c 62 61 63 6b 3c 2f 69 3e 3c 2f i>callback</i></
0a90: 74 74 3e 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 tt> command to b
0aa0: 65 20 69 6e 76 6f 6b 65 64 20 6f 6e 20 65 76 65 e invoked on eve
0ab0: 6e 74 73 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 nts on the conne
0ac0: 63 74 69 6f 6e 20 74 6f 20 74 68 69 73 20 64 65 ction to this de
0ad0: 76 69 63 65 2e 20 54 68 65 20 6f 70 74 69 6f 6e vice. The option
0ae0: 61 6c 20 3c 74 74 3e 3c 69 3e 66 6c 61 67 3c 2f al <tt><i>flag</
0af0: 69 3e 3c 2f 74 74 3e 20 69 73 20 61 20 62 6f 6f i></tt> is a boo
0b00: 6c 65 61 6e 20 77 69 74 68 20 64 65 66 61 75 6c lean with defaul
0b10: 74 20 66 61 6c 73 65 20 63 6f 6e 74 72 6f 6c 6c t false controll
0b20: 69 6e 67 20 61 75 74 6f 6d 61 74 69 63 20 63 6f ing automatic co
0b30: 6e 6e 65 63 74 69 6f 6e 20 73 65 74 75 70 20 28 nnection setup (
0b40: 73 65 65 20 74 68 65 20 3c 61 20 68 72 65 66 3d see the <a href=
0b50: 22 68 74 74 70 73 3a 2f 2f 64 65 76 65 6c 6f 70 "https://develop
0b60: 65 72 2e 61 6e 64 72 6f 69 64 2e 63 6f 6d 2f 72 er.android.com/r
0b70: 65 66 65 72 65 6e 63 65 2f 61 6e 64 72 6f 69 64 eference/android
0b80: 2f 62 6c 75 65 74 6f 6f 74 68 2f 42 6c 75 65 74 /bluetooth/Bluet
0b90: 6f 6f 74 68 47 61 74 74 2e 68 74 6d 6c 22 3e 41 oothGatt.html">A
0ba0: 6e 64 72 6f 69 64 20 64 6f 63 75 6d 65 6e 74 61 ndroid documenta
0bb0: 74 69 6f 6e 3c 2f 61 3e 20 66 6f 72 20 6d 6f 72 tion</a> for mor
0bc0: 65 20 64 65 74 61 69 6c 73 29 2e 20 54 68 65 20 e details). The
0bd0: 63 61 6c 6c 62 61 63 6b 20 63 6f 6d 6d 61 6e 64 callback command
0be0: 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 is called with
0bf0: 74 77 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 61 two additional a
0c00: 72 67 75 6d 65 6e 74 73 2c 20 74 68 65 20 66 69 rguments, the fi
0c10: 72 73 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 rst is a string
0c20: 28 3c 74 74 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3c (<tt>connection<
0c30: 2f 74 74 3e 2c 20 3c 74 74 3e 73 63 61 6e 3c 2f /tt>, <tt>scan</
0c40: 74 74 3e 2c 20 3c 74 74 3e 73 65 72 76 69 63 65 tt>, <tt>service
0c50: 3c 2f 74 74 3e 2c 20 3c 74 74 3e 63 68 61 72 61 </tt>, <tt>chara
0c60: 63 74 65 72 69 73 74 69 63 3c 2f 74 74 3e 2c 20 cteristic</tt>,
0c70: 3c 74 74 3e 64 65 73 63 72 69 70 74 6f 72 3c 2f <tt>descriptor</
0c80: 74 74 3e 2c 20 6f 72 20 3c 74 74 3e 74 72 61 6e tt>, or <tt>tran
0c90: 73 61 63 74 69 6f 6e 3c 2f 74 74 3e 29 20 69 6e saction</tt>) in
0ca0: 64 69 63 61 74 69 6e 67 20 74 68 65 20 6b 69 6e dicating the kin
0cb0: 64 20 6f 66 20 65 76 65 6e 74 2c 20 74 68 65 20 d of event, the
0cc0: 73 65 63 6f 6e 64 20 69 73 20 61 20 64 69 63 74 second is a dict
0cd0: 69 6f 6e 61 72 79 20 77 69 74 68 20 65 76 65 6e ionary with even
0ce0: 74 20 72 65 6c 61 74 65 64 20 69 6e 66 6f 72 6d t related inform
0cf0: 61 74 69 6f 6e 2c 20 73 65 65 20 74 68 65 20 73 ation, see the s
0d00: 65 63 74 69 6f 6e 20 3c 62 3e 45 76 65 6e 74 20 ection <b>Event
0d10: 44 61 74 61 3c 2f 62 3e 20 62 65 6c 6f 77 2e 20 Data</b> below.
0d20: 46 6f 72 20 72 65 73 74 72 69 63 74 69 6f 6e 73 For restrictions
0d30: 20 6f 66 20 74 68 65 20 3c 74 74 3e 3c 69 3e 63 of the <tt><i>c
0d40: 61 6c 6c 62 61 63 6b 3c 2f 69 3e 3c 2f 74 74 3e allback</i></tt>
0d50: 20 61 72 67 75 6d 65 6e 74 20 73 65 65 20 74 68 argument see th
0d60: 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 69 6e e description in
0d70: 20 3c 74 74 3e 62 6c 65 20 63 61 6c 6c 62 61 63 <tt>ble callbac
0d80: 6b 3c 2f 74 74 3e 20 61 62 6f 76 65 2e 20 54 68 k</tt> above. Th
0d90: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 e result of the
0da0: 3c 74 74 3e 62 6c 65 20 63 6f 6e 6e 65 63 74 3c <tt>ble connect<
0db0: 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 20 69 73 20 /tt> command is
0dc0: 61 20 68 61 6e 64 6c 65 20 28 61 20 73 74 72 69 a handle (a stri
0dd0: 6e 67 20 69 64 65 6e 74 69 66 79 69 6e 67 20 74 ng identifying t
0de0: 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 69 6f he BLE connectio
0df0: 6e 29 20 74 6f 20 62 65 20 75 73 65 64 20 69 6e n) to be used in
0e00: 20 6f 74 68 65 72 20 3c 74 74 3e 62 6c 65 3c 2f other <tt>ble</
0e10: 74 74 3e 20 73 75 62 63 6f 6d 6d 61 6e 64 73 2e tt> subcommands.
0e20: 20 44 75 72 69 6e 67 20 63 6f 6e 6e 65 63 74 69 During connecti
0e30: 6f 6e 20 65 73 74 61 62 6c 69 73 68 6d 65 6e 74 on establishment
0e40: 20 61 6e 20 61 75 74 6f 6d 61 74 69 63 20 64 69 an automatic di
0e50: 73 63 6f 76 65 72 79 20 74 61 6b 65 73 20 70 6c scovery takes pl
0e60: 61 63 65 20 77 68 69 63 68 20 64 65 74 65 63 74 ace which detect
0e70: 73 20 61 6c 6c 20 61 64 76 65 72 74 69 73 65 64 s all advertised
0e80: 20 73 65 72 76 69 63 65 73 2c 20 63 68 61 72 61 services, chara
0e90: 63 74 65 72 69 73 74 69 63 73 2c 20 61 6e 64 20 cteristics, and
0ea0: 64 65 73 63 72 69 70 74 6f 72 73 20 6f 66 20 74 descriptors of t
0eb0: 68 65 20 72 65 6d 6f 74 65 20 42 6c 75 65 74 6f he remote Blueto
0ec0: 6f 74 68 20 4c 45 20 64 65 76 69 63 65 2e 0d 0a oth LE device...
0ed0: 0d 0a 3c 74 74 3e 62 6c 65 20 64 65 73 63 72 69 ..<tt>ble descri
0ee0: 70 74 6f 72 73 20 3c 69 3e 68 61 6e 64 6c 65 20 ptors <i>handle
0ef0: 73 75 75 69 64 20 73 69 6e 73 74 61 6e 63 65 20 suuid sinstance
0f00: 63 75 75 69 64 20 63 69 6e 73 74 61 6e 63 65 3c cuuid cinstance<
0f10: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
0f20: 52 65 74 75 72 6e 73 20 61 20 6c 69 73 74 20 6f Returns a list o
0f30: 66 20 64 65 73 63 72 69 70 74 6f 72 73 20 6f 66 f descriptors of
0f40: 20 74 68 65 20 73 65 72 76 69 63 65 20 61 6e 64 the service and
0f50: 20 63 68 61 72 61 63 74 65 72 69 73 74 69 63 20 characteristic
0f60: 64 65 73 63 72 69 62 65 64 20 62 79 20 69 74 73 described by its
0f70: 20 55 55 49 44 73 20 3c 74 74 3e 3c 69 3e 73 75 UUIDs <tt><i>su
0f80: 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 61 6e 64 uid</i></tt> and
0f90: 20 3c 74 74 3e 3c 69 3e 63 75 75 69 64 3c 2f 69 <tt><i>cuuid</i
0fa0: 3e 3c 2f 74 74 3e 20 61 6e 64 20 69 6e 73 74 61 ></tt> and insta
0fb0: 6e 63 65 20 6e 75 6d 62 65 72 73 20 3c 74 74 3e nce numbers <tt>
0fc0: 3c 69 3e 73 69 6e 73 74 61 6e 63 65 3c 2f 69 3e <i>sinstance</i>
0fd0: 3c 2f 74 74 3e 20 61 6e 64 20 3c 74 74 3e 3c 69 </tt> and <tt><i
0fe0: 3e 63 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f >cinstance</i></
0ff0: 74 74 3e 20 6f 6e 20 74 68 65 20 42 4c 45 20 63 tt> on the BLE c
1000: 6f 6e 6e 65 63 74 69 6f 6e 20 3c 74 74 3e 3c 69 onnection <tt><i
1010: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
1020: 2e 20 54 68 65 20 6c 69 73 74 20 69 73 20 6c 61 . The list is la
1030: 79 65 64 20 6f 75 74 20 61 73 20 61 20 74 61 62 yed out as a tab
1040: 6c 65 20 77 69 74 68 20 74 68 65 20 74 77 6f 20 le with the two
1050: 63 6f 6c 75 6d 6e 73 20 64 65 73 63 72 69 70 74 columns descript
1060: 6f 72 20 55 55 49 44 20 61 6e 64 20 70 65 72 6d or UUID and perm
1070: 69 73 73 69 6f 6e 73 20 73 75 69 74 61 62 6c 65 issions suitable
1080: 20 66 6f 72 20 69 74 65 72 61 74 69 6e 67 20 75 for iterating u
1090: 73 69 6e 67 20 3c 74 74 3e 66 6f 72 65 61 63 68 sing <tt>foreach
10a0: 20 7b 64 75 75 69 64 20 70 65 72 6d 7d 20 3c 6e {duuid perm} <n
10b0: 6f 77 69 6b 69 3e 5b 62 6c 65 20 64 65 73 63 72 owiki>[ble descr
10c0: 69 70 74 6f 72 73 20 2e 2e 2e 5d 3c 2f 6e 6f 77 iptors ...]</now
10d0: 69 6b 69 3e 20 7b 2e 2e 2e 7d 3c 2f 74 74 3e 2e iki> {...}</tt>.
10e0: 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 20 64 69 73 61 ....<tt>ble disa
10f0: 62 6c 65 20 3c 69 3e 68 61 6e 64 6c 65 20 73 75 ble <i>handle su
1100: 75 69 64 20 73 69 6e 73 74 61 6e 63 65 20 63 75 uid sinstance cu
1110: 75 69 64 20 63 69 6e 73 74 61 6e 63 65 3c 2f 69 uid cinstance</i
1120: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 54 75 ></tt>.... Tu
1130: 72 6e 73 20 6f 66 66 20 6e 6f 74 69 66 69 63 61 rns off notifica
1140: 74 69 6f 6e 73 20 6f 66 20 61 20 63 68 61 72 61 tions of a chara
1150: 63 74 65 72 69 73 74 69 63 20 6f 66 20 74 68 65 cteristic of the
1160: 20 42 4c 45 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 BLE connection
1170: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
1180: 3e 3c 2f 74 74 3e 20 69 64 65 6e 74 69 66 69 65 ></tt> identifie
1190: 64 20 62 79 20 3c 74 74 3e 3c 69 3e 73 75 75 69 d by <tt><i>suui
11a0: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 28 31 32 38 20 d</i></tt> (128
11b0: 62 69 74 20 73 65 72 76 69 63 65 20 55 55 49 44 bit service UUID
11c0: 29 2c 20 3c 74 74 3e 3c 69 3e 73 69 6e 73 74 61 ), <tt><i>sinsta
11d0: 6e 63 65 3c 2f 69 3e 3c 2f 74 74 3e 20 28 73 65 nce</i></tt> (se
11e0: 72 76 69 63 65 20 69 6e 73 74 61 6e 63 65 20 69 rvice instance i
11f0: 64 65 6e 74 69 66 69 65 72 2c 20 69 6e 74 65 67 dentifier, integ
1200: 65 72 2c 20 75 73 75 61 6c 6c 79 20 30 29 2c 20 er, usually 0),
1210: 3c 74 74 3e 3c 69 3e 63 75 75 69 64 3c 2f 69 3e <tt><i>cuuid</i>
1220: 3c 2f 74 74 3e 20 28 31 32 38 20 62 69 74 20 63 </tt> (128 bit c
1230: 68 61 72 61 63 74 65 72 69 73 74 69 63 20 55 55 haracteristic UU
1240: 49 44 29 2c 20 61 6e 64 20 3c 74 74 3e 3c 69 3e ID), and <tt><i>
1250: 63 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 cinstance</i></t
1260: 74 3e 20 28 63 68 61 72 61 63 74 65 72 69 73 74 t> (characterist
1270: 69 63 20 69 64 65 6e 74 69 66 69 65 72 2c 20 69 ic identifier, i
1280: 6e 74 65 67 65 72 2c 20 75 73 75 61 6c 6c 79 20 nteger, usually
1290: 30 29 2e 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 20 64 0).....<tt>ble d
12a0: 69 73 63 6f 6e 6e 65 63 74 20 3c 69 3e 68 61 6e isconnect <i>han
12b0: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a dle</i></tt>....
12c0: 20 20 20 20 49 6e 69 74 69 61 74 65 73 20 61 20 Initiates a
12d0: 64 69 73 63 6f 6e 6e 65 63 74 20 6f 66 20 74 68 disconnect of th
12e0: 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 69 6f 6e e BLE connection
12f0: 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f <tt><i>handle</
1300: 69 3e 3c 2f 74 74 3e 20 69 66 20 74 68 65 20 63 i></tt> if the c
1310: 75 72 72 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f urrent connectio
1320: 6e 20 73 74 61 74 65 20 69 73 20 64 69 73 63 6f n state is disco
1330: 6e 6e 65 63 74 65 64 2e 20 57 68 65 6e 20 74 68 nnected. When th
1340: 65 20 6f 70 65 72 61 74 69 6f 6e 20 63 6f 6d 70 e operation comp
1350: 6c 65 74 65 73 20 74 68 65 20 63 61 6c 6c 62 61 letes the callba
1360: 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 ck function of t
1370: 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 he connection is
1380: 20 69 6e 76 6f 6b 65 64 2e 0d 0a 0d 0a 3c 74 74 invoked.....<tt
1390: 3e 62 6c 65 20 64 72 65 61 64 20 3c 69 3e 68 61 >ble dread <i>ha
13a0: 6e 64 6c 65 20 73 75 75 69 64 20 73 69 6e 73 74 ndle suuid sinst
13b0: 61 6e 63 65 20 63 75 75 69 64 20 63 69 6e 73 74 ance cuuid cinst
13c0: 61 6e 63 65 20 64 75 75 69 64 3c 2f 69 3e 3c 2f ance duuid</i></
13d0: 74 74 3e 0d 0a 0d 0a 20 20 20 20 49 6e 69 74 69 tt>.... Initi
13e0: 61 74 65 73 20 74 68 65 20 72 65 61 64 20 6f 66 ates the read of
13f0: 20 61 20 64 65 73 63 72 69 70 74 6f 72 20 6f 66 a descriptor of
1400: 20 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 the BLE connect
1410: 69 6f 6e 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c ion <tt><i>handl
1420: 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 64 65 6e 74 e</i></tt> ident
1430: 69 66 69 65 64 20 62 79 20 3c 74 74 3e 3c 69 3e ified by <tt><i>
1440: 73 75 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 28 suuid</i></tt> (
1450: 31 32 38 20 62 69 74 20 73 65 72 76 69 63 65 20 128 bit service
1460: 55 55 49 44 29 2c 20 3c 74 74 3e 3c 69 3e 73 69 UUID), <tt><i>si
1470: 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 74 3e nstance</i></tt>
1480: 20 28 73 65 72 76 69 63 65 20 69 6e 73 74 61 6e (service instan
1490: 63 65 20 69 64 65 6e 74 69 66 69 65 72 2c 20 69 ce identifier, i
14a0: 6e 74 65 67 65 72 2c 20 75 73 75 61 6c 6c 79 20 nteger, usually
14b0: 30 29 2c 20 3c 74 74 3e 3c 69 3e 63 75 75 69 64 0), <tt><i>cuuid
14c0: 3c 2f 69 3e 3c 2f 74 74 3e 20 28 31 32 38 20 62 </i></tt> (128 b
14d0: 69 74 20 63 68 61 72 61 63 74 65 72 69 73 74 69 it characteristi
14e0: 63 20 55 55 49 44 29 2c 20 3c 74 74 3e 3c 69 3e c UUID), <tt><i>
14f0: 63 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 cinstance</i></t
1500: 74 3e 20 28 63 68 61 72 61 63 74 65 72 69 73 74 t> (characterist
1510: 69 63 20 69 64 65 6e 74 69 66 69 65 72 2c 20 69 ic identifier, i
1520: 6e 74 65 67 65 72 2c 20 75 73 75 61 6c 6c 79 20 nteger, usually
1530: 30 29 2c 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 64 0), and <tt><i>d
1540: 75 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 28 31 uuid</i></tt> (1
1550: 32 38 20 62 69 74 20 64 65 73 63 72 69 70 74 6f 28 bit descripto
1560: 72 20 55 55 49 44 29 2e 20 54 68 65 20 72 65 73 r UUID). The res
1570: 75 6c 74 20 69 73 20 61 20 70 6f 73 69 74 69 76 ult is a positiv
1580: 65 20 69 6e 74 65 67 65 72 20 77 68 65 6e 20 74 e integer when t
1590: 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 72 65 he descriptor re
15a0: 61 64 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 ad operation is
15b0: 69 6e 20 70 72 6f 67 72 65 73 73 2c 20 30 20 6f in progress, 0 o
15c0: 72 20 6e 65 67 61 74 69 76 65 20 6f 6e 20 65 72 r negative on er
15d0: 72 6f 72 2e 20 54 68 65 20 63 6f 6d 70 6c 65 74 ror. The complet
15e0: 69 6f 6e 20 6f 66 20 74 68 65 20 64 65 73 63 72 ion of the descr
15f0: 69 70 74 6f 72 20 72 65 61 64 20 6f 70 65 72 61 iptor read opera
1600: 74 69 6f 6e 20 69 73 20 69 6e 64 69 63 61 74 65 tion is indicate
1610: 64 20 74 68 72 6f 75 67 68 20 74 68 65 20 63 61 d through the ca
1620: 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 llback function
1630: 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f of the connectio
1640: 6e 2e 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 20 64 77 n.....<tt>ble dw
1650: 72 69 74 65 20 3c 69 3e 68 61 6e 64 6c 65 20 73 rite <i>handle s
1660: 75 75 69 64 20 73 69 6e 73 74 61 6e 63 65 20 63 uuid sinstance c
1670: 75 75 69 64 20 63 69 6e 73 74 61 6e 63 65 20 64 uuid cinstance d
1680: 75 75 69 64 20 76 61 6c 75 65 3c 2f 69 3e 3c 2f uuid value</i></
1690: 74 74 3e 0d 0a 0d 0a 20 20 20 20 49 6e 69 74 69 tt>.... Initi
16a0: 61 74 65 73 20 74 68 65 20 77 72 69 74 65 20 6f ates the write o
16b0: 66 20 61 20 64 65 73 63 72 69 70 74 6f 72 20 6f f a descriptor o
16c0: 66 20 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 f the BLE connec
16d0: 74 69 6f 6e 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 tion <tt><i>hand
16e0: 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 64 65 6e le</i></tt> iden
16f0: 74 69 66 69 65 64 20 62 79 20 3c 74 74 3e 3c 69 tified by <tt><i
1700: 3e 73 75 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 >suuid</i></tt>
1710: 28 31 32 38 20 62 69 74 20 73 65 72 76 69 63 65 (128 bit service
1720: 20 55 55 49 44 29 2c 20 3c 74 74 3e 3c 69 3e 73 UUID), <tt><i>s
1730: 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 74 instance</i></tt
1740: 3e 20 28 73 65 72 76 69 63 65 20 69 6e 73 74 61 > (service insta
1750: 6e 63 65 20 69 64 65 6e 74 69 66 69 65 72 2c 20 nce identifier,
1760: 69 6e 74 65 67 65 72 2c 20 75 73 75 61 6c 6c 79 integer, usually
1770: 20 30 29 2c 20 3c 74 74 3e 3c 69 3e 63 75 75 69 0), <tt><i>cuui
1780: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 28 31 32 38 20 d</i></tt> (128
1790: 62 69 74 20 63 68 61 72 61 63 74 65 72 69 73 74 bit characterist
17a0: 69 63 20 55 55 49 44 29 2c 20 3c 74 74 3e 3c 69 ic UUID), <tt><i
17b0: 3e 63 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f >cinstance</i></
17c0: 74 74 3e 20 28 63 68 61 72 61 63 74 65 72 69 73 tt> (characteris
17d0: 74 69 63 20 69 64 65 6e 74 69 66 69 65 72 2c 20 tic identifier,
17e0: 69 6e 74 65 67 65 72 2c 20 75 73 75 61 6c 6c 79 integer, usually
17f0: 20 30 29 2c 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 0), and <tt><i>
1800: 64 75 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 28 duuid</i></tt> (
1810: 31 32 38 20 62 69 74 20 64 65 73 63 72 69 70 74 128 bit descript
1820: 6f 72 20 55 55 49 44 29 2e 20 3c 74 74 3e 3c 69 or UUID). <tt><i
1830: 3e 76 61 6c 75 65 3c 2f 69 3e 3c 2f 74 74 3e 20 >value</i></tt>
1840: 69 73 20 74 68 65 20 76 61 6c 75 65 20 74 6f 20 is the value to
1850: 62 65 20 77 72 69 74 74 65 6e 20 61 6e 64 20 73 be written and s
1860: 68 6f 75 6c 64 20 62 65 20 61 20 73 74 72 69 6e hould be a strin
1870: 67 20 6f 72 20 62 79 74 65 20 61 72 72 61 79 2e g or byte array.
1880: 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 The result is a
1890: 20 70 6f 73 69 74 69 76 65 20 69 6e 74 65 67 65 positive intege
18a0: 72 20 77 68 65 6e 20 74 68 65 20 64 65 73 63 72 r when the descr
18b0: 69 70 74 6f 72 20 77 72 69 74 65 20 6f 70 65 72 iptor write oper
18c0: 61 74 69 6f 6e 20 69 73 20 69 6e 20 70 72 6f 67 ation is in prog
18d0: 72 65 73 73 2c 20 30 20 6f 72 20 6e 65 67 61 74 ress, 0 or negat
18e0: 69 76 65 20 6f 6e 20 65 72 72 6f 72 2e 20 54 68 ive on error. Th
18f0: 65 20 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 e completion of
1900: 74 68 65 20 64 65 73 63 72 69 70 74 6f 72 20 77 the descriptor w
1910: 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 69 rite operation i
1920: 73 20 69 6e 64 69 63 61 74 65 64 20 74 68 72 6f s indicated thro
1930: 75 67 68 20 74 68 65 20 63 61 6c 6c 62 61 63 6b ugh the callback
1940: 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 68 65 function of the
1950: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 0d 0a connection.....
1960: 3c 74 74 3e 62 6c 65 20 65 6e 61 62 6c 65 20 3c <tt>ble enable <
1970: 69 3e 68 61 6e 64 6c 65 20 73 75 75 69 64 20 73 i>handle suuid s
1980: 69 6e 73 74 61 6e 63 65 20 63 75 75 69 64 20 63 instance cuuid c
1990: 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 74 instance</i></tt
19a0: 3e 0d 0a 0d 0a 20 20 20 20 54 75 72 6e 73 20 6f >.... Turns o
19b0: 6e 20 6e 6f 74 69 66 69 63 61 74 69 6f 6e 73 20 n notifications
19c0: 6f 66 20 61 20 63 68 61 72 61 63 74 65 72 69 73 of a characteris
19d0: 74 69 63 20 6f 66 20 74 68 65 20 42 4c 45 20 63 tic of the BLE c
19e0: 6f 6e 6e 65 63 74 69 6f 6e 20 3c 74 74 3e 3c 69 onnection <tt><i
19f0: 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e >handle</i></tt>
1a00: 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 3c identified by <
1a10: 74 74 3e 3c 69 3e 73 75 75 69 64 3c 2f 69 3e 3c tt><i>suuid</i><
1a20: 2f 74 74 3e 20 28 31 32 38 20 62 69 74 20 73 65 /tt> (128 bit se
1a30: 72 76 69 63 65 20 55 55 49 44 29 2c 20 3c 74 74 rvice UUID), <tt
1a40: 3e 3c 69 3e 73 69 6e 73 74 61 6e 63 65 3c 2f 69 ><i>sinstance</i
1a50: 3e 3c 2f 74 74 3e 20 28 73 65 72 76 69 63 65 20 ></tt> (service
1a60: 69 6e 73 74 61 6e 63 65 20 69 64 65 6e 74 69 66 instance identif
1a70: 69 65 72 2c 20 69 6e 74 65 67 65 72 2c 20 75 73 ier, integer, us
1a80: 75 61 6c 6c 79 20 30 29 2c 20 3c 74 74 3e 3c 69 ually 0), <tt><i
1a90: 3e 63 75 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 >cuuid</i></tt>
1aa0: 28 31 32 38 20 62 69 74 20 63 68 61 72 61 63 74 (128 bit charact
1ab0: 65 72 69 73 74 69 63 20 55 55 49 44 29 2c 20 61 eristic UUID), a
1ac0: 6e 64 20 3c 74 74 3e 3c 69 3e 63 69 6e 73 74 61 nd <tt><i>cinsta
1ad0: 6e 63 65 3c 2f 69 3e 3c 2f 74 74 3e 20 28 63 68 nce</i></tt> (ch
1ae0: 61 72 61 63 74 65 72 69 73 74 69 63 20 69 64 65 aracteristic ide
1af0: 6e 74 69 66 69 65 72 2c 20 69 6e 74 65 67 65 72 ntifier, integer
1b00: 2c 20 75 73 75 61 6c 6c 79 20 30 29 2e 0d 0a 0d , usually 0)....
1b10: 0a 3c 74 74 3e 62 6c 65 20 65 71 75 61 6c 20 3c .<tt>ble equal <
1b20: 69 3e 68 61 6e 64 6c 65 20 75 75 69 64 31 20 75 i>handle uuid1 u
1b30: 75 69 64 32 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d uid2</i></tt>...
1b40: 0a 20 20 20 20 54 65 73 74 73 20 69 66 20 74 68 . Tests if th
1b50: 65 20 67 69 76 65 6e 20 55 55 49 44 73 20 61 72 e given UUIDs ar
1b60: 65 20 65 71 75 61 6c 2e 20 42 6f 74 68 20 63 61 e equal. Both ca
1b70: 6e 20 62 65 20 73 70 65 63 69 66 69 65 64 20 69 n be specified i
1b80: 6e 20 61 62 62 72 65 76 69 61 74 65 64 20 66 6f n abbreviated fo
1b90: 72 6d 20 61 6e 64 20 61 72 65 20 65 78 70 61 6e rm and are expan
1ba0: 64 65 64 20 62 65 66 6f 72 65 20 63 6f 6d 70 61 ded before compa
1bb0: 72 69 73 6f 6e 2e 20 52 65 74 75 72 6e 73 20 74 rison. Returns t
1bc0: 72 75 65 2c 20 69 66 20 74 68 65 20 55 55 49 44 rue, if the UUID
1bd0: 73 20 61 72 65 20 74 68 65 20 73 61 6d 65 2e 20 s are the same.
1be0: 55 6e 6b 6e 6f 77 6e 20 61 62 62 72 65 76 69 61 Unknown abbrevia
1bf0: 74 65 64 20 6f 72 20 6c 6f 6e 67 20 55 55 49 44 ted or long UUID
1c00: 73 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 s with respect t
1c10: 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e o the connection
1c20: 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f <tt><i>handle</
1c30: 69 3e 3c 2f 74 74 3e 20 63 6f 6d 70 61 72 65 20 i></tt> compare
1c40: 61 6c 77 61 79 73 20 74 6f 20 66 61 6c 73 65 2e always to false.
1c50: 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 20 65 78 65 63 ....<tt>ble exec
1c60: 75 74 65 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 ute <i>handle</i
1c70: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 44 69 ></tt>.... Di
1c80: 73 70 61 74 63 68 65 73 20 65 78 65 63 75 74 65 spatches execute
1c90: 20 28 63 6f 6d 6d 69 74 29 20 6f 66 20 74 68 65 (commit) of the
1ca0: 20 63 75 72 72 65 6e 74 20 77 72 69 74 65 20 74 current write t
1cb0: 72 61 6e 73 61 63 74 69 6f 6e 20 77 68 69 63 68 ransaction which
1cc0: 20 77 61 73 20 73 74 61 72 74 65 64 20 65 61 72 was started ear
1cd0: 6c 69 65 72 20 75 73 69 6e 67 20 3c 74 74 3e 62 lier using <tt>b
1ce0: 6c 65 20 62 65 67 69 6e 3c 2f 74 74 3e 20 6f 6e le begin</tt> on
1cf0: 20 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 the BLE connect
1d00: 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 64 20 62 ion identified b
1d10: 79 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c y <tt><i>handle<
1d20: 2f 69 3e 3c 2f 74 74 3e 20 77 68 69 63 68 20 77 /i></tt> which w
1d30: 61 73 20 6f 62 74 61 69 6e 65 64 20 65 61 72 6c as obtained earl
1d40: 69 65 72 20 62 79 20 61 20 3c 74 74 3e 62 6c 65 ier by a <tt>ble
1d50: 20 63 6f 6e 6e 65 63 74 3c 2f 74 74 3e 20 63 6f connect</tt> co
1d60: 6d 6d 61 6e 64 2e 20 52 65 74 75 72 6e 73 20 61 mmand. Returns a
1d70: 6e 20 69 6e 74 65 67 65 72 20 69 6e 64 69 63 61 n integer indica
1d80: 74 69 6e 67 20 73 75 63 63 65 73 73 20 28 31 29 ting success (1)
1d90: 2c 20 66 61 69 6c 75 72 65 20 28 30 29 2c 20 6f , failure (0), o
1da0: 72 20 73 79 73 74 65 6d 20 65 72 72 6f 72 20 28 r system error (
1db0: 6c 65 73 73 20 74 68 61 6e 20 30 29 2e 20 54 68 less than 0). Th
1dc0: 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 e result of the
1dd0: 74 72 61 6e 73 61 63 74 69 6f 6e 20 69 73 20 72 transaction is r
1de0: 65 70 6f 72 74 65 64 20 69 6e 20 74 68 65 20 63 eported in the c
1df0: 61 6c 6c 62 61 63 6b 20 77 69 74 68 20 65 76 65 allback with eve
1e00: 6e 74 20 6b 69 6e 64 20 3c 74 74 3e 74 72 61 6e nt kind <tt>tran
1e10: 73 61 63 74 69 6f 6e 3c 2f 74 74 3e 2e 0d 0a 0d saction</tt>....
1e20: 0a 3c 74 74 3e 62 6c 65 20 65 78 70 61 6e 64 20 .<tt>ble expand
1e30: 3c 69 3e 68 61 6e 64 6c 65 20 75 75 69 64 3c 2f <i>handle uuid</
1e40: 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 45 i></tt>.... E
1e50: 78 70 61 6e 64 73 20 74 68 65 20 67 69 76 65 6e xpands the given
1e60: 20 28 61 62 62 72 65 76 69 61 74 65 64 2c 20 73 (abbreviated, s
1e70: 68 6f 72 74 29 20 55 55 49 44 20 74 6f 20 69 74 hort) UUID to it
1e80: 73 20 31 32 38 20 62 69 74 20 28 6c 6f 6e 67 2c s 128 bit (long,
1e90: 20 63 61 6e 6f 6e 69 63 61 6c 29 20 66 6f 72 6d canonical) form
1ea0: 20 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 31 and returns a 1
1eb0: 32 38 20 62 69 74 20 55 55 49 44 20 73 74 72 69 28 bit UUID stri
1ec0: 6e 67 2e 20 41 6e 20 65 72 72 6f 72 20 69 73 20 ng. An error is
1ed0: 72 65 70 6f 72 74 65 64 20 69 66 20 61 6e 20 61 reported if an a
1ee0: 62 62 72 65 76 69 61 74 65 64 20 6f 72 20 6c 6f bbreviated or lo
1ef0: 6e 67 20 55 55 49 44 20 69 73 20 75 6e 6b 6e 6f ng UUID is unkno
1f00: 77 6e 20 77 69 74 68 20 72 65 73 70 65 63 74 20 wn with respect
1f10: 74 6f 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f to the connectio
1f20: 6e 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c n <tt><i>handle<
1f30: 2f 69 3e 3c 2f 74 74 3e 2e 0d 0a 0d 0a 3c 74 74 /i></tt>.....<tt
1f40: 3e 62 6c 65 20 67 65 74 72 73 73 69 20 3c 69 3e >ble getrssi <i>
1f50: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 0d handle</i></tt>.
1f60: 0a 0d 0a 20 20 20 20 52 65 71 75 65 73 74 73 20 ... Requests
1f70: 72 65 6d 6f 74 65 20 53 53 49 20 69 6e 66 6f 72 remote SSI infor
1f80: 6d 61 74 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 mation from the
1f90: 42 4c 45 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 BLE connection i
1fa0: 64 65 6e 74 69 66 69 65 64 20 62 79 20 3c 74 74 dentified by <tt
1fb0: 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f ><i>handle</i></
1fc0: 74 74 3e 20 77 68 69 63 68 20 77 61 73 20 6f 62 tt> which was ob
1fd0: 74 61 69 6e 65 64 20 65 61 72 6c 69 65 72 20 62 tained earlier b
1fe0: 79 20 61 20 3c 74 74 3e 62 6c 65 20 63 6f 6e 6e y a <tt>ble conn
1ff0: 65 63 74 3c 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 ect</tt> command
2000: 2e 20 52 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 . Returns an int
2010: 65 67 65 72 20 69 6e 64 69 63 61 74 69 6e 67 20 eger indicating
2020: 73 75 63 63 65 73 73 20 28 31 29 2c 20 66 61 69 success (1), fai
2030: 6c 75 72 65 20 28 30 29 2c 20 6f 72 20 73 79 73 lure (0), or sys
2040: 74 65 6d 20 65 72 72 6f 72 20 28 6c 65 73 73 20 tem error (less
2050: 74 68 61 6e 20 30 29 2e 20 54 68 65 20 75 70 64 than 0). The upd
2060: 61 74 65 64 20 72 65 6d 6f 74 65 20 53 53 49 20 ated remote SSI
2070: 69 73 20 72 65 70 6f 72 74 65 64 20 69 6e 20 6c is reported in l
2080: 61 74 65 72 20 63 61 6c 6c 62 61 63 6b 73 2e 0d ater callbacks..
2090: 0a 0d 0a 3c 74 74 3e 62 6c 65 20 69 6e 66 6f 20 ...<tt>ble info
20a0: 3c 69 3e 3f 68 61 6e 64 6c 65 3f 3c 2f 69 3e 3c <i>?handle?</i><
20b0: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 75 /tt>.... Retu
20c0: 72 6e 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 rns information
20d0: 6f 66 20 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 of the BLE conne
20e0: 63 74 69 6f 6e 20 69 64 65 6e 74 69 66 69 65 64 ction identified
20f0: 20 62 79 20 3c 74 74 3e 3c 2f 69 3e 68 61 6e 64 by <tt></i>hand
2100: 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 61 73 20 61 le</i></tt> as a
2110: 20 64 69 63 74 69 6f 6e 61 72 79 20 6d 61 64 65 dictionary made
2120: 20 75 70 20 74 68 65 20 66 69 65 6c 64 73 20 3c up the fields <
2130: 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 28 74 68 i>handle</i> (th
2140: 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 64 65 e connection ide
2150: 6e 74 69 66 69 65 72 29 2c 20 3c 69 3e 61 64 64 ntifier), <i>add
2160: 72 65 73 73 3c 2f 69 3e 20 28 42 6c 75 65 74 6f ress</i> (Blueto
2170: 6f 74 68 20 61 64 64 72 65 73 73 29 2c 20 61 6e oth address), an
2180: 64 20 3c 69 3e 73 74 61 74 65 3c 2f 69 3e 20 28 d <i>state</i> (
2190: 63 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 61 74 65 connection state
21a0: 2c 20 6f 6e 65 20 6f 66 20 3c 69 3e 64 69 73 63 , one of <i>disc
21b0: 6f 6e 6e 65 63 74 65 64 3c 2f 69 3e 2c 20 3c 69 onnected</i>, <i
21c0: 3e 64 69 73 63 6f 76 65 72 79 3c 2f 69 3e 2c 20 >discovery</i>,
21d0: 3c 69 3e 73 63 61 6e 6e 69 6e 67 3c 2f 69 3e 2c <i>scanning</i>,
21e0: 20 3c 69 3e 63 6f 6e 6e 65 63 74 65 64 3c 2f 69 <i>connected</i
21f0: 3e 2c 20 6f 72 20 3c 69 3e 69 64 6c 65 3c 2f 69 >, or <i>idle</i
2200: 3e 2e 20 49 66 20 3c 74 74 3e 3c 69 3e 68 61 6e >. If <tt><i>han
2210: 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 dle</i></tt> is
2220: 6f 6d 69 74 74 65 64 2c 20 61 20 6c 69 73 74 20 omitted, a list
2230: 6f 66 20 61 6c 6c 20 6b 6e 6f 77 6e 20 63 6f 6e of all known con
2240: 6e 65 63 74 69 6f 6e 20 69 64 65 6e 74 69 66 69 nection identifi
2250: 65 72 73 20 69 73 20 72 65 74 75 72 6e 65 64 2e ers is returned.
2260: 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 20 6d 74 75 20 ....<tt>ble mtu
2270: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 20 3c 69 <i>handle</i> <i
2280: 3e 3f 76 61 6c 75 65 3f 3c 2f 69 3e 3c 2f 74 74 >?value?</i></tt
2290: 3e 0d 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 >.... Returns
22a0: 20 6f 72 20 73 65 74 73 20 74 68 65 20 6d 61 78 or sets the max
22b0: 69 6d 75 6d 20 74 72 61 6e 73 6d 69 73 73 69 6f imum transmissio
22c0: 6e 20 75 6e 69 74 20 28 4d 54 55 29 20 6f 66 20 n unit (MTU) of
22d0: 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 69 the BLE connecti
22e0: 6f 6e 20 69 64 65 6e 74 69 66 69 65 64 20 62 79 on identified by
22f0: 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f <tt><i>handle</
2300: 69 3e 3c 2f 74 74 3e 2e 20 53 75 70 70 6f 72 74 i></tt>. Support
2310: 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f of this functio
2320: 6e 20 76 61 72 69 65 73 20 62 65 74 77 65 65 6e n varies between
2330: 20 41 6e 64 72 6f 69 64 20 76 65 72 73 69 6f 6e Android version
2340: 73 2e 0d 0a 0d 0a 3c 74 74 3e 62 6c 65 20 70 61 s.....<tt>ble pa
2350: 69 72 20 3c 69 3e 61 64 64 72 65 73 73 3c 2f 69 ir <i>address</i
2360: 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 49 6e ></tt>.... In
2370: 69 74 69 61 74 65 73 20 70 61 69 72 69 6e 67 20 itiates pairing
2380: 77 69 74 68 20 74 68 65 20 42 6c 75 65 74 6f 6f with the Bluetoo
2390: 74 68 20 64 65 76 69 63 65 20 77 69 74 68 20 61 th device with a
23a0: 64 64 72 65 73 73 20 3c 74 74 3e 3c 69 3e 61 64 ddress <tt><i>ad
23b0: 64 72 65 73 73 3c 2f 69 3e 3c 2f 74 74 3e 20 28 dress</i></tt> (
23c0: 65 78 70 72 65 73 73 65 64 20 61 73 20 73 69 78 expressed as six
23d0: 20 68 65 78 61 64 65 63 69 6d 61 6c 20 38 20 62 hexadecimal 8 b
23e0: 69 74 20 6e 75 6d 62 65 72 73 20 73 65 70 61 72 it numbers separ
23f0: 61 74 65 64 20 62 79 20 63 6f 6c 6f 6e 73 2c 20 ated by colons,
2400: 6c 69 6b 65 20 61 20 45 74 68 65 72 6e 65 74 20 like a Ethernet
2410: 4d 41 43 20 61 64 64 72 65 73 73 29 2e 0d 0a 0d MAC address)....
2420: 0a 3c 74 74 3e 62 6c 65 20 72 65 61 64 20 3c 69 .<tt>ble read <i
2430: 3e 68 61 6e 64 6c 65 20 73 75 75 69 64 20 73 69 >handle suuid si
2440: 6e 73 74 61 6e 63 65 20 63 75 75 69 64 20 63 69 nstance cuuid ci
2450: 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 74 3e nstance</i></tt>
2460: 0d 0a 0d 0a 20 20 20 20 49 6e 69 74 69 61 74 65 .... Initiate
2470: 73 20 74 68 65 20 72 65 61 64 20 6f 66 20 61 20 s the read of a
2480: 63 68 61 72 61 63 74 65 72 69 73 74 69 63 20 6f characteristic o
2490: 66 20 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 f the BLE connec
24a0: 74 69 6f 6e 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 tion <tt><i>hand
24b0: 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 64 65 6e le</i></tt> iden
24c0: 74 69 66 69 65 64 20 62 79 20 3c 74 74 3e 3c 69 tified by <tt><i
24d0: 3e 73 75 75 69 64 3c 2f 69 3e 3c 2f 74 74 3e 20 >suuid</i></tt>
24e0: 28 31 32 38 20 62 69 74 20 73 65 72 76 69 63 65 (128 bit service
24f0: 20 55 55 49 44 29 2c 20 3c 74 74 3e 3c 69 3e 73 UUID), <tt><i>s
2500: 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 74 instance</i></tt
2510: 3e 20 28 73 65 72 76 69 63 65 20 69 6e 73 74 61 > (service insta
2520: 6e 63 65 20 69 64 65 6e 74 69 66 69 65 72 2c 20 nce identifier,
2530: 69 6e 74 65 67 65 72 2c 20 75 73 75 61 6c 6c 79 integer, usually
2540: 20 30 29 2c 20 3c 74 74 3e 3c 69 3e 63 75 75 69 0), <tt><i>cuui
2550: 64 3c 2f 69 3e 3c 2f 74 74 3e 20 28 31 32 38 20 d</i></tt> (128
2560: 62 69 74 20 63 68 61 72 61 63 74 65 72 69 73 74 bit characterist
2570: 69 63 20 55 55 49 44 29 2c 20 61 6e 64 20 3c 74 ic UUID), and <t
2580: 74 3e 3c 69 3e 63 69 6e 73 74 61 6e 63 65 3c 2f t><i>cinstance</
2590: 69 3e 3c 2f 74 74 3e 20 28 63 68 61 72 61 63 74 i></tt> (charact
25a0: 65 72 69 73 74 69 63 20 69 64 65 6e 74 69 66 69 eristic identifi
25b0: 65 72 2c 20 69 6e 74 65 67 65 72 2c 20 75 73 75 er, integer, usu
25c0: 61 6c 6c 79 20 30 29 2e 20 54 68 65 20 72 65 73 ally 0). The res
25d0: 75 6c 74 20 69 73 20 61 20 70 6f 73 69 74 69 76 ult is a positiv
25e0: 65 20 69 6e 74 65 67 65 72 20 77 68 65 6e 20 74 e integer when t
25f0: 68 65 20 72 65 61 64 20 6f 70 65 72 61 74 69 6f he read operatio
2600: 6e 20 69 73 20 69 6e 20 70 72 6f 67 72 65 73 73 n is in progress
2610: 2c 20 30 20 6f 72 20 6e 65 67 61 74 69 76 65 20 , 0 or negative
2620: 6f 6e 20 65 72 72 6f 72 2e 20 54 68 65 20 63 6f on error. The co
2630: 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 74 68 65 20 mpletion of the
2640: 72 65 61 64 20 6f 70 65 72 61 74 69 6f 6e 20 69 read operation i
2650: 73 20 69 6e 64 69 63 61 74 65 64 20 74 68 72 6f s indicated thro
2660: 75 67 68 20 74 68 65 20 63 61 6c 6c 62 61 63 6b ugh the callback
2670: 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 74 68 65 function of the
2680: 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0d 0a 0d 0a connection.....
2690: 3c 74 74 3e 62 6c 65 20 72 65 63 6f 6e 6e 65 63 <tt>ble reconnec
26a0: 74 20 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c t <i>handle</i><
26b0: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 49 6e 69 74 /tt>.... Init
26c0: 69 61 74 65 73 20 61 20 72 65 63 6f 6e 6e 65 63 iates a reconnec
26d0: 74 20 6f 66 20 74 68 65 20 42 4c 45 20 63 6f 6e t of the BLE con
26e0: 6e 65 63 74 69 6f 6e 20 3c 74 74 3e 3c 69 3e 68 nection <tt><i>h
26f0: 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 20 69 andle</i></tt> i
2700: 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f f the current co
2710: 6e 6e 65 63 74 69 6f 6e 20 73 74 61 74 65 20 69 nnection state i
2720: 73 20 64 69 73 63 6f 6e 6e 65 63 74 65 64 2e 20 s disconnected.
2730: 57 68 65 6e 20 74 68 65 20 6f 70 65 72 61 74 69 When the operati
2740: 6f 6e 20 63 6f 6d 70 6c 65 74 65 73 20 74 68 65 on completes the
2750: 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 callback functi
2760: 6f 6e 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 on of the connec
2770: 74 69 6f 6e 20 69 73 20 69 6e 76 6f 6b 65 64 20 tion is invoked
2780: 77 69 74 68 20 69 6e 66 6f 72 6d 61 74 69 6f 6e with information
2790: 20 6f 6e 20 74 68 65 20 6e 65 77 20 63 6f 6e 6e on the new conn
27a0: 65 63 74 69 6f 6e 20 73 74 61 74 65 2e 0d 0a 0d ection state....
27b0: 0a 3c 74 74 3e 62 6c 65 20 73 63 61 6e 6e 65 72 .<tt>ble scanner
27c0: 20 3c 69 3e 63 61 6c 6c 62 61 63 6b 3c 2f 69 3e <i>callback</i>
27d0: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 72 65 </tt>.... Cre
27e0: 61 74 65 73 20 61 20 42 4c 45 20 63 6f 6e 6e 65 ates a BLE conne
27f0: 63 74 69 6f 6e 20 74 6f 20 62 65 20 75 73 65 64 ction to be used
2800: 20 66 6f 72 20 64 65 74 65 63 74 69 6f 6e 20 28 for detection (
2810: 73 63 61 6e 29 20 6f 66 20 42 4c 45 20 64 65 76 scan) of BLE dev
2820: 69 63 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 ices and returns
2830: 20 61 20 68 61 6e 64 6c 65 20 28 61 20 73 74 72 a handle (a str
2840: 69 6e 67 20 69 64 65 6e 74 69 66 79 69 6e 67 20 ing identifying
2850: 74 68 65 20 42 4c 45 20 73 63 61 6e 6e 65 72 29 the BLE scanner)
2860: 20 74 6f 20 62 65 20 75 73 65 64 20 74 6f 20 64 to be used to d
2870: 65 61 6c 20 77 69 74 68 20 74 68 69 73 20 73 63 eal with this sc
2880: 61 6e 6e 65 72 20 61 6e 64 20 61 72 72 61 6e 67 anner and arrang
2890: 65 73 20 66 6f 72 20 74 68 65 20 3c 74 74 3e 3c es for the <tt><
28a0: 69 3e 63 61 6c 6c 62 61 63 6b 3c 2f 69 3e 3c 2f i>callback</i></
28b0: 74 74 3e 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 62 tt> command to b
28c0: 65 20 69 6e 76 6f 6b 65 64 20 6f 6e 20 65 76 65 e invoked on eve
28d0: 6e 74 73 20 6f 6e 20 74 68 65 20 63 6f 6e 6e 65 nts on the conne
28e0: 63 74 69 6f 6e 2e 20 53 65 65 20 74 68 65 20 64 ction. See the d
28f0: 65 73 63 72 69 70 74 69 6f 6e 20 6f 66 20 3c 74 escription of <t
2900: 74 3e 62 6c 65 20 63 6f 6e 6e 65 63 74 3c 2f 74 t>ble connect</t
2910: 74 3e 20 61 6e 64 20 74 68 65 20 73 65 63 74 69 t> and the secti
2920: 6f 6e 20 3c 62 3e 45 76 65 6e 74 20 44 61 74 61 on <b>Event Data
2930: 3c 2f 62 3e 20 66 6f 72 20 6d 6f 72 65 20 64 65 </b> for more de
2940: 74 61 69 6c 73 20 6f 6e 20 74 68 65 20 3c 74 74 tails on the <tt
2950: 3e 63 61 6c 6c 62 61 63 6b 3c 2f 74 74 3e 20 61 >callback</tt> a
2960: 72 67 75 6d 65 6e 74 2e 0d 0a 0d 0a 3c 74 74 3e rgument.....<tt>
2970: 62 6c 65 20 73 65 72 76 69 63 65 73 20 3c 69 3e ble services <i>
2980: 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 0d handle</i></tt>.
2990: 0a 0d 0a 20 20 20 20 52 65 74 75 72 6e 73 20 61 ... Returns a
29a0: 20 6c 69 73 74 20 6f 66 20 73 65 72 76 69 63 65 list of service
29b0: 73 20 6f 66 20 74 68 65 20 42 4c 45 20 63 6f 6e s of the BLE con
29c0: 6e 65 63 74 69 6f 6e 20 3c 74 74 3e 3c 69 3e 68 nection <tt><i>h
29d0: 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 andle</i></tt>.
29e0: 54 68 65 20 6c 69 73 74 20 69 73 20 6c 61 79 65 The list is laye
29f0: 64 20 6f 75 74 20 61 73 20 61 20 74 61 62 6c 65 d out as a table
2a00: 20 77 69 74 68 20 74 68 65 20 74 68 72 65 65 20 with the three
2a10: 63 6f 6c 75 6d 6e 73 20 73 65 72 76 69 63 65 20 columns service
2a20: 55 55 49 44 2c 20 73 65 72 76 69 63 65 20 69 6e UUID, service in
2a30: 73 74 61 6e 63 65 20 6e 75 6d 62 65 72 2c 20 61 stance number, a
2a40: 6e 64 20 73 65 72 76 69 63 65 20 74 79 70 65 20 nd service type
2a50: 73 75 69 74 61 62 6c 65 20 66 6f 72 20 69 74 65 suitable for ite
2a60: 72 61 74 69 6e 67 20 75 73 69 6e 67 20 3c 74 74 rating using <tt
2a70: 3e 66 6f 72 65 61 63 68 20 7b 73 75 75 69 64 20 >foreach {suuid
2a80: 73 69 6e 73 74 61 6e 63 65 20 74 79 70 65 7d 20 sinstance type}
2a90: 3c 6e 6f 77 69 6b 69 3e 5b 62 6c 65 20 73 65 72 <nowiki>[ble ser
2aa0: 76 69 63 65 73 20 2e 2e 2e 5d 3c 2f 6e 6f 77 69 vices ...]</nowi
2ab0: 6b 69 3e 20 7b 2e 2e 2e 7d 3c 2f 74 74 3e 2e 0d ki> {...}</tt>..
2ac0: 0a 0d 0a 3c 74 74 3e 62 6c 65 20 73 68 6f 72 74 ...<tt>ble short
2ad0: 65 6e 20 3c 69 3e 68 61 6e 64 6c 65 20 75 75 69 en <i>handle uui
2ae0: 64 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 d</i></tt>....
2af0: 20 20 53 68 6f 72 74 65 6e 20 74 68 65 20 67 69 Shorten the gi
2b00: 76 65 6e 20 28 6c 6f 6e 67 2c 20 63 61 6e 6f 6e ven (long, canon
2b10: 69 63 61 6c 29 20 55 55 49 44 20 74 6f 20 69 74 ical) UUID to it
2b20: 73 20 73 68 6f 72 74 65 73 74 20 28 31 36 20 6f s shortest (16 o
2b30: 72 20 33 32 20 62 69 74 29 20 66 6f 72 6d 2e 20 r 32 bit) form.
2b40: 41 6e 20 65 72 72 6f 72 20 69 73 20 72 65 70 6f An error is repo
2b50: 72 74 65 64 20 69 66 20 74 68 65 20 6c 6f 6e 67 rted if the long
2b60: 20 55 55 49 44 20 69 73 20 75 6e 6b 6e 6f 77 6e UUID is unknown
2b70: 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 6f with respect to
2b80: 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 the connection
2b90: 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 <tt><i>handle</i
2ba0: 3e 3c 2f 74 74 3e 2e 20 49 66 20 6e 6f 20 75 6e ></tt>. If no un
2bb0: 69 71 75 65 20 61 62 62 72 65 76 69 61 74 69 6f ique abbreviatio
2bc0: 6e 20 69 73 20 66 6f 75 6e 64 2c 20 74 68 65 20 n is found, the
2bd0: 66 75 6c 6c 20 31 32 38 20 62 69 74 20 55 55 49 full 128 bit UUI
2be0: 44 20 69 73 20 72 65 74 75 72 6e 65 64 2e 0d 0a D is returned...
2bf0: 0d 0a 3c 74 74 3e 62 6c 65 20 73 74 61 72 74 20 ..<tt>ble start
2c00: 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e 3c 2f 74 <i>handle</i></t
2c10: 74 3e 0d 0a 0d 0a 20 20 20 20 53 74 61 72 74 73 t>.... Starts
2c20: 20 73 63 61 6e 6e 69 6e 67 20 66 6f 72 20 42 4c scanning for BL
2c30: 45 20 64 65 76 69 63 65 73 2e 20 53 63 61 6e 20 E devices. Scan
2c40: 73 74 61 74 75 73 20 61 6e 64 20 73 63 61 6e 20 status and scan
2c50: 72 65 73 75 6c 74 73 20 61 72 65 20 69 6e 64 69 results are indi
2c60: 63 61 74 65 64 20 62 79 20 69 6e 76 6f 63 61 74 cated by invocat
2c70: 69 6f 6e 73 20 6f 66 20 74 68 65 20 3c 74 74 3e ions of the <tt>
2c80: 3c 69 3e 63 61 6c 6c 62 61 63 6b 3c 2f 69 3e 3c <i>callback</i><
2c90: 2f 74 74 3e 20 66 75 6e 63 74 69 6f 6e 20 67 69 /tt> function gi
2ca0: 76 65 6e 20 74 6f 20 74 68 65 20 63 6f 72 72 65 ven to the corre
2cb0: 73 70 6f 6e 64 69 6e 67 20 3c 74 74 3e 62 6c 65 sponding <tt>ble
2cc0: 20 73 63 61 6e 6e 65 72 3c 2f 74 74 3e 20 63 6f scanner</tt> co
2cd0: 6d 6d 61 6e 64 2e 0d 0a 0d 0a 3c 74 74 3e 62 6c mmand.....<tt>bl
2ce0: 65 20 73 74 6f 70 20 3c 69 3e 68 61 6e 64 6c 65 e stop <i>handle
2cf0: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 </i></tt>....
2d00: 20 53 74 6f 70 73 20 73 63 61 6e 6e 69 6e 67 20 Stops scanning
2d10: 66 6f 72 20 42 4c 45 20 64 65 76 69 63 65 73 2e for BLE devices.
2d20: 20 53 63 61 6e 20 73 74 61 74 75 73 20 69 73 20 Scan status is
2d30: 69 6e 64 69 63 61 74 65 64 20 62 79 20 69 6e 76 indicated by inv
2d40: 6f 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 ocations of the
2d50: 3c 74 74 3e 3c 69 3e 63 61 6c 6c 62 61 63 6b 3c <tt><i>callback<
2d60: 2f 69 3e 3c 2f 74 74 3e 20 66 75 6e 63 74 69 6f /i></tt> functio
2d70: 6e 20 67 69 76 65 6e 20 74 6f 20 74 68 65 20 63 n given to the c
2d80: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 3c 74 74 orresponding <tt
2d90: 3e 62 6c 65 20 73 63 61 6e 6e 65 72 3c 2f 74 74 >ble scanner</tt
2da0: 3e 20 63 6f 6d 6d 61 6e 64 2e 0d 0a 0d 0a 3c 74 > command.....<t
2db0: 74 3e 62 6c 65 20 75 6e 70 61 69 72 20 3c 69 3e t>ble unpair <i>
2dc0: 61 64 64 72 65 73 73 3c 2f 69 3e 3c 2f 74 74 3e address</i></tt>
2dd0: 0d 0a 0d 0a 20 20 20 20 49 6e 69 74 69 61 74 65 .... Initiate
2de0: 73 20 72 65 6c 65 61 73 65 20 6f 66 20 74 68 65 s release of the
2df0: 20 70 61 69 72 69 6e 67 20 77 69 74 68 20 74 68 pairing with th
2e00: 65 20 42 6c 75 65 74 6f 6f 74 68 20 64 65 76 69 e Bluetooth devi
2e10: 63 65 20 77 69 74 68 20 61 64 64 72 65 73 73 20 ce with address
2e20: 3c 74 74 3e 3c 69 3e 61 64 64 72 65 73 73 3c 2f <tt><i>address</
2e30: 69 3e 3c 2f 74 74 3e 20 28 65 78 70 72 65 73 73 i></tt> (express
2e40: 65 64 20 61 73 20 73 69 78 20 68 65 78 61 64 65 ed as six hexade
2e50: 63 69 6d 61 6c 20 38 20 62 69 74 20 6e 75 6d 62 cimal 8 bit numb
2e60: 65 72 73 20 73 65 70 61 72 61 74 65 64 20 62 79 ers separated by
2e70: 20 63 6f 6c 6f 6e 73 2c 20 6c 69 6b 65 20 61 20 colons, like a
2e80: 45 74 68 65 72 6e 65 74 20 4d 41 43 20 61 64 64 Ethernet MAC add
2e90: 72 65 73 73 29 2e 0d 0a 0d 0a 3c 74 74 3e 62 6c ress).....<tt>bl
2ea0: 65 20 75 73 65 72 64 61 74 61 20 3c 69 3e 68 61 e userdata <i>ha
2eb0: 6e 64 6c 65 20 3f 64 61 74 61 3f 3c 2f 69 3e 3c ndle ?data?</i><
2ec0: 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 41 73 73 6f /tt>.... Asso
2ed0: 63 69 61 74 65 20 6f 72 20 72 65 74 72 69 65 76 ciate or retriev
2ee0: 65 20 75 73 65 72 20 64 61 74 61 20 77 69 74 68 e user data with
2ef0: 20 74 68 65 20 42 4c 45 20 63 6f 6e 6e 65 63 74 the BLE connect
2f00: 69 6f 6e 20 3c 74 74 3e 3c 69 3e 68 61 6e 64 6c ion <tt><i>handl
2f10: 65 3c 2f 69 3e 3c 2f 74 74 3e 2e 20 57 68 65 6e e</i></tt>. When
2f20: 20 3c 74 74 3e 3c 69 3e 64 61 74 61 3c 2f 69 3e <tt><i>data</i>
2f30: 3c 2f 74 74 3e 20 69 73 20 67 69 76 65 6e 20 69 </tt> is given i
2f40: 74 20 72 65 70 6c 61 63 65 73 20 74 68 65 20 66 t replaces the f
2f50: 6f 72 6d 65 72 20 61 73 73 6f 63 69 61 74 65 64 ormer associated
2f60: 20 75 73 65 72 20 64 61 74 61 2e 20 57 68 65 6e user data. When
2f70: 20 6f 6d 69 74 74 65 64 2c 20 74 68 65 20 63 75 omitted, the cu
2f80: 72 72 65 6e 74 20 75 73 65 72 20 64 61 74 61 20 rrent user data
2f90: 6f 72 20 61 6e 20 65 6d 70 74 79 20 6c 69 73 74 or an empty list
2fa0: 20 69 73 20 72 65 74 75 72 6e 65 64 2e 20 20 0d is returned. .
2fb0: 0a 0d 0a 3c 74 74 3e 62 6c 65 20 77 72 69 74 65 ...<tt>ble write
2fc0: 20 3c 69 3e 68 61 6e 64 6c 65 20 73 75 75 69 64 <i>handle suuid
2fd0: 20 73 69 6e 73 74 61 6e 63 65 20 63 75 75 69 64 sinstance cuuid
2fe0: 20 63 69 6e 73 74 61 6e 63 65 20 76 61 6c 75 65 cinstance value
2ff0: 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 </i></tt>....
3000: 20 49 6e 69 74 69 61 74 65 73 20 74 68 65 20 77 Initiates the w
3010: 72 69 74 65 20 6f 66 20 61 20 63 68 61 72 61 63 rite of a charac
3020: 74 65 72 69 73 74 69 63 20 6f 66 20 74 68 65 20 teristic of the
3030: 42 4c 45 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 3c BLE connection <
3040: 74 74 3e 3c 69 3e 68 61 6e 64 6c 65 3c 2f 69 3e tt><i>handle</i>
3050: 3c 2f 74 74 3e 20 69 64 65 6e 74 69 66 69 65 64 </tt> identified
3060: 20 62 79 20 3c 74 74 3e 3c 69 3e 73 75 75 69 64 by <tt><i>suuid
3070: 3c 2f 69 3e 3c 2f 74 74 3e 20 28 31 32 38 20 62 </i></tt> (128 b
3080: 69 74 20 73 65 72 76 69 63 65 20 55 55 49 44 29 it service UUID)
3090: 2c 20 3c 74 74 3e 3c 69 3e 73 69 6e 73 74 61 6e , <tt><i>sinstan
30a0: 63 65 3c 2f 69 3e 3c 2f 74 74 3e 20 28 73 65 72 ce</i></tt> (ser
30b0: 76 69 63 65 20 69 6e 73 74 61 6e 63 65 20 69 64 vice instance id
30c0: 65 6e 74 69 66 69 65 72 2c 20 69 6e 74 65 67 65 entifier, intege
30d0: 72 2c 20 75 73 75 61 6c 6c 79 20 30 29 2c 20 3c r, usually 0), <
30e0: 74 74 3e 3c 69 3e 63 75 75 69 64 3c 2f 69 3e 3c tt><i>cuuid</i><
30f0: 2f 74 74 3e 20 28 31 32 38 20 62 69 74 20 63 68 /tt> (128 bit ch
3100: 61 72 61 63 74 65 72 69 73 74 69 63 20 55 55 49 aracteristic UUI
3110: 44 29 2c 20 61 6e 64 20 3c 74 74 3e 3c 69 3e 63 D), and <tt><i>c
3120: 69 6e 73 74 61 6e 63 65 3c 2f 69 3e 3c 2f 74 74 instance</i></tt
3130: 3e 20 28 63 68 61 72 61 63 74 65 72 69 73 74 69 > (characteristi
3140: 63 20 69 64 65 6e 74 69 66 69 65 72 2c 20 69 6e c identifier, in
3150: 74 65 67 65 72 2c 20 75 73 75 61 6c 6c 79 20 30 teger, usually 0
3160: 29 2e 20 3c 74 74 3e 3c 69 3e 76 61 6c 75 65 3c ). <tt><i>value<
3170: 2f 69 3e 3c 2f 74 74 3e 20 69 73 20 74 68 65 20 /i></tt> is the
3180: 76 61 6c 75 65 20 74 6f 20 62 65 20 77 72 69 74 value to be writ
3190: 74 65 6e 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 ten and should b
31a0: 65 20 61 20 73 74 72 69 6e 67 20 6f 72 20 62 79 e a string or by
31b0: 74 65 20 61 72 72 61 79 2e 20 54 68 65 20 72 65 te array. The re
31c0: 73 75 6c 74 20 69 73 20 61 20 70 6f 73 69 74 69 sult is a positi
31d0: 76 65 20 69 6e 74 65 67 65 72 20 77 68 65 6e 20 ve integer when
31e0: 74 68 65 20 77 72 69 74 65 20 6f 70 65 72 61 74 the write operat
31f0: 69 6f 6e 20 69 73 20 69 6e 20 70 72 6f 67 72 65 ion is in progre
3200: 73 73 2c 20 30 20 6f 72 20 6e 65 67 61 74 69 76 ss, 0 or negativ
3210: 65 20 6f 6e 20 65 72 72 6f 72 2e 20 54 68 65 20 e on error. The
3220: 63 6f 6d 70 6c 65 74 69 6f 6e 20 6f 66 20 74 68 completion of th
3230: 65 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f e write operatio
3240: 6e 20 69 73 20 69 6e 64 69 63 61 74 65 64 20 74 n is indicated t
3250: 68 72 6f 75 67 68 20 74 68 65 20 63 61 6c 6c 62 hrough the callb
3260: 61 63 6b 20 66 75 6e 63 74 69 6f 6e 20 6f 66 20 ack function of
3270: 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 the connection.
3280: 20 4e 6f 74 65 3a 20 6e 6f 74 20 61 6c 6c 20 41 Note: not all A
3290: 6e 64 72 6f 69 64 20 69 6d 70 6c 65 6d 65 6e 74 ndroid implement
32a0: 61 74 69 6f 6e 73 20 61 6c 6c 6f 77 20 6d 6f 72 ations allow mor
32b0: 65 20 74 68 61 6e 20 6f 6e 65 20 61 63 74 69 76 e than one activ
32c0: 65 20 63 6f 6d 6d 61 6e 64 20 28 65 78 61 6d 70 e command (examp
32d0: 6c 65 2c 20 69 73 73 75 69 6e 67 20 61 20 22 62 le, issuing a "b
32e0: 6c 65 20 72 65 61 64 22 20 69 6d 6d 65 64 69 61 le read" immedia
32f0: 74 65 6c 79 20 61 66 74 65 72 20 61 20 22 62 6c tely after a "bl
3300: 65 20 77 72 69 74 65 22 29 2e 20 46 6f 72 20 62 e write"). For b
3310: 65 73 74 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 est compatibilit
3320: 79 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 77 61 y, you should wa
3330: 69 74 20 66 6f 72 20 74 68 65 20 63 61 6c 6c 62 it for the callb
3340: 61 63 6b 20 74 68 61 74 20 79 6f 75 72 20 77 72 ack that your wr
3350: 69 74 65 20 6f 70 65 72 61 74 69 6f 6e 20 68 61 ite operation ha
3360: 73 20 63 6f 6d 70 6c 65 74 65 64 20 62 65 66 6f s completed befo
3370: 72 65 20 69 73 73 75 69 6e 67 20 74 68 65 20 6e re issuing the n
3380: 65 78 74 20 62 6c 65 20 77 72 69 74 65 2f 72 65 ext ble write/re
3390: 61 64 20 63 6f 6d 6d 61 6e 64 2e 0d 0a 0d 0a 3c ad command.....<
33a0: 68 33 3e 41 62 62 72 65 76 69 61 74 65 64 20 55 h3>Abbreviated U
33b0: 55 49 44 73 3c 2f 68 33 3e 0d 0a 0d 0a 54 68 65 UIDs</h3>....The
33c0: 20 31 32 38 20 62 69 74 20 55 55 49 44 20 61 72 128 bit UUID ar
33d0: 67 75 6d 65 6e 74 73 20 74 6f 20 3c 74 74 3e 62 guments to <tt>b
33e0: 6c 65 3c 2f 74 74 3e 20 63 6f 6d 6d 61 6e 64 73 le</tt> commands
33f0: 20 63 61 6e 20 62 65 20 73 70 65 63 69 66 69 65 can be specifie
3400: 64 20 69 6e 20 61 62 62 72 65 76 69 61 74 65 64 d in abbreviated
3410: 20 31 36 20 6f 72 20 33 32 20 62 69 74 20 66 6f 16 or 32 bit fo
3420: 72 6d 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 rm as long as th
3430: 65 20 76 61 6c 75 65 20 69 73 20 75 6e 69 71 75 e value is uniqu
3440: 65 20 77 69 74 68 20 72 65 73 70 65 63 74 20 74 e with respect t
3450: 6f 20 74 68 65 20 55 55 49 44 73 20 6c 65 61 72 o the UUIDs lear
3460: 6e 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 64 ned during the d
3470: 69 73 63 6f 76 65 72 79 20 70 68 61 73 65 2e 20 iscovery phase.
3480: 45 78 61 6d 70 6c 65 73 3a 0d 0a 0d 0a 3c 76 65 Examples:....<ve
3490: 72 62 61 74 69 6d 3e 0d 0a 20 54 49 20 53 65 6e rbatim>.. TI Sen
34a0: 73 6f 72 54 61 67 20 42 61 73 65 20 55 55 49 44 sorTag Base UUID
34b0: 3a 20 20 20 20 20 20 20 20 46 30 30 30 30 30 30 : F000000
34c0: 30 2d 30 34 35 31 2d 34 30 30 30 2d 42 30 30 30 0-0451-4000-B000
34d0: 2d 30 30 30 30 30 30 30 30 30 30 30 30 0d 0a 0d -000000000000...
34e0: 0a 20 49 52 20 54 65 6d 70 65 72 61 74 75 72 65 . IR Temperature
34f0: 20 53 65 6e 73 6f 72 20 53 65 72 76 69 63 65 3a Sensor Service:
3500: 20 46 30 30 30 41 41 30 30 2d 30 34 35 31 2d 34 F000AA00-0451-4
3510: 30 30 30 2d 42 30 30 30 2d 30 30 30 30 30 30 30 000-B000-0000000
3520: 30 30 30 30 30 0d 0a 20 20 20 20 20 20 20 20 20 00000..
3530: 20 61 62 62 72 65 76 69 61 74 65 64 20 28 33 32 abbreviated (32
3540: 20 62 69 74 29 3a 20 46 30 30 30 41 41 30 30 0d bit): F000AA00.
3550: 0a 20 20 20 20 20 20 20 20 20 20 61 62 62 72 65 . abbre
3560: 76 69 61 74 65 64 20 28 31 36 20 62 69 74 29 3a viated (16 bit):
3570: 20 20 20 20 20 41 41 30 30 0d 0a 0d 0a 20 49 52 AA00.... IR
3580: 20 54 65 6d 70 65 72 61 74 75 72 65 20 53 65 6e Temperature Sen
3590: 73 6f 72 20 56 61 6c 75 65 3a 20 20 20 46 30 30 sor Value: F00
35a0: 30 41 41 30 31 2d 30 34 35 31 2d 34 30 30 30 2d 0AA01-0451-4000-
35b0: 42 30 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 B000-00000000000
35c0: 30 0d 0a 20 20 20 20 20 20 20 20 20 20 61 62 62 0.. abb
35d0: 72 65 76 69 61 74 65 64 20 28 33 32 20 62 69 74 reviated (32 bit
35e0: 29 3a 20 46 30 30 30 41 41 30 31 0d 0a 20 20 20 ): F000AA01..
35f0: 20 20 20 20 20 20 20 61 62 62 72 65 76 69 61 74 abbreviat
3600: 65 64 20 28 31 36 20 62 69 74 29 3a 20 20 20 20 ed (16 bit):
3610: 20 41 41 30 31 0d 0a 0d 0a 20 47 65 6e 65 72 69 AA01.... Generi
3620: 63 20 64 65 73 63 72 69 70 74 6f 72 20 66 6f 72 c descriptor for
3630: 20 6e 6f 74 69 66 79 3a 20 30 30 30 30 32 39 30 notify: 0000290
3640: 32 2d 30 30 30 30 2d 31 30 30 30 2d 38 30 30 30 2-0000-1000-8000
3650: 2d 30 30 38 30 35 46 39 42 33 34 46 42 0d 0a 20 -00805F9B34FB..
3660: 20 20 20 20 20 20 20 20 20 61 62 62 72 65 76 69 abbrevi
3670: 61 74 65 64 20 28 33 32 20 62 69 74 29 3a 20 30 ated (32 bit): 0
3680: 30 30 30 32 39 30 32 0d 0a 20 20 20 20 20 20 20 0002902..
3690: 20 20 20 61 62 62 72 65 76 69 61 74 65 64 20 28 abbreviated (
36a0: 31 36 20 62 69 74 29 3a 20 20 20 20 20 32 39 30 16 bit): 290
36b0: 32 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e 0d 0a 2..</verbatim>..
36c0: 0d 0a 3c 68 33 3e 45 76 65 6e 74 20 44 61 74 61 ..<h3>Event Data
36d0: 3c 2f 68 33 3e 0d 0a 0d 0a 54 68 65 20 66 69 72 </h3>....The fir
36e0: 73 74 20 61 72 67 75 6d 65 6e 74 20 74 6f 20 63 st argument to c
36f0: 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e allback function
3700: 73 20 69 73 20 74 68 65 20 74 79 70 65 20 6f 66 s is the type of
3710: 20 65 76 65 6e 74 2c 20 61 73 20 64 65 73 63 72 event, as descr
3720: 69 62 65 64 20 62 65 6c 6f 77 2e 0d 0a 0d 0a 3c ibed below.....<
3730: 74 74 3e 63 6f 6e 6e 65 63 74 69 6f 6e 3c 2f 74 tt>connection</t
3740: 74 3e 0d 0a 0d 0a 20 20 20 20 49 6e 64 69 63 61 t>.... Indica
3750: 74 65 73 20 63 68 61 6e 67 65 20 69 6e 20 63 6f tes change in co
3760: 6e 6e 65 63 74 69 6f 6e 20 73 74 61 74 65 2e 0d nnection state..
3770: 0a 0d 0a 3c 74 74 3e 73 63 61 6e 3c 2f 74 74 3e ...<tt>scan</tt>
3780: 0d 0a 0d 0a 20 20 20 20 49 6e 64 69 63 61 74 65 .... Indicate
3790: 73 20 63 68 61 6e 67 65 20 69 6e 20 73 63 61 6e s change in scan
37a0: 20 73 74 61 74 65 20 6f 72 20 72 65 70 6f 72 74 state or report
37b0: 73 20 6e 65 77 6c 79 20 64 65 74 65 63 74 65 64 s newly detected
37c0: 20 42 6c 75 65 74 6f 6f 74 68 20 4c 45 20 64 65 Bluetooth LE de
37d0: 76 69 63 65 73 2e 0d 0a 0d 0a 3c 74 74 3e 73 65 vices.....<tt>se
37e0: 72 76 69 63 65 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 rvice</tt>....
37f0: 20 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 Information ab
3800: 6f 75 74 20 61 20 73 65 72 76 69 63 65 2e 0d 0a out a service...
3810: 0d 0a 3c 74 74 3e 63 68 61 72 61 63 74 65 72 69 ..<tt>characteri
3820: 73 74 69 63 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 stic</tt>....
3830: 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f Information abo
3840: 75 74 20 61 20 63 68 61 72 61 63 74 65 72 69 73 ut a characteris
3850: 74 69 63 2c 20 75 73 65 64 20 66 6f 72 20 64 61 tic, used for da
3860: 74 61 20 65 78 63 68 61 6e 67 65 2e 0d 0a 0d 0a ta exchange.....
3870: 3c 74 74 3e 64 65 73 63 72 69 70 74 6f 72 3c 2f <tt>descriptor</
3880: 74 74 3e 0d 0a 0d 0a 20 20 20 20 49 6e 66 6f 72 tt>.... Infor
3890: 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 61 20 64 mation about a d
38a0: 65 73 63 72 69 70 74 6f 72 20 28 6d 65 74 61 20 escriptor (meta
38b0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 66 20 61 information of a
38c0: 20 63 68 61 72 61 63 74 65 72 69 73 74 69 63 29 characteristic)
38d0: 2e 0d 0a 0d 0a 3c 74 74 3e 74 72 61 6e 73 61 63 .....<tt>transac
38e0: 74 69 6f 6e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 tion</tt>....
38f0: 20 49 6e 64 69 63 61 74 65 73 20 73 74 61 74 75 Indicates statu
3900: 73 20 6f 66 20 61 20 77 72 69 74 65 20 74 72 61 s of a write tra
3910: 6e 73 61 63 74 69 6f 6e 2e 0d 0a 0d 0a 54 68 65 nsaction.....The
3920: 20 73 65 63 6f 6e 64 20 61 72 67 75 6d 65 6e 74 second argument
3930: 20 74 6f 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e to callback fun
3940: 63 74 69 6f 6e 73 20 69 73 20 61 20 64 69 63 74 ctions is a dict
3950: 69 6f 6e 61 72 79 20 77 69 74 68 20 6b 65 79 73 ionary with keys
3960: 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 depending on th
3970: 65 20 6b 69 6e 64 20 6f 66 20 74 68 65 20 65 76 e kind of the ev
3980: 65 6e 74 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 ent. The followi
3990: 6e 67 20 70 61 72 61 67 72 61 70 68 73 20 6c 69 ng paragraphs li
39a0: 73 74 20 74 68 65 20 76 61 72 69 6f 75 73 20 65 st the various e
39b0: 76 65 6e 74 20 66 6f 72 6d 61 74 73 2e 0d 0a 0d vent formats....
39c0: 0a 3c 74 74 3e 68 61 6e 64 6c 65 20 3c 69 3e 68 .<tt>handle <i>h
39d0: 3c 2f 69 3e 20 73 74 61 74 65 20 3c 69 3e 73 3c </i> state <i>s<
39e0: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
39f0: 43 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 61 74 65 Connection state
3a00: 20 65 76 65 6e 74 20 66 6f 72 20 3c 74 74 3e 62 event for <tt>b
3a10: 6c 65 20 73 63 61 6e 3c 2f 74 74 3e 2e 20 3c 74 le scan</tt>. <t
3a20: 74 3e 73 74 61 74 65 3c 2f 74 74 3e 20 63 61 6e t>state</tt> can
3a30: 20 62 65 20 6f 6e 65 20 6f 66 20 3c 74 74 3e 73 be one of <tt>s
3a40: 63 61 6e 6e 69 6e 67 3c 2f 74 74 3e 20 6f 72 20 canning</tt> or
3a50: 3c 74 74 3e 69 64 6c 65 3c 2f 74 74 3e 2e 0d 0a <tt>idle</tt>...
3a60: 0d 0a 3c 74 74 3e 68 61 6e 64 6c 65 20 3c 69 3e ..<tt>handle <i>
3a70: 68 3c 2f 69 3e 20 61 64 64 72 65 73 73 20 3c 69 h</i> address <i
3a80: 3e 61 3c 2f 69 3e 20 73 74 61 74 65 20 3c 69 3e >a</i> state <i>
3a90: 73 3c 2f 69 3e 20 72 73 73 69 20 3c 69 3e 72 3c s</i> rssi <i>r<
3aa0: 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 /i></tt>....
3ab0: 43 6f 6e 6e 65 63 74 69 6f 6e 20 73 74 61 74 65 Connection state
3ac0: 20 65 76 65 6e 74 20 66 6f 72 20 3c 74 74 3e 62 event for <tt>b
3ad0: 6c 65 20 63 6f 6e 6e 65 63 74 3c 2f 74 74 3e 2e le connect</tt>.
3ae0: 20 3c 74 74 3e 73 74 61 74 65 3c 2f 74 74 3e 20 <tt>state</tt>
3af0: 63 61 6e 20 62 65 20 6f 6e 65 20 6f 66 20 3c 74 can be one of <t
3b00: 74 3e 64 69 73 63 6f 6e 6e 65 63 74 65 64 3c 2f t>disconnected</
3b10: 74 74 3e 2c 20 3c 74 74 3e 64 69 73 63 6f 76 65 tt>, <tt>discove
3b20: 72 79 3c 2f 74 74 3e 2c 20 6f 72 20 3c 74 74 3e ry</tt>, or <tt>
3b30: 63 6f 6e 6e 65 63 74 65 64 3c 2f 74 74 3e 2e 20 connected</tt>.
3b40: 49 6e 20 74 68 65 20 64 69 73 63 6f 76 65 72 79 In the discovery
3b50: 20 70 68 61 73 65 20 74 68 65 20 73 65 72 76 69 phase the servi
3b60: 63 65 73 2c 20 63 68 61 72 61 63 74 65 72 69 73 ces, characteris
3b70: 74 69 63 73 2c 20 61 6e 64 20 64 65 73 63 72 69 tics, and descri
3b80: 70 74 6f 72 73 20 6f 66 20 74 68 65 20 72 65 6d ptors of the rem
3b90: 6f 74 65 20 64 65 76 69 63 65 20 61 72 65 20 67 ote device are g
3ba0: 61 74 68 65 72 65 64 2e 20 54 68 65 20 3c 74 74 athered. The <tt
3bb0: 3e 72 73 73 69 3c 2f 74 74 3e 20 66 69 65 6c 64 >rssi</tt> field
3bc0: 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 6c 61 contains the la
3bd0: 73 74 20 72 65 61 64 20 72 65 6d 6f 74 65 20 53 st read remote S
3be0: 53 49 20 20 28 73 69 67 6e 61 6c 20 73 74 72 65 SI (signal stre
3bf0: 6e 67 74 68 20 69 6e 64 69 63 61 74 6f 72 29 20 ngth indicator)
3c00: 69 6e 20 64 42 6d 20 61 73 20 69 6e 74 65 67 65 in dBm as intege
3c10: 72 20 6e 75 6d 62 65 72 2e 0d 0a 0d 0a 3c 74 74 r number.....<tt
3c20: 3e 68 61 6e 64 6c 65 20 3c 69 3e 68 3c 2f 69 3e >handle <i>h</i>
3c30: 20 73 74 61 74 65 20 3c 69 3e 73 3c 2f 69 3e 20 state <i>s</i>
3c40: 61 64 64 72 65 73 73 20 3c 69 3e 61 3c 2f 69 3e address <i>a</i>
3c50: 20 6e 61 6d 65 20 3c 69 3e 6e 3c 2f 69 3e 20 74 name <i>n</i> t
3c60: 79 70 65 20 3c 69 3e 74 3c 2f 69 3e 20 72 73 73 ype <i>t</i> rss
3c70: 69 20 3c 69 3e 72 3c 2f 69 3e 3c 2f 74 74 3e 0d i <i>r</i></tt>.
3c80: 0a 0d 0a 20 20 20 20 53 63 61 6e 20 72 65 73 75 ... Scan resu
3c90: 6c 74 20 65 76 65 6e 74 2e 20 3c 74 74 3e 61 64 lt event. <tt>ad
3ca0: 64 72 65 73 73 3c 2f 74 74 3e 20 69 73 20 74 68 dress</tt> is th
3cb0: 65 20 42 6c 75 65 74 6f 6f 74 68 20 61 64 64 72 e Bluetooth addr
3cc0: 65 73 73 20 6f 66 20 74 68 65 20 72 65 6d 6f 74 ess of the remot
3cd0: 65 20 64 65 76 69 63 65 2c 20 3c 74 74 3e 6e 61 e device, <tt>na
3ce0: 6d 65 3c 2f 74 74 3e 20 69 74 27 73 20 61 64 76 me</tt> it's adv
3cf0: 65 72 74 69 73 65 64 20 66 72 69 65 6e 64 6c 79 ertised friendly
3d00: 20 6e 61 6d 65 2c 20 3c 74 74 3e 74 79 70 65 3c name, <tt>type<
3d10: 2f 74 74 3e 20 74 68 65 20 64 65 76 69 63 65 20 /tt> the device
3d20: 74 79 70 65 20 61 73 20 69 6e 74 65 67 65 72 2c type as integer,
3d30: 20 3c 74 74 3e 72 73 73 69 3c 2f 74 74 3e 20 74 <tt>rssi</tt> t
3d40: 68 65 20 72 65 63 65 69 76 65 20 53 53 49 20 69 he receive SSI i
3d50: 6e 20 64 42 6d 20 61 73 20 69 6e 74 65 67 65 72 n dBm as integer
3d60: 2e 0d 0a 0d 0a 3c 74 74 3e 68 61 6e 64 6c 65 20 .....<tt>handle
3d70: 3c 69 3e 68 3c 2f 69 3e 20 61 64 64 72 65 73 73 <i>h</i> address
3d80: 20 3c 69 3e 61 3c 2f 69 3e 20 73 74 61 74 65 20 <i>a</i> state
3d90: 3c 69 3e 73 3c 2f 69 3e 20 72 73 73 69 20 3c 69 <i>s</i> rssi <i
3da0: 3e 72 3c 2f 69 3e 20 73 75 75 69 64 20 3c 69 3e >r</i> suuid <i>
3db0: 73 75 3c 2f 69 3e 20 73 69 6e 73 74 61 6e 63 65 su</i> sinstance
3dc0: 20 3c 69 3e 73 69 3c 2f 69 3e 20 74 79 70 65 20 <i>si</i> type
3dd0: 3c 69 3e 74 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d <i>t</i></tt>...
3de0: 0a 20 20 20 20 53 65 72 76 69 63 65 20 64 69 73 . Service dis
3df0: 63 6f 76 65 72 79 20 65 76 65 6e 74 2e 20 3c 74 covery event. <t
3e00: 74 3e 73 75 75 69 64 3c 2f 74 74 3e 20 69 73 20 t>suuid</tt> is
3e10: 74 68 65 20 55 55 49 44 20 6f 66 20 74 68 65 20 the UUID of the
3e20: 73 65 72 76 69 63 65 2c 20 3c 74 74 3e 73 69 6e service, <tt>sin
3e30: 73 74 61 6e 63 65 3c 2f 74 74 3e 20 74 68 65 20 stance</tt> the
3e40: 69 6e 73 74 61 6e 63 65 20 6f 66 20 74 68 61 74 instance of that
3e50: 20 73 65 72 76 69 63 65 20 61 73 20 69 6e 74 65 service as inte
3e60: 67 65 72 20 6e 75 6d 62 65 72 2e 20 52 65 66 65 ger number. Refe
3e70: 72 20 74 6f 20 3c 61 20 68 72 65 66 3d 22 68 74 r to <a href="ht
3e80: 74 70 73 3a 2f 2f 64 65 76 65 6c 6f 70 65 72 2e tps://developer.
3e90: 61 6e 64 72 6f 69 64 2e 63 6f 6d 2f 72 65 66 65 android.com/refe
3ea0: 72 65 6e 63 65 2f 61 6e 64 72 6f 69 64 2f 62 6c rence/android/bl
3eb0: 75 65 74 6f 6f 74 68 2f 42 6c 75 65 74 6f 6f 74 uetooth/Bluetoot
3ec0: 68 47 61 74 74 53 65 72 76 69 63 65 2e 68 74 6d hGattService.htm
3ed0: 6c 22 3e 42 6c 75 65 74 6f 6f 74 68 47 61 74 74 l">BluetoothGatt
3ee0: 53 65 72 76 69 63 65 3c 2f 61 3e 20 66 6f 72 20 Service</a> for
3ef0: 64 65 74 61 69 6c 73 2e 0d 0a 0d 0a 3c 74 74 3e details.....<tt>
3f00: 68 61 6e 64 6c 65 20 3c 69 3e 68 3c 2f 69 3e 20 handle <i>h</i>
3f10: 61 64 64 72 65 73 73 20 3c 69 3e 61 3c 2f 69 3e address <i>a</i>
3f20: 20 73 74 61 74 65 20 3c 69 3e 73 3c 2f 69 3e 20 state <i>s</i>
3f30: 72 73 73 69 20 3c 69 3e 72 3c 2f 69 3e 20 73 75 rssi <i>r</i> su
3f40: 75 69 64 20 3c 69 3e 73 75 3c 2f 69 3e 20 73 69 uid <i>su</i> si
3f50: 6e 73 74 61 6e 63 65 20 3c 69 3e 73 69 3c 2f 69 nstance <i>si</i
3f60: 3e 20 63 75 75 69 64 20 3c 69 3e 63 69 3c 2f 69 > cuuid <i>ci</i
3f70: 3e 20 63 69 6e 73 74 61 6e 63 65 20 3c 69 3e 63 > cinstance <i>c
3f80: 69 3c 2f 69 3e 20 70 65 72 6d 69 73 73 69 6f 6e i</i> permission
3f90: 73 20 3c 69 3e 70 3c 2f 69 3e 20 70 72 6f 70 65 s <i>p</i> prope
3fa0: 72 74 69 65 73 20 3c 69 3e 71 3c 2f 69 3e 20 77 rties <i>q</i> w
3fb0: 72 69 74 65 74 79 70 65 20 3c 69 3e 77 3c 2f 69 ritetype <i>w</i
3fc0: 3e 20 61 63 63 65 73 73 20 3c 69 3e 61 3c 2f 69 > access <i>a</i
3fd0: 3e 20 76 61 6c 75 65 20 3c 69 3e 76 3c 2f 69 3e > value <i>v</i>
3fe0: 3c 2f 74 74 3e 0d 0a 0d 0a 20 20 20 20 43 68 61 </tt>.... Cha
3ff0: 72 61 63 74 65 72 69 73 74 69 63 20 65 76 65 6e racteristic even
4000: 74 2e 20 3c 74 74 3e 63 75 75 69 64 3c 2f 74 74 t. <tt>cuuid</tt
4010: 3e 20 69 73 20 74 68 65 20 55 55 49 44 20 6f 66 > is the UUID of
4020: 20 74 68 65 20 63 68 61 72 61 63 74 65 72 69 73 the characteris
4030: 74 69 63 2c 20 3c 74 74 3e 63 69 6e 73 74 61 6e tic, <tt>cinstan
4040: 63 65 3c 2f 74 74 3e 20 74 68 65 20 69 6e 73 74 ce</tt> the inst
4050: 61 6e 63 65 20 6f 66 20 74 68 61 74 20 63 68 61 ance of that cha
4060: 72 61 63 74 65 72 69 73 74 69 63 20 61 73 20 69 racteristic as i
4070: 6e 74 65 67 65 72 20 6e 75 6d 62 65 72 2e 20 54 nteger number. T
4080: 68 65 20 69 74 65 6d 73 20 3c 74 74 3e 70 65 72 he items <tt>per
4090: 6d 69 73 73 69 6f 6e 3c 2f 74 74 3e 2c 20 3c 74 mission</tt>, <t
40a0: 74 3e 70 72 6f 70 65 72 74 69 65 73 3c 2f 74 74 t>properties</tt
40b0: 3e 2c 20 61 6e 64 20 3c 74 74 3e 77 72 69 74 65 >, and <tt>write
40c0: 74 79 70 65 3c 2f 74 74 3e 20 61 72 65 20 69 6e type</tt> are in
40d0: 74 65 67 65 72 20 6e 75 6d 62 65 72 73 2c 20 74 teger numbers, t
40e0: 6f 6f 2e 20 54 68 65 20 3c 74 74 3e 61 63 63 65 oo. The <tt>acce
40f0: 73 73 3c 2f 74 74 3e 20 69 74 65 6d 20 63 6f 6e ss</tt> item con
4100: 74 61 69 6e 73 20 61 20 6f 6e 65 20 6c 65 74 74 tains a one lett
4110: 65 72 20 63 6f 64 65 20 69 6e 64 69 63 61 74 69 er code indicati
4120: 6e 67 20 74 68 65 20 74 79 70 65 20 6f 66 20 61 ng the type of a
4130: 63 63 65 73 73 20 28 27 63 27 20 66 6f 72 20 63 ccess ('c' for c
4140: 68 61 6e 67 65 20 6e 6f 74 69 66 69 63 61 74 69 hange notificati
4150: 6f 6e 2c 20 27 64 27 20 66 6f 72 20 64 69 73 63 on, 'd' for disc
4160: 6f 76 65 72 79 2c 20 27 72 27 20 66 6f 72 20 72 overy, 'r' for r
4170: 65 61 64 2c 20 27 77 27 20 66 6f 72 20 77 72 69 ead, 'w' for wri
4180: 74 65 29 2e 20 54 68 65 20 3c 74 74 3e 76 61 6c te). The <tt>val
4190: 75 65 3c 2f 74 74 3e 20 69 74 65 6d 20 68 6f 6c ue</tt> item hol
41a0: 64 73 20 74 68 65 20 64 61 74 61 20 6f 66 20 74 ds the data of t
41b0: 68 65 20 63 68 61 72 61 63 74 65 72 69 73 74 69 he characteristi
41c0: 63 20 61 73 20 61 20 62 79 74 65 20 61 72 72 61 c as a byte arra
41d0: 79 2e 20 49 74 27 73 20 69 6e 74 65 72 70 72 65 y. It's interpre
41e0: 74 61 74 69 6f 6e 20 69 73 20 64 65 76 69 63 65 tation is device
41f0: 2f 63 68 61 72 61 63 74 65 72 69 73 74 69 63 20 /characteristic
4200: 64 65 70 65 6e 64 69 6e 67 2e 20 54 68 69 73 20 depending. This
4210: 65 76 65 6e 74 20 69 73 20 72 65 70 6f 72 74 65 event is reporte
4220: 64 20 64 75 72 69 6e 67 20 64 69 73 63 6f 76 65 d during discove
4230: 72 79 20 61 6e 64 20 6e 6f 72 6d 61 6c 20 6f 70 ry and normal op
4240: 65 72 61 74 69 6f 6e 20 77 68 65 6e 20 3c 74 74 eration when <tt
4250: 3e 62 6c 65 20 72 65 61 64 3c 2f 74 74 3e 20 6f >ble read</tt> o
4260: 72 20 3c 74 74 3e 62 6c 65 20 77 72 69 74 65 3c r <tt>ble write<
4270: 2f 74 74 3e 20 61 72 65 20 70 65 72 66 6f 72 6d /tt> are perform
4280: 65 64 20 6c 6f 63 61 6c 6c 79 20 6f 72 20 6e 6f ed locally or no
4290: 74 69 66 69 63 61 74 69 6f 6e 73 20 66 6f 72 20 tifications for
42a0: 74 68 65 20 63 68 61 72 61 63 74 65 72 69 73 74 the characterist
42b0: 69 63 20 61 72 65 20 65 6e 61 62 6c 65 64 20 75 ic are enabled u
42c0: 73 69 6e 67 20 3c 74 74 3e 62 6c 65 20 65 6e 61 sing <tt>ble ena
42d0: 62 6c 65 3c 2f 74 74 3e 2e 20 52 65 66 65 72 20 ble</tt>. Refer
42e0: 74 6f 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 to <a href="http
42f0: 73 3a 2f 2f 64 65 76 65 6c 6f 70 65 72 2e 61 6e s://developer.an
4300: 64 72 6f 69 64 2e 63 6f 6d 2f 72 65 66 65 72 65 droid.com/refere
4310: 6e 63 65 2f 61 6e 64 72 6f 69 64 2f 62 6c 75 65 nce/android/blue
4320: 74 6f 6f 74 68 2f 42 6c 75 65 74 6f 6f 74 68 47 tooth/BluetoothG
4330: 61 74 74 43 68 61 72 61 63 74 65 72 69 73 74 69 attCharacteristi
4340: 63 2e 68 74 6d 6c 22 3e 42 6c 75 65 74 6f 6f 74 c.html">Bluetoot
4350: 68 47 61 74 74 43 68 61 72 61 63 74 65 72 69 73 hGattCharacteris
4360: 74 69 63 3c 2f 61 3e 20 66 6f 72 20 64 65 74 61 tic</a> for deta
4370: 69 6c 73 2e 0d 0a 0d 0a 3c 74 74 3e 68 61 6e 64 ils.....<tt>hand
4380: 6c 65 20 3c 69 3e 68 3c 2f 69 3e 20 61 64 64 72 le <i>h</i> addr
4390: 65 73 73 20 3c 69 3e 61 3c 2f 69 3e 20 73 74 61 ess <i>a</i> sta
43a0: 74 65 20 3c 69 3e 73 3c 2f 69 3e 20 72 73 73 69 te <i>s</i> rssi
43b0: 20 3c 69 3e 72 3c 2f 69 3e 20 73 75 75 69 64 20 <i>r</i> suuid
43c0: 3c 69 3e 73 75 3c 2f 69 3e 20 73 69 6e 73 74 61 <i>su</i> sinsta
43d0: 6e 63 65 20 3c 69 3e 73 69 3c 2f 69 3e 20 63 75 nce <i>si</i> cu
43e0: 75 69 64 20 3c 69 3e 63 69 3c 2f 69 3e 20 63 69 uid <i>ci</i> ci
43f0: 6e 73 74 61 6e 63 65 20 3c 69 3e 63 69 3c 2f 69 nstance <i>ci</i
4400: 3e 20 64 75 75 69 64 20 3c 69 3e 64 69 3c 2f 69 > duuid <i>di</i
4410: 3e 20 70 65 72 6d 69 73 73 69 6f 6e 73 20 3c 69 > permissions <i
4420: 3e 70 3c 2f 69 3e 20 61 63 63 65 73 73 20 3c 69 >p</i> access <i
4430: 3e 61 3c 2f 69 3e 20 20 76 61 6c 75 65 20 3c 69 >a</i> value <i
4440: 3e 76 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a 0d 0a 20 >v</i></tt>....
4450: 20 20 20 44 65 73 63 72 69 70 74 6f 72 20 65 76 Descriptor ev
4460: 65 6e 74 2e 20 3c 74 74 3e 64 75 75 69 64 3c 2f ent. <tt>duuid</
4470: 74 74 3e 20 69 73 20 74 68 65 20 55 55 49 44 20 tt> is the UUID
4480: 6f 66 20 74 68 65 20 64 65 73 63 72 69 70 74 6f of the descripto
4490: 72 2e 20 54 68 65 20 69 74 65 6d 20 3c 74 74 3e r. The item <tt>
44a0: 70 65 72 6d 69 73 73 69 6f 6e 3c 2f 74 74 3e 20 permission</tt>
44b0: 69 73 20 61 6e 20 69 6e 74 65 67 65 72 20 6e 75 is an integer nu
44c0: 6d 62 65 72 2c 20 74 6f 6f 2e 20 54 68 65 20 3c mber, too. The <
44d0: 74 74 3e 61 63 63 65 73 73 3c 2f 74 74 3e 20 69 tt>access</tt> i
44e0: 74 65 6d 20 63 6f 6e 74 61 69 6e 73 20 61 20 6f tem contains a o
44f0: 6e 65 20 6c 65 74 74 65 72 20 63 6f 64 65 20 69 ne letter code i
4500: 6e 64 69 63 61 74 69 6e 67 20 74 68 65 20 74 79 ndicating the ty
4510: 70 65 20 6f 66 20 61 63 63 65 73 73 20 28 27 64 pe of access ('d
4520: 27 20 66 6f 72 20 64 69 73 63 6f 76 65 72 79 2c ' for discovery,
4530: 20 27 72 27 20 66 6f 72 20 72 65 61 64 2c 20 27 'r' for read, '
4540: 77 27 20 66 6f 72 20 77 72 69 74 65 29 2e 20 54 w' for write). T
4550: 68 65 20 3c 74 74 3e 76 61 6c 75 65 3c 2f 74 74 he <tt>value</tt
4560: 3e 20 69 74 65 6d 20 68 6f 6c 64 73 20 74 68 65 > item holds the
4570: 20 64 61 74 61 20 6f 66 20 74 68 65 20 64 65 73 data of the des
4580: 63 72 69 70 74 6f 72 20 61 73 20 61 20 62 79 74 criptor as a byt
4590: 65 20 61 72 72 61 79 2e 20 49 74 27 73 20 69 6e e array. It's in
45a0: 74 65 72 70 72 65 74 61 74 69 6f 6e 20 69 73 20 terpretation is
45b0: 64 65 76 69 63 65 2f 63 68 61 72 61 63 74 65 72 device/character
45c0: 69 73 74 69 63 2f 64 65 73 63 72 69 70 74 6f 72 istic/descriptor
45d0: 20 64 65 70 65 6e 64 69 6e 67 2e 20 54 68 69 73 depending. This
45e0: 20 65 76 65 6e 74 20 69 73 20 72 65 70 6f 72 74 event is report
45f0: 65 64 20 64 75 72 69 6e 67 20 64 69 73 63 6f 76 ed during discov
4600: 65 72 79 20 61 6e 64 20 6e 6f 72 6d 61 6c 20 6f ery and normal o
4610: 70 65 72 61 74 69 6f 6e 20 77 68 65 6e 20 3c 74 peration when <t
4620: 74 3e 62 6c 65 20 64 72 65 61 64 3c 2f 74 74 3e t>ble dread</tt>
4630: 20 6f 72 20 3c 74 74 3e 62 6c 65 20 64 77 72 69 or <tt>ble dwri
4640: 74 65 3c 2f 74 74 3e 20 61 72 65 20 70 65 72 66 te</tt> are perf
4650: 6f 72 6d 65 64 20 6c 6f 63 61 6c 6c 79 2e 20 52 ormed locally. R
4660: 65 66 65 72 20 74 6f 20 3c 61 20 68 72 65 66 3d efer to <a href=
4670: 22 68 74 74 70 73 3a 2f 2f 64 65 76 65 6c 6f 70 "https://develop
4680: 65 72 2e 61 6e 64 72 6f 69 64 2e 63 6f 6d 2f 72 er.android.com/r
4690: 65 66 65 72 65 6e 63 65 2f 61 6e 64 72 6f 69 64 eference/android
46a0: 2f 62 6c 75 65 74 6f 6f 74 68 2f 42 6c 75 65 74 /bluetooth/Bluet
46b0: 6f 6f 74 68 47 61 74 74 44 65 73 63 72 69 70 74 oothGattDescript
46c0: 6f 72 2e 68 74 6d 6c 22 3e 42 6c 75 65 74 6f 6f or.html">Bluetoo
46d0: 74 68 47 61 74 74 44 65 73 63 72 69 70 74 6f 72 thGattDescriptor
46e0: 3c 2f 61 3e 20 66 6f 72 20 64 65 74 61 69 6c 73 </a> for details
46f0: 2e 0d 0a 0d 0a 3c 74 74 3e 68 61 6e 64 6c 65 20 .....<tt>handle
4700: 3c 69 3e 68 3c 2f 69 3e 20 73 75 63 63 65 73 73 <i>h</i> success
4710: 20 3c 69 3e 73 3c 2f 69 3e 3c 2f 74 74 3e 0d 0a <i>s</i></tt>..
4720: 0d 0a 20 20 20 20 54 72 61 6e 73 61 63 74 69 6f .. Transactio
4730: 6e 20 72 65 73 75 6c 74 20 65 76 65 6e 74 2e 20 n result event.
4740: 3c 74 74 3e 73 75 63 63 65 73 73 3c 2f 74 74 3e <tt>success</tt>
4750: 20 69 73 20 74 68 65 20 74 72 61 6e 73 61 63 74 is the transact
4760: 69 6f 6e 20 72 65 73 75 6c 74 20 61 6e 64 20 69 ion result and i
4770: 73 20 31 20 66 6f 72 20 73 75 63 63 65 73 73 20 s 1 for success
4780: 6f 72 20 30 20 66 6f 72 20 66 61 69 6c 75 72 65 or 0 for failure
4790: 2e 0d 0a 0d 0a 3c 68 33 3e 45 78 61 6d 70 6c 65 .....<h3>Example
47a0: 3c 2f 68 33 3e 0d 0a 0d 0a 54 68 65 20 66 6f 6c </h3>....The fol
47b0: 6c 6f 77 69 6e 67 20 65 78 61 6d 70 6c 65 20 73 lowing example s
47c0: 63 61 6e 73 20 66 6f 72 20 42 6c 75 65 74 6f 6f cans for Bluetoo
47d0: 74 68 20 4c 45 20 64 65 76 69 63 65 73 2c 20 63 th LE devices, c
47e0: 6f 6e 6e 65 63 74 73 20 74 6f 20 61 20 3c 61 20 onnects to a <a
47f0: 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 77 77 77 href="http://www
4800: 2e 74 69 2e 63 6f 6d 2f 74 6f 6f 6c 2f 63 63 32 .ti.com/tool/cc2
4810: 35 34 31 64 6b 2d 73 65 6e 73 6f 72 22 3e 54 49 541dk-sensor">TI
4820: 20 53 65 6e 73 6f 72 54 61 67 3c 2f 61 3e 20 61 SensorTag</a> a
4830: 6e 64 20 65 6e 61 62 6c 65 73 20 6e 6f 74 69 66 nd enables notif
4840: 69 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 ications of the
4850: 62 75 74 74 6f 6e 73 20 6f 66 20 74 68 65 20 64 buttons of the d
4860: 65 76 69 63 65 2e 0d 0a 0d 0a 3c 76 65 72 62 61 evice.....<verba
4870: 74 69 6d 3e 0d 0a 0d 0a 20 20 20 20 70 72 6f 63 tim>.... proc
4880: 20 62 6c 65 5f 68 61 6e 64 6c 65 72 20 7b 77 68 ble_handler {wh
4890: 61 74 20 64 61 74 61 7d 20 7b 0d 0a 20 20 20 20 at data} {..
48a0: 20 20 20 20 73 77 69 74 63 68 20 2d 2d 20 24 77 switch -- $w
48b0: 68 61 74 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 hat {..
48c0: 20 20 20 73 63 61 6e 20 7b 0d 0a 20 20 20 20 20 scan {..
48d0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b if {[
48e0: 64 69 63 74 20 67 65 74 20 24 64 61 74 61 20 6e dict get $data n
48f0: 61 6d 65 5d 20 65 71 20 22 53 65 6e 73 6f 72 54 ame] eq "SensorT
4900: 61 67 22 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 ag"} {..
4910: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66 6f # fo
4920: 75 6e 64 20 74 68 65 20 54 49 20 53 65 6e 73 6f und the TI Senso
4930: 72 54 61 67 2c 20 63 6f 6e 6e 65 63 74 20 69 74 rTag, connect it
4940: 2c 20 73 74 6f 70 20 74 68 65 20 73 63 61 6e 6e , stop the scann
4950: 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 er..
4960: 20 20 20 20 20 20 20 20 62 6c 65 20 63 6f 6e 6e ble conn
4970: 65 63 74 20 5b 64 69 63 74 20 67 65 74 20 24 64 ect [dict get $d
4980: 61 74 61 20 61 64 64 72 65 73 73 5d 20 62 6c 65 ata address] ble
4990: 5f 68 61 6e 64 6c 65 72 20 31 0d 0a 20 20 20 20 _handler 1..
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
49b0: 62 6c 65 20 63 6c 6f 73 65 20 5b 64 69 63 74 20 ble close [dict
49c0: 67 65 74 20 24 64 61 74 61 20 68 61 6e 64 6c 65 get $data handle
49d0: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ]..
49e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
49f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 }..
4a00: 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 7b 0d 0a 20 connection {..
4a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
4a20: 66 20 7b 5b 64 69 63 74 20 67 65 74 20 24 64 61 f {[dict get $da
4a30: 74 61 20 73 74 61 74 65 5d 20 3d 3d 20 22 64 69 ta state] == "di
4a40: 73 63 6f 6e 6e 65 63 74 65 64 22 7d 20 7b 0d 0a sconnected"} {..
4a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4a60: 20 20 20 20 23 20 66 61 6c 6c 20 62 61 63 6b 20 # fall back
4a70: 74 6f 20 73 63 61 6e 6e 69 6e 67 0d 0a 20 20 20 to scanning..
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4a90: 20 62 6c 65 20 63 6c 6f 73 65 20 5b 64 69 63 74 ble close [dict
4aa0: 20 67 65 74 20 24 64 61 74 61 20 68 61 6e 64 6c get $data handl
4ab0: 65 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 e]..
4ac0: 20 20 20 20 20 20 20 20 62 6c 65 20 73 74 61 72 ble star
4ad0: 74 20 5b 62 6c 65 20 73 63 61 6e 6e 65 72 20 62 t [ble scanner b
4ae0: 6c 65 5f 68 61 6e 64 6c 65 72 5d 0d 0a 20 20 20 le_handler]..
4af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 65 } e
4b00: 6c 73 65 69 66 20 7b 5b 64 69 63 74 20 67 65 74 lseif {[dict get
4b10: 20 24 64 61 74 61 20 73 74 61 74 65 5d 20 3d 3d $data state] ==
4b20: 20 22 63 6f 6e 6e 65 63 74 65 64 22 7d 20 7b 0d "connected"} {.
4b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
4b40: 20 20 20 20 20 23 20 69 66 20 74 68 65 20 54 49 # if the TI
4b50: 20 53 65 6e 73 6f 72 54 61 67 20 62 75 74 74 6f SensorTag butto
4b60: 6e 73 20 77 65 72 65 20 66 6f 75 6e 64 2c 0d 0a ns were found,..
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4b80: 20 20 20 20 23 20 69 74 20 77 69 6c 6c 20 62 65 # it will be
4b90: 20 65 6e 61 62 6c 65 64 20 66 6f 72 20 6e 6f 74 enabled for not
4ba0: 69 66 69 63 61 74 69 6f 6e 73 20 6e 6f 77 0d 0a ifications now..
4bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4bc0: 20 20 20 20 73 65 74 20 68 61 6e 64 6c 65 20 5b set handle [
4bd0: 64 69 63 74 20 67 65 74 20 24 64 61 74 61 20 68 dict get $data h
4be0: 61 6e 64 6c 65 5d 0d 0a 20 20 20 20 20 20 20 20 andle]..
4bf0: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
4c00: 63 6d 64 20 5b 62 6c 65 20 75 73 65 72 64 61 74 cmd [ble userdat
4c10: 61 20 24 68 61 6e 64 6c 65 5d 0d 0a 20 20 20 20 a $handle]..
4c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4c30: 69 66 20 7b 24 63 6d 64 20 6e 65 20 7b 7d 7d 20 if {$cmd ne {}}
4c40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {..
4c50: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b if {[
4c60: 7b 2a 7d 24 63 6d 64 5d 7d 20 7b 0d 0a 20 20 20 {*}$cmd]} {..
4c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4c80: 20 20 20 20 20 20 20 20 20 23 20 73 75 63 63 65 # succe
4c90: 73 73 2c 20 63 6c 65 61 72 20 75 73 65 72 64 61 ss, clear userda
4ca0: 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ta..
4cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4cc0: 62 6c 65 20 75 73 65 72 64 61 74 61 20 24 68 61 ble userdata $ha
4cd0: 6e 64 6c 65 20 7b 7d 0d 0a 20 20 20 20 20 20 20 ndle {}..
4ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4cf0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }..
4d00: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 }..
4d10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 }..
4d20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 }..
4d30: 20 20 20 20 20 20 20 20 20 64 65 73 63 72 69 70 descrip
4d40: 74 6f 72 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 tor {..
4d50: 20 20 20 20 20 20 20 69 66 20 7b 5b 73 74 72 69 if {[stri
4d60: 6e 67 20 6d 61 74 63 68 20 22 2a 32 39 30 32 2d ng match "*2902-
4d70: 2a 22 20 5b 64 69 63 74 20 67 65 74 20 24 64 61 *" [dict get $da
4d80: 74 61 20 64 75 75 69 64 5d 5d 20 26 26 0d 0a 20 ta duuid]] &&..
4d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4da0: 20 20 20 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 [string match
4db0: 20 22 2a 46 46 45 31 2d 2a 22 20 5b 64 69 63 74 "*FFE1-*" [dict
4dc0: 20 67 65 74 20 24 64 61 74 61 20 63 75 75 69 64 get $data cuuid
4dd0: 5d 5d 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 ]]} {..
4de0: 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 73 # des
4df0: 63 72 69 70 74 6f 72 20 66 6f 72 20 54 49 20 53 criptor for TI S
4e00: 65 6e 73 6f 72 54 61 67 20 62 75 74 74 6f 6e 73 ensorTag buttons
4e10: 20 66 6f 75 6e 64 0d 0a 20 20 20 20 20 20 20 20 found..
4e20: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 set
4e30: 66 6c 61 67 20 30 0d 0a 20 20 20 20 20 20 20 20 flag 0..
4e40: 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 6f # no
4e50: 74 69 66 69 63 61 74 69 6f 6e 20 65 6e 61 62 6c tification enabl
4e60: 65 20 73 74 61 74 65 2c 20 31 36 20 62 69 74 20 e state, 16 bit
4e70: 6c 69 74 74 6c 65 2d 65 6e 64 69 61 6e 0d 0a 20 little-endian..
4e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4e90: 20 20 20 23 20 20 30 78 30 30 30 30 20 3d 20 64 # 0x0000 = d
4ea0: 69 73 61 62 6c 65 64 2c 20 30 78 30 30 30 31 20 isabled, 0x0001
4eb0: 3d 20 65 6e 61 62 6c 65 64 0d 0a 20 20 20 20 20 = enabled..
4ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
4ed0: 69 6e 61 72 79 20 73 63 61 6e 20 5b 64 69 63 74 inary scan [dict
4ee0: 20 67 65 74 20 24 64 61 74 61 20 76 61 6c 75 65 get $data value
4ef0: 5d 20 73 20 66 6c 61 67 0d 0a 20 20 20 20 20 20 ] s flag..
4f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if
4f10: 20 7b 21 24 66 6c 61 67 7d 20 7b 0d 0a 20 20 20 {!$flag} {..
4f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
4f30: 20 20 20 20 20 23 20 6c 61 74 65 72 20 74 75 72 # later tur
4f40: 6e 20 6f 6e 20 6e 6f 74 69 66 69 63 61 74 69 6f n on notificatio
4f50: 6e 73 20 6f 66 20 62 75 74 74 6f 6e 20 63 68 61 ns of button cha
4f60: 6e 67 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 nges..
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 se
4f80: 74 20 68 61 6e 64 6c 65 20 5b 64 69 63 74 20 67 t handle [dict g
4f90: 65 74 20 24 64 61 74 61 20 68 61 6e 64 6c 65 5d et $data handle]
4fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
4fb0: 20 20 20 20 20 20 20 20 20 20 62 6c 65 20 75 73 ble us
4fc0: 65 72 64 61 74 61 20 24 68 61 6e 64 6c 65 20 5b erdata $handle [
4fd0: 6c 69 73 74 20 62 6c 65 20 65 6e 61 62 6c 65 20 list ble enable
4fe0: 24 68 61 6e 64 6c 65 20 5c 0d 0a 20 20 20 20 20 $handle \..
4ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5000: 20 20 20 20 20 20 20 5b 64 69 63 74 20 67 65 74 [dict get
5010: 20 24 64 61 74 61 20 73 75 75 69 64 5d 20 5b 64 $data suuid] [d
5020: 69 63 74 20 67 65 74 20 24 64 61 74 61 20 73 69 ict get $data si
5030: 6e 73 74 61 6e 63 65 5d 20 5c 0d 0a 20 20 20 20 nstance] \..
5040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5050: 20 20 20 20 20 20 20 20 5b 64 69 63 74 20 67 65 [dict ge
5060: 74 20 24 64 61 74 61 20 63 75 75 69 64 5d 20 5b t $data cuuid] [
5070: 64 69 63 74 20 67 65 74 20 24 64 61 74 61 20 63 dict get $data c
5080: 69 6e 73 74 61 6e 63 65 5d 5d 0d 0a 20 20 20 20 instance]]..
5090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
50a0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
50b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 }..
50c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a }.. }..
50d0: 20 20 20 20 20 20 20 20 23 20 64 75 6d 70 20 64 # dump d
50e0: 61 74 61 20 74 6f 20 73 74 64 6f 75 74 0d 0a 20 ata to stdout..
50f0: 20 20 20 20 20 20 20 69 66 20 7b 5b 64 69 63 74 if {[dict
5100: 20 65 78 69 73 74 73 20 24 64 61 74 61 20 76 61 exists $data va
5110: 6c 75 65 5d 7d 20 7b 0d 0a 20 20 20 20 20 20 20 lue]} {..
5120: 20 20 20 20 20 23 20 6d 61 6b 65 20 68 65 78 20 # make hex
5130: 73 74 72 69 6e 67 20 66 72 6f 6d 20 62 79 74 65 string from byte
5140: 20 61 72 72 61 79 0d 0a 20 20 20 20 20 20 20 20 array..
5150: 20 20 20 20 62 69 6e 61 72 79 20 73 63 61 6e 20 binary scan
5160: 5b 64 69 63 74 20 67 65 74 20 24 64 61 74 61 20 [dict get $data
5170: 76 61 6c 75 65 5d 20 48 2a 20 76 61 6c 75 65 0d value] H* value.
5180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 69 63 . dic
5190: 74 20 73 65 74 20 64 61 74 61 20 76 61 6c 75 65 t set data value
51a0: 20 24 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 $value..
51b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 }.. puts
51c0: 20 22 24 77 68 61 74 3a 20 24 64 61 74 61 22 0d "$what: $data".
51d0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 62 6c . }.... bl
51e0: 65 20 73 74 61 72 74 20 5b 62 6c 65 20 73 63 61 e start [ble sca
51f0: 6e 6e 65 72 20 62 6c 65 5f 68 61 6e 64 6c 65 72 nner ble_handler
5200: 5d 0d 0a 0d 0a 3c 2f 76 65 72 62 61 74 69 6d 3e ]....</verbatim>
5210: 0a 5a 20 39 66 30 66 32 37 38 37 64 62 39 66 34 .Z 9f0f2787db9f4
5220: 39 33 31 61 64 35 37 61 66 37 62 37 38 35 34 36 931ad57af7b78546
5230: 37 62 63 0a 7bc.