aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: f22609c7c9209916fc1b63de306e1c0d7adc478e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# NimBluez

Modules for access to system [Bluetooth](https://www.bluetooth.com/) resources for the [Nim](http://nim-lang.org/) programming language.

Use [nimbluez.bluetooth](https://github.com/Electric-Blue/NimBluez/nimbluez/bluetooth.nim) module for cross-platform discovery and managing Bluetooth devices and services.

For cross-platform low-level sockets interface implementation for Bluetooth use
[nimbluez.bluetoothnativesockets](https://github.com/Electric-Blue/NimBluez/nimbluez/bluetoothnativesockets.nim).

You can find wrappers for [BlueZ](http://www.bluez.org/) in [nimbluez/bluez](https://github.com/Electric-Blue/NimBluez/nimbluez/bluez/) folder.
For [Microsoft Bluetooth](https://msdn.microsoft.com/en-us/library/windows/desktop/aa362761%28v=vs.85%29.aspx) protocol stack wrappers look at [nimbluez/msbt](https://github.com/Electric-Blue/NimBluez/nimbluez/msbt/).

## Installation
To install using [Nimble](https://github.com/nim-lang/nimble) run the following:
```
$ nimble install nimbluez
```

## Examples

.. code-block:: nim
  # Simple discovery example.  
  import nimbluez.bluetooth

  echo "All visible remote devices:"
  for remoteDevice in getRemoteDevices():
    echo remoteDevice.address, " - ", remoteDevice.name

.. code-block:: nim
  # Simple server example.
  # Attention! This code
  import nimbluez/bluetoothnativesockets

  var serverSocket = newBluetoothNativeSocket(SOCK_STREAM, BTPROTO_RFCOMM)
  discard serverSocket.bindAddr(RfcommPort(0))
  discard serverSocket.listen()
  var
    clientSocket: SocketHandle
    clientAddress: string
  clientSocket = serverSocket.acceptRfcommAddr(clientAddress)
  var
    message: string
  message = clientSocket.recv()
  echo message
  clientSocket.close()
  serverSocket.close()

.. code-block:: nim
  # Simple client example.
  import nimbluez/bluetoothnativesockets

  var clientSocket = newBluetoothNativeSocket(SOCK_STREAM, BTPROTO_RFCOMM)
  discard clientSocket.connect(RfcommPort(1), "00:02:72:0F:5C:87")
  discard clientSocket.send("Hi there!")
  clientSocket.close()

For more examples look at [examples]() folder.