Hex Artifact Content
Not logged in

Artifact a6e7a05540e4d09f6ae542de96a0626b32bbf9fd:

Wiki page [ble command] 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.