From da80e8bf651072cfc844ad9f119888ce366e0c74 Mon Sep 17 00:00:00 2001
From: universam1 <gh@lang-sam.de>
Date: Mon, 18 Dec 2017 02:16:41 +0100
Subject: [PATCH] saving reset pin (#60)

* releasing pins ss and reset

* only make reset optional

* style and description

* Update API doc
---
 API.md       |  6 ++++++
 src/LoRa.cpp | 18 ++++++++++--------
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/API.md b/API.md
index d5b0abc..07c808e 100644
--- a/API.md
+++ b/API.md
@@ -32,6 +32,12 @@ LoRa.setPins(ss, reset, dio0);
 
 This call is optional and only needs to be used if you need to change the default pins used.
 
+#### No MCU controlled reset pin
+
+To save further pins one could connect the reset pin of the MCU with reset pin of the radio thus resetting only during startup.
+
+* `reset` - set to `-1` to omit this pin
+
 ### Set SPI Frequency
 
 Override the default SPI frequency of 10 MHz used by the library. **Must** be called before `LoRa.begin()`.
diff --git a/src/LoRa.cpp b/src/LoRa.cpp
index 9a55046..1f75d15 100644
--- a/src/LoRa.cpp
+++ b/src/LoRa.cpp
@@ -66,17 +66,19 @@ int LoRaClass::begin(long frequency)
 {
   // setup pins
   pinMode(_ss, OUTPUT);
-  pinMode(_reset, OUTPUT);
-
-  // perform reset
-  digitalWrite(_reset, LOW);
-  delay(10);
-  digitalWrite(_reset, HIGH);
-  delay(10);
-
   // set SS high
   digitalWrite(_ss, HIGH);
 
+  if (_reset != -1) {
+    pinMode(_reset, OUTPUT);
+
+    // perform reset
+    digitalWrite(_reset, LOW);
+    delay(10);
+    digitalWrite(_reset, HIGH);
+    delay(10);
+  }
+
   // start SPI
   SPI.begin();