75 lines
3.3 KiB
C
75 lines
3.3 KiB
C
|
#include "mesh.pb.h"
|
||
|
// CONFIGURATION HERE:
|
||
|
#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 3 // 0 = short range, 1 = medium range, 2 = long range, 3 = very long range
|
||
|
|
||
|
#define TX_MAX_POWER 22 // max output power in dB, keep in mind the maximums set by law and the hardware
|
||
|
#define MESHTASTIC_PSK { 0x10, 0xd4, 0xf1, 0xbb, 0x3a, 0x20, 0x29, 0x07, 0x59, 0xf0, 0xbc, 0xff, 0xab, 0xcf, 0x4e, 0x69, 0xbf }
|
||
|
|
||
|
#define RGB_GREEN 0x000300 // receive mode --- not longer used (save energy)
|
||
|
#define RGB_RED 0x030000 // send mode
|
||
|
|
||
|
#define LORA_PREAMBLE_LENGTH 32 // Same for Tx and Rx
|
||
|
#define LORA_SYMBOL_TIMEOUT 0 // Symbols
|
||
|
#define RX_TIMEOUT_VALUE 1000
|
||
|
#define MAX_PAYLOAD_LENGTH 0xFF // max payload (see \cores\asr650x\device\asr6501_lrwan\radio.c --> MaxPayloadLength)
|
||
|
|
||
|
/* possible RegionCodes, from mesh.pb.h:
|
||
|
typedef enum _RegionCode {
|
||
|
RegionCode_Unset = 0,
|
||
|
RegionCode_US = 1,
|
||
|
RegionCode_EU433 = 2,
|
||
|
RegionCode_EU865 = 3,
|
||
|
RegionCode_CN = 4,
|
||
|
RegionCode_JP = 5,
|
||
|
RegionCode_ANZ = 6,
|
||
|
RegionCode_KR = 7,
|
||
|
RegionCode_TW = 8
|
||
|
} RegionCode;
|
||
|
*/
|
||
|
|
||
|
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
|
||
|
} PacketHeader;
|
||
|
|
||
|
#define MSG(...) Serial.printf(__VA_ARGS__)
|
||
|
#define HEXMSG(...) Serial.print (__VA_ARGS__ , HEX)
|
||
|
|
||
|
void TxDone( void );
|
||
|
void TxTimeout( void );
|
||
|
void RxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr );
|
||
|
void ConfigureRadio( ChannelSettings ChanSet );
|
||
|
unsigned long hash(char *str);
|
||
|
|
||
|
|
||
|
// from Meshtastic project: MeshRadio.h , RadioInterface.cpp
|
||
|
#define RDEF(name, freq, spacing, num_ch, power_limit) \
|
||
|
{ \
|
||
|
RegionCode_##name, num_ch, power_limit, freq, spacing, #name \
|
||
|
}
|
||
|
struct RegionInfo {
|
||
|
RegionCode code;
|
||
|
uint8_t numChannels;
|
||
|
uint8_t powerLimit; // Or zero for not set
|
||
|
float freq;
|
||
|
float spacing;
|
||
|
const char *name; // EU433 etc
|
||
|
};
|
||
|
|
||
|
const RegionInfo regions[] = {
|
||
|
RDEF(US, 903.08f, 2.16f, 13, 0),
|
||
|
RDEF(EU433, 433.175f, 0.2f, 8, 0),
|
||
|
RDEF(EU865, 865.2f, 0.3f, 10, 0),
|
||
|
RDEF(CN, 470.0f, 2.0f, 20, 0),
|
||
|
RDEF(JP, 920.0f, 0.5f, 10, 13), // See https://github.com/meshtastic/Meshtastic-device/issues/346 power level 13
|
||
|
RDEF(ANZ, 916.0f, 0.5f, 20, 0), // AU/NZ channel settings 915-928MHz
|
||
|
RDEF(KR, 921.9f, 0.2f, 8, 0), // KR channel settings (KR920-923) Start from TTN download channel
|
||
|
// 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)
|
||
|
RDEF(Unset, 903.08f, 2.16f, 13, 0) // Assume US freqs if unset, Must be last
|
||
|
};
|
||
|
|
||
|
static const RegionInfo *myRegion;
|