Port of aduino LoRa library from https://github.com/sandeepmistry/arduino-LoRa
Dependents: WeatherStationRemote
Diff: LoRa.h
- Revision:
- 0:c28964675044
- Child:
- 1:8b16ccb7ea3f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LoRa.h Mon Jan 22 21:59:16 2018 +0000 @@ -0,0 +1,89 @@ +#ifndef LORA_H +#define LORA_H + +#include "mbed.h" + +#define LORA_DEFAULT_SS_PIN PA_4 +#define LORA_DEFAULT_RESET_PIN PA_2 +#define LORA_DEFAULT_DIO0_PIN PA_3 + +#define PA_OUTPUT_RFO_PIN 0 +#define PA_OUTPUT_PA_BOOST_PIN 1 + +class LoRaClass: public Stream +{ +public: + LoRaClass(); + + int begin(long frequency); + void end(); + + int beginPacket(int implicitHeader = false); + int endPacket(); + + int parsePacket(int size = 0); + int packetRssi(); + float packetSnr(); + + void onReceive(void(*callback)(int)); + + void receive(int size = 0); + void idle(); + void sleep(); + + void setTxPower(int level, int outputPin = PA_OUTPUT_PA_BOOST_PIN); + void setFrequency(long frequency); + void setSpreadingFactor(int sf); + void setSignalBandwidth(long sbw); + void setCodingRate4(int denominator); + void setPreambleLength(long length); + void setSyncWord(int sw); + void enableCrc(); + void disableCrc(); + + // deprecated + void crc() { + enableCrc(); + } + void noCrc() { + disableCrc(); + } + + uint8_t random(); + + void dumpRegisters(Stream& out); + +protected: + // from Print + virtual int _putc(int value); + virtual int _getc(); + + int available(); + int peek(); + +private: + void explicitHeaderMode(); + void implicitHeaderMode(); + + void handleDio0Rise(); + + uint8_t readRegister(uint8_t address); + void writeRegister(uint8_t address, uint8_t value); + uint8_t singleTransfer(uint8_t address, uint8_t value); + + static void onDio0Rise(); + +private: + SPI &spi; + DigitalOut _ss; + DigitalOut _reset; + DigitalIn _dio0; + int _frequency; + int _packetIndex; + int _implicitHeaderMode; + void (*_onReceive)(int); +}; + +extern LoRaClass LoRa; + +#endif