Skip to content

Fix #915 #917 #1003 #1004: Added pin mapping for MCCI Model 4916, 4917, 4931 and 4933 #1005

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/arduino_lmic_hal_boards.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ const HalPinmap_t *GetPinmap_Catena4618();
const HalPinmap_t *GetPinmap_Catena4630();
const HalPinmap_t *GetPinmap_Catena4801();
const HalPinmap_t *GetPinmap_Catena4802();
const HalPinmap_t *GetPinmap_Catena4916();
const HalPinmap_t *GetPinmap_Catena4917();
const HalPinmap_t *GetPinmap_Catena4931();
const HalPinmap_t *GetPinmap_Catena4933();
const HalPinmap_t* GetPinmap_ttgo_lora32_v1();
const HalPinmap_t *GetPinmap_ttgo_lora32_v21();
const HalPinmap_t* GetPinmap_heltec_lora32();
Expand Down
101 changes: 101 additions & 0 deletions src/hal/getpinmap_catena4916.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*

Module: getconfig_catena4916.cpp

Function:
Arduino-LMIC C++ HAL pinmaps for various boards

Copyright & License:
See accompanying LICENSE file.

Author:
Dhinesh Kumar Pitchai, MCCI November 2022

*/

#if defined(ARDUINO_MCCI_MODEL_4916)

#include <arduino_lmic_hal_boards.h>
#include <Arduino.h>

#include "../lmic/oslmic.h"

namespace Arduino_LMIC {

class HalConfiguration_Catena4916_t : public HalConfiguration_t
{
public:
enum DIGITAL_PINS : uint8_t
{
PIN_SX1276_NSS = D7,
PIN_SX1276_NRESET = D8,
PIN_SX1276_DIO0 = D25,
PIN_SX1276_DIO1 = D26,
PIN_SX1276_DIO2 = D27,
PIN_SX1276_ANT_SWITCH_RX = D29,
PIN_SX1276_ANT_SWITCH_TX_BOOST = D30,
PIN_SX1276_ANT_SWITCH_TX_RFO = D31,
PIN_VDD_BOOST_ENABLE = A0,
PIN_TCXO_VDD = D33,
};

static constexpr ostime_t TCXO_DELAY_MS = 5;

virtual void begin(void) override
{
digitalWrite(PIN_TCXO_VDD, 0);
pinMode(PIN_TCXO_VDD, OUTPUT);
}

virtual void end(void) override
{
digitalWrite(PIN_TCXO_VDD, 0);
pinMode(PIN_TCXO_VDD, INPUT);
}

virtual bool queryUsingTcxo(void) override { return true; };

virtual ostime_t setModuleActive(bool state) override
{
ostime_t result;
const int oldState = digitalRead(PIN_TCXO_VDD);

// if turning on, we need to delay.
result = 0;
if (state && ! oldState)
result = ms2osticksCeil(TCXO_DELAY_MS);

if (state != oldState)
digitalWrite(PIN_TCXO_VDD, state);

return result;
}
};

// save some typing by bringing the pin numbers into scope
static HalConfiguration_Catena4916_t myConfig;

static const HalPinmap_t myPinmap =
{
.nss = HalConfiguration_Catena4916_t::PIN_SX1276_NSS, // chip select is D7
.rxtx = HalConfiguration_Catena4916_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29
.rst = HalConfiguration_Catena4916_t::PIN_SX1276_NRESET, // NRESET is D8

.dio = {HalConfiguration_Catena4916_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25
HalConfiguration_Catena4916_t::PIN_SX1276_DIO1, // DIO1 is D26
HalConfiguration_Catena4916_t::PIN_SX1276_DIO2, // DIO2 is D27
},
.rxtx_rx_active = 1,
.rssi_cal = 10,
.spi_freq = 8000000, /* 8MHz */
.pConfig = &myConfig
};

const HalPinmap_t *GetPinmap_Catena4916(void)
{
return &myPinmap;
}

}; // namespace Arduino_LMIC

#endif /* defined(ARDUINO_MCCI_MODEL_4916)*/
101 changes: 101 additions & 0 deletions src/hal/getpinmap_catena4917.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*

Module: getconfig_catena4917.cpp

Function:
Arduino-LMIC C++ HAL pinmaps for various boards

Copyright & License:
See accompanying LICENSE file.

Author:
Dhinesh Kumar Pitchai, MCCI November 2022

*/

#if defined(ARDUINO_MCCI_MODEL_4917)

#include <arduino_lmic_hal_boards.h>
#include <Arduino.h>

#include "../lmic/oslmic.h"

