Moved pin assignment outside the hoymiles library
Allows setting the pins during runtime and not just using the defines
This commit is contained in:
parent
fe16a92a2f
commit
36abaeee12
@ -9,14 +9,14 @@
|
||||
|
||||
HoymilesClass Hoymiles;
|
||||
|
||||
void HoymilesClass::init()
|
||||
void HoymilesClass::init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ)
|
||||
{
|
||||
_xSemaphore = xSemaphoreCreateMutex();
|
||||
HOY_SEMAPHORE_GIVE(); // release before first use
|
||||
|
||||
_pollInterval = 0;
|
||||
_radio.reset(new HoymilesRadio());
|
||||
_radio->init();
|
||||
_radio->init(initialisedSpiBus, pinCE, pinIRQ);
|
||||
}
|
||||
|
||||
void HoymilesClass::loop()
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
class HoymilesClass {
|
||||
public:
|
||||
void init();
|
||||
void init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ);
|
||||
void loop();
|
||||
|
||||
std::shared_ptr<InverterAbstract> addInverter(const char* name, uint64_t serial);
|
||||
|
||||
@ -5,15 +5,14 @@
|
||||
#include <Every.h>
|
||||
#include <FunctionalInterrupt.h>
|
||||
|
||||
void HoymilesRadio::init()
|
||||
void HoymilesRadio::init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ)
|
||||
{
|
||||
_dtuSerial.u64 = 0;
|
||||
|
||||
_hspi.reset(new SPIClass(HSPI));
|
||||
_radio.reset(new RF24(HOYMILES_PIN_CE, HOYMILES_PIN_CS));
|
||||
_spiPtr.reset(initialisedSpiBus);
|
||||
_radio.reset(new RF24(pinCE, initialisedSpiBus->pinSS()));
|
||||
|
||||
_hspi->begin(HOYMILES_PIN_SCLK, HOYMILES_PIN_MISO, HOYMILES_PIN_MOSI, HOYMILES_PIN_CS);
|
||||
_radio->begin(_hspi.get());
|
||||
_radio->begin(_spiPtr.get());
|
||||
|
||||
_radio->setDataRate(RF24_250KBPS);
|
||||
_radio->enableDynamicPayloads();
|
||||
@ -27,7 +26,7 @@ void HoymilesRadio::init()
|
||||
Serial.println(F("Connection error!!"));
|
||||
}
|
||||
|
||||
attachInterrupt(digitalPinToInterrupt(HOYMILES_PIN_IRQ), std::bind(&HoymilesRadio::handleIntr, this), FALLING);
|
||||
attachInterrupt(digitalPinToInterrupt(pinIRQ), std::bind(&HoymilesRadio::handleIntr, this), FALLING);
|
||||
|
||||
openReadingPipe();
|
||||
_radio->startListening();
|
||||
|
||||
@ -12,33 +12,9 @@
|
||||
// number of fragments hold in buffer
|
||||
#define FRAGMENT_BUFFER_SIZE 30
|
||||
|
||||
#ifndef HOYMILES_PIN_MISO
|
||||
#define HOYMILES_PIN_MISO 19
|
||||
#endif
|
||||
|
||||
#ifndef HOYMILES_PIN_MOSI
|
||||
#define HOYMILES_PIN_MOSI 23
|
||||
#endif
|
||||
|
||||
#ifndef HOYMILES_PIN_SCLK
|
||||
#define HOYMILES_PIN_SCLK 18
|
||||
#endif
|
||||
|
||||
#ifndef HOYMILES_PIN_IRQ
|
||||
#define HOYMILES_PIN_IRQ 16
|
||||
#endif
|
||||
|
||||
#ifndef HOYMILES_PIN_CE
|
||||
#define HOYMILES_PIN_CE 4
|
||||
#endif
|
||||
|
||||
#ifndef HOYMILES_PIN_CS
|
||||
#define HOYMILES_PIN_CS 5
|
||||
#endif
|
||||
|
||||
class HoymilesRadio {
|
||||
public:
|
||||
void init();
|
||||
void init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ);
|
||||
void loop();
|
||||
void setPALevel(rf24_pa_dbm_e paLevel);
|
||||
|
||||
@ -71,7 +47,7 @@ private:
|
||||
void sendRetransmitPacket(uint8_t fragment_id);
|
||||
void sendLastPacketAgain();
|
||||
|
||||
std::unique_ptr<SPIClass> _hspi;
|
||||
std::unique_ptr<SPIClass> _spiPtr;
|
||||
std::unique_ptr<RF24> _radio;
|
||||
uint8_t _rxChLst[5] = { 3, 23, 40, 61, 75 };
|
||||
uint8_t _rxChIdx = 0;
|
||||
|
||||
@ -20,6 +20,14 @@ build_flags =
|
||||
-DCOMPONENT_EMBED_FILES=webapp_dist/index.html.gz:webapp_dist/zones.json.gz:webapp_dist/favicon.ico:webapp_dist/js/app.js.gz
|
||||
-Wall -Wextra -Werror
|
||||
|
||||
; Default pin assignment for all boards if not specified otherwise
|
||||
-DHOYMILES_PIN_MISO=19
|
||||
-DHOYMILES_PIN_MOSI=23
|
||||
-DHOYMILES_PIN_SCLK=18
|
||||
-DHOYMILES_PIN_IRQ=16
|
||||
-DHOYMILES_PIN_CE=4
|
||||
-DHOYMILES_PIN_CS=5
|
||||
|
||||
lib_deps =
|
||||
https://github.com/yubox-node-org/ESPAsyncWebServer
|
||||
bblanchon/ArduinoJson @ ^6.19.4
|
||||
@ -36,8 +44,8 @@ monitor_speed = 115200
|
||||
upload_protocol = esptool
|
||||
|
||||
; Specify port here. Comment out (add ; in front of line) to use auto detection.
|
||||
monitor_port = COM5
|
||||
upload_port = COM5
|
||||
monitor_port = COM4
|
||||
upload_port = COM4
|
||||
|
||||
|
||||
[env:generic]
|
||||
|
||||
@ -93,7 +93,9 @@ void setup()
|
||||
|
||||
// Initialize inverter communication
|
||||
Serial.print(F("Initialize Hoymiles interface... "));
|
||||
Hoymiles.init();
|
||||
SPIClass* spiClass = new SPIClass(HSPI);
|
||||
spiClass->begin(HOYMILES_PIN_SCLK, HOYMILES_PIN_MISO, HOYMILES_PIN_MOSI, HOYMILES_PIN_CS);
|
||||
Hoymiles.init(spiClass, HOYMILES_PIN_CE, HOYMILES_PIN_IRQ);
|
||||
|
||||
Serial.println(F(" Setting radio PA level... "));
|
||||
Hoymiles.getRadio()->setPALevel((rf24_pa_dbm_e)config.Dtu_PaLevel);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user