mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-15 17:55:09 +00:00
pinelora WIP
This commit is contained in:
parent
c4878671e3
commit
6e27856daa
@ -9,7 +9,7 @@
|
|||||||
; https://docs.platformio.org/page/projectconf.html
|
; https://docs.platformio.org/page/projectconf.html
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
default_envs = tbeam
|
;default_envs = tbeam
|
||||||
;default_envs = tbeam0.7
|
;default_envs = tbeam0.7
|
||||||
;default_envs = heltec
|
;default_envs = heltec
|
||||||
;default_envs = tlora-v1
|
;default_envs = tlora-v1
|
||||||
@ -18,7 +18,7 @@ default_envs = tbeam
|
|||||||
;default_envs = lora-relay-v1 # nrf board
|
;default_envs = lora-relay-v1 # nrf board
|
||||||
;default_envs = eink
|
;default_envs = eink
|
||||||
;default_envs = nrf52840dk-geeksville
|
;default_envs = nrf52840dk-geeksville
|
||||||
;default_envs = native # lora-relay-v1 # nrf52840dk-geeksville # linux # or if you'd like to change the default to something like lora-relay-v1 put that here
|
default_envs = native # lora-relay-v1 # nrf52840dk-geeksville # linux # or if you'd like to change the default to something like lora-relay-v1 put that here
|
||||||
;default_envs = rak4631
|
;default_envs = rak4631
|
||||||
;default_envs = rak4630
|
;default_envs = rak4630
|
||||||
|
|
||||||
|
@ -423,11 +423,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
|
|
||||||
#define USE_SIM_RADIO
|
#define USE_SIM_RADIO
|
||||||
|
|
||||||
|
// Pine64 uses a common pinout for their SX1262 vs RF95 modules - both can be enabled and we will probe at runtime for RF95 and if
|
||||||
|
// not found then probe for SX1262
|
||||||
#define USE_RF95
|
#define USE_RF95
|
||||||
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
#define USE_SX1262
|
||||||
#define LORA_RESET RADIOLIB_NC
|
|
||||||
#define LORA_DIO1 33 // Not really used
|
|
||||||
#define LORA_DIO2 32 // Not really used
|
|
||||||
|
|
||||||
// Fake SPI device selections
|
// Fake SPI device selections
|
||||||
#define RF95_SCK 5
|
#define RF95_SCK 5
|
||||||
@ -435,6 +434,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define RF95_MOSI 27
|
#define RF95_MOSI 27
|
||||||
#define RF95_NSS RADIOLIB_NC // the ch341f spi controller does CS for us
|
#define RF95_NSS RADIOLIB_NC // the ch341f spi controller does CS for us
|
||||||
|
|
||||||
|
#define LORA_DIO0 26 // a No connect on the SX1262 module
|
||||||
|
#define LORA_RESET RADIOLIB_NC
|
||||||
|
#define LORA_DIO1 33 // SX1262 IRQ - FIXME, attach to gpio4/IRQ with linux spidev
|
||||||
|
#define LORA_DIO2 32 // SX1262 BUSY - FIXME, misassigned in schematic?
|
||||||
|
#define LORA_DIO3 // Not connected on PCB, but internally on the TTGO SX1262, if DIO3 is high the TXCO is enabled
|
||||||
|
|
||||||
|
#ifdef USE_SX1262
|
||||||
|
#define SX1262_CS 20 // FIXME - we need to assign a pinetab CS GPIO binding (so host can manually control it wrt BUSY)
|
||||||
|
#define SX1262_DIO1 LORA_DIO1
|
||||||
|
#define SX1262_BUSY LORA_DIO2
|
||||||
|
#define SX1262_RESET LORA_RESET
|
||||||
|
#define SX1262_E22 // Seems to be an E22 clone
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// DEBUG LED
|
// DEBUG LED
|
||||||
|
@ -14,7 +14,6 @@ class RF95Interface : public RadioLibInterface
|
|||||||
public:
|
public:
|
||||||
RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, SPIClass &spi);
|
RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, SPIClass &spi);
|
||||||
|
|
||||||
/// Some boards (Pinetab Lora module) have broken IRQ wires, so we need to poll via i2c registers
|
|
||||||
bool isIRQPending() { return lora->getPendingIRQ(); }
|
bool isIRQPending() { return lora->getPendingIRQ(); }
|
||||||
|
|
||||||
/// Initialise the Driver transport hardware and software.
|
/// Initialise the Driver transport hardware and software.
|
||||||
|
@ -151,6 +151,9 @@ class RadioInterface
|
|||||||
*/
|
*/
|
||||||
float getFreq();
|
float getFreq();
|
||||||
|
|
||||||
|
/// Some boards (1st gen Pinetab Lora module) have broken IRQ wires, so we need to poll via i2c registers
|
||||||
|
virtual bool isIRQPending() { return false; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int8_t power = 17; // Set by applyModemConfig()
|
int8_t power = 17; // Set by applyModemConfig()
|
||||||
|
|
||||||
|
@ -25,6 +25,8 @@ class SX1262Interface : public RadioLibInterface
|
|||||||
/// Prepare hardware for sleep. Call this _only_ for deep sleep, not needed for light sleep.
|
/// Prepare hardware for sleep. Call this _only_ for deep sleep, not needed for light sleep.
|
||||||
virtual bool sleep();
|
virtual bool sleep();
|
||||||
|
|
||||||
|
bool isIRQPending() { return lora.getIrqStatus() != 0; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
* Glue functions called from ISR land
|
* Glue functions called from ISR land
|
||||||
|
@ -44,10 +44,10 @@ void updateBatteryLevel(uint8_t level) NOT_IMPLEMENTED("updateBatteryLevel");
|
|||||||
*
|
*
|
||||||
* Porduino helper class to do this i2c based polling:
|
* Porduino helper class to do this i2c based polling:
|
||||||
*/
|
*/
|
||||||
class R595PolledIrqPin : public GPIOPin
|
class PolledIrqPin : public GPIOPin
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
R595PolledIrqPin() : GPIOPin(LORA_DIO0, "LORA_DIO0") {}
|
PolledIrqPin() : GPIOPin(LORA_DIO0, "LORA_DIO0") {}
|
||||||
|
|
||||||
/// Read the low level hardware for this pin
|
/// Read the low level hardware for this pin
|
||||||
virtual PinStatus readPinHardware()
|
virtual PinStatus readPinHardware()
|
||||||
@ -58,9 +58,9 @@ class R595PolledIrqPin : public GPIOPin
|
|||||||
extern RadioInterface *rIf; // FIXME, temporary hack until we know if we need to keep this
|
extern RadioInterface *rIf; // FIXME, temporary hack until we know if we need to keep this
|
||||||
|
|
||||||
assert(rIf);
|
assert(rIf);
|
||||||
RF95Interface *rIf95 = static_cast<RF95Interface *>(rIf);
|
bool p = rIf->isIRQPending();
|
||||||
bool p = rIf95->isIRQPending();
|
if(p)
|
||||||
// log(SysGPIO, LogDebug, "R595PolledIrqPin::readPinHardware(%s, %d, %d)", getName(), getPinNum(), p);
|
log(SysGPIO, LogDebug, "R595PolledIrqPin::readPinHardware(%s, %d, %d)", getName(), getPinNum(), p);
|
||||||
return p ? HIGH : LOW;
|
return p ? HIGH : LOW;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,8 +74,8 @@ void portduinoSetup()
|
|||||||
{
|
{
|
||||||
printf("Setting up Meshtastic on Porduino...\n");
|
printf("Setting up Meshtastic on Porduino...\n");
|
||||||
|
|
||||||
// FIXME: disable while not testing with real hardware
|
// FIXME: remove this hack once interrupts are confirmed to work on new pine64 board
|
||||||
// gpioBind(new R595PolledIrqPin());
|
gpioBind(new PolledIrqPin());
|
||||||
|
|
||||||
// gpioBind((new SimGPIOPin(LORA_RESET, "LORA_RESET")));
|
// gpioBind((new SimGPIOPin(LORA_RESET, "LORA_RESET")));
|
||||||
// gpioBind((new SimGPIOPin(RF95_NSS, "RF95_NSS"))->setSilent());
|
// gpioBind((new SimGPIOPin(RF95_NSS, "RF95_NSS"))->setSilent());
|
||||||
|
Loading…
Reference in New Issue
Block a user