commit
e60f8b03b9
108
.clang-format
Normal file
108
.clang-format
Normal file
@ -0,0 +1,108 @@
|
||||
---
|
||||
Language: Cpp
|
||||
# BasedOnStyle: LLVM
|
||||
AccessModifierOffset: -2
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignConsecutiveAssignments: false
|
||||
AlignConsecutiveDeclarations: false
|
||||
AlignEscapedNewlines: Right
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: All
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
AlwaysBreakTemplateDeclarations: false
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
BraceWrapping:
|
||||
AfterClass: false
|
||||
AfterControlStatement: false
|
||||
AfterEnum: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterObjCDeclaration: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: true
|
||||
SplitEmptyRecord: true
|
||||
SplitEmptyNamespace: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeInheritanceComma: false
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakAfterJavaFieldAnnotations: false
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 80
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: true
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: true
|
||||
ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
IncludeCategories:
|
||||
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
|
||||
Priority: 2
|
||||
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
|
||||
Priority: 3
|
||||
- Regex: '.*'
|
||||
Priority: 1
|
||||
IncludeIsMainRegex: '(Test)?$'
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: None
|
||||
ObjCBlockIndentWidth: 2
|
||||
ObjCSpaceAfterProperty: false
|
||||
ObjCSpaceBeforeProtocolList: true
|
||||
PenaltyBreakAssignment: 2
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
PenaltyBreakComment: 300
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
PenaltyBreakString: 1000
|
||||
PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Right
|
||||
ReflowComments: true
|
||||
SortIncludes: false
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceAfterTemplateKeyword: true
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeParens: ControlStatements
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesBeforeTrailingComments: 1
|
||||
SpacesInAngles: false
|
||||
SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
TabWidth: 8
|
||||
UseTab: Never
|
||||
...
|
||||
|
45
README.md
45
README.md
@ -264,41 +264,42 @@ Note: all settings are stored in NVRAM and will be reloaded when device starts.
|
||||
|
||||
0x80 get device configuration
|
||||
|
||||
device answers with it's current configuration. The configuration is a C structure declared in file [globals.h](src/globals.h#L27-L44) with the following definition:
|
||||
device answers with it's current configuration. The configuration is a C structure declared in file [globals.h](src/globals.h#L32-L50) with the following definition:
|
||||
|
||||
byte 1: Lora SF (7..12)
|
||||
byte 2: Lora TXpower (2..15)
|
||||
byte 3: Lora ADR (1=on, 0=off)
|
||||
byte 4: Screensaver status (1=on, 0=off)
|
||||
byte 5: Display status (1=on, 0=off)
|
||||
byte 6: Counter mode (0=cyclic unconfirmed, 1=cumulative, 2=cyclic confirmed)
|
||||
bytes 7-8: RSSI limiter threshold value (negative)
|
||||
byte 9: Lora Payload send cycle in seconds/2 (0..255)
|
||||
byte 10: Wifi channel switch interval in seconds/100 (0..255)
|
||||
byte 11: Bluetooth channel switch interval in seconds/100 (0..255)
|
||||
byte 12: Bluetooth scanner status (1=on, 0=0ff)
|
||||
byte 13: Wifi antenna switch (0=internal, 1=external)
|
||||
byte 14: Vendorfilter mode (0=disabled, 1=enabled)
|
||||
byte 15: RGB LED luminosity (0..100 %)
|
||||
bytes 16-26: Software version (ASCII format, terminating with zero)
|
||||
byte 1: Lora SF (7..12) [default 9]
|
||||
byte 2: Lora TXpower (2..15) [default 15]
|
||||
byte 3: Lora ADR (1=on, 0=off) [default 1]
|
||||
byte 4: Screensaver status (1=on, 0=off) [default 0]
|
||||
byte 5: Display status (1=on, 0=off) [default 0]
|
||||
byte 6: Counter mode (0=cyclic unconfirmed, 1=cumulative, 2=cyclic confirmed) [default 0]
|
||||
bytes 7-8: RSSI limiter threshold value (negative) [default 0]
|
||||
byte 9: Lora Payload send cycle in seconds/2 (0..255) [default 120]
|
||||
byte 10: Wifi channel switch interval in seconds/100 (0..255) [default 50]
|
||||
byte 11: Bluetooth channel switch interval in seconds/100 (0..255) [efault 10]
|
||||
byte 12: Bluetooth scanner status (1=on, 0=0ff) [default 1]
|
||||
byte 13: Wifi antenna switch (0=internal, 1=external) [default 0]
|
||||
byte 14: Vendorfilter mode (0=disabled, 1=enabled) [default 0]
|
||||
byte 15: RGB LED luminosity (0..100 %) [default 30]
|
||||
byte 16: GPS send data mode (1=on, 0=ff) [default 1]
|
||||
bytes 17-27: Software version (ASCII format, terminating with zero)
|
||||
|
||||
0x81 get device uptime
|
||||
|
||||
bytes 1-8: uptime in seconds (little endian format)
|
||||
bytes 1-8: Uptime in seconds (little endian format)
|
||||
|
||||
0x82 get device cpu temperature
|
||||
|
||||
bytes 1-4: chip temperature in degrees celsius (little endian format)
|
||||
bytes 1-4: Chip temperature in degrees celsius (little endian format)
|
||||
|
||||
0x83 get device battery voltage
|
||||
|
||||
bytes 1-2: battery voltage in millivolt, 0 if unreadable (little endian format)
|
||||
bytes 1-2: Battery voltage in millivolt, 0 if unreadable (little endian format)
|
||||
|
||||
0x84 get device GPS status
|
||||
|
||||
bytes 1-4: latitude
|
||||
bytes 5-8: longitude
|
||||
byte 9-10: number of satellites
|
||||
bytes 1-4: Latitude
|
||||
bytes 5-8: Longitude
|
||||
byte 9-10: Number of satellites
|
||||
byte 11-12: HDOP
|
||||
bytes 13-14: altidute [meter]
|
||||
|
||||
|
@ -11,11 +11,11 @@
|
||||
|
||||
; ---> SELECT TARGET PLATFORM HERE! <---
|
||||
[platformio]
|
||||
env_default = heltec
|
||||
;env_default = heltec
|
||||
;env_default = ttgov1
|
||||
;env_default = ttgov2
|
||||
;env_default = ttgov21
|
||||
;env_default = ttgobeam
|
||||
env_default = ttgobeam
|
||||
;env_default = lopy
|
||||
;env_default = lopy4
|
||||
;env_default = fipy
|
||||
|
@ -16,7 +16,9 @@
|
||||
#define PIN_SPI_SCK GPIO_NUM_5 // ESP32 GPIO5 (Pin5) -- HPD13A SCK (Pin5) SPI Clock Input
|
||||
|
||||
// non arduino pin definitions
|
||||
#define RST LMIC_UNUSED_PIN // connected to ESP32 RST/EN
|
||||
#define DIO0 GPIO_NUM_26 // ESP32 GPIO26 <-> HPD13A IO0
|
||||
#define DIO1 GPIO_NUM_33 // Lora1 <-> HPD13A IO1 // !! NEEDS EXTERNAL WIRING !!
|
||||
#define DIO2 LMIC_UNUSED_PIN // Lora2 <-> HPD13A IO2 // needs external wiring, but not necessary for LoRa, only FSK
|
||||
#define RST LMIC_UNUSED_PIN // connected to ESP32 RST/EN
|
||||
#define DIO0 GPIO_NUM_26 // ESP32 GPIO26 <-> HPD13A IO0
|
||||
#define DIO1 GPIO_NUM_32 // Lora1 <-> HPD13A IO1 // !! NEEDS EXTERNAL WIRING !!
|
||||
#define DIO2 \
|
||||
LMIC_UNUSED_PIN // Lora2 <-> HPD13A IO2 // needs external wiring, but not
|
||||
// necessary for LoRa, only FSK
|
||||
|
@ -105,29 +105,55 @@ void printKeys(void) {
|
||||
|
||||
#endif // VERBOSE
|
||||
|
||||
void do_send(osjob_t* j){
|
||||
void do_send(osjob_t *j) {
|
||||
// Schedule next transmission
|
||||
os_setTimedCallback(&sendjob, os_getTime() + sec2osticks(cfg.sendcycle * 2),
|
||||
do_send);
|
||||
|
||||
// Check if there is a pending TX/RX job running
|
||||
if (LMIC.opmode & OP_TXRXPEND) {
|
||||
ESP_LOGI(TAG, "LoRa busy, rescheduling");
|
||||
sprintf(display_lmic, "LORA BUSY");
|
||||
goto end;
|
||||
}
|
||||
// Check if there is a pending TX/RX job running
|
||||
if (LMIC.opmode & OP_TXRXPEND) {
|
||||
ESP_LOGI(TAG, "LoRa busy, rescheduling");
|
||||
sprintf(display_lmic, "LORA BUSY");
|
||||
return;
|
||||
}
|
||||
|
||||
// prepare payload with sum of unique WIFI MACs seen
|
||||
static uint8_t mydata[4];
|
||||
// prepare payload with sum of unique WIFI MACs seen
|
||||
static uint8_t mydata[4];
|
||||
|
||||
mydata[0] = (macs_wifi & 0xff00) >> 8;
|
||||
mydata[1] = macs_wifi & 0xff;
|
||||
|
||||
if (cfg.blescan) {
|
||||
// append sum of unique BLE MACs seen to payload
|
||||
mydata[2] = (macs_ble & 0xff00) >> 8;
|
||||
mydata[3] = macs_ble & 0xff;
|
||||
} else {
|
||||
mydata[2] = 0;
|
||||
mydata[3] = 0;
|
||||
}
|
||||
mydata[0] = (macs_wifi & 0xff00) >> 8;
|
||||
mydata[1] = macs_wifi & 0xff;
|
||||
|
||||
if (cfg.blescan) {
|
||||
// append sum of unique BLE MACs seen to payload
|
||||
mydata[2] = (macs_ble & 0xff00) >> 8;
|
||||
mydata[3] = macs_ble & 0xff;
|
||||
} else {
|
||||
mydata[2] = 0;
|
||||
mydata[3] = 0;
|
||||
}
|
||||
|
||||
#ifdef HAS_GPS
|
||||
static uint8_t gpsdata[18];
|
||||
if (cfg.gpsmode && gps.location.isValid()) {
|
||||
gps_read();
|
||||
memcpy(gpsdata, mydata, 4);
|
||||
memcpy(gpsdata + 4, &gps_status, sizeof(gps_status));
|
||||
ESP_LOGI(TAG, "lat=%.6f / lon=%.6f | %u Sats | HDOP=%.1f | Altitude=%u m",
|
||||
gps_status.latitude / (float)1000000,
|
||||
gps_status.longitude / (float)1000000, gps_status.satellites,
|
||||
gps_status.hdop / (float)100, gps_status.altitude);
|
||||
LMIC_setTxData2(COUNTERPORT, gpsdata, sizeof(gpsdata),
|
||||
(cfg.countermode & 0x02));
|
||||
ESP_LOGI(TAG, "%d bytes queued to send", sizeof(gpsdata));
|
||||
} else {
|
||||
#endif
|
||||
LMIC_setTxData2(COUNTERPORT, mydata, sizeof(mydata),
|
||||
(cfg.countermode & 0x02));
|
||||
ESP_LOGI(TAG, "%d bytes queued to send", sizeof(mydata));
|
||||
#ifdef HAS_GPS
|
||||
}
|
||||
#endif
|
||||
sprintf(display_lmic, "PACKET QUEUED");
|
||||
|
||||
#ifdef HAS_GPS
|
||||
static uint8_t gpsdata[18];
|
||||
@ -161,10 +187,6 @@ void do_send(osjob_t* j){
|
||||
ESP_LOGI(TAG, "Counter cleared (countermode = %d)", cfg.countermode);
|
||||
}
|
||||
|
||||
// Schedule next transmission
|
||||
end:
|
||||
os_setTimedCallback(&sendjob, os_getTime()+sec2osticks(cfg.sendcycle * 2), do_send);
|
||||
|
||||
} // do_send()
|
||||
|
||||
void onEvent (ev_t ev) {
|
||||
|
1334
src/main.cpp
1334
src/main.cpp
File diff suppressed because it is too large
Load Diff
15
src/main.h
15
src/main.h
@ -3,9 +3,10 @@
|
||||
#include "lorawan.h"
|
||||
#include "macsniff.h"
|
||||
|
||||
// program version - note: increment version after modifications to configData_t struct!!
|
||||
#define PROGVERSION "1.3.8" // use max 10 chars here!
|
||||
#define PROGNAME "PAXCNT"
|
||||
// program version - note: increment version after modifications to configData_t
|
||||
// struct!!
|
||||
#define PROGVERSION "1.3.81" // use max 10 chars here!
|
||||
#define PROGNAME "PAXCNT"
|
||||
|
||||
//--- Declarations ---
|
||||
|
||||
@ -36,6 +37,12 @@ void led_loop(void);
|
||||
|
||||
//defined in gpsread.cpp
|
||||
#ifdef HAS_GPS
|
||||
<<<<<<< HEAD
|
||||
void gps_read(void);
|
||||
void gps_loop(void *pvParameters);
|
||||
#endif
|
||||
=======
|
||||
void gps_read(void);
|
||||
void gps_loop(void * pvParameters);
|
||||
#endif
|
||||
#endif
|
||||
>>>>>>> master
|
||||
|
Loading…
Reference in New Issue
Block a user