diff --git a/README.rst b/README.rst index 573d53a..b09d024 100644 --- a/README.rst +++ b/README.rst @@ -31,28 +31,67 @@ Usage Example .. code-block:: python + # A simple echo test for the Feather M0 Bluefruit + # Sets the name, then echo's all RX'd data with a reversed packet + + import time import busio - import digitalio import board - - from adafruit_bluefruitspi import BluefruitSPI, MsgType + from digitalio import DigitalInOut + from adafruit_bluefruitspi import BluefruitSPI spi_bus = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) - cs = digitalio.DigitalInOut(board.A5) - irq = digitalio.DigitalInOut(board.A4) - bluefruit = BluefruitSPI(spi_bus, cs, irq, debug=True) - - # Send the ATI command - try: - msgtype, msgid, rsp = bluefruit.cmd("ATI\n") - if msgtype == MsgType.ERROR: - print("Error (id:{0})".format(hex(msgid))) - if msgtype == MsgType.RESPONSE: - print("Response:") - print(rsp) - except RuntimeError as error: - print("AT command failure: " + repr(error)) - exit() + cs = DigitalInOut(board.D8) + irq = DigitalInOut(board.D7) + rst = DigitalInOut(board.D4) + bluefruit = BluefruitSPI(spi_bus, cs, irq, rst, debug=False) + + # Initialize the device and perform a factory reset + print("Initializing the Bluefruit LE SPI Friend module") + bluefruit.init() + bluefruit.command_check_OK(b'AT+FACTORYRESET', delay=1) + + # Print the response to 'ATI' (info request) as a string + print(str(bluefruit.command_check_OK(b'ATI'), 'utf-8')) + + # Change advertised name + bluefruit.command_check_OK(b'AT+GAPDEVNAME=BlinkaBLE') + + while True: + print("Waiting for a connection to Bluefruit LE Connect ...") + # Wait for a connection ... + dotcount = 0 + while not bluefruit.connected: + print(".", end="") + dotcount = (dotcount + 1) % 80 + if dotcount == 79: + print("") + time.sleep(0.5) + + # Once connected, check for incoming BLE UART data + print("\n *Connected!*") + connection_timestamp = time.monotonic() + while True: + # Check our connection status every 3 seconds + if time.monotonic() - connection_timestamp > 3: + connection_timestamp = time.monotonic() + if not bluefruit.connected: + break + + # OK we're still connected, see if we have any data waiting + resp = bluefruit.uart_rx() + if not resp: + continue # nothin' + print("Read %d bytes: %s" % (len(resp), resp)) + # Now write it! + print("Writing reverse...") + send = [] + for i in range(len(resp), 0, -1): + send.append(resp[i-1]) + print(bytes(send)) + bluefruit.uart_tx(bytes(send)) + + print("Connection lost.") Contributing ============