Improved Serial Output
This commit is contained in:
parent
21bf17d0a7
commit
193dfda32a
|
@ -2,7 +2,7 @@
|
|||
// CONFIGURATION:
|
||||
#define REGION RegionCode_EU865 // define your region here. For US, RegionCode_US, CN RegionCode_Cn etc.
|
||||
char MESHTASTIC_NAME[12] = {"Default"}; // Channel Name, but without "-Xy" suffix , e.g. use "Test" instead of "Test-A"
|
||||
#define MESHTASTIC_SPEED 2 // 0 = short range, 1 = medium range, 2 = long range, 3 = very long range
|
||||
#define MESHTASTIC_SPEED 3 // 0 = short range, 1 = medium range, 2 = long range, 3 = very long range
|
||||
#define TX_MAX_POWER 14 // max output power in dB, keep in mind the maximums set by law and the hardware
|
||||
// :CONFIGURATION
|
||||
|
||||
|
@ -32,9 +32,6 @@ typedef enum _RegionCode {
|
|||
#define MESHTASTIC_PSK { 0x10, 0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0xbf }
|
||||
#define PSK_NOENCRYPTION { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
|
||||
|
||||
// sleep times @ speed 0 1 2 3
|
||||
uint32_t sleepTime[] = { 77, 20, 1512, 2499 };
|
||||
|
||||
typedef struct {
|
||||
uint32_t to, from, id;
|
||||
uint8_t flags; // The bottom three bits of flags are used to store hop_limit, bit 4 is the WANT_ACK flag
|
||||
|
@ -79,3 +76,6 @@ const RegionInfo regions[] = {
|
|||
// freq. (921.9f is for download, others are for uplink)
|
||||
RDEF(TW, 923.0f, 0.2f, 10, 0) // TW channel settings (AS2 bandplan 923-925MHz)
|
||||
};
|
||||
|
||||
// Bandwidths and CodeRate. Arrays are specific to the Radio.c of the CubeCells
|
||||
const uint32_t TheBandwidths[] = { 125E3, 250E3, 500E3, 62500, 41670, 31250, 20830, 15630, 10420, 7810 };
|
|
@ -14,8 +14,7 @@ static ChannelSettings ChanSet;
|
|||
static RadioEvents_t RadioEvents;
|
||||
static TimerEvent_t CheckRadio;
|
||||
static uint32_t lastreceivedID = 0;
|
||||
//static uint32_t lpTime;
|
||||
static uint32_t dutyTime;
|
||||
static uint32_t sleepTime;
|
||||
static bool noTimer;
|
||||
static uint32_t startTime = 0;
|
||||
|
||||
|
@ -90,37 +89,33 @@ void setup() {
|
|||
ChanSet.bandwidth = 0; // 125 kHz
|
||||
ChanSet.coding_rate = 1; // = 4/5
|
||||
ChanSet.spread_factor = 7;
|
||||
dutyTime = 10.24; // 10 symbols
|
||||
break;
|
||||
}
|
||||
case 1: { // medium range
|
||||
ChanSet.bandwidth = 2; // 500 kHz
|
||||
ChanSet.coding_rate = 1; // = 4/5
|
||||
ChanSet.spread_factor = 7;
|
||||
dutyTime = 2.56;
|
||||
break;
|
||||
}
|
||||
case 2: { // long range
|
||||
ChanSet.bandwidth = 5; // 31.25 kHz
|
||||
ChanSet.coding_rate = 4; // = 4/8
|
||||
ChanSet.spread_factor = 9;
|
||||
dutyTime = 163.84;
|
||||
break;
|
||||
}
|
||||
case 3: { // very long range
|
||||
ChanSet.bandwidth = 0; // 125 kHz
|
||||
ChanSet.coding_rate = 4; // = 4/8
|
||||
ChanSet.spread_factor = 12;
|
||||
dutyTime = 327.68;
|
||||
break;
|
||||
}
|
||||
default:{ // default setting is very long range
|
||||
ChanSet.bandwidth = 0; // 125 kHz
|
||||
ChanSet.coding_rate = 4; // = 4/8
|
||||
ChanSet.spread_factor = 12;
|
||||
dutyTime = 327.68;
|
||||
}
|
||||
}
|
||||
sleepTime = floor( 10 * ((1<< ChanSet.spread_factor)*1000 +32) / TheBandwidths[ChanSet.bandwidth] + 0.5 );
|
||||
ConfigureRadio( ChanSet );
|
||||
#ifndef SILENT
|
||||
MSG("..done! Switch to Receive Mode.\n");
|
||||
|
@ -132,7 +127,10 @@ void setup() {
|
|||
Radio.StartCad( 4 ); // length in symbols
|
||||
}
|
||||
|
||||
void onCheckRadio(void){ noTimer=false; }
|
||||
void onCheckRadio(void)
|
||||
{
|
||||
noTimer=false;
|
||||
}
|
||||
|
||||
// Cycle starts @ 0 symbols. LoRA: CAD for 4 symbols, then (implicitly) Standby MCU: sleep
|
||||
// After 10 LoRa symbols, wake up MCU and check for IRQs from LoRa (including CADdone)
|
||||
|
@ -143,7 +141,7 @@ void onCheckRadio(void){ noTimer=false; }
|
|||
void loop( )
|
||||
{
|
||||
noTimer = true;
|
||||
TimerSetValue( &CheckRadio, dutyTime ); // MCU sleeps 10 LoRa symbols
|
||||
TimerSetValue( &CheckRadio, sleepTime ); // MCU sleeps 10 LoRa symbols
|
||||
TimerStart( &CheckRadio ); // onCheckRadio() will set noTimer to false
|
||||
while (noTimer) lowPowerHandler( );
|
||||
|
||||
|
@ -154,11 +152,11 @@ void loop( )
|
|||
|
||||
void onCadDone( bool ChannelActive ){
|
||||
// Rx Time = 500 * symbol time should be longer than receive time for max. packet length
|
||||
(ChannelActive) ? Radio.Rx( dutyTime * 50 ) : Radio.Standby();
|
||||
(ChannelActive) ? Radio.Rx( sleepTime * 50 ) : Radio.Sleep();
|
||||
}
|
||||
|
||||
void onRxTimeout( void ){
|
||||
Radio.Standby();
|
||||
Radio.Sleep();
|
||||
}
|
||||
|
||||
void onTxDone( void )
|
||||
|
@ -175,8 +173,7 @@ MSG(".done (%ims)! Switch to Receive Mode.\n", millis() - startTime );
|
|||
display.drawString(42,53,str);
|
||||
display.display();
|
||||
#endif
|
||||
//Radio.Rx( 0 ); // switch to receive mode
|
||||
Radio.Standby();
|
||||
Radio.Sleep();
|
||||
}
|
||||
|
||||
void onTxTimeout( void )
|
||||
|
@ -193,13 +190,12 @@ void onTxTimeout( void )
|
|||
display.drawString(42,53,str);
|
||||
display.display();
|
||||
#endif
|
||||
Radio.Standby();
|
||||
Radio.Sleep();
|
||||
}
|
||||
|
||||
void onRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
|
||||
{
|
||||
// if ( !(Radio.GetStatus() == RF_RX_RUNNING) ) Radio.Sleep( );
|
||||
Radio.Sleep();
|
||||
Radio.Sleep();
|
||||
if ( size > MAX_PAYLOAD_LENGTH ) size = MAX_PAYLOAD_LENGTH;
|
||||
if ( !(size > sizeof(PacketHeader)) ) {
|
||||
#ifndef SILENT
|
||||
|
@ -279,7 +275,6 @@ void onRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
|
|||
display.drawString(0,53,str);
|
||||
display.display();
|
||||
#endif
|
||||
Radio.Standby();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -297,14 +292,13 @@ unsigned long hash(char *str)
|
|||
void ConfigureRadio( ChannelSettings ChanSet )
|
||||
{
|
||||
uint32_t freq = (regions[REGION].freq + regions[REGION].spacing * ChanSet.channel_num)*1E6;
|
||||
|
||||
#ifndef SILENT
|
||||
MSG("\nRegion is: %s", regions[REGION].name);
|
||||
MSG(" TX power: %i\n", ChanSet.tx_power);
|
||||
MSG("Setting frequency to %i Hz (meshtastic channel %i) .. \n",freq,ChanSet.channel_num );
|
||||
MSG("Channel name is: %s .. \n", ChanSet.name );
|
||||
MSG("Setting bandwidth to index %i ..\n",ChanSet.bandwidth);
|
||||
MSG("Setting CodeRate to index %i .. \n", ChanSet.coding_rate);
|
||||
MSG("Channel name is: '%s' .. \n", ChanSet.name );
|
||||
MSG("Setting bandwidth to index %i (%ikHz)..\n", ChanSet.bandwidth, TheBandwidths[ChanSet.bandwidth] );
|
||||
MSG("Setting CodeRate to index %i (4/%i).. \n", ChanSet.coding_rate, ChanSet.coding_rate + 4 );
|
||||
MSG("Setting SpreadingFactor to %i ..\n",ChanSet.spread_factor);
|
||||
#endif
|
||||
Radio.SetChannel( freq );
|
||||
|
|
Loading…
Reference in New Issue