misc NRF52 fixes

This commit is contained in:
geeksville
2020-04-23 12:47:41 -07:00
parent 2061706c11
commit fe3cbeed3a
7 changed files with 37 additions and 7 deletions
+1
View File
@@ -11,6 +11,7 @@ typedef uint8_t PacketId; // A packet sequence number
#define NODENUM_BROADCAST 255
#define ERRNO_OK 0
#define ERRNO_NO_INTERFACES 33
#define ERRNO_UNKNOWN 32 // pick something that doesn't conflict with RH_ROUTER_ERROR_UNABLE_TO_DELIVER
typedef int ErrorCode;
+1 -2
View File
@@ -1,7 +1,7 @@
#pragma once
#include <Arduino.h>
#include <assert.h>
#include <list>
template <class T> class Observable;
@@ -14,7 +14,6 @@ template <class T> class Observer
Observable<T> *observed = NULL;
public:
virtual ~Observer();
void observe(Observable<T> *o);
+13
View File
@@ -0,0 +1,13 @@
#include <assert.h>
static inline void debugger_break(void)
{
__asm volatile("bkpt #0x01\n\t"
"mov pc, lr\n\t");
}
// handle standard gcc assert failures
void __attribute__((noreturn)) __assert_func(const char *file, int line, const char *func, const char *failedexpr)
{
debugger_break();
}
+5
View File
@@ -114,6 +114,11 @@ bool RH_RF95::init()
return enableInterrupt();
}
// If on a platform without level trigger definitions, just use RISING and suck it up.
#ifndef ONHIGH
#define ONHIGH RISING
#endif
bool RH_RF95::enableInterrupt()
{
// Determine the interrupt number that corresponds to the interruptPin
+10
View File
@@ -39,6 +39,16 @@ class RadioInterface
virtual void loop() {} // Idle processing
/**
* Return true if we think the board can go to sleep (i.e. our tx queue is empty, we are not sending or receiving)
*
* This method must be used before putting the CPU into deep or light sleep.
*/
bool canSleep() { return true; }
/// Prepare hardware for sleep. Call this _only_ for deep sleep, not needed for light sleep.
virtual bool sleep() { return true; }
/**
* Send a packet (possibly by enquing in a private fifo). This routine will
* later free() the packet to pool. This routine is not allowed to stall.