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;
|
HoymilesClass Hoymiles;
|
||||||
|
|
||||||
void HoymilesClass::init()
|
void HoymilesClass::init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ)
|
||||||
{
|
{
|
||||||
_xSemaphore = xSemaphoreCreateMutex();
|
_xSemaphore = xSemaphoreCreateMutex();
|
||||||
HOY_SEMAPHORE_GIVE(); // release before first use
|
HOY_SEMAPHORE_GIVE(); // release before first use
|
||||||
|
|
||||||
_pollInterval = 0;
|
_pollInterval = 0;
|
||||||
_radio.reset(new HoymilesRadio());
|
_radio.reset(new HoymilesRadio());
|
||||||
_radio->init();
|
_radio->init(initialisedSpiBus, pinCE, pinIRQ);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HoymilesClass::loop()
|
void HoymilesClass::loop()
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
class HoymilesClass {
|
class HoymilesClass {
|
||||||
public:
|
public:
|
||||||
void init();
|
void init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ);
|
||||||
void loop();
|
void loop();
|
||||||
|
|
||||||
std::shared_ptr<InverterAbstract> addInverter(const char* name, uint64_t serial);
|
std::shared_ptr<InverterAbstract> addInverter(const char* name, uint64_t serial);
|
||||||
|
|||||||
@ -5,15 +5,14 @@
|
|||||||
#include <Every.h>
|
#include <Every.h>
|
||||||
#include <FunctionalInterrupt.h>
|
#include <FunctionalInterrupt.h>
|
||||||
|
|
||||||
void HoymilesRadio::init()
|
void HoymilesRadio::init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ)
|
||||||
{
|
{
|
||||||
_dtuSerial.u64 = 0;
|
_dtuSerial.u64 = 0;
|
||||||
|
|
||||||
_hspi.reset(new SPIClass(HSPI));
|
_spiPtr.reset(initialisedSpiBus);
|
||||||
_radio.reset(new RF24(HOYMILES_PIN_CE, HOYMILES_PIN_CS));
|
_radio.reset(new RF24(pinCE, initialisedSpiBus->pinSS()));
|
||||||
|
|
||||||
_hspi->begin(HOYMILES_PIN_SCLK, HOYMILES_PIN_MISO, HOYMILES_PIN_MOSI, HOYMILES_PIN_CS);
|
_radio->begin(_spiPtr.get());
|
||||||
_radio->begin(_hspi.get());
|
|
||||||
|
|
||||||
_radio->setDataRate(RF24_250KBPS);
|
_radio->setDataRate(RF24_250KBPS);
|
||||||
_radio->enableDynamicPayloads();
|
_radio->enableDynamicPayloads();
|
||||||
@ -27,7 +26,7 @@ void HoymilesRadio::init()
|
|||||||
Serial.println(F("Connection error!!"));
|
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();
|
openReadingPipe();
|
||||||
_radio->startListening();
|
_radio->startListening();
|
||||||
|
|||||||
@ -12,33 +12,9 @@
|
|||||||
// number of fragments hold in buffer
|
// number of fragments hold in buffer
|
||||||
#define FRAGMENT_BUFFER_SIZE 30
|
#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 {
|
class HoymilesRadio {
|
||||||
public:
|
public:
|
||||||
void init();
|
void init(SPIClass* initialisedSpiBus, uint8_t pinCE, uint8_t pinIRQ);
|
||||||
void loop();
|
void loop();
|
||||||
void setPALevel(rf24_pa_dbm_e paLevel);
|
void setPALevel(rf24_pa_dbm_e paLevel);
|
||||||
|
|
||||||
@ -71,7 +47,7 @@ private:
|
|||||||
void sendRetransmitPacket(uint8_t fragment_id);
|
void sendRetransmitPacket(uint8_t fragment_id);
|
||||||
void sendLastPacketAgain();
|
void sendLastPacketAgain();
|
||||||
|
|
||||||
std::unique_ptr<SPIClass> _hspi;
|
std::unique_ptr<SPIClass> _spiPtr;
|
||||||
std::unique_ptr<RF24> _radio;
|
std::unique_ptr<RF24> _radio;
|
||||||
uint8_t _rxChLst[5] = { 3, 23, 40, 61, 75 };
|
uint8_t _rxChLst[5] = { 3, 23, 40, 61, 75 };
|
||||||
uint8_t _rxChIdx = 0;
|
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
|
-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
|
-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 =
|
lib_deps =
|
||||||
https://github.com/yubox-node-org/ESPAsyncWebServer
|
https://github.com/yubox-node-org/ESPAsyncWebServer
|
||||||
bblanchon/ArduinoJson @ ^6.19.4
|
bblanchon/ArduinoJson @ ^6.19.4
|
||||||
@ -36,8 +44,8 @@ monitor_speed = 115200
|
|||||||
upload_protocol = esptool
|
upload_protocol = esptool
|
||||||
|
|
||||||
; Specify port here. Comment out (add ; in front of line) to use auto detection.
|
; Specify port here. Comment out (add ; in front of line) to use auto detection.
|
||||||
monitor_port = COM5
|
monitor_port = COM4
|
||||||
upload_port = COM5
|
upload_port = COM4
|
||||||
|
|
||||||
|
|
||||||
[env:generic]
|
[env:generic]
|
||||||
|
|||||||
@ -93,7 +93,9 @@ void setup()
|
|||||||
|
|
||||||
// Initialize inverter communication
|
// Initialize inverter communication
|
||||||
Serial.print(F("Initialize Hoymiles interface... "));
|
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... "));
|
Serial.println(F(" Setting radio PA level... "));
|
||||||
Hoymiles.getRadio()->setPALevel((rf24_pa_dbm_e)config.Dtu_PaLevel);
|
Hoymiles.getRadio()->setPALevel((rf24_pa_dbm_e)config.Dtu_PaLevel);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user