namespace Arduino_LMIC {

class HalConfiguration_Catena4917_t : public HalConfiguration_t
{
public:
enum DIGITAL_PINS : uint8_t
{
PIN_SX1276_NSS = D7,
PIN_SX1276_NRESET = D8,
PIN_SX1276_DIO0 = D25,
PIN_SX1276_DIO1 = D26,
PIN_SX1276_DIO2 = D27,
PIN_SX1276_ANT_SWITCH_RX = D29,
PIN_SX1276_ANT_SWITCH_TX_BOOST = D30,
PIN_SX1276_ANT_SWITCH_TX_RFO = D31,
PIN_VDD_BOOST_ENABLE = A0,
PIN_TCXO_VDD = D33,
};

static constexpr ostime_t TCXO_DELAY_MS = 5;

virtual void begin(void) override
{
digitalWrite(PIN_TCXO_VDD, 0);
pinMode(PIN_TCXO_VDD, OUTPUT);
}

virtual void end(void) override
{
digitalWrite(PIN_TCXO_VDD, 0);
pinMode(PIN_TCXO_VDD, INPUT);
}

virtual bool queryUsingTcxo(void) override { return true; };

virtual ostime_t setModuleActive(bool state) override
{
ostime_t result;
const int oldState = digitalRead(PIN_TCXO_VDD);

// if turning on, we need to delay.
result = 0;
if (state && ! oldState)
result = ms2osticksCeil(TCXO_DELAY_MS);

if (state != oldState)
digitalWrite(PIN_TCXO_VDD, state);

return result;
}
};

// save some typing by bringing the pin numbers into scope
static HalConfiguration_Catena4917_t myConfig;

static const HalPinmap_t myPinmap =
{
.nss = HalConfiguration_Catena4917_t::PIN_SX1276_NSS, // chip select is D7
.rxtx = HalConfiguration_Catena4917_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29
.rst = HalConfiguration_Catena4917_t::PIN_SX1276_NRESET, // NRESET is D8

.dio = {HalConfiguration_Catena4917_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25
HalConfiguration_Catena4917_t::PIN_SX1276_DIO1, // DIO1 is D26
HalConfiguration_Catena4917_t::PIN_SX1276_DIO2, // DIO2 is D27
},
.rxtx_rx_active = 1,
.rssi_cal = 10,
.spi_freq = 8000000, /* 8MHz */
.pConfig = &myConfig
};

const HalPinmap_t *GetPinmap_Catena4917(void)
{
return &myPinmap;
}

}; // namespace Arduino_LMIC

#endif /* defined(ARDUINO_MCCI_MODEL_4917)*/
101 changes: 101 additions & 0 deletions src/hal/getpinmap_catena4931.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*

Module: getpinmap_catena4931.cpp

Function:
Arduino-LMIC C++ HAL pinmaps for various boards

Copyright & License:
See accompanying LICENSE file.

Author:
Pranau R, MCCI November 2023

*/

#if defined(ARDUINO_MCCI_MODEL_4931)

#include <arduino_lmic_hal_boards.h>
#include <Arduino.h>

#include "../lmic/oslmic.h"

namespace Arduino_LMIC {

class HalConfiguration_Catena4931_t : public HalConfiguration_t
{
public:
enum DIGITAL_PINS : uint8_t
{
PIN_SX1276_NSS = D7,
PIN_SX1276_NRESET = D8,
PIN_SX1276_DIO0 = D25,
PIN_SX1276_DIO1 = D26,
PIN_SX1276_DIO2 = D27,
PIN_SX1276_ANT_SWITCH_RX = D29,
PIN_SX1276_ANT_SWITCH_TX_BOOST = D30,
PIN_SX1276_ANT_SWITCH_TX_RFO = D31,
PIN_VDD_BOOST_ENABLE = D12,
PIN_TCXO_VDD = D33,
};

static constexpr ostime_t TCXO_DELAY_MS = 5;

virtual void begin(void) override
{
digitalWrite(PIN_TCXO_VDD, 0);
pinMode(PIN_TCXO_VDD, OUTPUT);
}

virtual void end(void) override
{
digitalWrite(PIN_TCXO_VDD, 0);
pinMode(PIN_TCXO_VDD, INPUT);
}

virtual bool queryUsingTcxo(void) override { return true; };

virtual ostime_t setModuleActive(bool state) override
{
ostime_t result;
const int oldState = digitalRead(PIN_TCXO_VDD);

// if turning on, we need to delay.
result = 0;
if (state && ! oldState)
result = ms2osticksCeil(TCXO_DELAY_MS);

if (state != oldState)
digitalWrite(PIN_TCXO_VDD, state);

return result;
}
};

// save some typing by bringing the pin numbers into scope
static HalConfiguration_Catena4931_t myConfig;

static const HalPinmap_t myPinmap =
{
.nss = HalConfiguration_Catena4931_t::PIN_SX1276_NSS, // chip select is D7
.rxtx = HalConfiguration_Catena4931_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29
.rst = HalConfiguration_Catena4931_t::PIN_SX1276_NRESET, // NRESET is D8

.dio = {HalConfiguration_Catena4931_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25
HalConfiguration_Catena4931_t::PIN_SX1276_DIO1, // DIO1 is D26
HalConfiguration_Catena4931_t::PIN_SX1276_DIO2, // DIO2 is D27
},
.rxtx_rx_active = 1,
.rssi_cal = 10,
.spi_freq = 8000000, /* 8MHz */
.pConfig = &myConfig
};

const HalPinmap_t *GetPinmap_Catena4931(void)
{
return &myPinmap;
}

}; // namespace Arduino_LMIC

#endif /* defined(ARDUINO_MCCI_MODEL_4931)*/
Loading