aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorElectric-Blue <Electric-Blue@users.noreply.github.com>2016-01-26 02:03:48 +0300
committerElectric-Blue <Electric-Blue@users.noreply.github.com>2016-01-26 02:03:48 +0300
commit0c4a1cc1c2083a871562364de5df4f9d88ec321e (patch)
treeddb8428845b663c078359eda4ec81bdcc157414f /examples
parent27a7a2a18a6db8b67cbe0e86c37cb174de2a1295 (diff)
downloadNimBluez-0c4a1cc1c2083a871562364de5df4f9d88ec321e.tar.gz
NimBluez-0c4a1cc1c2083a871562364de5df4f9d88ec321e.zip
First version.
Diffstat (limited to 'examples')
-rw-r--r--examples/discovery.nim21
-rw-r--r--examples/nativesocketsclient.nim44
-rw-r--r--examples/nativesocketsserver.nim81
3 files changed, 146 insertions, 0 deletions
diff --git a/examples/discovery.nim b/examples/discovery.nim
new file mode 100644
index 0000000..debe0a2
--- /dev/null
+++ b/examples/discovery.nim
@@ -0,0 +1,21 @@
+# Copyright (c) 2016, Maxim V. Abramov
+# All rights reserved.
+# Look at license.txt for more info.
+
+## Simple Bluetooth local and remote devices discovery implementation.
+
+import strutils
+import ../nimbluez/bluetooth
+
+echo "Local devices:"
+for localDevice in getLocalDevices():
+ echo "$1 - $2" % [localDevice.address, localDevice.name]
+
+ echo " Remote devices:"
+ for remoteDevice in localDevice.getRemoteDevices():
+ echo " $1 - $2" % [remoteDevice.address, remoteDevice.name]
+
+echo ""
+echo "All remote devices:"
+for remoteDevice in getRemoteDevices():
+ echo "$1 - $2" % [remoteDevice.address, remoteDevice.name]
diff --git a/examples/nativesocketsclient.nim b/examples/nativesocketsclient.nim
new file mode 100644
index 0000000..80ef026
--- /dev/null
+++ b/examples/nativesocketsclient.nim
@@ -0,0 +1,44 @@
+import os
+import ../nimbluez/bluetoothnativesockets
+
+let
+ serverPort = RfcommPort(15)
+ serverAddress =
+ "provide_your_server_address_string_here"
+ # "00:02:72:0F:5C:87"
+ # "AC:7B:A1:55:E6:4A"
+
+var clientSocket = newBluetoothNativeSocket(SOCK_STREAM, BTPROTO_RFCOMM)
+if clientSocket == InvalidSocket:
+ raiseOSError(osLastError())
+try:
+ echo "Client socket created: ", repr(clientSocket)
+
+ var name = getRfcommAddr(serverPort, serverAddress)
+ if connect(clientSocket,
+ cast[ptr SockAddr](addr(name)),
+ sizeof(name).SockLen) < 0'i32:
+ raiseOSError(osLastError())
+ echo "Connection established."
+
+ var message = "What time you got?"
+
+ echo "Sending message:"
+ echo " ", message
+ let sentLen = clientSocket.send(cstring(message), cint(message.len), cint(0))
+ if sentLen < 0'i32:
+ raiseOSError(osLastError())
+ echo "Characters sent: ", sentLen
+
+ echo "Receiving message:"
+ message = ""
+ message.setLen(1000)
+ let recvLen = recv(clientSocket, cstring(message), cint(message.len), cint(0))
+ if recvLen < 0'i32:
+ raiseOSError(osLastError())
+ message.setLen(recvLen)
+ echo " ", message
+ echo "Characters received: ", recvLen
+finally:
+ clientSocket.close()
+ echo "Client socket closed."
diff --git a/examples/nativesocketsserver.nim b/examples/nativesocketsserver.nim
new file mode 100644
index 0000000..71ed56e
--- /dev/null
+++ b/examples/nativesocketsserver.nim
@@ -0,0 +1,81 @@
+# Copyright (c) 2016, Maxim V. Abramov
+# All rights reserved.
+# Look at license.txt for more info.
+
+## Simple Bluetooth server implementation based on sockets and RFCOMM protocol.
+
+import os
+import ../nimbluez/bluetoothnativesockets
+
+var
+ serverPort = RfcommPort(15)
+ serverAddress =
+ ""
+ # "00:02:72:0F:5C:87"
+ # "AC:7B:A1:55:E6:4A"
+
+var serverSocket = newBluetoothNativeSocket(SOCK_STREAM, BTPROTO_RFCOMM)
+if serverSocket == InvalidSocket:
+ raiseOSError(osLastError())
+try:
+ var name = getRfcommAddr(serverPort, serverAddress)
+ if bindAddr(serverSocket,
+ cast[ptr SockAddr](addr(name)),
+ sizeof(name).SockLen) < 0'i32:
+ raiseOSError(osLastError())
+ if serverSocket.listen() < 0'i32:
+ raiseOSError(osLastError())
+ echo "Server socket created: ", repr(serverSocket)
+ (serverAddress, serverPort) = serverSocket.getRfcommLocalAddr()
+ echo "Address: ", serverAddress, ", port: ", serverPort
+
+ while true:
+ echo "Waiting for incoming connections..."
+ var
+ sockAddr = getRfcommAddr()
+ addrLen = sizeof(sockAddr).SockLen
+ var clientSocket = accept(serverSocket,
+ cast[ptr SockAddr](addr(sockAddr)),
+ addr(addrLen))
+ if clientSocket == InvalidSocket:
+ raiseOSError(osLastError())
+ try:
+ var
+ clientAddress: string
+ clientPort: RfcommPort
+ (clientAddress, clientPort) = clientSocket.getRfcommPeerAddr()
+ echo "Connection from ", clientAddress, " on port: ", clientPort
+ echo "Client socket: ", repr(clientSocket)
+
+ var message = ""
+ message.setLen(1000)
+ while true:
+ echo "Receiving message:"
+ let recvLen = clientSocket.recv(cstring(message),
+ cint(message.len),
+ cint(0))
+ if recvLen < 0'i32:
+ message.setLen(0)
+ echo osErrorMsg(osLastError())
+ break
+ message.setLen(recvLen)
+ if recvLen == 0'i32:
+ break
+ echo " ", message
+ echo "Characters received: ", recvLen
+
+ message = "Seven twenty-two in the A.M."
+ echo "Sending message:"
+ echo " ", message
+ let sentLen = clientSocket.send(cstring(message),
+ cint(message.len),
+ cint(0))
+ if sentLen < 0'i32:
+ raiseOSError(osLastError())
+ echo "Characters sent: ", sentLen
+ finally:
+ clientSocket.close()
+ echo "Client socket closed."
+finally:
+ serverSocket.close()
+ echo "Server socket closed."