Christian Mueller e706b22f31 Add design specification for LoRaWAN Web Portal
Based on Pflichtenheft v2.2, documents the full system design
including daemon, API, frontend, and infrastructure with agreed
deviations (Axum 0.8, SQLx 0.8, Vite 6, Tailwind 4).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:27:49 +01:00

102 lines
2.9 KiB
C++

/*
Module: getconfig_catena4611.cpp
Function:
Arduino-LMIC C++ HAL pinmaps for various boards
Copyright & License:
See accompanying LICENSE file.
Author:
Terry Moore, MCCI November 2018
*/
#if defined(ARDUINO_MCCI_CATENA_4611)
#include <arduino_lmic_hal_boards.h>
#include <Arduino.h>
#include "../lmic/oslmic.h"
namespace Arduino_LMIC {
class HalConfiguration_Catena4611_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_Catena4611_t myConfig;
static const HalPinmap_t myPinmap =
{
.nss = HalConfiguration_Catena4611_t::PIN_SX1276_NSS, // chip select is D7
.rxtx = HalConfiguration_Catena4611_t::PIN_SX1276_ANT_SWITCH_RX, // RXTX is D29
.rst = HalConfiguration_Catena4611_t::PIN_SX1276_NRESET, // NRESET is D8
.dio = {HalConfiguration_Catena4611_t::PIN_SX1276_DIO0, // DIO0 (IRQ) is D25
HalConfiguration_Catena4611_t::PIN_SX1276_DIO1, // DIO1 is D26
HalConfiguration_Catena4611_t::PIN_SX1276_DIO2, // DIO2 is D27
},
.rxtx_rx_active = 1,
.rssi_cal = 10,
.spi_freq = 8000000, /* 8MHz */
.pConfig = &myConfig
};
const HalPinmap_t *GetPinmap_Catena4611(void)
{
return &myPinmap;
}
}; // namespace Arduino_LMIC
#endif /* defined(ARDUINO_MCCI_CATENA_4611) */