1
0
mirror of https://github.com/sandeepmistry/arduino-LoRa.git synced 2025-04-19 13:02:14 +03:00

Update API documentation

This commit is contained in:
Sandeep Mistry 2016-10-22 15:55:58 -04:00
parent d879e50d33
commit 0db821227e
4 changed files with 198 additions and 32 deletions

189
API.md
View File

@ -19,16 +19,18 @@ LoRa.begin(frequency);
Returns `1` on success, `0` on failure. Returns `1` on success, `0` on failure.
## Set pins ### Set pins
Override the default `NSS` and `NRESET` pins used by the library. **Must** be called before `LoRa.begin()`. Override the default `NSS`, `NRESET`, and `DIO0` pins used by the library. **Must** be called before `LoRa.begin()`.
```arduino ```arduino
LoRa.setPins(ss, reset, dio0); LoRa.setPins(ss, reset, dio0);
``` ```
* `ss` new slave select pin to use, defaults to `10` * `ss` - new slave select pin to use, defaults to `10`
* `reset` new reset pin to use, defaults to `9` * `reset` - new reset pin to use, defaults to `9`
* `dio0` new DIO0 pin to use, defaults to `2` * `dio0` - new DIO0 pin to use, defaults to `2`
This call is optional and only needs to be used if you need to change the default pins used.
### End ### End
@ -46,8 +48,12 @@ Start the sequence of sending a packet.
```arduino ```arduino
LoRa.beginPacket(); LoRa.beginPacket();
LoRa.beginPacket(implicitHeader);
``` ```
* `implicitHeader` - (optional) `true` enables implicit header mode, `false` enables explicit header mode (default)
Returns `1` on success, `0` on failure. Returns `1` on success, `0` on failure.
### Writing ### Writing
@ -59,12 +65,12 @@ LoRa.write(byte);
LoRa.write(buffer, length); LoRa.write(buffer, length);
``` ```
* `byte` single byte to write to packet * `byte` - single byte to write to packet
or or
* `buffer` data to write to packet * `buffer` - data to write to packet
* `length` size of data to write * `length` - size of data to write
Returns the number of bytes written. Returns the number of bytes written.
@ -88,9 +94,44 @@ Check if a packet has been received.
```arduino ```arduino
int packetSize = LoRa.parsePacket(); int packetSize = LoRa.parsePacket();
int packetSize = LoRa.parsePacket(size);
``` ```
Returns the packet size or `0` if no packet was received. * `size` - (optional) if `> 0` implicit header mode is enabled with the expected a packet of `size` bytes, default mode is explicit header mode
Returns the packet size in bytes or `0` if no packet was received.
### Continuous receive mode
#### Register callback
Register a callback function for when a packet is received.
```arduino
LoRa.onReceive(onReceive);
void onReceive(int packetSize) {
// ...
}
```
* `onReceive` - function to call when a packet is received.
#### Receive mode
Puts the radio in continuous receive mode.
```arduino
LoRa.receive();
LoRa.receive(int size);
```
* `size` - (optional) if `> 0` implicit header mode is enabled with the expected a packet of `size` bytes, default mode is explicit header mode
The `onReceive` callback will be called when a packet is received.
### Packet RSSI ### Packet RSSI
@ -100,6 +141,14 @@ int rssi = LoRa.packetRssi();
Returns the RSSI of the received packet. Returns the RSSI of the received packet.
### Packet SNR
```arduino
float snr = LoRa.packetSnr();
```
Returns the estimated SNR of the received packet in dB.
### Available ### Available
```arduino ```arduino
@ -116,7 +165,7 @@ Peek at the next byte in the packet.
byte b = LoRa.peek(); byte b = LoRa.peek();
``` ```
Returns the next byte in the packet or `-1` if no bytes available. Returns the next byte in the packet or `-1` if no bytes are available.
### Reading ### Reading
@ -126,7 +175,125 @@ Read the next byte from the packet.
byte b = LoRa.read(); byte b = LoRa.read();
``` ```
Returns the next byte in the packet or `-1` if no bytes available. Returns the next byte in the packet or `-1` if no bytes are available.
**Note:** Other Arduino [`Stream` API's](https://www.arduino.cc/en/Reference/Stream) can also be used to read data from the packet **Note:** Other Arduino [`Stream` API's](https://www.arduino.cc/en/Reference/Stream) can also be used to read data from the packet
## Other radio modes
### Idle mode
Put the radio in idle (standby) mode.
```arduino
LoRa.idle();
```
### Sleep mode
Put the radio in sleep mode.
```arduino
LoRa.sleep();
```
## Radio parameters
### TX Power
Change the TX power of the radio.
```arduino
LoRa.setTxPower(txPower);
```
* `txPower` - TX power in dB, defaults to `17`
Supported values are between `2` and `17`.
### Frequency
Change the frequency of the radio.
```arduino
LoRa.setFrequency(frequency);
```
* `frequency` - frequency in Hz (`433E6`, `866E6`, `915E6`)
### Spreading Factor
Change the spreading factor of the radio.
```arduino
LoRa.setSpreadingFactor(spreadingFactor);
```
* `spreadingFactor` - spreading factor, defaults to `7`
Supported values are between `6` and `12`. If a spreading factor of `6` is set, implicit header mode must be used to transmit and receive packets.
### Signal Bandwidth
Change the signal bandwidth of the radio.
```arduino
LoRa.setSignalBandwidth(signalBandwidth);
```
* `signalBandwidth` - signal bandwidth in Hz, defaults to `125E3`.
Supported values are `7.8E3`, `10.4E3`, `15.6E3`, `20.8E3`, `31.25E3`, `41.7E3`, `62.5E3`, `125E3`, and `250E3`.
### Coding Rate
Change the coding rate of the radio.
```arduino
LoRa.setCodingRate4(codingRateDenominator);
```
* `codingRateDenominator` - denominator of the coding rate, defaults to `5`
Supported values are between `5` and `8`, these correspond to coding rates of `4/5` and `4/8`. The coding rate numerator is fixed at `4`.
### Preamble Length
Change the preamble length of the radio.
```arduino
LoRa.setPreambleLength(preambleLength);
```
* `preambleLength` - preamble length in symbols, defaults to `8`
Supported values are between `6` and `65535`.
### Sync Word
Change the sync word of the radio.
```arduino
LoRa.setSyncWord(syncWord);
```
* `syncWord` - byte value to use as the sync word, defaults to `0x34`
### CRC
Enable or disable CRC usage, by default a CRC is not used.
```arduino
LoRa.crc();
LoRa.noCrc();
```
## Other functions
### Random
Generate a random byte, based on the Wideband RSSI measurement.
```
byte b = LoRa.random();
```
Returns random byte.

View File

@ -34,10 +34,8 @@ receive KEYWORD2
idle KEYWORD2 idle KEYWORD2
sleep KEYWORD2 sleep KEYWORD2
random KEYWORD2
setFrequency KEYWORD2
setTxPower KEYWORD2 setTxPower KEYWORD2
setFrequency KEYWORD2
setSpreadingFactor KEYWORD2 setSpreadingFactor KEYWORD2
setSignalBandwidth KEYWORD2 setSignalBandwidth KEYWORD2
setCodingRate4 KEYWORD2 setCodingRate4 KEYWORD2
@ -46,6 +44,7 @@ setSyncWord KEYWORD2
crc KEYWORD2 crc KEYWORD2
noCrc KEYWORD2 noCrc KEYWORD2
random KEYWORD2
setPins KEYWORD2 setPins KEYWORD2
dumpRegisters KEYWORD2 dumpRegisters KEYWORD2

View File

@ -297,9 +297,15 @@ void LoRaClass::sleep()
writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_SLEEP); writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_SLEEP);
} }
byte LoRaClass::random() void LoRaClass::setTxPower(int level)
{ {
return readRegister(REG_RSSI_WIDEBAND); if (level < 2) {
level = 2;
} else if (level > 17) {
level = 17;
}
writeRegister(REG_PA_CONFIG, PA_BOOST | (level - 2));
} }
void LoRaClass::setFrequency(long frequency) void LoRaClass::setFrequency(long frequency)
@ -313,17 +319,6 @@ void LoRaClass::setFrequency(long frequency)
writeRegister(REG_FRF_LSB, (uint8_t)(frf >> 0)); writeRegister(REG_FRF_LSB, (uint8_t)(frf >> 0));
} }
void LoRaClass::setTxPower(int level)
{
if (level < 2) {
level = 2;
} else if (level > 17) {
level = 17;
}
writeRegister(REG_PA_CONFIG, PA_BOOST | (level - 2));
}
void LoRaClass::setSpreadingFactor(int sf) void LoRaClass::setSpreadingFactor(int sf)
{ {
if (sf < 6) { if (sf < 6) {
@ -385,7 +380,7 @@ void LoRaClass::setCodingRate4(int denominator)
writeRegister(REG_MODEM_CONFIG_1, (readRegister(REG_MODEM_CONFIG_1) & 0xf1) | (cr << 1)); writeRegister(REG_MODEM_CONFIG_1, (readRegister(REG_MODEM_CONFIG_1) & 0xf1) | (cr << 1));
} }
void LoRaClass::setPreambleLength(unsigned long length) void LoRaClass::setPreambleLength(long length)
{ {
writeRegister(REG_PREAMBLE_MSB, (uint8_t)(length >> 8)); writeRegister(REG_PREAMBLE_MSB, (uint8_t)(length >> 8));
writeRegister(REG_PREAMBLE_LSB, (uint8_t)(length >> 0)); writeRegister(REG_PREAMBLE_LSB, (uint8_t)(length >> 0));
@ -406,6 +401,11 @@ void LoRaClass::noCrc()
writeRegister(REG_MODEM_CONFIG_2, readRegister(REG_MODEM_CONFIG_2) & 0xfb); writeRegister(REG_MODEM_CONFIG_2, readRegister(REG_MODEM_CONFIG_2) & 0xfb);
} }
byte LoRaClass::random()
{
return readRegister(REG_RSSI_WIDEBAND);
}
void LoRaClass::setPins(int ss, int reset, int dio0) void LoRaClass::setPins(int ss, int reset, int dio0)
{ {
_ss = ss; _ss = ss;

View File

@ -38,18 +38,18 @@ public:
void idle(); void idle();
void sleep(); void sleep();
byte random();
void setFrequency(long frequency);
void setTxPower(int level); void setTxPower(int level);
void setFrequency(long frequency);
void setSpreadingFactor(int sf); void setSpreadingFactor(int sf);
void setSignalBandwidth(long sbw); void setSignalBandwidth(long sbw);
void setCodingRate4(int denominator); void setCodingRate4(int denominator);
void setPreambleLength(unsigned long length); void setPreambleLength(long length);
void setSyncWord(int sw); void setSyncWord(int sw);
void crc(); void crc();
void noCrc(); void noCrc();
byte random();
void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN); void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN);
void dumpRegisters(Stream& out); void dumpRegisters(Stream& out);