Compare commits

...

82 Commits

Author SHA1 Message Date
Just Call Me Koko
771d03d931 Merge pull request #278 from justcallmekoko/develop
Develop
2023-06-08 16:23:52 -04:00
Just Call Me Koko
4f1611083f Fix no bt for dev board pro 2023-06-07 15:32:40 -04:00
Just Call Me Koko
b5eb343c52 Merge pull request #277 from justcallmekoko/master
Merge pull request #276 from justcallmekoko/develop
2023-06-06 17:17:52 -04:00
Just Call Me Koko
e7ba169c04 Merge pull request #276 from justcallmekoko/develop
Develop
2023-06-06 17:17:31 -04:00
Just Call Me Koko
a5b3ce9f0a Update version number 2023-06-06 17:16:31 -04:00
Just Call Me Koko
eec6c37732 Fix unclickable sigmon 2023-06-06 12:57:32 -04:00
Just Call Me Koko
5cfb756051 Merge pull request #269 from justcallmekoko/master
Merge pull request #268 from justcallmekoko/develop
2023-06-01 17:00:07 -04:00
Just Call Me Koko
31aa12d4ed Merge pull request #268 from justcallmekoko/develop
Develop
2023-06-01 16:58:53 -04:00
Just Call Me Koko
d7fbf21345 Update README.md 2023-06-01 15:52:33 -04:00
Just Call Me Koko
e027231a43 That was dumb 2023-05-30 13:59:02 -04:00
Just Call Me Koko
ed5e6bc787 Add SD_MMC 2023-05-30 13:54:33 -04:00
Just Call Me Koko
2092b0a462 Add ls command
Fix sniffpmkid LED
2023-05-30 13:47:40 -04:00
Just Call Me Koko
4d269b383b Add sigmon to menu 2023-05-22 16:02:21 -04:00
Just Call Me Koko
0a90e6aedc Fix open files when SD disable 2023-05-19 16:19:45 -04:00
Just Call Me Koko
6b4e2952d6 Add function for signal strength monitor 2023-05-18 17:07:39 -04:00
Just Call Me Koko
a84ee7e58e Update User_Setup_Select.h 2023-05-18 10:33:45 -04:00
Just Call Me Koko
1eeedac84c Adjust Macros 2023-05-18 09:53:19 -04:00
Just Call Me Koko
e556309746 Compile settings for M5StickC Plus 2023-05-18 09:52:54 -04:00
Just Call Me Koko
b21ee85b83 Add steps for M5StickC Plus 2023-05-18 09:41:28 -04:00
Just Call Me Koko
f2c1d01d13 Add compatibility for M5StickC Plus 2023-05-15 14:25:06 -04:00
Just Call Me Koko
cbe6d0196b Revert config 2023-05-04 14:59:46 -04:00
Just Call Me Koko
6ab706c848 Update syntax strings 2023-05-04 14:58:25 -04:00
Just Call Me Koko
999dd77643 Add targeted active PMKID sniff 2023-05-04 14:40:53 -04:00
Just Call Me Koko
99210984e4 Merge pull request #258 from wallali/develop
Improved serial outputs
2023-04-21 10:11:23 -04:00
wallali
9ae60eeecf Merge branch 'coco_develop' into develop 2023-04-21 14:41:54 +01:00
wallali
6ff61f4991 Improve output during pkimd sniff 2023-04-21 14:39:43 +01:00
wallali
f4486ec191 Helpful serial output if BT unsupported in fw 2023-04-21 14:38:43 +01:00
wallali
ce6a40e554 Improve output during pkimd sniff 2023-04-21 14:26:43 +01:00
wallali
09615832b3 Helpful serial output if BT unsupported in fw 2023-04-21 14:24:09 +01:00
Just Call Me Koko
0a9fc2a485 Merge pull request #257 from tcpassos/develop
Created "-f" parameter in the AP selection to filter the APs that will be selected
2023-04-20 16:46:17 -04:00
tcpassos
d555031b54 Created "-f" parameter in the AP selection to filter the APs that will be selected 2023-04-20 00:29:51 -03:00
Just Call Me Koko
8efa79a407 Account for pull req when creating release 2023-04-19 13:05:20 -04:00
Just Call Me Koko
59739b331d Merge pull request #255 from wallali/join_wifi
Added join (WiFi) command and reporting for list counts
2023-04-19 12:57:12 -04:00
wallali
9f181d73a6 Helpful guidance on scan station - use the correct list now 2023-04-18 13:52:53 +01:00
wallali
37788fe1a9 Helpful guidance on scan station 2023-04-18 13:46:33 +01:00
wallali
db6d23f3e4 List and select commands now report counts of selected/unselected items 2023-04-17 14:27:12 +01:00
wallali
6c8e77cba2 Merge branch 'develop' into join_wifi 2023-04-15 13:52:41 +01:00
wallali
accd8f5730 Update banner to tell me when i'm using serial output 2023-04-15 04:22:59 +01:00
wallali
7661b47a42 Allow join WiFi from command line 2023-04-15 04:21:13 +01:00
Just Call Me Koko
3e16378993 Update README.md 2023-04-14 08:15:55 -04:00
Just Call Me Koko
b51df45dec Update config to v0.10.3 2023-04-14 08:15:35 -04:00
Just Call Me Koko
93bb2c6a85 Fix SD Serial configuration 2023-04-14 08:13:45 -04:00
Just Call Me Koko
5da426de99 Create wifi-dev-board-pro-3v3-orientation.png 2023-04-10 08:16:54 -04:00
Just Call Me Koko
07d5e8787e Merge pull request #244 from tcpassos/develop
Allowed to enter custom SSIDs with spaces in the name as long as they are enclosed in quotes
2023-04-09 14:47:20 -04:00
tcpassos
7a6a880cb9 Beacon spam list SSIDs will not change channels 2023-04-06 15:48:50 -03:00
tcpassos
1546fad676 Stops breaking parameters that are enclosed in quotes 2023-04-04 12:40:11 -03:00
Just Call Me Koko
785545c185 Add WiFi Dev Board Pro SMA Enclosure 2023-03-31 12:13:09 -04:00
Just Call Me Koko
3f5bcd106a Revert flipper macro 2023-03-14 23:50:11 -04:00
Just Call Me Koko
633a38d257 Fix default broadcast during attack 2023-03-14 23:48:32 -04:00
Just Call Me Koko
f044df2647 Add build for SD Serial 2023-03-14 16:27:01 -04:00
Just Call Me Koko
7eecf35eed Merge pull request #233 from tcpassos/serial_test
Packet transmission via serial
2023-03-14 16:12:49 -04:00
Just Call Me Koko
b8df6e2598 Run on pull requests 2023-03-14 16:10:51 -04:00
tcpassos
e028c39470 Added WRITE_PACKETS_SERIAL macro to transmit packets via serial (1) instead of using SD card 2023-03-01 08:42:08 -03:00
tcpassos
592b7f68e8 Update .gitignore 2023-02-28 22:49:27 -03:00
Just Call Me Koko
99ef926fb7 Add files via upload 2023-02-02 16:40:08 -05:00
Just Call Me Koko
5e9e096631 Add images for WiFi Dev Board Pro 2023-01-20 11:50:46 -05:00
Just Call Me Koko
ab5c65f525 Merge pull request #217 from justcallmekoko/master
Rebase Develop
2023-01-18 21:03:42 -05:00
Just Call Me Koko
2b324eaaf2 Add wifi dev board pro top with buttons 2023-01-18 21:02:33 -05:00
Just Call Me Koko
ed41954f5a Merge pull request #216 from trisp3ar/develop
adding CAD models for Devboard Pro enclosure and Solder Jig
2023-01-18 15:57:18 -05:00
Gregor Hermani
f79e0591df adding CAD models for Devboard Pro enclosure and Solder Jig 2023-01-18 10:42:17 +01:00
Just Call Me Koko
59a037925f Fix string replacement 2023-01-17 12:11:07 -05:00
Just Call Me Koko
6a6c8d8ff3 Merge pull request #213 from justcallmekoko/master
Rebase develop
2023-01-17 11:50:46 -05:00
Just Call Me Koko
8c3f1890b2 Merge pull request #212 from justcallmekoko/develop
Develop
2023-01-17 11:50:15 -05:00
Just Call Me Koko
eb69eb1454 Update README.md 2023-01-17 11:47:52 -05:00
Just Call Me Koko
4e76cfd154 Adjust SD update phrasing 2023-01-17 11:47:21 -05:00
Just Call Me Koko
752a65570f Add Marauder Dev Board Pro Build and Push 2023-01-16 18:38:57 -05:00
Just Call Me Koko
f8379f9e4b Update README 2023-01-16 11:27:02 -05:00
Just Call Me Koko
e7f2060886 Merge pull request #209 from justcallmekoko/master
Rebase Develop
2023-01-16 11:02:50 -05:00
Just Call Me Koko
5103426354 Merge pull request #208 from justcallmekoko/develop
Develop
2023-01-16 11:02:06 -05:00
Just Call Me Koko
4285eefe62 Flipper 2023-01-16 11:01:37 -05:00
Just Call Me Koko
02ac34ed3d Add support for wifi dev board pro 2023-01-16 11:01:02 -05:00
Just Call Me Koko
5187c11395 Create README.md 2023-01-12 11:47:47 -05:00
Just Call Me Koko
169e858752 Update configs.h 2023-01-08 13:18:13 -05:00
Just Call Me Koko
6760d1dc54 Add OG Marauder v3.8 PCB Step file 2023-01-06 13:49:46 -05:00
Just Call Me Koko
0fdfeb0f85 Update BOM with flipper header component 2023-01-02 15:14:01 -05:00
Just Call Me Koko
a30c74f494 Fix missing MOSFET 2023-01-02 14:53:42 -05:00
Just Call Me Koko
c62f5a8cd9 Update BOM 2023-01-02 14:42:35 -05:00
Just Call Me Koko
653f7b6534 Add fabrication files 2023-01-02 13:11:28 -05:00
Just Call Me Koko
9b99f3d391 Place drill hole, fill graphics, remove fab marks 2023-01-02 13:00:56 -05:00
Just Call Me Koko
385d627a93 Merge pull request #201 from trisp3ar/develop
Add BOM, updated with MOSFET replacement
2022-12-27 09:42:51 -05:00
Gregor Hermani
e7f37e2608 Add BOM, updated with MOSFET replacement 2022-12-26 00:05:14 +01:00
Just Call Me Koko
c3f5bbc93a Merge pull request #200 from justcallmekoko/master
Rebase Develop
2022-12-22 16:32:30 -05:00
94 changed files with 1012810 additions and 8187 deletions

View File

@@ -2,6 +2,8 @@ name: Build and Push
on:
workflow_dispatch:
pull_request:
types: [opened, reopened]
jobs:
# This workflow contains a single job called "build"
@@ -87,6 +89,7 @@ jobs:
cp User_Setup_Select.h CustomTFT_eSPI/
cp User_Setup_marauder_mini.h CustomTFT_eSPI/
cp User_Setup_og_marauder.h CustomTFT_eSPI/
cp User_Setup_marauder_m5stickc.h CustomTFT_eSPI/
pwd
ls -la
ls -la CustomTFT_eSPI
@@ -129,6 +132,27 @@ jobs:
run: |
mv ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
- name: Configure SD Serial for Flipper Zero SD Serial
run: |
pwd
sed -i 's/^ \/\/#define WRITE_PACKETS_SERIAL/ #define WRITE_PACKETS_SERIAL/' esp32_marauder/configs.h
- name: Build Marauder SD Serial for Flipper Zero WiFi Dev Board
uses: ArminJo/arduino-test-compile@v3.2.0
with:
sketch-names: esp32_marauder.ino
arduino-board-fqbn: esp32:esp32:esp32s2:PartitionScheme=min_spiffs,FlashSize=4M,PSRAM=enabled
extra-arduino-cli-args: "--warnings none"
- name: Rename Marauder Flipper SD Serial bin
run: |
mv ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper_sd_serial.bin
- name: Remove SD Serial
run: |
pwd
sed -i 's/^ #define WRITE_PACKETS_SERIAL/ \/\/#define WRITE_PACKETS_SERIAL/' esp32_marauder/configs.h
- name: Build Marauder for Flipper Zero Multi Board
uses: ArminJo/arduino-test-compile@v3.2.0
with:
@@ -153,6 +177,7 @@ jobs:
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
- name: Build Marauder for OG Marauder
uses: ArminJo/arduino-test-compile@v3.2.0
@@ -176,6 +201,7 @@ jobs:
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
- name: Build Marauder for v6 Marauder
uses: ArminJo/arduino-test-compile@v3.2.0
@@ -199,6 +225,7 @@ jobs:
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
- name: Build Marauder for Marauder Kit
uses: ArminJo/arduino-test-compile@v3.2.0
@@ -222,6 +249,7 @@ jobs:
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
- name: Build Marauder for Marauder Mini
uses: ArminJo/arduino-test-compile@v3.2.0
@@ -243,6 +271,7 @@ jobs:
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
sed -i 's/^ \/\/#define ESP32_LDDB/ #define ESP32_LDDB/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
- name: Build Marauder for ESP32 LDDB
uses: ArminJo/arduino-test-compile@v3.2.0
@@ -255,6 +284,55 @@ jobs:
run: |
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
- name: Configure TFT_eSPI and configs.h for Marauder Dev Board Pro
run: |
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
sed -i 's/^ \/\/#define MARAUDER_DEV_BOARD_PRO/ #define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
- name: Build Marauder for Marauder Dev Board Pro
uses: ArminJo/arduino-test-compile@v3.2.0
with:
sketch-names: esp32_marauder.ino
arduino-board-fqbn: esp32:esp32:d32:PartitionScheme=min_spiffs
extra-arduino-cli-args: "--warnings none"
- name: Rename Marauder for Marauder Dev Board Pro
run: |
mv ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.marauder_dev_board_pro.bin
- name: Configure TFT_eSPI and configs.h for Marauder M5StickC
run: |
pwd
find /home/runner/ -name "*TFT_eSPI*"
sed -i 's/^#include <User_Setup_marauder_mini.h>/\/\/#include <User_Setup_marauder_mini.h>/' /home/runner/Arduino/libraries/CustomTFT_eSPI/User_Setup_Select.h
sed -i 's/^\/\/#include <User_Setup_marauder_m5stickc.h>/#include <User_Setup_marauder_m5stickc.h>/' /home/runner/Arduino/libraries/CustomTFT_eSPI/User_Setup_Select.h
sed -i 's/^ #define MARAUDER_MINI/ \/\/#define MARAUDER_MINI/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_V4/ \/\/#define MARAUDER_V4/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_V6/ \/\/#define MARAUDER_V6/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_KIT/ \/\/#define MARAUDER_KIT/' esp32_marauder/configs.h
sed -i 's/^ #define GENERIC_ESP32/ \/\/#define GENERIC_ESP32/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_FLIPPER/ \/\/#define MARAUDER_FLIPPER/' esp32_marauder/configs.h
sed -i 's/^ #define ESP32_LDDB/ \/\/#define ESP32_LDDB/' esp32_marauder/configs.h
sed -i 's/^ #define MARAUDER_DEV_BOARD_PRO/ \/\/#define MARAUDER_DEV_BOARD_PRO/' esp32_marauder/configs.h
sed -i 's/^ \/\/#define MARAUDER_M5STICKC/ #define MARAUDER_M5STICKC/' esp32_marauder/configs.h
- name: Build Marauder for Marauder M5StickC
uses: ArminJo/arduino-test-compile@v3.2.0
with:
sketch-names: esp32_marauder.ino
arduino-board-fqbn: esp32:esp32:m5stick-c:PartitionScheme=min_spiffs
extra-arduino-cli-args: "--warnings none"
- name: Rename Marauder M5StickC bin
run: |
mv ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.ino.bin ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.m5stickc_plus.bin
- name: Display finished bins
run: |
find ./esp32_marauder/build -name "*.bin"
@@ -266,6 +344,13 @@ jobs:
path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
retention-days: 5
- name: 'Upload Flipper SD Serial Artifact'
uses: actions/upload-artifact@v3
with:
name: esp32_marauder.flipper_sd_serial.bin
path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper_sd_serial.bin
retention-days: 5
- name: 'Upload MultiboardS3 Artifact'
uses: actions/upload-artifact@v3
with:
@@ -308,6 +393,20 @@ jobs:
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
retention-days: 5
- name: 'Upload Marauder Dev Board Pro Artifact'
uses: actions/upload-artifact@v3
with:
name: esp32_marauder.marauder_dev_board_pro.bin
path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.marauder_dev_board_pro.bin
retention-days: 5
- name: 'Upload Marauder M5StickC Plus Artifact'
uses: actions/upload-artifact@v3
with:
name: esp32_marauder.m5stickc_plus.bin
path: ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.m5stickc_plus.bin
retention-days: 5
- name: Create Release
id: create_release
uses: actions/create-release@v1
@@ -318,6 +417,7 @@ jobs:
release_name: Release ${{ github.ref }}
draft: true
prerelease: false
if: github.event_name != 'pull_request'
- name: Upload Flipper Asset
id: upload-flipper-release-asset
@@ -329,6 +429,19 @@ jobs:
asset_path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper.bin
asset_name: esp32_marauder.flipper.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload Flipper SD Serial Asset
id: upload-flipper-sd-serial-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./esp32_marauder/build/esp32.esp32.esp32s2/esp32_marauder.flipper_sd_serial.bin
asset_name: esp32_marauder.flipper_sd_serial.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload MultiboardS3 Asset
id: upload-mutliboardS3-release-asset
@@ -340,6 +453,7 @@ jobs:
asset_path: ./esp32_marauder/build/esp32.esp32.esp32s3/esp32_marauder.multiboardS3.bin
asset_name: esp32_marauder.mutliboardS3.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload OG Asset
id: upload-og-release-asset
@@ -351,6 +465,7 @@ jobs:
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.og.bin
asset_name: esp32_marauder.og.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload v6 Asset
id: upload-v6-release-asset
@@ -362,6 +477,7 @@ jobs:
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.v6.bin
asset_name: esp32_marauder.v6.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload Kit Asset
id: upload-kit-release-asset
@@ -373,6 +489,7 @@ jobs:
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.kit.bin
asset_name: esp32_marauder.kit.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload Mini Asset
id: upload-mini-release-asset
@@ -384,6 +501,7 @@ jobs:
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.mini.bin
asset_name: esp32_marauder.mini.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload ESP32 LDDB Asset
id: upload-esp32-lddb-release-asset
@@ -395,3 +513,28 @@ jobs:
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.esp32_lddb.bin
asset_name: esp32_marauder.esp32_lddb.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload Marauder Dev Board Pro Asset
id: upload-marauder-dev-board-pro-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./esp32_marauder/build/esp32.esp32.d32/esp32_marauder.marauder_dev_board_pro.bin
asset_name: esp32_marauder.marauder_dev_board_pro.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'
- name: Upload Marauder M5StickC Plus Asset
id: upload-m5stickc-plus-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./esp32_marauder/build/esp32.esp32.m5stick-c/esp32_marauder.m5stickc_plus.bin
asset_name: esp32_marauder.m5stickc_plus.bin
asset_content_type: application/bin
if: github.event_name != 'pull_request'

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.vscode/arduino.json
.vscode/c_cpp_properties.json
esp32_marauder/.vscode/settings.json

Binary file not shown.

View File

@@ -0,0 +1,76 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Bot*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,1.700000*%
%ADD11O,1.700000X1.700000*%
%ADD12C,2.200000*%
%ADD13R,0.960000X5.440000*%
G04 APERTURE END LIST*
D10*
%TO.C,J4*%
X129370000Y-109940000D03*
D11*
X131910000Y-109940000D03*
X134450000Y-109940000D03*
X136990000Y-109940000D03*
X139530000Y-109940000D03*
X142070000Y-109940000D03*
X144610000Y-109940000D03*
X147150000Y-109940000D03*
X149690000Y-109940000D03*
X152230000Y-109940000D03*
X154770000Y-109940000D03*
%TD*%
D12*
%TO.C,*%
X187100000Y-99900000D03*
%TD*%
D10*
%TO.C,J5*%
X129370000Y-89840000D03*
D11*
X131910000Y-89840000D03*
X134450000Y-89840000D03*
X136990000Y-89840000D03*
X139530000Y-89840000D03*
X142070000Y-89840000D03*
X144610000Y-89840000D03*
X147150000Y-89840000D03*
X149690000Y-89840000D03*
X152230000Y-89840000D03*
X154770000Y-89840000D03*
%TD*%
D13*
%TO.C,J3*%
X153970000Y-103140000D03*
X156510000Y-101060000D03*
X159050000Y-103140000D03*
X161590000Y-101060000D03*
X164130000Y-103140000D03*
X166670000Y-101060000D03*
X169210000Y-103140000D03*
X171750000Y-101060000D03*
X174290000Y-103140000D03*
X176830000Y-101060000D03*
%TD*%
%TO.C,J2*%
X118410000Y-103140000D03*
X120950000Y-101060000D03*
X123490000Y-103140000D03*
X126030000Y-101060000D03*
X128570000Y-103140000D03*
X131110000Y-101060000D03*
X133650000Y-103140000D03*
X136190000Y-101060000D03*
%TD*%
M02*

View File

@@ -0,0 +1,39 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10R,0.960000X5.440000*%
G04 APERTURE END LIST*
D10*
%TO.C,J3*%
X153970000Y-103140000D03*
X156510000Y-101060000D03*
X159050000Y-103140000D03*
X161590000Y-101060000D03*
X164130000Y-103140000D03*
X166670000Y-101060000D03*
X169210000Y-103140000D03*
X171750000Y-101060000D03*
X174290000Y-103140000D03*
X176830000Y-101060000D03*
%TD*%
%TO.C,J2*%
X118410000Y-103140000D03*
X120950000Y-101060000D03*
X123490000Y-103140000D03*
X126030000Y-101060000D03*
X128570000Y-103140000D03*
X131110000Y-101060000D03*
X133650000Y-103140000D03*
X136190000Y-101060000D03*
%TD*%
M02*

View File

@@ -0,0 +1,647 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Legend,Bot*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.100000*%
%ADD11C,0.200000*%
G04 APERTURE END LIST*
D10*
X183027857Y-91754857D02*
X183294523Y-91754857D01*
X183294523Y-92173904D02*
X183294523Y-91373904D01*
X182913571Y-91373904D01*
X182494523Y-92173904D02*
X182570714Y-92135809D01*
X182608809Y-92059619D01*
X182608809Y-91373904D01*
X182189761Y-92173904D02*
X182189761Y-91640571D01*
X182189761Y-91373904D02*
X182227857Y-91412000D01*
X182189761Y-91450095D01*
X182151666Y-91412000D01*
X182189761Y-91373904D01*
X182189761Y-91450095D01*
X181808809Y-91640571D02*
X181808809Y-92440571D01*
X181808809Y-91678666D02*
X181732619Y-91640571D01*
X181580238Y-91640571D01*
X181504047Y-91678666D01*
X181465952Y-91716761D01*
X181427857Y-91792952D01*
X181427857Y-92021523D01*
X181465952Y-92097714D01*
X181504047Y-92135809D01*
X181580238Y-92173904D01*
X181732619Y-92173904D01*
X181808809Y-92135809D01*
X181085000Y-91640571D02*
X181085000Y-92440571D01*
X181085000Y-91678666D02*
X181008809Y-91640571D01*
X180856428Y-91640571D01*
X180780238Y-91678666D01*
X180742142Y-91716761D01*
X180704047Y-91792952D01*
X180704047Y-92021523D01*
X180742142Y-92097714D01*
X180780238Y-92135809D01*
X180856428Y-92173904D01*
X181008809Y-92173904D01*
X181085000Y-92135809D01*
X180056428Y-92135809D02*
X180132619Y-92173904D01*
X180285000Y-92173904D01*
X180361190Y-92135809D01*
X180399285Y-92059619D01*
X180399285Y-91754857D01*
X180361190Y-91678666D01*
X180285000Y-91640571D01*
X180132619Y-91640571D01*
X180056428Y-91678666D01*
X180018333Y-91754857D01*
X180018333Y-91831047D01*
X180399285Y-91907238D01*
X179675476Y-92173904D02*
X179675476Y-91640571D01*
X179675476Y-91792952D02*
X179637380Y-91716761D01*
X179599285Y-91678666D01*
X179523095Y-91640571D01*
X179446904Y-91640571D01*
X178646904Y-91373904D02*
X178113571Y-91373904D01*
X178646904Y-92173904D01*
X178113571Y-92173904D01*
X177504047Y-92135809D02*
X177580238Y-92173904D01*
X177732619Y-92173904D01*
X177808809Y-92135809D01*
X177846904Y-92059619D01*
X177846904Y-91754857D01*
X177808809Y-91678666D01*
X177732619Y-91640571D01*
X177580238Y-91640571D01*
X177504047Y-91678666D01*
X177465952Y-91754857D01*
X177465952Y-91831047D01*
X177846904Y-91907238D01*
X177123095Y-92173904D02*
X177123095Y-91640571D01*
X177123095Y-91792952D02*
X177085000Y-91716761D01*
X177046904Y-91678666D01*
X176970714Y-91640571D01*
X176894523Y-91640571D01*
X176513571Y-92173904D02*
X176589761Y-92135809D01*
X176627857Y-92097714D01*
X176665952Y-92021523D01*
X176665952Y-91792952D01*
X176627857Y-91716761D01*
X176589761Y-91678666D01*
X176513571Y-91640571D01*
X176399285Y-91640571D01*
X176323095Y-91678666D01*
X176285000Y-91716761D01*
X176246904Y-91792952D01*
X176246904Y-92021523D01*
X176285000Y-92097714D01*
X176323095Y-92135809D01*
X176399285Y-92173904D01*
X176513571Y-92173904D01*
X175370714Y-91373904D02*
X175180238Y-92173904D01*
X175027857Y-91602476D01*
X174875476Y-92173904D01*
X174685000Y-91373904D01*
X174380238Y-92173904D02*
X174380238Y-91640571D01*
X174380238Y-91373904D02*
X174418333Y-91412000D01*
X174380238Y-91450095D01*
X174342142Y-91412000D01*
X174380238Y-91373904D01*
X174380238Y-91450095D01*
X173732619Y-91754857D02*
X173999285Y-91754857D01*
X173999285Y-92173904D02*
X173999285Y-91373904D01*
X173618333Y-91373904D01*
X173313571Y-92173904D02*
X173313571Y-91640571D01*
X173313571Y-91373904D02*
X173351666Y-91412000D01*
X173313571Y-91450095D01*
X173275476Y-91412000D01*
X173313571Y-91373904D01*
X173313571Y-91450095D01*
X172323095Y-92173904D02*
X172323095Y-91373904D01*
X172132619Y-91373904D01*
X172018333Y-91412000D01*
X171942142Y-91488190D01*
X171904047Y-91564380D01*
X171865952Y-91716761D01*
X171865952Y-91831047D01*
X171904047Y-91983428D01*
X171942142Y-92059619D01*
X172018333Y-92135809D01*
X172132619Y-92173904D01*
X172323095Y-92173904D01*
X171218333Y-92135809D02*
X171294523Y-92173904D01*
X171446904Y-92173904D01*
X171523095Y-92135809D01*
X171561190Y-92059619D01*
X171561190Y-91754857D01*
X171523095Y-91678666D01*
X171446904Y-91640571D01*
X171294523Y-91640571D01*
X171218333Y-91678666D01*
X171180238Y-91754857D01*
X171180238Y-91831047D01*
X171561190Y-91907238D01*
X170913571Y-91640571D02*
X170723095Y-92173904D01*
X170532619Y-91640571D01*
X170227857Y-92173904D02*
X170227857Y-91373904D01*
X170227857Y-91678666D02*
X170151666Y-91640571D01*
X169999285Y-91640571D01*
X169923095Y-91678666D01*
X169885000Y-91716761D01*
X169846904Y-91792952D01*
X169846904Y-92021523D01*
X169885000Y-92097714D01*
X169923095Y-92135809D01*
X169999285Y-92173904D01*
X170151666Y-92173904D01*
X170227857Y-92135809D01*
X169389761Y-92173904D02*
X169465952Y-92135809D01*
X169504047Y-92097714D01*
X169542142Y-92021523D01*
X169542142Y-91792952D01*
X169504047Y-91716761D01*
X169465952Y-91678666D01*
X169389761Y-91640571D01*
X169275476Y-91640571D01*
X169199285Y-91678666D01*
X169161190Y-91716761D01*
X169123095Y-91792952D01*
X169123095Y-92021523D01*
X169161190Y-92097714D01*
X169199285Y-92135809D01*
X169275476Y-92173904D01*
X169389761Y-92173904D01*
X168437380Y-92173904D02*
X168437380Y-91754857D01*
X168475476Y-91678666D01*
X168551666Y-91640571D01*
X168704047Y-91640571D01*
X168780238Y-91678666D01*
X168437380Y-92135809D02*
X168513571Y-92173904D01*
X168704047Y-92173904D01*
X168780238Y-92135809D01*
X168818333Y-92059619D01*
X168818333Y-91983428D01*
X168780238Y-91907238D01*
X168704047Y-91869142D01*
X168513571Y-91869142D01*
X168437380Y-91831047D01*
X168056428Y-92173904D02*
X168056428Y-91640571D01*
X168056428Y-91792952D02*
X168018333Y-91716761D01*
X167980238Y-91678666D01*
X167904047Y-91640571D01*
X167827857Y-91640571D01*
X167218333Y-92173904D02*
X167218333Y-91373904D01*
X167218333Y-92135809D02*
X167294523Y-92173904D01*
X167446904Y-92173904D01*
X167523095Y-92135809D01*
X167561190Y-92097714D01*
X167599285Y-92021523D01*
X167599285Y-91792952D01*
X167561190Y-91716761D01*
X167523095Y-91678666D01*
X167446904Y-91640571D01*
X167294523Y-91640571D01*
X167218333Y-91678666D01*
X166227857Y-92173904D02*
X166227857Y-91373904D01*
X165923095Y-91373904D01*
X165846904Y-91412000D01*
X165808809Y-91450095D01*
X165770714Y-91526285D01*
X165770714Y-91640571D01*
X165808809Y-91716761D01*
X165846904Y-91754857D01*
X165923095Y-91792952D01*
X166227857Y-91792952D01*
X165427857Y-92173904D02*
X165427857Y-91640571D01*
X165427857Y-91792952D02*
X165389761Y-91716761D01*
X165351666Y-91678666D01*
X165275476Y-91640571D01*
X165199285Y-91640571D01*
X164818333Y-92173904D02*
X164894523Y-92135809D01*
X164932619Y-92097714D01*
X164970714Y-92021523D01*
X164970714Y-91792952D01*
X164932619Y-91716761D01*
X164894523Y-91678666D01*
X164818333Y-91640571D01*
X164704047Y-91640571D01*
X164627857Y-91678666D01*
X164589761Y-91716761D01*
X164551666Y-91792952D01*
X164551666Y-92021523D01*
X164589761Y-92097714D01*
X164627857Y-92135809D01*
X164704047Y-92173904D01*
X164818333Y-92173904D01*
X182837380Y-93461904D02*
X183104047Y-93080952D01*
X183294523Y-93461904D02*
X183294523Y-92661904D01*
X182989761Y-92661904D01*
X182913571Y-92700000D01*
X182875476Y-92738095D01*
X182837380Y-92814285D01*
X182837380Y-92928571D01*
X182875476Y-93004761D01*
X182913571Y-93042857D01*
X182989761Y-93080952D01*
X183294523Y-93080952D01*
X182189761Y-93423809D02*
X182265952Y-93461904D01*
X182418333Y-93461904D01*
X182494523Y-93423809D01*
X182532619Y-93347619D01*
X182532619Y-93042857D01*
X182494523Y-92966666D01*
X182418333Y-92928571D01*
X182265952Y-92928571D01*
X182189761Y-92966666D01*
X182151666Y-93042857D01*
X182151666Y-93119047D01*
X182532619Y-93195238D01*
X181885000Y-92928571D02*
X181694523Y-93461904D01*
X181504047Y-92928571D01*
X180704047Y-92661904D02*
X180437380Y-93461904D01*
X180170714Y-92661904D01*
X179751666Y-92661904D02*
X179675476Y-92661904D01*
X179599285Y-92700000D01*
X179561190Y-92738095D01*
X179523095Y-92814285D01*
X179485000Y-92966666D01*
X179485000Y-93157142D01*
X179523095Y-93309523D01*
X179561190Y-93385714D01*
X179599285Y-93423809D01*
X179675476Y-93461904D01*
X179751666Y-93461904D01*
X179827857Y-93423809D01*
X179865952Y-93385714D01*
X179904047Y-93309523D01*
X179942142Y-93157142D01*
X179942142Y-92966666D01*
X179904047Y-92814285D01*
X179865952Y-92738095D01*
X179827857Y-92700000D01*
X179751666Y-92661904D01*
X179142142Y-93385714D02*
X179104047Y-93423809D01*
X179142142Y-93461904D01*
X179180238Y-93423809D01*
X179142142Y-93385714D01*
X179142142Y-93461904D01*
X178342142Y-93461904D02*
X178799285Y-93461904D01*
X178570714Y-93461904D02*
X178570714Y-92661904D01*
X178646904Y-92776190D01*
X178723095Y-92852380D01*
X178799285Y-92890476D01*
X177999285Y-93385714D02*
X177961190Y-93423809D01*
X177999285Y-93461904D01*
X178037380Y-93423809D01*
X177999285Y-93385714D01*
X177999285Y-93461904D01*
X177465952Y-92661904D02*
X177389761Y-92661904D01*
X177313571Y-92700000D01*
X177275476Y-92738095D01*
X177237380Y-92814285D01*
X177199285Y-92966666D01*
X177199285Y-93157142D01*
X177237380Y-93309523D01*
X177275476Y-93385714D01*
X177313571Y-93423809D01*
X177389761Y-93461904D01*
X177465952Y-93461904D01*
X177542142Y-93423809D01*
X177580238Y-93385714D01*
X177618333Y-93309523D01*
X177656428Y-93157142D01*
X177656428Y-92966666D01*
X177618333Y-92814285D01*
X177580238Y-92738095D01*
X177542142Y-92700000D01*
X177465952Y-92661904D01*
X183065952Y-93949904D02*
X183065952Y-94521333D01*
X183104047Y-94635619D01*
X183180238Y-94711809D01*
X183294523Y-94749904D01*
X183370714Y-94749904D01*
X182342142Y-94216571D02*
X182342142Y-94749904D01*
X182685000Y-94216571D02*
X182685000Y-94635619D01*
X182646904Y-94711809D01*
X182570714Y-94749904D01*
X182456428Y-94749904D01*
X182380238Y-94711809D01*
X182342142Y-94673714D01*
X181999285Y-94711809D02*
X181923095Y-94749904D01*
X181770714Y-94749904D01*
X181694523Y-94711809D01*
X181656428Y-94635619D01*
X181656428Y-94597523D01*
X181694523Y-94521333D01*
X181770714Y-94483238D01*
X181885000Y-94483238D01*
X181961190Y-94445142D01*
X181999285Y-94368952D01*
X181999285Y-94330857D01*
X181961190Y-94254666D01*
X181885000Y-94216571D01*
X181770714Y-94216571D01*
X181694523Y-94254666D01*
X181427857Y-94216571D02*
X181123095Y-94216571D01*
X181313571Y-93949904D02*
X181313571Y-94635619D01*
X181275476Y-94711809D01*
X181199285Y-94749904D01*
X181123095Y-94749904D01*
X180399285Y-94673714D02*
X180437380Y-94711809D01*
X180551666Y-94749904D01*
X180627857Y-94749904D01*
X180742142Y-94711809D01*
X180818333Y-94635619D01*
X180856428Y-94559428D01*
X180894523Y-94407047D01*
X180894523Y-94292761D01*
X180856428Y-94140380D01*
X180818333Y-94064190D01*
X180742142Y-93988000D01*
X180627857Y-93949904D01*
X180551666Y-93949904D01*
X180437380Y-93988000D01*
X180399285Y-94026095D01*
X179713571Y-94749904D02*
X179713571Y-94330857D01*
X179751666Y-94254666D01*
X179827857Y-94216571D01*
X179980238Y-94216571D01*
X180056428Y-94254666D01*
X179713571Y-94711809D02*
X179789761Y-94749904D01*
X179980238Y-94749904D01*
X180056428Y-94711809D01*
X180094523Y-94635619D01*
X180094523Y-94559428D01*
X180056428Y-94483238D01*
X179980238Y-94445142D01*
X179789761Y-94445142D01*
X179713571Y-94407047D01*
X179218333Y-94749904D02*
X179294523Y-94711809D01*
X179332619Y-94635619D01*
X179332619Y-93949904D01*
X178799285Y-94749904D02*
X178875476Y-94711809D01*
X178913571Y-94635619D01*
X178913571Y-93949904D01*
X178494523Y-94749904D02*
X178494523Y-93949904D01*
X178227857Y-94521333D01*
X177961190Y-93949904D01*
X177961190Y-94749904D01*
X177275476Y-94711809D02*
X177351666Y-94749904D01*
X177504047Y-94749904D01*
X177580238Y-94711809D01*
X177618333Y-94635619D01*
X177618333Y-94330857D01*
X177580238Y-94254666D01*
X177504047Y-94216571D01*
X177351666Y-94216571D01*
X177275476Y-94254666D01*
X177237380Y-94330857D01*
X177237380Y-94407047D01*
X177618333Y-94483238D01*
X176894523Y-94749904D02*
X176894523Y-93949904D01*
X176437380Y-94749904D02*
X176780238Y-94292761D01*
X176437380Y-93949904D02*
X176894523Y-94407047D01*
X175980238Y-94749904D02*
X176056428Y-94711809D01*
X176094523Y-94673714D01*
X176132619Y-94597523D01*
X176132619Y-94368952D01*
X176094523Y-94292761D01*
X176056428Y-94254666D01*
X175980238Y-94216571D01*
X175865952Y-94216571D01*
X175789761Y-94254666D01*
X175751666Y-94292761D01*
X175713571Y-94368952D01*
X175713571Y-94597523D01*
X175751666Y-94673714D01*
X175789761Y-94711809D01*
X175865952Y-94749904D01*
X175980238Y-94749904D01*
X175370714Y-94749904D02*
X175370714Y-93949904D01*
X175294523Y-94445142D02*
X175065952Y-94749904D01*
X175065952Y-94216571D02*
X175370714Y-94521333D01*
X174608809Y-94749904D02*
X174685000Y-94711809D01*
X174723095Y-94673714D01*
X174761190Y-94597523D01*
X174761190Y-94368952D01*
X174723095Y-94292761D01*
X174685000Y-94254666D01*
X174608809Y-94216571D01*
X174494523Y-94216571D01*
X174418333Y-94254666D01*
X174380238Y-94292761D01*
X174342142Y-94368952D01*
X174342142Y-94597523D01*
X174380238Y-94673714D01*
X174418333Y-94711809D01*
X174494523Y-94749904D01*
X174608809Y-94749904D01*
X172742142Y-94749904D02*
X172780238Y-94749904D01*
X172856428Y-94711809D01*
X172970714Y-94597523D01*
X173161190Y-94368952D01*
X173237380Y-94254666D01*
X173275476Y-94140380D01*
X173275476Y-94064190D01*
X173237380Y-93988000D01*
X173161190Y-93949904D01*
X173123095Y-93949904D01*
X173046904Y-93988000D01*
X173008809Y-94064190D01*
X173008809Y-94102285D01*
X173046904Y-94178476D01*
X173085000Y-94216571D01*
X173313571Y-94368952D01*
X173351666Y-94407047D01*
X173389761Y-94483238D01*
X173389761Y-94597523D01*
X173351666Y-94673714D01*
X173313571Y-94711809D01*
X173237380Y-94749904D01*
X173123095Y-94749904D01*
X173046904Y-94711809D01*
X173008809Y-94673714D01*
X172894523Y-94521333D01*
X172856428Y-94407047D01*
X172856428Y-94330857D01*
X171904047Y-94216571D02*
X171599285Y-94216571D01*
X171789761Y-93949904D02*
X171789761Y-94635619D01*
X171751666Y-94711809D01*
X171675476Y-94749904D01*
X171599285Y-94749904D01*
X171332619Y-94749904D02*
X171332619Y-94216571D01*
X171332619Y-94368952D02*
X171294523Y-94292761D01*
X171256428Y-94254666D01*
X171180238Y-94216571D01*
X171104047Y-94216571D01*
X170837380Y-94749904D02*
X170837380Y-94216571D01*
X170837380Y-93949904D02*
X170875476Y-93988000D01*
X170837380Y-94026095D01*
X170799285Y-93988000D01*
X170837380Y-93949904D01*
X170837380Y-94026095D01*
X170494523Y-94711809D02*
X170418333Y-94749904D01*
X170265952Y-94749904D01*
X170189761Y-94711809D01*
X170151666Y-94635619D01*
X170151666Y-94597523D01*
X170189761Y-94521333D01*
X170265952Y-94483238D01*
X170380238Y-94483238D01*
X170456428Y-94445142D01*
X170494523Y-94368952D01*
X170494523Y-94330857D01*
X170456428Y-94254666D01*
X170380238Y-94216571D01*
X170265952Y-94216571D01*
X170189761Y-94254666D01*
X169808809Y-94216571D02*
X169808809Y-95016571D01*
X169808809Y-94254666D02*
X169732619Y-94216571D01*
X169580238Y-94216571D01*
X169504047Y-94254666D01*
X169465952Y-94292761D01*
X169427857Y-94368952D01*
X169427857Y-94597523D01*
X169465952Y-94673714D01*
X169504047Y-94711809D01*
X169580238Y-94749904D01*
X169732619Y-94749904D01*
X169808809Y-94711809D01*
X169161190Y-93949904D02*
X168665952Y-93949904D01*
X168932619Y-94254666D01*
X168818333Y-94254666D01*
X168742142Y-94292761D01*
X168704047Y-94330857D01*
X168665952Y-94407047D01*
X168665952Y-94597523D01*
X168704047Y-94673714D01*
X168742142Y-94711809D01*
X168818333Y-94749904D01*
X169046904Y-94749904D01*
X169123095Y-94711809D01*
X169161190Y-94673714D01*
X167980238Y-94749904D02*
X167980238Y-94330857D01*
X168018333Y-94254666D01*
X168094523Y-94216571D01*
X168246904Y-94216571D01*
X168323095Y-94254666D01*
X167980238Y-94711809D02*
X168056428Y-94749904D01*
X168246904Y-94749904D01*
X168323095Y-94711809D01*
X168361190Y-94635619D01*
X168361190Y-94559428D01*
X168323095Y-94483238D01*
X168246904Y-94445142D01*
X168056428Y-94445142D01*
X167980238Y-94407047D01*
X167599285Y-94749904D02*
X167599285Y-94216571D01*
X167599285Y-94368952D02*
X167561190Y-94292761D01*
X167523095Y-94254666D01*
X167446904Y-94216571D01*
X167370714Y-94216571D01*
D11*
%TO.C,J3*%
X177900000Y-100850000D02*
X177900000Y-103350000D01*
X152900000Y-100850000D02*
X152900000Y-105860000D01*
%TO.C,J2*%
X137300000Y-100850000D02*
X137300000Y-103350000D01*
X117300000Y-100850000D02*
X117300000Y-105860000D01*
%TD*%
M02*

View File

@@ -0,0 +1,65 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Profile,NP*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%TA.AperFunction,Profile*%
%ADD10C,0.100000*%
%TD*%
G04 APERTURE END LIST*
D10*
X111130000Y-108940000D02*
G75*
G03*
X112130000Y-109940000I1000000J0D01*
G01*
X184090000Y-108940000D02*
X184090000Y-102390000D01*
X184090000Y-97390000D02*
X184090000Y-90840000D01*
X128365000Y-89840000D02*
X112130000Y-89840000D01*
X183090000Y-109940000D02*
G75*
G03*
X184090000Y-108940000I0J1000000D01*
G01*
X183090000Y-89840000D02*
X155765000Y-89840000D01*
X128365000Y-109940000D02*
X155765000Y-109940000D01*
X112130000Y-89840000D02*
G75*
G03*
X111130000Y-90840000I0J-1000000D01*
G01*
X111130000Y-90840000D02*
X111130000Y-108940000D01*
X187090000Y-102390000D02*
G75*
G03*
X187090000Y-97390000I0J2500000D01*
G01*
X184090000Y-90840000D02*
G75*
G03*
X183090000Y-89840000I-1000000J0D01*
G01*
X184090000Y-102390000D02*
X187090000Y-102390000D01*
X128385000Y-89840000D02*
X155765000Y-89840000D01*
X155765000Y-109940000D02*
X183090000Y-109940000D01*
X187090000Y-97390000D02*
X184090000Y-97390000D01*
X112130000Y-109940000D02*
X128365000Y-109940000D01*
M02*

View File

@@ -0,0 +1,381 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Soldermask,Top*%
%TF.FilePolarity,Negative*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10R,0.600000X0.750000*%
%ADD11R,0.750000X0.600000*%
%ADD12R,0.600000X0.620000*%
%ADD13R,0.650000X1.200000*%
%ADD14C,1.700000*%
%ADD15O,1.700000X1.700000*%
%ADD16R,0.620000X0.600000*%
%ADD17R,0.690000X0.720000*%
%ADD18R,1.100000X0.700000*%
%ADD19R,0.930000X0.900000*%
%ADD20R,0.780000X1.050000*%
%ADD21R,3.330000X0.700000*%
%ADD22R,2.800000X0.860000*%
%ADD23R,1.830000X1.140000*%
%ADD24R,0.700000X0.700000*%
%ADD25R,0.720000X0.690000*%
%ADD26R,0.900000X1.500000*%
%ADD27R,1.500000X0.900000*%
%ADD28R,0.900000X0.900000*%
%ADD29R,0.500000X0.900000*%
%ADD30R,0.650000X2.770000*%
%ADD31R,0.950000X0.800000*%
%ADD32R,1.050000X0.650000*%
%ADD33R,1.850000X0.900000*%
%ADD34R,1.850000X3.200000*%
%ADD35C,2.200000*%
%ADD36R,0.400000X1.000000*%
%ADD37R,0.620000X0.640000*%
G04 APERTURE END LIST*
D10*
%TO.C,R10*%
X134960000Y-97140000D03*
X134960000Y-96040000D03*
%TD*%
D11*
%TO.C,R15*%
X126500000Y-96950000D03*
X127600000Y-96950000D03*
%TD*%
%TO.C,R6*%
X150660000Y-104890000D03*
X149560000Y-104890000D03*
%TD*%
D12*
%TO.C,C7*%
X117000000Y-92270000D03*
X116080000Y-92270000D03*
%TD*%
D10*
%TO.C,R5*%
X115300000Y-91350000D03*
X115300000Y-92450000D03*
%TD*%
D13*
%TO.C,IC2*%
X128460000Y-92600000D03*
X126540000Y-92600000D03*
X127500000Y-94700000D03*
%TD*%
%TO.C,IC4*%
X138210000Y-102375000D03*
X136290000Y-102375000D03*
X137250000Y-104475000D03*
%TD*%
D14*
%TO.C,J4*%
X129370000Y-109940000D03*
D15*
X131910000Y-109940000D03*
X134450000Y-109940000D03*
X136990000Y-109940000D03*
X139530000Y-109940000D03*
X142070000Y-109940000D03*
X144610000Y-109940000D03*
X147150000Y-109940000D03*
X149690000Y-109940000D03*
X152230000Y-109940000D03*
X154770000Y-109940000D03*
%TD*%
D16*
%TO.C,C11*%
X136225000Y-97060000D03*
X136225000Y-96140000D03*
%TD*%
D17*
%TO.C,C2*%
X181985000Y-90350000D03*
X181065000Y-90350000D03*
%TD*%
D18*
%TO.C,J6*%
X112460000Y-102230000D03*
X112460000Y-101130000D03*
X112460000Y-100030000D03*
X112460000Y-98930000D03*
X112460000Y-97830000D03*
X112460000Y-96730000D03*
X112460000Y-95630000D03*
X112460000Y-94530000D03*
D19*
X124925000Y-104020000D03*
D20*
X125000000Y-99755000D03*
D21*
X123725000Y-93370000D03*
D22*
X112960000Y-93450000D03*
D23*
X112475000Y-106110000D03*
D21*
X123725000Y-106330000D03*
%TD*%
D24*
%TO.C,LED1*%
X155950000Y-98885000D03*
X154850000Y-98885000D03*
X154850000Y-100715000D03*
X155950000Y-100715000D03*
%TD*%
D10*
%TO.C,R4*%
X117820000Y-91350000D03*
X117820000Y-92450000D03*
%TD*%
D25*
%TO.C,C6*%
X133100000Y-99040000D03*
X133100000Y-99960000D03*
%TD*%
D26*
%TO.C,IC1*%
X176560000Y-91100000D03*
X175290000Y-91100000D03*
X174020000Y-91100000D03*
X172750000Y-91100000D03*
X171480000Y-91100000D03*
X170210000Y-91100000D03*
X168940000Y-91100000D03*
X167670000Y-91100000D03*
X166400000Y-91100000D03*
X165130000Y-91100000D03*
X163860000Y-91100000D03*
X162590000Y-91100000D03*
X161320000Y-91100000D03*
X160050000Y-91100000D03*
D27*
X158800000Y-94135000D03*
X158800000Y-95405000D03*
X158800000Y-96675000D03*
X158800000Y-97945000D03*
X158800000Y-99215000D03*
X158800000Y-100485000D03*
X158800000Y-101755000D03*
X158800000Y-103025000D03*
X158800000Y-104295000D03*
X158800000Y-105565000D03*
D26*
X160050000Y-108600000D03*
X161320000Y-108600000D03*
X162590000Y-108600000D03*
X163860000Y-108600000D03*
X165130000Y-108600000D03*
X166400000Y-108600000D03*
X167670000Y-108600000D03*
X168940000Y-108600000D03*
X170210000Y-108600000D03*
X171480000Y-108600000D03*
X172750000Y-108600000D03*
X174020000Y-108600000D03*
X175290000Y-108600000D03*
X176560000Y-108600000D03*
D28*
X170240000Y-96950000D03*
X168840000Y-96950000D03*
X167440000Y-96950000D03*
X167440000Y-98350000D03*
X167440000Y-99750000D03*
X168840000Y-99750000D03*
X170240000Y-99750000D03*
X170240000Y-98350000D03*
X168840000Y-98350000D03*
%TD*%
D29*
%TO.C,LED4*%
X127200000Y-99100000D03*
X128500000Y-99100000D03*
%TD*%
D11*
%TO.C,R2*%
X155950000Y-97430000D03*
X154850000Y-97430000D03*
%TD*%
D30*
%TO.C,J1*%
X143860000Y-101665000D03*
X143860000Y-98135000D03*
X145130000Y-101665000D03*
X145130000Y-98135000D03*
X146400000Y-101665000D03*
X146400000Y-98135000D03*
X147670000Y-101665000D03*
X147670000Y-98135000D03*
X148940000Y-101665000D03*
X148940000Y-98135000D03*
%TD*%
D25*
%TO.C,C5*%
X126100000Y-101790000D03*
X126100000Y-102710000D03*
%TD*%
D13*
%TO.C,IC5*%
X141060000Y-105000000D03*
X139140000Y-105000000D03*
X140100000Y-107100000D03*
%TD*%
D31*
%TO.C,LED2*%
X142800000Y-93050000D03*
X142800000Y-94650000D03*
%TD*%
D32*
%TO.C,S2*%
X152075000Y-104875000D03*
X156225000Y-104875000D03*
X152075000Y-107025000D03*
X156225000Y-107025000D03*
%TD*%
D12*
%TO.C,C4*%
X154930000Y-102150000D03*
X155850000Y-102150000D03*
%TD*%
D33*
%TO.C,IC3*%
X134200000Y-106700000D03*
X134200000Y-104400000D03*
X134200000Y-102100000D03*
D34*
X128000000Y-104400000D03*
%TD*%
D12*
%TO.C,C3*%
X179065000Y-90300000D03*
X179985000Y-90300000D03*
%TD*%
D35*
%TO.C,*%
X187100000Y-99900000D03*
%TD*%
D16*
%TO.C,C8*%
X129290000Y-97080000D03*
X129290000Y-96160000D03*
%TD*%
D36*
%TO.C,U3*%
X138250000Y-92600000D03*
X137600000Y-92600000D03*
X136950000Y-92600000D03*
X136950000Y-94600000D03*
X137600000Y-94600000D03*
X138250000Y-94600000D03*
%TD*%
D32*
%TO.C,S1*%
X152075000Y-92725000D03*
X156225000Y-92725000D03*
X152075000Y-94875000D03*
X156225000Y-94875000D03*
%TD*%
D11*
%TO.C,R1*%
X149700000Y-93800000D03*
X150800000Y-93800000D03*
%TD*%
D16*
%TO.C,C9*%
X134420000Y-99050000D03*
X134420000Y-99970000D03*
%TD*%
D10*
%TO.C,R8*%
X131610000Y-97150000D03*
X131610000Y-96050000D03*
%TD*%
D14*
%TO.C,J5*%
X129370000Y-89840000D03*
D15*
X131910000Y-89840000D03*
X134450000Y-89840000D03*
X136990000Y-89840000D03*
X139530000Y-89840000D03*
X142070000Y-89840000D03*
X144610000Y-89840000D03*
X147150000Y-89840000D03*
X149690000Y-89840000D03*
X152230000Y-89840000D03*
X154770000Y-89840000D03*
%TD*%
D10*
%TO.C,R12*%
X138400000Y-97150000D03*
X138400000Y-96050000D03*
%TD*%
D37*
%TO.C,C1*%
X150690000Y-94690000D03*
X149770000Y-94690000D03*
%TD*%
D10*
%TO.C,R11*%
X137200000Y-97150000D03*
X137200000Y-96050000D03*
%TD*%
D16*
%TO.C,C10*%
X133000000Y-97085000D03*
X133000000Y-96165000D03*
%TD*%
D10*
%TO.C,R13*%
X144350000Y-93300000D03*
X144350000Y-94400000D03*
%TD*%
%TO.C,R14*%
X147400000Y-93250000D03*
X147400000Y-94350000D03*
%TD*%
D36*
%TO.C,U2*%
X134800000Y-92600000D03*
X134150000Y-92600000D03*
X133500000Y-92600000D03*
X133500000Y-94600000D03*
X134150000Y-94600000D03*
X134800000Y-94600000D03*
%TD*%
D10*
%TO.C,R9*%
X133790000Y-97140000D03*
X133790000Y-96040000D03*
%TD*%
D36*
%TO.C,U1*%
X131450000Y-92610000D03*
X130800000Y-92610000D03*
X130150000Y-92610000D03*
X130150000Y-94610000D03*
X130800000Y-94610000D03*
X131450000Y-94610000D03*
%TD*%
D10*
%TO.C,R3*%
X119900000Y-91360000D03*
X119900000Y-92460000D03*
%TD*%
%TO.C,R7*%
X130410000Y-97160000D03*
X130410000Y-96060000D03*
%TD*%
D31*
%TO.C,LED3*%
X145900000Y-93050000D03*
X145900000Y-94650000D03*
%TD*%
M02*

View File

@@ -0,0 +1,343 @@
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.8)*%
%TF.CreationDate,2023-01-02T13:08:22-05:00*%
%TF.ProjectId,WiFi-Devboard-Pro,57694669-2d44-4657-9662-6f6172642d50,rev?*%
%TF.SameCoordinates,Original*%
%TF.FileFunction,Paste,Top*%
%TF.FilePolarity,Positive*%
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (6.0.8)) date 2023-01-02 13:08:22*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10R,0.600000X0.750000*%
%ADD11R,0.750000X0.600000*%
%ADD12R,0.600000X0.620000*%
%ADD13R,0.650000X1.200000*%
%ADD14R,0.620000X0.600000*%
%ADD15R,0.690000X0.720000*%
%ADD16R,1.100000X0.700000*%
%ADD17R,0.930000X0.900000*%
%ADD18R,0.780000X1.050000*%
%ADD19R,3.330000X0.700000*%
%ADD20R,2.800000X0.860000*%
%ADD21R,1.830000X1.140000*%
%ADD22R,0.700000X0.700000*%
%ADD23R,0.720000X0.690000*%
%ADD24R,0.900000X1.500000*%
%ADD25R,1.500000X0.900000*%
%ADD26R,0.900000X0.900000*%
%ADD27R,0.500000X0.900000*%
%ADD28R,0.650000X2.770000*%
%ADD29R,0.950000X0.800000*%
%ADD30R,1.050000X0.650000*%
%ADD31R,1.850000X0.900000*%
%ADD32R,1.850000X3.200000*%
%ADD33R,0.400000X1.000000*%
%ADD34R,0.620000X0.640000*%
G04 APERTURE END LIST*
D10*
%TO.C,R10*%
X134960000Y-97140000D03*
X134960000Y-96040000D03*
%TD*%
D11*
%TO.C,R15*%
X126500000Y-96950000D03*
X127600000Y-96950000D03*
%TD*%
%TO.C,R6*%
X150660000Y-104890000D03*
X149560000Y-104890000D03*
%TD*%
D12*
%TO.C,C7*%
X117000000Y-92270000D03*
X116080000Y-92270000D03*
%TD*%
D10*
%TO.C,R5*%
X115300000Y-91350000D03*
X115300000Y-92450000D03*
%TD*%
D13*
%TO.C,IC2*%
X128460000Y-92600000D03*
X126540000Y-92600000D03*
X127500000Y-94700000D03*
%TD*%
%TO.C,IC4*%
X138210000Y-102375000D03*
X136290000Y-102375000D03*
X137250000Y-104475000D03*
%TD*%
D14*
%TO.C,C11*%
X136225000Y-97060000D03*
X136225000Y-96140000D03*
%TD*%
D15*
%TO.C,C2*%
X181985000Y-90350000D03*
X181065000Y-90350000D03*
%TD*%
D16*
%TO.C,J6*%
X112460000Y-102230000D03*
X112460000Y-101130000D03*
X112460000Y-100030000D03*
X112460000Y-98930000D03*
X112460000Y-97830000D03*
X112460000Y-96730000D03*
X112460000Y-95630000D03*
X112460000Y-94530000D03*
D17*
X124925000Y-104020000D03*
D18*
X125000000Y-99755000D03*
D19*
X123725000Y-93370000D03*
D20*
X112960000Y-93450000D03*
D21*
X112475000Y-106110000D03*
D19*
X123725000Y-106330000D03*
%TD*%
D22*
%TO.C,LED1*%
X155950000Y-98885000D03*
X154850000Y-98885000D03*
X154850000Y-100715000D03*
X155950000Y-100715000D03*
%TD*%
D10*
%TO.C,R4*%
X117820000Y-91350000D03*
X117820000Y-92450000D03*
%TD*%
D23*
%TO.C,C6*%
X133100000Y-99040000D03*
X133100000Y-99960000D03*
%TD*%
D24*
%TO.C,IC1*%
X176560000Y-91100000D03*
X175290000Y-91100000D03*
X174020000Y-91100000D03*
X172750000Y-91100000D03*
X171480000Y-91100000D03*
X170210000Y-91100000D03*
X168940000Y-91100000D03*
X167670000Y-91100000D03*
X166400000Y-91100000D03*
X165130000Y-91100000D03*
X163860000Y-91100000D03*
X162590000Y-91100000D03*
X161320000Y-91100000D03*
X160050000Y-91100000D03*
D25*
X158800000Y-94135000D03*
X158800000Y-95405000D03*
X158800000Y-96675000D03*
X158800000Y-97945000D03*
X158800000Y-99215000D03*
X158800000Y-100485000D03*
X158800000Y-101755000D03*
X158800000Y-103025000D03*
X158800000Y-104295000D03*
X158800000Y-105565000D03*
D24*
X160050000Y-108600000D03*
X161320000Y-108600000D03*
X162590000Y-108600000D03*
X163860000Y-108600000D03*
X165130000Y-108600000D03*
X166400000Y-108600000D03*
X167670000Y-108600000D03*
X168940000Y-108600000D03*
X170210000Y-108600000D03*
X171480000Y-108600000D03*
X172750000Y-108600000D03*
X174020000Y-108600000D03*
X175290000Y-108600000D03*
X176560000Y-108600000D03*
D26*
X170240000Y-96950000D03*
X168840000Y-96950000D03*
X167440000Y-96950000D03*
X167440000Y-98350000D03*
X167440000Y-99750000D03*
X168840000Y-99750000D03*
X170240000Y-99750000D03*
X170240000Y-98350000D03*
X168840000Y-98350000D03*
%TD*%
D27*
%TO.C,LED4*%
X127200000Y-99100000D03*
X128500000Y-99100000D03*
%TD*%
D11*
%TO.C,R2*%
X155950000Y-97430000D03*
X154850000Y-97430000D03*
%TD*%
D28*
%TO.C,J1*%
X143860000Y-101665000D03*
X143860000Y-98135000D03*
X145130000Y-101665000D03*
X145130000Y-98135000D03*
X146400000Y-101665000D03*
X146400000Y-98135000D03*
X147670000Y-101665000D03*
X147670000Y-98135000D03*
X148940000Y-101665000D03*
X148940000Y-98135000D03*
%TD*%
D23*
%TO.C,C5*%
X126100000Y-101790000D03*
X126100000Y-102710000D03*
%TD*%
D13*
%TO.C,IC5*%
X141060000Y-105000000D03*
X139140000Y-105000000D03*
X140100000Y-107100000D03*
%TD*%
D29*
%TO.C,LED2*%
X142800000Y-93050000D03*
X142800000Y-94650000D03*
%TD*%
D30*
%TO.C,S2*%
X152075000Y-104875000D03*
X156225000Y-104875000D03*
X152075000Y-107025000D03*
X156225000Y-107025000D03*
%TD*%
D12*
%TO.C,C4*%
X154930000Y-102150000D03*
X155850000Y-102150000D03*
%TD*%
D31*
%TO.C,IC3*%
X134200000Y-106700000D03*
X134200000Y-104400000D03*
X134200000Y-102100000D03*
D32*
X128000000Y-104400000D03*
%TD*%
D12*
%TO.C,C3*%
X179065000Y-90300000D03*
X179985000Y-90300000D03*
%TD*%
D14*
%TO.C,C8*%
X129290000Y-97080000D03*
X129290000Y-96160000D03*
%TD*%
D33*
%TO.C,U3*%
X138250000Y-92600000D03*
X137600000Y-92600000D03*
X136950000Y-92600000D03*
X136950000Y-94600000D03*
X137600000Y-94600000D03*
X138250000Y-94600000D03*
%TD*%
D30*
%TO.C,S1*%
X152075000Y-92725000D03*
X156225000Y-92725000D03*
X152075000Y-94875000D03*
X156225000Y-94875000D03*
%TD*%
D11*
%TO.C,R1*%
X149700000Y-93800000D03*
X150800000Y-93800000D03*
%TD*%
D14*
%TO.C,C9*%
X134420000Y-99050000D03*
X134420000Y-99970000D03*
%TD*%
D10*
%TO.C,R8*%
X131610000Y-97150000D03*
X131610000Y-96050000D03*
%TD*%
%TO.C,R12*%
X138400000Y-97150000D03*
X138400000Y-96050000D03*
%TD*%
D34*
%TO.C,C1*%
X150690000Y-94690000D03*
X149770000Y-94690000D03*
%TD*%
D10*
%TO.C,R11*%
X137200000Y-97150000D03*
X137200000Y-96050000D03*
%TD*%
D14*
%TO.C,C10*%
X133000000Y-97085000D03*
X133000000Y-96165000D03*
%TD*%
D10*
%TO.C,R13*%
X144350000Y-93300000D03*
X144350000Y-94400000D03*
%TD*%
%TO.C,R14*%
X147400000Y-93250000D03*
X147400000Y-94350000D03*
%TD*%
D33*
%TO.C,U2*%
X134800000Y-92600000D03*
X134150000Y-92600000D03*
X133500000Y-92600000D03*
X133500000Y-94600000D03*
X134150000Y-94600000D03*
X134800000Y-94600000D03*
%TD*%
D10*
%TO.C,R9*%
X133790000Y-97140000D03*
X133790000Y-96040000D03*
%TD*%
D33*
%TO.C,U1*%
X131450000Y-92610000D03*
X130800000Y-92610000D03*
X130150000Y-92610000D03*
X130150000Y-94610000D03*
X130800000Y-94610000D03*
X131450000Y-94610000D03*
%TD*%
D10*
%TO.C,R3*%
X119900000Y-91360000D03*
X119900000Y-92460000D03*
%TD*%
%TO.C,R7*%
X130410000Y-97160000D03*
X130410000Y-96060000D03*
%TD*%
D29*
%TO.C,LED3*%
X145900000Y-93050000D03*
X145900000Y-94650000D03*
%TD*%
M02*

View File

@@ -0,0 +1,17 @@
M48
; DRILL file {KiCad (6.0.8)} date Mon Jan 2 13:07:49 2023
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2023-01-02T13:07:49-05:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.8)
; #@! TF.FileFunction,NonPlated,1,2,NPTH
FMAT,2
INCH
; #@! TA.AperFunction,NonPlated,NPTH,ComponentDrill
T1C0.0866
%
G90
G05
T1
X7.3661Y-3.9331
T0
M30

View File

@@ -0,0 +1,111 @@
M48
; DRILL file {KiCad (6.0.8)} date Mon Jan 2 13:07:49 2023
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2023-01-02T13:07:49-05:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.8)
; #@! TF.FileFunction,Plated,1,2,PTH
FMAT,2
INCH
; #@! TA.AperFunction,Plated,PTH,ViaDrill
T1C0.0118
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
T2C0.0394
%
G90
G05
T1
X4.4614Y-3.765
X4.5118Y-3.5965
X4.5709Y-3.6008
X4.6618Y-3.9384
X4.6626Y-3.5972
X4.7831Y-3.5969
X4.8949Y-4.1358
X4.9528Y-3.8169
X4.9618Y-4.1575
X5.0913Y-3.6457
X5.1081Y-3.7541
X5.1299Y-4.1307
X5.154Y-4.2442
X5.1965Y-3.7252
X5.2102Y-3.6665
X5.3067Y-3.6839
X5.3091Y-3.9748
X5.3248Y-3.9185
X5.348Y-3.8756
X5.3622Y-3.7333
X5.3986Y-3.9892
X5.4307Y-3.889
X5.5819Y-4.0693
X5.5823Y-4.1481
X5.6075Y-3.8177
X5.6398Y-4.0679
X5.6827Y-3.6469
X5.7224Y-3.7945
X5.8028Y-3.6441
X5.8382Y-3.7945
X5.8528Y-4.1295
X5.8933Y-3.8638
X5.9689Y-3.6858
X6.0043Y-3.6831
X6.0236Y-3.5787
X6.0335Y-3.9311
X6.1004Y-4.0598
X6.1528Y-3.6961
X6.187Y-3.8358
X6.2461Y-4.2352
X6.2984Y-3.8134
X6.2984Y-4.0606
X6.3012Y-3.7535
X6.3236Y-4.1185
X6.3248Y-3.7756
X6.3492Y-3.7091
X6.3514Y-4.2116
X6.3516Y-3.6752
X6.4012Y-3.6277
X6.4508Y-4.2323
X6.4512Y-3.6277
X6.5004Y-4.2106
X6.5012Y-3.6277
X6.5512Y-3.6277
X6.5512Y-4.2323
X6.6012Y-3.6277
X6.6014Y-4.2323
X6.6276Y-4.1134
X6.6512Y-3.6277
X6.7008Y-4.2323
X6.7012Y-3.6277
X6.7512Y-4.2276
X6.802Y-4.2268
X6.8512Y-3.6362
X6.8512Y-4.2295
X6.9012Y-4.2303
X6.9181Y-3.9774
X6.9882Y-3.5827
X7.0197Y-3.5551
X7.1283Y-3.5831
T2
X5.0933Y-3.537
X5.0933Y-4.3283
X5.1933Y-3.537
X5.1933Y-4.3283
X5.2933Y-3.537
X5.2933Y-4.3283
X5.3933Y-3.537
X5.3933Y-4.3283
X5.4933Y-3.537
X5.4933Y-4.3283
X5.5933Y-3.537
X5.5933Y-4.3283
X5.6933Y-3.537
X5.6933Y-4.3283
X5.7933Y-3.537
X5.7933Y-4.3283
X5.8933Y-3.537
X5.8933Y-4.3283
X5.9933Y-3.537
X5.9933Y-4.3283
X6.0933Y-3.537
X6.0933Y-4.3283
T0
M30

View File

@@ -0,0 +1,127 @@
{
"Header": {
"GenerationSoftware": {
"Vendor": "KiCad",
"Application": "Pcbnew",
"Version": "(6.0.8)"
},
"CreationDate": "2023-01-02T13:08:22-05:00"
},
"GeneralSpecs": {
"ProjectId": {
"Name": "WiFi-Devboard-Pro",
"GUID": "57694669-2d44-4657-9662-6f6172642d50",
"Revision": "rev?"
},
"Size": {
"X": 78.56,
"Y": 20.2
},
"LayerNumber": 2,
"BoardThickness": 1.6,
"Finish": "None"
},
"DesignRules": [
{
"Layers": "Outer",
"PadToPad": 0.127,
"PadToTrack": 0.127,
"TrackToTrack": 0.127,
"MinLineWidth": 0.127,
"TrackToRegion": 0.127,
"RegionToRegion": 0.127
}
],
"FilesAttributes": [
{
"Path": "WiFi-Devboard-Pro-F_Cu.gbr",
"FileFunction": "Copper,L1,Top",
"FilePolarity": "Positive"
},
{
"Path": "WiFi-Devboard-Pro-B_Cu.gbr",
"FileFunction": "Copper,L2,Bot",
"FilePolarity": "Positive"
},
{
"Path": "WiFi-Devboard-Pro-F_Paste.gbr",
"FileFunction": "SolderPaste,Top",
"FilePolarity": "Positive"
},
{
"Path": "WiFi-Devboard-Pro-B_Paste.gbr",
"FileFunction": "SolderPaste,Bot",
"FilePolarity": "Positive"
},
{
"Path": "WiFi-Devboard-Pro-F_Silkscreen.gbr",
"FileFunction": "Legend,Top",
"FilePolarity": "Positive"
},
{
"Path": "WiFi-Devboard-Pro-B_Silkscreen.gbr",
"FileFunction": "Legend,Bot",
"FilePolarity": "Positive"
},
{
"Path": "WiFi-Devboard-Pro-F_Mask.gbr",
"FileFunction": "SolderMask,Top",
"FilePolarity": "Negative"
},
{
"Path": "WiFi-Devboard-Pro-B_Mask.gbr",
"FileFunction": "SolderMask,Bot",
"FilePolarity": "Negative"
},
{
"Path": "WiFi-Devboard-Pro-Edge_Cuts.gbr",
"FileFunction": "Profile",
"FilePolarity": "Positive"
}
],
"MaterialStackup": [
{
"Type": "Legend",
"Name": "Top Silk Screen"
},
{
"Type": "SolderPaste",
"Name": "Top Solder Paste"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Top Solder Mask"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "F.Cu"
},
{
"Type": "Dielectric",
"Thickness": 1.51,
"Material": "FR4",
"Name": "F.Cu/B.Cu",
"Notes": "Type: dielectric layer 1 (from F.Cu to B.Cu)"
},
{
"Type": "Copper",
"Thickness": 0.035,
"Name": "B.Cu"
},
{
"Type": "SolderMask",
"Thickness": 0.01,
"Name": "Bottom Solder Mask"
},
{
"Type": "SolderPaste",
"Name": "Bottom Solder Paste"
},
{
"Type": "Legend",
"Name": "Bottom Silk Screen"
}
]
}

View File

@@ -0,0 +1,25 @@
Comment,Designator,Footprint,LCSC
"1u","C1","0402",""
"22uF","C2,C5","0402",""
"100n","C3,C7,C8,C9,C10,C11","0402",""
"100nF","C4","0402",""
"10uF","C6","0402",""
"MountingHole","H1","",""
"ESP32-WROOM-32E-N4","IC1","SMD-38P,18x25.5x3.1mm",""
"SI2333CDS-T1-E3","IC2,IC4,IC5","SOT-23",""
"AZ1117H-3.3TRE1","IC3","SOT-223-3",""
"3220-10-0300-00","J1","322010030000",""
"X6511WVS-08H-C60D48R1","J2","SMD,P=2.54mm(交错脚)",""
"X6511WVS-10H-C60D48R1","J3","HUSRSP10W66P254_2500X250X850P",""
"Conn_01x11","J4,J5","SMD,P=2.54mm(交错脚)",""
"503398-1892","J6","SMD",""
"WS2812B-2020","LED1","WS2812B2020",""
"TX","LED2","0603",""
"RX","LED3","0603",""
"3V3","LED4","0603",""
"10k","R1,R6","0402",""
"220","R2","0402",""
"1K","R3,R4,R5,R13,R14,R15","0402",""
"100K","R7,R8,R9,R10,R11,R12","0402",""
"SKRPABE010","S1,S2","SMD",""
"MMDT2907A-7-F","U1,U2,U3","SOT65P210X110-6N",""
1 Comment Designator Footprint LCSC
2 1u C1 0402
3 22uF C2,C5 0402
4 100n C3,C7,C8,C9,C10,C11 0402
5 100nF C4 0402
6 10uF C6 0402
7 MountingHole H1
8 ESP32-WROOM-32E-N4 IC1 SMD-38P,18x25.5x3.1mm
9 SI2333CDS-T1-E3 IC2,IC4,IC5 SOT-23
10 AZ1117H-3.3TRE1 IC3 SOT-223-3
11 3220-10-0300-00 J1 322010030000
12 X6511WVS-08H-C60D48R1 J2 SMD,P=2.54mm(交错脚)
13 X6511WVS-10H-C60D48R1 J3 HUSRSP10W66P254_2500X250X850P
14 Conn_01x11 J4,J5 SMD,P=2.54mm(交错脚)
15 503398-1892 J6 SMD
16 WS2812B-2020 LED1 WS2812B2020
17 TX LED2 0603
18 RX LED3 0603
19 3V3 LED4 0603
20 10k R1,R6 0402
21 220 R2 0402
22 1K R3,R4,R5,R13,R14,R15 0402
23 100K R7,R8,R9,R10,R11,R12 0402
24 SKRPABE010 S1,S2 SMD
25 MMDT2907A-7-F U1,U2,U3 SOT65P210X110-6N

View File

@@ -0,0 +1,48 @@
Designator,Val,Package,Mid X,Mid Y,Rotation,Layer
J2,X6511WVS-08H-C60D48R2,HUSRSP8W66P254_2000X250X850P,-127.300000,-102.100000,0.000000,bottom
J3,DZ254S-11-10-48,HUSRSP10W66P254_2500X250X850P,-165.400000,-102.100000,0.000000,bottom
,,,187.100000,-99.900000,0.000000,top
C1,1u,CAPC1005X60N,150.230000,-94.690000,180.000000,top
C2,22uF,CAPC1005X80N,181.525000,-90.350000,180.000000,top
C3,100n,CAPC1005X55N,179.525000,-90.300000,0.000000,top
C4,100nF,CAPC1005X55N,155.390000,-102.150000,0.000000,top
C5,22uF,CAPC1005X80N,126.100000,-102.250000,-90.000000,top
C6,10uF,CAPC1005X70N,133.100000,-99.500000,-90.000000,top
C7,100n,CAPC1005X55N,116.540000,-92.270000,180.000000,top
C8,100n,CAPC1005X55N,129.290000,-96.620000,90.000000,top
C9,100n,CAPC1005X55N,134.420000,-99.510000,-90.000000,top
C10,100n,CAPC1005X55N,133.000000,-96.625000,90.000000,top
C11,100n,CAPC1005X55N,136.225000,-96.600000,90.000000,top
IC1,ESP32-WROOM-32E-N4,ESP32WROOM32EN4,171.300000,-99.850000,-90.000000,top
IC2,DMP1045U-7,SOT96P240X120-3N,127.500000,-93.650000,-90.000000,top
IC3,AZ1117H-3.3TRE1,SOT230P700X180-4N,131.100000,-104.400000,180.000000,top
IC4,DMP1045U-7,SOT96P240X120-3N,137.250000,-103.425000,-90.000000,top
IC5,DMP1045U-7,SOT96P240X120-3N,140.100000,-106.050000,-90.000000,top
J1,3220-10-0300-00,322010030000,146.400000,-99.900000,0.000000,top
J4,Conn_01x11,PinHeader_1x11_P2.54mm_Vertical,129.370000,-109.940000,90.000000,top
J5,Conn_01x11,PinHeader_1x11_P2.54mm_Vertical,129.370000,-89.840000,90.000000,top
J6,503398-1892,503398-1892,111.060000,-106.400000,90.000000,top
LED1,WS2812B-2020,WS2812B2020,155.400000,-99.800000,90.000000,top
LED2,TX,LEDC1608X50N,142.800000,-93.850000,-90.000000,top
LED3,RX,LEDC1608X50N,145.900000,-93.850000,-90.000000,top
LED4,3V3,19217R6CAL1M2VY3T,127.850000,-99.100000,180.000000,top
R1,10k,RESC1005X40N,150.250000,-93.800000,0.000000,top
R2,220,RESC1005X40N,155.400000,-97.430000,180.000000,top
R3,1K,RESC1005X40N,119.900000,-91.910000,-90.000000,top
R4,1K,RESC1005X40N,117.820000,-91.900000,-90.000000,top
R5,1K,RESC1005X40N,115.300000,-91.900000,-90.000000,top
R6,10k,RESC1005X40N,150.110000,-104.890000,180.000000,top
R7,100K,RESC1005X40N,130.410000,-96.610000,90.000000,top
R8,100K,RESC1005X40N,131.610000,-96.600000,90.000000,top
R9,100K,RESC1005X40N,133.790000,-96.590000,90.000000,top
R10,100K,RESC1005X40N,134.960000,-96.590000,90.000000,top
R11,100K,RESC1005X40N,137.200000,-96.600000,90.000000,top
R12,100K,RESC1005X40N,138.400000,-96.600000,90.000000,top
R13,1K,RESC1005X40N,144.350000,-93.850000,-90.000000,top
R14,1K,RESC1005X40N,147.400000,-93.800000,-90.000000,top
R15,1K,RESC1005X40N,127.050000,-96.950000,0.000000,top
S1,SKRPABE010,SKRPABE010,154.150000,-93.800000,0.000000,top
S2,SKRPABE010,SKRPABE010,154.150000,-105.950000,0.000000,top
U1,MMDT2907A-7-F,SOT65P210X110-6N,130.800000,-93.610000,-90.000000,top
U2,MMDT2907A-7-F,SOT65P210X110-6N,134.150000,-93.600000,-90.000000,top
U3,MMDT2907A-7-F,SOT65P210X110-6N,137.600000,-93.600000,-90.000000,top
1 Designator Val Package Mid X Mid Y Rotation Layer
2 J2 X6511WVS-08H-C60D48R2 HUSRSP8W66P254_2000X250X850P -127.300000 -102.100000 0.000000 bottom
3 J3 DZ254S-11-10-48 HUSRSP10W66P254_2500X250X850P -165.400000 -102.100000 0.000000 bottom
4 187.100000 -99.900000 0.000000 top
5 C1 1u CAPC1005X60N 150.230000 -94.690000 180.000000 top
6 C2 22uF CAPC1005X80N 181.525000 -90.350000 180.000000 top
7 C3 100n CAPC1005X55N 179.525000 -90.300000 0.000000 top
8 C4 100nF CAPC1005X55N 155.390000 -102.150000 0.000000 top
9 C5 22uF CAPC1005X80N 126.100000 -102.250000 -90.000000 top
10 C6 10uF CAPC1005X70N 133.100000 -99.500000 -90.000000 top
11 C7 100n CAPC1005X55N 116.540000 -92.270000 180.000000 top
12 C8 100n CAPC1005X55N 129.290000 -96.620000 90.000000 top
13 C9 100n CAPC1005X55N 134.420000 -99.510000 -90.000000 top
14 C10 100n CAPC1005X55N 133.000000 -96.625000 90.000000 top
15 C11 100n CAPC1005X55N 136.225000 -96.600000 90.000000 top
16 IC1 ESP32-WROOM-32E-N4 ESP32WROOM32EN4 171.300000 -99.850000 -90.000000 top
17 IC2 DMP1045U-7 SOT96P240X120-3N 127.500000 -93.650000 -90.000000 top
18 IC3 AZ1117H-3.3TRE1 SOT230P700X180-4N 131.100000 -104.400000 180.000000 top
19 IC4 DMP1045U-7 SOT96P240X120-3N 137.250000 -103.425000 -90.000000 top
20 IC5 DMP1045U-7 SOT96P240X120-3N 140.100000 -106.050000 -90.000000 top
21 J1 3220-10-0300-00 322010030000 146.400000 -99.900000 0.000000 top
22 J4 Conn_01x11 PinHeader_1x11_P2.54mm_Vertical 129.370000 -109.940000 90.000000 top
23 J5 Conn_01x11 PinHeader_1x11_P2.54mm_Vertical 129.370000 -89.840000 90.000000 top
24 J6 503398-1892 503398-1892 111.060000 -106.400000 90.000000 top
25 LED1 WS2812B-2020 WS2812B2020 155.400000 -99.800000 90.000000 top
26 LED2 TX LEDC1608X50N 142.800000 -93.850000 -90.000000 top
27 LED3 RX LEDC1608X50N 145.900000 -93.850000 -90.000000 top
28 LED4 3V3 19217R6CAL1M2VY3T 127.850000 -99.100000 180.000000 top
29 R1 10k RESC1005X40N 150.250000 -93.800000 0.000000 top
30 R2 220 RESC1005X40N 155.400000 -97.430000 180.000000 top
31 R3 1K RESC1005X40N 119.900000 -91.910000 -90.000000 top
32 R4 1K RESC1005X40N 117.820000 -91.900000 -90.000000 top
33 R5 1K RESC1005X40N 115.300000 -91.900000 -90.000000 top
34 R6 10k RESC1005X40N 150.110000 -104.890000 180.000000 top
35 R7 100K RESC1005X40N 130.410000 -96.610000 90.000000 top
36 R8 100K RESC1005X40N 131.610000 -96.600000 90.000000 top
37 R9 100K RESC1005X40N 133.790000 -96.590000 90.000000 top
38 R10 100K RESC1005X40N 134.960000 -96.590000 90.000000 top
39 R11 100K RESC1005X40N 137.200000 -96.600000 90.000000 top
40 R12 100K RESC1005X40N 138.400000 -96.600000 90.000000 top
41 R13 1K RESC1005X40N 144.350000 -93.850000 -90.000000 top
42 R14 1K RESC1005X40N 147.400000 -93.800000 -90.000000 top
43 R15 1K RESC1005X40N 127.050000 -96.950000 0.000000 top
44 S1 SKRPABE010 SKRPABE010 154.150000 -93.800000 0.000000 top
45 S2 SKRPABE010 SKRPABE010 154.150000 -105.950000 0.000000 top
46 U1 MMDT2907A-7-F SOT65P210X110-6N 130.800000 -93.610000 -90.000000 top
47 U2 MMDT2907A-7-F SOT65P210X110-6N 134.150000 -93.600000 -90.000000 top
48 U3 MMDT2907A-7-F SOT65P210X110-6N 137.600000 -93.600000 -90.000000 top

View File

@@ -0,0 +1,9 @@
# Parts
- Header Pin x8: [C2883805](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-08H-C60D48R1_C2883805.html)
- Header Pin x10: [C2883807](https://www.lcsc.com/product-detail/Pin-Headers_XKB-Connectivity-X6511WVS-10H-C60D48R1_C2883807.html)
- Alternative Header: [M20-8771246](https://www.mouser.com/ProductDetail/Harwin/M20-8771246?qs=WS5Jv%252B%252Bx1qWzrNY%252Bb2U9JQ%3D%3D&countryCode=US&currencyCode=USD)
- Light Pipe: [PLP2-188](https://www.digikey.com/en/products/detail/bivar-inc/PLP2-188/5721973?utm_medium=email&utm_source=oce&utm_campaign=4251_OCE23RT&utm_content=productdetail_US&utm_cid=2955578&so=79456987&mkt_tok=MDI4LVNYSy01MDcAAAGJOBaFWa7m6RHsJZT6mWcYRd9LRyXmqis92EV7j5ftyM5NuNOSOPqUp292m0P5E3FKrEWCFuvb9fObSzuSvVMsopuOMPjO46ylCAR1IzCL)
- M2x6mm Round Top Screw: [97763A407](https://www.mcmaster.com/97763A407/)
- M2x8mm Countersunk Screw: [91294A005](https://www.mcmaster.com/91294A005/)
- M2 Threaded Insert: [94180A307](https://www.mcmaster.com/94180A307/)

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"board": {
"active_layer": 0,
"active_layer": 44,
"active_layer_preset": "",
"auto_track_width": false,
"hidden_nets": [

View File

@@ -33,9 +33,9 @@
"other_text_thickness": 0.15,
"other_text_upright": false,
"pads": {
"drill": 0.0,
"height": 0.62,
"width": 0.6
"drill": 2.2,
"height": 2.2,
"width": 2.2
},
"silk_line_width": 0.15,
"silk_text_italic": false,

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,104 @@
<!--XSL style sheet to convert EESCHEMA XML Partlist Format to grouped CSV BOM Format
Copyright (C) 2014, Wolf Walter.
Copyright (C) 2013, Stefan Helmert.
Copyright (C) 2018, Kicad developers.
Copyright (C) 2019, arturo182.
GPL v2.
Functionality:
Generation of JLCPCB PCBA compatible BOM
How to use this is explained in eeschema.pdf chapter 14. You enter a command line into the
netlist exporter using a new (custom) tab in the netlist export dialog.
The command line is
xsltproc -o "%O.csv" "FullPathToFile/bom2grouped_csv_jlcpcb.xsl" "%I"
-->
<!--
@package
Generates a JLCPCB PCBA service compatible BOM
Functionality:
* Generate a comma separated value BOM list (csv file type).
* Components are sorted by ref and grouped by same value+footprint
One value per line
Fields are
Comment,Designator,Footprint,LCSC
The command line is
xsltproc -o "%O.csv" "full_path/bom2grouped_csv_jlcpcb.xsl" "%I"
-->
<!DOCTYPE xsl:stylesheet [
<!ENTITY nl "&#xd;&#xa;"> <!--new line CR, LF, or LF, your choice -->
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:variable name="digits" select="'1234567890'" />
<!-- for matching grouping of footprint and value combination -->
<xsl:key name="partTypeByValueAndFootprint" match="comp" use="concat(footprint, '-', value)" />
<!-- for table head and empty table fields-->
<xsl:key name="headentr" match="field" use="@name"/>
<!-- main part -->
<xsl:template match="/export">
<xsl:text>Comment,Designator,Footprint,LCSC</xsl:text>
<!-- all table entries -->
<xsl:apply-templates select="components"/>
</xsl:template>
<xsl:template match="components">
<!-- for Muenchian grouping of footprint and value combination -->
<xsl:for-each select="comp[count(. | key('partTypeByValueAndFootprint', concat(footprint, '-', value))[1]) = 1]">
<xsl:sort select="@ref" />
<xsl:text>&nl;</xsl:text>
<xsl:text>"</xsl:text><xsl:value-of select="value"/><xsl:text>","</xsl:text>
<!-- list of all references -->
<xsl:for-each select="key('partTypeByValueAndFootprint', concat(footprint, '-', value))">
<!-- strip non-digits from reference and sort based on remaining number -->
<xsl:sort select="translate(@ref, translate(@ref, $digits, ''), '')" data-type="number" />
<xsl:value-of select="@ref"/>
<xsl:if test="position() != last()"><xsl:text>,</xsl:text></xsl:if>
</xsl:for-each>
<xsl:text>","</xsl:text>
<xsl:value-of select="footprint"/><xsl:text>","</xsl:text>
<xsl:value-of select="fields/field[@name='LCSC']"/><xsl:text>"</xsl:text>
</xsl:for-each>
</xsl:template>
<!-- table entries with dynamic table head -->
<xsl:template match="fields">
<!-- remember current fields section -->
<xsl:variable name="fieldvar" select="field"/>
<!-- for all existing head entries -->
<xsl:for-each select="/export/components/comp/fields/field[generate-id(.) = generate-id(key('headentr',@name)[1])]">
<xsl:variable name="allnames" select="@name"/>
<xsl:text>,"</xsl:text>
<!-- for all field entries in the remembered fields section -->
<xsl:for-each select="$fieldvar">
<!-- only if this field entry exists in this fields section -->
<xsl:if test="@name=$allnames">
<!-- content of the field -->
<xsl:value-of select="."/>
</xsl:if>
<!--
If it does not exist, use an empty cell in output for this row.
Every non-blank entry is assigned to its proper column.
-->
</xsl:for-each>
<xsl:text>"</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
<!---[![Build Status](https://travis-ci.com/justcallmekoko/ESP32Marauder.svg?branch=master)](https://travis-ci.com/justcallmekoko/ESP32Marauder)--->
<!---Shields/Badges https://shields.io/--->
# ESP32 Marauder v0.10.0
# ESP32 Marauder v0.10.6
<p align="center"><img alt="Marauder logo" src="https://github.com/justcallmekoko/ESP32Marauder/blob/master/pictures/marauder3L.jpg?raw=true" width="300"></p>
<p align="center">
<b>A suite of WiFi/Bluetooth offensive and defensive tools for the ESP32</b>

View File

@@ -21,8 +21,9 @@
//#include <User_Setup.h> // Default setup is root library folder
//#include <User_Setup_og_marauder.h>
#include <User_Setup_marauder_mini.h>
#include <User_Setup_og_marauder.h>
//#include <User_Setup_marauder_mini.h>
//#include <User_Setup_marauder_m5stickc.h>
//#include <User_Setups/Setup1_ILI9341.h> // Setup file configured for my ILI9341
//#include <User_Setups/Setup2_ST7735.h> // Setup file configured for my ST7735

View File

@@ -0,0 +1,316 @@
// USER DEFINED SETTINGS
// Set driver type, fonts to be loaded, pins used and SPI control method etc
//
// See the User_Setup_Select.h file if you wish to be able to define multiple
// setups and then easily select which setup file is used by the compiler.
//
// If this file is edited correctly then all the library example sketches should
// run without the need to make any more changes for a particular hardware setup!
// Note that some sketches are designed for a particular TFT pixel width/height
// ##################################################################################
//
// Section 1. Call up the right driver file and any options for it
//
// ##################################################################################
// Display type - only define if RPi display
//#define RPI_DRIVER
// Only define one driver, the other ones must be commented out
//#define ILI9341_DRIVER // OG Marauder
//#define ST7735_DRIVER // Marauder Mini // Define additional parameters below for this display
//#define ILI9163_DRIVER // Define additional parameters below for this display
//#define S6D02A1_DRIVER
//#define RPI_ILI9486_DRIVER // 20MHz maximum SPI
//#define HX8357D_DRIVER
//#define ILI9481_DRIVER
//#define ILI9486_DRIVER
//#define ILI9488_DRIVER // WARNING: Do not connect ILI9488 display SDO to MISO if other devices share the SPI bus (TFT SDO does NOT tristate when CS is high)
//#define ST7789_DRIVER // Full configuration option, define additional parameters below for this display
#define ST7789_2_DRIVER // Minimal configuration option, define additional parameters below for this display
//#define R61581_DRIVER
//#define RM68140_DRIVER
//#define ST7796_DRIVER
// Some displays support SPI reads via the MISO pin, other displays have a single
// bi-directional SDA pin and the library will try to read this via the MOSI line.
// To use the SDA line for reading data from the TFT uncomment the following line:
// #define TFT_SDA_READ // This option is for ESP32 ONLY, tested with ST7789 display only
// For ST7789 and ILI9341 ONLY, define the colour order IF the blue and red are swapped on your display
// Try ONE option at a time to find the correct colour order for your display
#define TFT_RGB_ORDER TFT_RGB // Colour order Red-Green-Blue
// #define TFT_RGB_ORDER TFT_BGR // Colour order Blue-Green-Red
// For M5Stack ESP32 module with integrated ILI9341 display ONLY, remove // in line below
// #define M5STACK
// For ST7789, ST7735 and ILI9163 ONLY, define the pixel width and height in portrait orientation
// #define TFT_WIDTH 80
#define TFT_WIDTH 240 // Marauder Mini
// #define TFT_WIDTH 240 // ST7789 240 x 240 and 240 x 320
// #define TFT_HEIGHT 160
#define TFT_HEIGHT 135 // Marauder Mini
// #define TFT_HEIGHT 240 // ST7789 240 x 240
// #define TFT_HEIGHT 320 // ST7789 240 x 320
// For ST7735 ONLY, define the type of display, originally this was based on the
// colour of the tab on the screen protector film but this is not always true, so try
// out the different options below if the screen does not display graphics correctly,
// e.g. colours wrong, mirror images, or tray pixels at the edges.
// Comment out ALL BUT ONE of these options for a ST7735 display driver, save this
// this User_Setup file, then rebuild and upload the sketch to the board again:
// #define ST7735_INITB
// #define ST7735_GREENTAB
// #define ST7735_GREENTAB2
// #define ST7735_GREENTAB3
// #define ST7735_GREENTAB128 // For 128 x 128 display
// #define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 offset)
// #define ST7735_REDTAB
// #define ST7735_BLACKTAB
// #define ST7735_REDTAB160x80 // For 160 x 80 display with 24 pixel offset
// If colours are inverted (white shows as black) then uncomment one of the next
// 2 lines try both options, one of the options should correct the inversion.
// #define TFT_INVERSION_ON
// #define TFT_INVERSION_OFF
// If a backlight control signal is available then define the TFT_BL pin in Section 2
// below. The backlight will be turned ON when tft.begin() is called, but the library
// needs to know if the LEDs are ON with the pin HIGH or LOW. If the LEDs are to be
// driven with a PWM signal or turned OFF/ON then this must be handled by the user
// sketch. e.g. with digitalWrite(TFT_BL, LOW);
#define TFT_BACKLIGHT_ON LOW // HIGH or LOW are options
// ##################################################################################
//
// Section 2. Define the pins that are used to interface with the display here
//
// ##################################################################################
// We must use hardware SPI, a minimum of 3 GPIO pins is needed.
// Typical setup for ESP8266 NodeMCU ESP-12 is :
//
// Display SDO/MISO to NodeMCU pin D6 (or leave disconnected if not reading TFT)
// Display LED to NodeMCU pin VIN (or 5V, see below)
// Display SCK to NodeMCU pin D5
// Display SDI/MOSI to NodeMCU pin D7
// Display DC (RS/AO)to NodeMCU pin D3
// Display RESET to NodeMCU pin D4 (or RST, see below)
// Display CS to NodeMCU pin D8 (or GND, see below)
// Display GND to NodeMCU pin GND (0V)
// Display VCC to NodeMCU 5V or 3.3V
//
// The TFT RESET pin can be connected to the NodeMCU RST pin or 3.3V to free up a control pin
//
// The DC (Data Command) pin may be labeled AO or RS (Register Select)
//
// With some displays such as the ILI9341 the TFT CS pin can be connected to GND if no more
// SPI devices (e.g. an SD Card) are connected, in this case comment out the #define TFT_CS
// line below so it is NOT defined. Other displays such at the ST7735 require the TFT CS pin
// to be toggled during setup, so in these cases the TFT_CS line must be defined and connected.
//
// The NodeMCU D0 pin can be used for RST
//
//
// Note: only some versions of the NodeMCU provide the USB 5V on the VIN pin
// If 5V is not available at a pin you can use 3.3V but backlight brightness
// will be lower.
// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP8266 SETUP ######
// For NodeMCU - use pin numbers in the form PIN_Dx where Dx is the NodeMCU pin designation
//#define TFT_CS PIN_D8 // Chip select control pin D8
//#define TFT_DC PIN_D3 // Data Command control pin
//#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
//#define TFT_BL PIN_D1 // LED back-light (only for ST7789 with backlight control pin)
//#define TOUCH_CS PIN_D2 // Chip select pin (T_CS) of touch screen
//#define TFT_WR PIN_D2 // Write strobe for modified Raspberry Pi TFT only
// ###### FOR ESP8266 OVERLAP MODE EDIT THE PIN NUMBERS IN THE FOLLOWING LINES ######
// Overlap mode shares the ESP8266 FLASH SPI bus with the TFT so has a performance impact
// but saves pins for other functions. It is best not to connect MISO as some displays
// do not tristate that line wjen chip select is high!
// On NodeMCU 1.0 SD0=MISO, SD1=MOSI, CLK=SCLK to connect to TFT in overlap mode
// On NodeMCU V3 S0 =MISO, S1 =MOSI, S2 =SCLK
// In ESP8266 overlap mode the following must be defined
//#define TFT_SPI_OVERLAP
// In ESP8266 overlap mode the TFT chip select MUST connect to pin D3
//#define TFT_CS PIN_D3
//#define TFT_DC PIN_D5 // Data Command control pin
//#define TFT_RST PIN_D4 // Reset pin (could connect to NodeMCU RST, see next line)
//#define TFT_RST -1 // Set TFT_RST to -1 if the display RESET is connected to NodeMCU RST or 3.3V
// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP ######
// For ESP32 Dev board (only tested with ILI9341 display)
// The hardware SPI can be mapped to any pins
// Marauder Mini
#define TFT_CS 5 // Chip select control pin D8
#define TFT_DC 23 // Data Command control pin
#define TFT_RST 18 // Reset pin (could connect to NodeMCU RST, see next line)
#define TOUCH_CS -1
//#define TFT_MISO 19
#define TFT_MOSI 15
#define TFT_SCLK 13
//#define TFT_BL 32
/*
// ESP32 Marauder
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 17 // Chip select control pin
#define TFT_DC 16 // Data Command control pin
#define TFT_RST 5 // Reset pin (could connect to RST pin)
//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
#define TFT_BL 32 // LED back-light (only for ST7789 with backlight control pin)
#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
*/
/////////////////////////////
// ESP32 Centauri
/*
#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS 27 // Chip select control pin
#define TFT_DC 26 // Data Command control pin
#define TFT_RST 5 // Reset pin (could connect to RST pin)
//#define TFT_RST -1 // Set TFT_RST to -1 if display RESET is connected to ESP32 board RST
#define TFT_BL 32 // LED back-light (only for ST7789 with backlight control pin)
#define TOUCH_CS 21 // Chip select pin (T_CS) of touch screen
*/
/////////////////////////////
//#define TFT_WR 22 // Write strobe for modified Raspberry Pi TFT only
// For the M5Stack module use these #define lines
//#define TFT_MISO 19
//#define TFT_MOSI 23
//#define TFT_SCLK 18
//#define TFT_CS 14 // Chip select control pin
//#define TFT_DC 27 // Data Command control pin
//#define TFT_RST 33 // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL 32 // LED back-light (required for M5Stack)
// ###### EDIT THE PINs BELOW TO SUIT YOUR ESP32 PARALLEL TFT SETUP ######
// The library supports 8 bit parallel TFTs with the ESP32, the pin
// selection below is compatible with ESP32 boards in UNO format.
// Wemos D32 boards need to be modified, see diagram in Tools folder.
// Only ILI9481 and ILI9341 based displays have been tested!
// Parallel bus is only supported on ESP32
// Uncomment line below to use ESP32 Parallel interface instead of SPI
//#define ESP32_PARALLEL
// The ESP32 and TFT the pins used for testing are:
//#define TFT_CS 33 // Chip select control pin (library pulls permanently low
//#define TFT_DC 15 // Data Command control pin - must use a pin in the range 0-31
//#define TFT_RST 32 // Reset pin, toggles on startup
//#define TFT_WR 4 // Write strobe control pin - must use a pin in the range 0-31
//#define TFT_RD 2 // Read strobe control pin
//#define TFT_D0 12 // Must use pins in the range 0-31 for the data bus
//#define TFT_D1 13 // so a single register write sets/clears all bits.
//#define TFT_D2 26 // Pins can be randomly assigned, this does not affect
//#define TFT_D3 25 // TFT screen update performance.
//#define TFT_D4 17
//#define TFT_D5 16
//#define TFT_D6 27
//#define TFT_D7 14
// ##################################################################################
//
// Section 3. Define the fonts that are to be used here
//
// ##################################################################################
// Comment out the #defines below with // to stop that font being loaded
// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not
// normally necessary. If all fonts are loaded the extra FLASH space required is
// about 17Kbytes. To save FLASH space only enable the fonts you need!
#define LOAD_GLCD // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT
// ##################################################################################
//
// Section 4. Other options
//
// ##################################################################################
// Define the SPI clock frequency, this affects the graphics rendering speed. Too
// fast and the TFT driver will not keep up and display corruption appears.
// With an ILI9341 display 40MHz works OK, 80MHz sometimes fails
// With a ST7735 display more than 27MHz may not work (spurious pixels and lines)
// With an ILI9163 display 27 MHz works OK.
// #define SPI_FREQUENCY 1000000
//#define SPI_FREQUENCY 5000000
// #define SPI_FREQUENCY 10000000
#define SPI_FREQUENCY 20000000
//#define SPI_FREQUENCY 27000000 // Marauder // Actually sets it to 26.67MHz = 80/3
// #define SPI_FREQUENCY 40000000
// #define SPI_FREQUENCY 80000000
// Optional reduced SPI frequency for reading TFT
#define SPI_READ_FREQUENCY 20000000
// The XPT2046 requires a lower SPI clock rate of 2.5MHz so we define that here:
#define SPI_TOUCH_FREQUENCY 2500000
// The ESP32 has 2 free SPI ports i.e. VSPI and HSPI, the VSPI is the default.
// If the VSPI port is in use and pins are not accessible (e.g. TTGO T-Beam)
// then uncomment the following line:
//#define USE_HSPI_PORT
// Comment out the following #define if "SPI Transactions" do not need to be
// supported. When commented out the code size will be smaller and sketches will
// run slightly faster, so leave it commented out unless you need it!
// Transaction support is needed to work with SD library but not needed with TFT_SdFat
// Transaction support is required if other SPI devices are connected.
// Transactions are automatically enabled by the library for an ESP32 (to use HAL mutex)
// so changing it here has no effect
// #define SUPPORT_TRANSACTIONS

435
esp32_marauder/AXP192.cpp Normal file
View File

@@ -0,0 +1,435 @@
#include "AXP192.h"
AXP192::AXP192() {
}
void AXP192::begin(void) {
Wire1.begin(21, 22);
Wire1.setClock(400000);
// Set LDO2 & LDO3(TFT_LED & TFT) 3.0V
Write1Byte(0x28, 0xcc);
// Set ADC to All Enable
Write1Byte(0x82, 0xff);
// Bat charge voltage to 4.2, Current 100MA
Write1Byte(0x33, 0xc0);
// Enable Bat,ACIN,VBUS,APS adc
Write1Byte(0x82, 0xff);
// Enable Ext, LDO2, LDO3, DCDC1
Write1Byte(0x12, Read8bit(0x12) | 0x4D);
// 128ms power on, 4s power off
Write1Byte(0x36, 0x0C);
// Set RTC voltage to 3.3V
Write1Byte(0x91, 0xF0);
// Set GPIO0 to LDO
Write1Byte(0x90, 0x02);
// Disable vbus hold limit
Write1Byte(0x30, 0x80);
// Set temperature protection
Write1Byte(0x39, 0xfc);
// Enable RTC BAT charge
Write1Byte(0x35, 0xa2);
// Enable bat detection
Write1Byte(0x32, 0x46);
// ScreenBreath(80);
}
void AXP192::Write1Byte(uint8_t Addr, uint8_t Data) {
Wire1.beginTransmission(0x34);
Wire1.write(Addr);
Wire1.write(Data);
Wire1.endTransmission();
}
uint8_t AXP192::Read8bit(uint8_t Addr) {
Wire1.beginTransmission(0x34);
Wire1.write(Addr);
Wire1.endTransmission();
Wire1.requestFrom(0x34, 1);
return Wire1.read();
}
uint16_t AXP192::Read12Bit(uint8_t Addr) {
uint16_t Data = 0;
uint8_t buf[2];
ReadBuff(Addr, 2, buf);
Data = ((buf[0] << 4) + buf[1]); //
return Data;
}
uint16_t AXP192::Read13Bit(uint8_t Addr) {
uint16_t Data = 0;
uint8_t buf[2];
ReadBuff(Addr, 2, buf);
Data = ((buf[0] << 5) + buf[1]); //
return Data;
}
uint16_t AXP192::Read16bit(uint8_t Addr) {
uint16_t ReData = 0;
Wire1.beginTransmission(0x34);
Wire1.write(Addr);
Wire1.endTransmission();
Wire1.requestFrom(0x34, 2);
for (int i = 0; i < 2; i++) {
ReData <<= 8;
ReData |= Wire1.read();
}
return ReData;
}
uint32_t AXP192::Read24bit(uint8_t Addr) {
uint32_t ReData = 0;
Wire1.beginTransmission(0x34);
Wire1.write(Addr);
Wire1.endTransmission();
Wire1.requestFrom(0x34, 3);
for (int i = 0; i < 3; i++) {
ReData <<= 8;
ReData |= Wire1.read();
}
return ReData;
}
uint32_t AXP192::Read32bit(uint8_t Addr) {
uint32_t ReData = 0;
Wire1.beginTransmission(0x34);
Wire1.write(Addr);
Wire1.endTransmission();
Wire1.requestFrom(0x34, 4);
for (int i = 0; i < 4; i++) {
ReData <<= 8;
ReData |= Wire1.read();
}
return ReData;
}
void AXP192::ReadBuff(uint8_t Addr, uint8_t Size, uint8_t *Buff) {
Wire1.beginTransmission(0x34);
Wire1.write(Addr);
Wire1.endTransmission();
Wire1.requestFrom(0x34, (int)Size);
for (int i = 0; i < Size; i++) {
*(Buff + i) = Wire1.read();
}
}
void AXP192::ScreenBreath(int brightness) {
if (brightness > 100 || brightness < 0) return;
int vol = map(brightness, 0, 100, 2500, 3200);
vol = (vol < 1800) ? 0 : (vol - 1800) / 100;
uint8_t buf = Read8bit(0x28);
Write1Byte(0x28, ((buf & 0x0f) | ((uint16_t)vol << 4)));
}
void AXP192::ScreenSwitch(bool state) {
uint8_t brightness;
if (state == false) {
brightness = 0;
} else if (state == true) {
brightness = 12;
}
uint8_t buf = Read8bit(0x28);
Write1Byte(0x28, ((buf & 0x0f) | (brightness << 4)));
}
bool AXP192::GetBatState() {
if (Read8bit(0x01) | 0x20)
return true;
else
return false;
}
//---------coulombcounter_from_here---------
// enable: void EnableCoulombcounter(void);
// disable: void DisableCOulombcounter(void);
// stop: void StopCoulombcounter(void);
// clear: void ClearCoulombcounter(void);
// get charge data: uint32_t GetCoulombchargeData(void);
// get discharge data: uint32_t GetCoulombdischargeData(void);
// get coulomb val affter calculation: float GetCoulombData(void);
//------------------------------------------
void AXP192::EnableCoulombcounter(void) {
Write1Byte(0xB8, 0x80);
}
void AXP192::DisableCoulombcounter(void) {
Write1Byte(0xB8, 0x00);
}
void AXP192::StopCoulombcounter(void) {
Write1Byte(0xB8, 0xC0);
}
void AXP192::ClearCoulombcounter(void) {
Write1Byte(0xB8, 0xA0);
}
uint32_t AXP192::GetCoulombchargeData(void) {
return Read32bit(0xB0);
}
uint32_t AXP192::GetCoulombdischargeData(void) {
return Read32bit(0xB4);
}
float AXP192::GetCoulombData(void) {
uint32_t coin = 0;
uint32_t coout = 0;
coin = GetCoulombchargeData();
coout = GetCoulombdischargeData();
// c = 65536 * current_LSB * (coin - coout) / 3600 / ADC rate
// Adc rate can be read from 84H ,change this variable if you change the ADC
// reate
float ccc = 65536 * 0.5 * (int32_t)(coin - coout) / 3600.0 / 25.0;
return ccc;
}
//----------coulomb_end_at_here----------
uint16_t AXP192::GetVbatData(void) {
uint16_t vbat = 0;
uint8_t buf[2];
ReadBuff(0x78, 2, buf);
vbat = ((buf[0] << 4) + buf[1]); // V
return vbat;
}
uint16_t AXP192::GetVinData(void) {
uint16_t vin = 0;
uint8_t buf[2];
ReadBuff(0x56, 2, buf);
vin = ((buf[0] << 4) + buf[1]); // V
return vin;
}
uint16_t AXP192::GetIinData(void) {
uint16_t iin = 0;
uint8_t buf[2];
ReadBuff(0x58, 2, buf);
iin = ((buf[0] << 4) + buf[1]);
return iin;
}
uint16_t AXP192::GetVusbinData(void) {
uint16_t vin = 0;
uint8_t buf[2];
ReadBuff(0x5a, 2, buf);
vin = ((buf[0] << 4) + buf[1]); // V
return vin;
}
uint16_t AXP192::GetIusbinData(void) {
uint16_t iin = 0;
uint8_t buf[2];
ReadBuff(0x5C, 2, buf);
iin = ((buf[0] << 4) + buf[1]);
return iin;
}
uint16_t AXP192::GetIchargeData(void) {
uint16_t icharge = 0;
uint8_t buf[2];
ReadBuff(0x7A, 2, buf);
icharge = (buf[0] << 5) + buf[1];
return icharge;
}
uint16_t AXP192::GetIdischargeData(void) {
uint16_t idischarge = 0;
uint8_t buf[2];
ReadBuff(0x7C, 2, buf);
idischarge = (buf[0] << 5) + buf[1];
return idischarge;
}
uint16_t AXP192::GetTempData(void) {
uint16_t temp = 0;
uint8_t buf[2];
ReadBuff(0x5e, 2, buf);
temp = ((buf[0] << 4) + buf[1]);
return temp;
}
uint32_t AXP192::GetPowerbatData(void) {
uint32_t power = 0;
uint8_t buf[3];
ReadBuff(0x70, 2, buf);
power = (buf[0] << 16) + (buf[1] << 8) + buf[2];
return power;
}
uint16_t AXP192::GetVapsData(void) {
uint16_t vaps = 0;
uint8_t buf[2];
ReadBuff(0x7e, 2, buf);
vaps = ((buf[0] << 4) + buf[1]);
return vaps;
}
void AXP192::SetSleep(void) {
uint8_t buf = Read8bit(0x31);
buf = (1 << 3) | buf;
Write1Byte(0x31, buf);
Write1Byte(0x90, 0x00);
Write1Byte(0x12, 0x09);
// Write1Byte(0x12, 0x00);
Write1Byte(0x12, Read8bit(0x12) & 0xA1); // Disable all outputs but DCDC1
}
uint8_t AXP192::GetWarningLeve(void) {
Wire1.beginTransmission(0x34);
Wire1.write(0x47);
Wire1.endTransmission();
Wire1.requestFrom(0x34, 1);
uint8_t buf = Wire1.read();
return (buf & 0x01);
}
// -- sleep
void AXP192::DeepSleep(uint64_t time_in_us) {
SetSleep();
if (time_in_us > 0) {
esp_sleep_enable_timer_wakeup(time_in_us);
} else {
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_TIMER);
}
(time_in_us == 0) ? esp_deep_sleep_start() : esp_deep_sleep(time_in_us);
}
void AXP192::LightSleep(uint64_t time_in_us) {
SetSleep();
if (time_in_us > 0) {
esp_sleep_enable_timer_wakeup(time_in_us);
} else {
esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_TIMER);
}
esp_light_sleep_start();
}
// 0 not press, 0x01 long press, 0x02 press
uint8_t AXP192::GetBtnPress() {
uint8_t state = Read8bit(0x46);
if (state) {
Write1Byte(0x46, 0x03);
}
return state;
}
uint8_t AXP192::GetWarningLevel(void) {
return Read8bit(0x47) & 0x01;
}
float AXP192::GetBatVoltage() {
float ADCLSB = 1.1 / 1000.0;
uint16_t ReData = Read12Bit(0x78);
return ReData * ADCLSB;
}
float AXP192::GetBatCurrent() {
float ADCLSB = 0.5;
uint16_t CurrentIn = Read13Bit(0x7A);
uint16_t CurrentOut = Read13Bit(0x7C);
return (CurrentIn - CurrentOut) * ADCLSB;
}
float AXP192::GetVinVoltage() {
float ADCLSB = 1.7 / 1000.0;
uint16_t ReData = Read12Bit(0x56);
return ReData * ADCLSB;
}
float AXP192::GetVinCurrent() {
float ADCLSB = 0.625;
uint16_t ReData = Read12Bit(0x58);
return ReData * ADCLSB;
}
float AXP192::GetVBusVoltage() {
float ADCLSB = 1.7 / 1000.0;
uint16_t ReData = Read12Bit(0x5A);
return ReData * ADCLSB;
}
float AXP192::GetVBusCurrent() {
float ADCLSB = 0.375;
uint16_t ReData = Read12Bit(0x5C);
return ReData * ADCLSB;
}
float AXP192::GetTempInAXP192() {
float ADCLSB = 0.1;
const float OFFSET_DEG_C = -144.7;
uint16_t ReData = Read12Bit(0x5E);
return OFFSET_DEG_C + ReData * ADCLSB;
}
float AXP192::GetBatPower() {
float VoltageLSB = 1.1;
float CurrentLCS = 0.5;
uint32_t ReData = Read24bit(0x70);
return VoltageLSB * CurrentLCS * ReData / 1000.0;
}
float AXP192::GetBatChargeCurrent() {
float ADCLSB = 0.5;
uint16_t ReData = Read12Bit(0x7A);
return ReData * ADCLSB;
}
float AXP192::GetAPSVoltage() {
float ADCLSB = 1.4 / 1000.0;
uint16_t ReData = Read12Bit(0x7E);
return ReData * ADCLSB;
}
float AXP192::GetBatCoulombInput() {
uint32_t ReData = Read32bit(0xB0);
return ReData * 65536 * 0.5 / 3600 / 25.0;
}
float AXP192::GetBatCoulombOut() {
uint32_t ReData = Read32bit(0xB4);
return ReData * 65536 * 0.5 / 3600 / 25.0;
}
void AXP192::SetCoulombClear() {
Write1Byte(0xB8, 0x20);
}
void AXP192::SetLDO2(bool State) {
uint8_t buf = Read8bit(0x12);
if (State == true)
buf = (1 << 2) | buf;
else
buf = ~(1 << 2) & buf;
Write1Byte(0x12, buf);
}
// Cut all power, except for LDO1 (RTC)
void AXP192::PowerOff() {
Write1Byte(0x32, Read8bit(0x32) | 0x80); // MSB for Power Off
}
void AXP192::SetPeripherialsPower(uint8_t state) {
if (!state)
Write1Byte(0x10, Read8bit(0x10) & 0XFB);
else if (state)
Write1Byte(0x10, Read8bit(0x10) | 0X04);
// uint8_t data;
// Set EXTEN to enable 5v boost
}

81
esp32_marauder/AXP192.h Normal file
View File

@@ -0,0 +1,81 @@
#ifndef __AXP192_H__
#define __AXP192_H__
#include <Arduino.h>
#include <Wire.h>
#define SLEEP_MSEC(us) (((uint64_t)us) * 1000L)
#define SLEEP_SEC(us) (((uint64_t)us) * 1000000L)
#define SLEEP_MIN(us) (((uint64_t)us) * 60L * 1000000L)
#define SLEEP_HR(us) (((uint64_t)us) * 60L * 60L * 1000000L)
class AXP192 {
public:
AXP192();
void begin(void);
void ScreenBreath(int brightness);
void ScreenSwitch(bool state);
bool GetBatState();
void EnableCoulombcounter(void);
void DisableCoulombcounter(void);
void StopCoulombcounter(void);
void ClearCoulombcounter(void);
uint32_t GetCoulombchargeData(void);
uint32_t GetCoulombdischargeData(void);
float GetCoulombData(void);
uint16_t GetVbatData(void) __attribute__((deprecated));
uint16_t GetIchargeData(void) __attribute__((deprecated));
uint16_t GetIdischargeData(void) __attribute__((deprecated));
uint16_t GetTempData(void) __attribute__((deprecated));
uint32_t GetPowerbatData(void) __attribute__((deprecated));
uint16_t GetVinData(void) __attribute__((deprecated));
uint16_t GetIinData(void) __attribute__((deprecated));
uint16_t GetVusbinData(void) __attribute__((deprecated));
uint16_t GetIusbinData(void) __attribute__((deprecated));
uint16_t GetVapsData(void) __attribute__((deprecated));
uint8_t GetBtnPress(void);
// -- sleep
void SetSleep(void);
void DeepSleep(uint64_t time_in_us = 0);
void LightSleep(uint64_t time_in_us = 0);
uint8_t GetWarningLeve(void);
public:
// void SetChargeVoltage( uint8_t );
// void SetChargeCurrent( uint8_t );
float GetBatVoltage();
float GetBatCurrent();
float GetVinVoltage();
float GetVinCurrent();
float GetVBusVoltage();
float GetVBusCurrent();
float GetTempInAXP192();
float GetBatPower();
float GetBatChargeCurrent();
float GetAPSVoltage();
float GetBatCoulombInput();
float GetBatCoulombOut();
uint8_t GetWarningLevel(void);
void SetCoulombClear();
void SetLDO2(bool State);
void SetPeripherialsPower(uint8_t state);
// -- Power Off
void PowerOff();
public:
void Write1Byte(uint8_t Addr, uint8_t Data);
uint8_t Read8bit(uint8_t Addr);
uint16_t Read12Bit(uint8_t Addr);
uint16_t Read13Bit(uint8_t Addr);
uint16_t Read16bit(uint8_t Addr);
uint32_t Read24bit(uint8_t Addr);
uint32_t Read32bit(uint8_t Addr);
void ReadBuff(uint8_t Addr, uint8_t Size, uint8_t *Buff);
};
#endif

View File

@@ -6,7 +6,7 @@ Buffer::Buffer(){
bufB = (uint8_t*)malloc(BUF_SIZE);
}
void Buffer::open(fs::FS* fs, String fn){
void Buffer::createPcapFile(fs::FS* fs, String fn){
int i=0;
do{
fileName = "/"+fn+"_"+(String)i+".pcap";
@@ -17,12 +17,15 @@ void Buffer::open(fs::FS* fs, String fn){
file = fs->open(fileName, FILE_WRITE);
file.close();
}
void Buffer::open(){
bufSizeA = 0;
bufSizeB = 0;
bufSizeB = 0;
writing = true;
write(uint32_t(0xa1b2c3d4)); // magic number
write(uint16_t(2)); // major version number
write(uint16_t(4)); // minor version number
@@ -30,8 +33,6 @@ void Buffer::open(fs::FS* fs, String fn){
write(uint32_t(0)); // accuracy of timestamps
write(uint32_t(SNAP_LEN)); // max length of captured packets, in octets
write(uint32_t(105)); // data link type
//useSD = true;
}
void Buffer::close(fs::FS* fs){
@@ -201,3 +202,34 @@ void Buffer::forceSave(fs::FS* fs){
saving = false;
writing = true;
}
void Buffer::forceSaveSerial() {
uint32_t len = bufSizeA + bufSizeB;
if(len == 0) return;
saving = true;
writing = false;
if(useA){
if(bufSizeB > 0){
Serial1.write(bufB, bufSizeB);
bufSizeB = 0;
}
if(bufSizeA > 0){
Serial1.write(bufA, bufSizeA);
bufSizeA = 0;
}
} else {
if(bufSizeA > 0){
Serial1.write(bufA, bufSizeA);
bufSizeA = 0;
}
if(bufSizeB > 0){
Serial1.write(bufB, bufSizeB);
bufSizeB = 0;
}
}
saving = false;
writing = true;
}

View File

@@ -16,11 +16,13 @@ extern Settings settings_obj;
class Buffer {
public:
Buffer();
void open(fs::FS* fs, String fn = "");
void createPcapFile(fs::FS* fs, String fn = "");
void open();
void close(fs::FS* fs);
void addPacket(uint8_t* buf, uint32_t len);
void save(fs::FS* fs);
void forceSave(fs::FS* fs);
void forceSaveSerial();
private:
void write(int32_t n);
void write(uint32_t n);

View File

@@ -9,6 +9,9 @@ void CommandLine::RunSetup() {
Serial.println(F("\n\n--------------------------------\n"));
Serial.println(F(" ESP32 Marauder \n"));
Serial.println(" " + version_number + "\n");
#ifdef WRITE_PACKETS_SERIAL
Serial.println(F(" >> Serial \n"));
#endif
Serial.println(F(" By: justcallmekoko\n"));
Serial.println(F("--------------------------------\n\n"));
@@ -36,21 +39,41 @@ void CommandLine::main(uint32_t currentTime) {
LinkedList<String> CommandLine::parseCommand(String input, char* delim) {
LinkedList<String> cmd_args;
if (input != "") {
char fancy[input.length() + 1] = {};
input.toCharArray(fancy, input.length() + 1);
char* ptr = strtok(fancy, delim);
while (ptr != NULL) {
cmd_args.add(String(ptr));
ptr = strtok(NULL, delim);
bool inQuote = false;
bool inApostrophe = false;
String buffer = "";
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c == '"') {
// Check if the quote is within an apostrophe
if (inApostrophe) {
buffer += c;
} else {
inQuote = !inQuote;
}
} else if (c == '\'') {
// Check if the apostrophe is within a quote
if (inQuote) {
buffer += c;
} else {
inApostrophe = !inApostrophe;
}
} else if (!inQuote && !inApostrophe && strchr(delim, c) != NULL) {
cmd_args.add(buffer);
buffer = "";
} else {
buffer += c;
}
}
// Add the last argument
if (!buffer.isEmpty()) {
cmd_args.add(buffer);
}
return cmd_args;
}
@@ -93,6 +116,85 @@ bool CommandLine::hasSSIDs() {
return true;
}
void CommandLine::showCounts(int selected, int unselected) {
Serial.print((String) selected + " selected");
if (unselected != -1)
Serial.print(", " + (String) unselected + " unselected");
Serial.println("");
}
String CommandLine::toLowerCase(String str) {
String result = str;
for (int i = 0; i < str.length(); i++) {
int charValue = str.charAt(i);
if (charValue >= 65 && charValue <= 90) { // ASCII codes for uppercase letters
charValue += 32;
result.setCharAt(i, char(charValue));
}
}
return result;
}
void CommandLine::filterAccessPoints(String filter) {
int count_selected = 0;
int count_unselected = 0;
// Split the filter string into individual filters
LinkedList<String> filters;
int start = 0;
int end = filter.indexOf(" or ");
while (end != -1) {
filters.add(filter.substring(start, end));
start = end + 4;
end = filter.indexOf(" or ", start);
}
filters.add(filter.substring(start));
// Loop over each access point and check if it matches any of the filters
for (int i = 0; i < access_points->size(); i++) {
bool matchesFilter = false;
for (int j = 0; j < filters.size(); j++) {
String f = toLowerCase(filters.get(j));
if (f.substring(0, 7) == "equals ") {
String ssidEquals = f.substring(7);
if ((ssidEquals.charAt(0) == '\"' && ssidEquals.charAt(ssidEquals.length() - 1) == '\"' && ssidEquals.length() > 1) ||
(ssidEquals.charAt(0) == '\'' && ssidEquals.charAt(ssidEquals.length() - 1) == '\'' && ssidEquals.length() > 1)) {
ssidEquals = ssidEquals.substring(1, ssidEquals.length() - 1);
}
if (access_points->get(i).essid.equalsIgnoreCase(ssidEquals)) {
matchesFilter = true;
break;
}
} else if (f.substring(0, 9) == "contains ") {
String ssidContains = f.substring(9);
if ((ssidContains.charAt(0) == '\"' && ssidContains.charAt(ssidContains.length() - 1) == '\"' && ssidContains.length() > 1) ||
(ssidContains.charAt(0) == '\'' && ssidContains.charAt(ssidContains.length() - 1) == '\'' && ssidContains.length() > 1)) {
ssidContains = ssidContains.substring(1, ssidContains.length() - 1);
}
String essid = toLowerCase(access_points->get(i).essid);
if (essid.indexOf(ssidContains) != -1) {
matchesFilter = true;
break;
}
}
}
// Toggles the selected state of the AP
AccessPoint new_ap = access_points->get(i);
new_ap.selected = matchesFilter;
access_points->set(i, new_ap);
if (matchesFilter) {
count_selected++;
} else {
count_unselected++;
}
}
this->showCounts(count_selected, count_unselected);
}
void CommandLine::runCommand(String input) {
if (input != "")
Serial.println("#" + input);
@@ -111,8 +213,10 @@ void CommandLine::runCommand(String input) {
Serial.println(HELP_CLEARAP_CMD_A);
Serial.println(HELP_REBOOT_CMD);
Serial.println(HELP_UPDATE_CMD_A);
Serial.println(HELP_LS_CMD);
// WiFi sniff/scan
Serial.println(HELP_SIGSTREN_CMD);
Serial.println(HELP_SCANAP_CMD);
Serial.println(HELP_SCANSTA_CMD);
Serial.println(HELP_SNIFF_RAW_CMD);
@@ -134,6 +238,7 @@ void CommandLine::runCommand(String input) {
Serial.println(HELP_SEL_CMD_A);
Serial.println(HELP_SSID_CMD_A);
Serial.println(HELP_SSID_CMD_B);
Serial.println(HELP_JOIN_WIFI_CMD);
// Bluetooth sniff/scan
Serial.println(HELP_BT_SNIFF_CMD);
@@ -164,6 +269,13 @@ void CommandLine::runCommand(String input) {
menu_function_obj.changeMenu(menu_function_obj.current_menu);
#endif
}
// ls command
else if (cmd_args.get(0) == LS_CMD) {
if (cmd_args.size() > 1)
sd_obj.listDir(cmd_args.get(1));
else
Serial.println("You did not provide a dir to list");
}
// Channel command
else if (cmd_args.get(0) == CH_CMD) {
// Search for channel set arg
@@ -246,9 +358,17 @@ void CommandLine::runCommand(String input) {
//// WiFi/Bluetooth Scan/Attack commands
if (!wifi_scan_obj.scanning()) {
// Signal strength scan
if (cmd_args.get(0) == SIGSTREN_CMD) {
Serial.println("Starting Signal Strength Scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_MAGENTA);
}
// AP Scan
if (cmd_args.get(0) == SCANAP_CMD) {
else if (cmd_args.get(0) == SCANAP_CMD) {
int full_sw = -1;
#ifdef HAS_SCREEN
display_obj.clearScreen();
@@ -275,6 +395,9 @@ void CommandLine::runCommand(String input) {
}
// Scan stations
else if (cmd_args.get(0) == SCANSTA_CMD) {
if(access_points->size() < 1)
Serial.println("The AP list is empty. Scan APs first with " + (String)SCANAP_CMD);
Serial.println("Starting Station scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
@@ -331,6 +454,14 @@ void CommandLine::runCommand(String input) {
else if (cmd_args.get(0) == SNIFF_PMKID_CMD) {
int ch_sw = this->argSearch(&cmd_args, "-c");
int d_sw = this->argSearch(&cmd_args, "-d"); // Deauth for pmkid
int l_sw = this->argSearch(&cmd_args, "-l"); // Only run on list
if (l_sw != -1) {
if (!this->apSelected()) {
Serial.println("You don't have any targets selected. Use " + (String)SEL_CMD);
return;
}
}
if (ch_sw != -1) {
wifi_scan_obj.set_channel = cmd_args.get(ch_sw + 1).toInt();
@@ -343,11 +474,15 @@ void CommandLine::runCommand(String input) {
Serial.println("Starting PMKID sniff on channel " + (String)wifi_scan_obj.set_channel + ". Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.StartScan(WIFI_SCAN_EAPOL, TFT_VIOLET);
}
else if ((d_sw != -1) && (l_sw != -1)) {
Serial.println("Starting TARGETED PMKID sniff with deauthentication on channel " + (String)wifi_scan_obj.set_channel + ". Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.StartScan(WIFI_SCAN_ACTIVE_LIST_EAPOL, TFT_VIOLET);
}
else {
Serial.println("Starting PMKID sniff with deauthentication on channel " + (String)wifi_scan_obj.set_channel + ". Stop with " + (String)STOPSCAN_CMD);
wifi_scan_obj.StartScan(WIFI_SCAN_ACTIVE_EAPOL, TFT_VIOLET);
}
}
}
//// WiFi attack commands
// attack
@@ -487,21 +622,29 @@ void CommandLine::runCommand(String input) {
//// Bluetooth scan/attack commands
// Bluetooth scan
if (cmd_args.get(0) == BT_SNIFF_CMD) {
Serial.println("Starting Bluetooth scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#ifdef HAS_BT
Serial.println("Starting Bluetooth scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(BT_SCAN_ALL, TFT_GREEN);
#else
Serial.println("Bluetooth not supported");
#endif
wifi_scan_obj.StartScan(BT_SCAN_ALL, TFT_GREEN);
}
// Bluetooth CC Skimmer scan
else if (cmd_args.get(0) == BT_SKIM_CMD) {
Serial.println("Starting Bluetooth CC Skimmer scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#ifdef HAS_BT
Serial.println("Starting Bluetooth CC Skimmer scan. Stop with " + (String)STOPSCAN_CMD);
#ifdef HAS_SCREEN
display_obj.clearScreen();
menu_function_obj.drawStatusBar();
#endif
wifi_scan_obj.StartScan(BT_SCAN_SKIMMERS, TFT_MAGENTA);
#else
Serial.println("Bluetooth not supported");
#endif
wifi_scan_obj.StartScan(BT_SCAN_SKIMMERS, TFT_MAGENTA);
}
// Update command
@@ -520,17 +663,22 @@ void CommandLine::runCommand(String input) {
}
// Update via SD
else if (sd_sw != -1) {
if (!sd_obj.supported) {
Serial.println("SD card is not connected. Cannot perform SD Update");
return;
}
wifi_scan_obj.currentScanMode = OTA_UPDATE;
sd_obj.runUpdate();
#ifndef WRITE_PACKETS_SERIAL
if (!sd_obj.supported) {
Serial.println("SD card is not connected. Cannot perform SD Update");
return;
}
wifi_scan_obj.currentScanMode = OTA_UPDATE;
sd_obj.runUpdate();
#else
Serial.println("SD card not initialized. Cannot perform SD Update");
#endif
}
}
}
int count_selected = 0;
//// WiFi aux commands
// List access points
if (cmd_args.get(0) == LIST_AP_CMD) {
@@ -541,20 +689,26 @@ void CommandLine::runCommand(String input) {
// List APs
if (ap_sw != -1) {
for (int i = 0; i < access_points->size(); i++) {
if (access_points->get(i).selected)
Serial.println("[" + (String)i + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi + " (selected)");
if (access_points->get(i).selected) {
Serial.println("[" + (String)i + "][CH:" + (String)access_points->get(i).channel + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi + " (selected)");
count_selected += 1;
}
else
Serial.println("[" + (String)i + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi);
Serial.println("[" + (String)i + "][CH:" + (String)access_points->get(i).channel + "] " + access_points->get(i).essid + " " + (String)access_points->get(i).rssi);
}
this->showCounts(count_selected);
}
// List SSIDs
else if (ss_sw != -1) {
for (int i = 0; i < ssids->size(); i++) {
if (ssids->get(i).selected)
if (ssids->get(i).selected) {
Serial.println("[" + (String)i + "] " + ssids->get(i).essid + " (selected)");
count_selected += 1;
}
else
Serial.println("[" + (String)i + "] " + ssids->get(i).essid);
}
this->showCounts(count_selected);
}
// List Stations
else if (cl_sw != -1) {
@@ -567,6 +721,7 @@ void CommandLine::runCommand(String input) {
Serial.print(" [" + (String)access_points->get(x).stations->get(i) + "] ");
Serial.print(sta_mac);
Serial.println(" (selected)");
count_selected += 1;
}
else {
Serial.print(" [" + (String)access_points->get(x).stations->get(i) + "] ");
@@ -574,6 +729,7 @@ void CommandLine::runCommand(String input) {
}
}
}
this->showCounts(count_selected);
}
else {
Serial.println("You did not specify which list to show");
@@ -586,50 +742,66 @@ void CommandLine::runCommand(String input) {
int ap_sw = this->argSearch(&cmd_args, "-a");
int ss_sw = this->argSearch(&cmd_args, "-s");
int cl_sw = this->argSearch(&cmd_args, "-c");
int filter_sw = this->argSearch(&cmd_args, "-f");
count_selected = 0;
int count_unselected = 0;
// select Access points
if (ap_sw != -1) {
// Get list of indices
LinkedList<String> ap_index = this->parseCommand(cmd_args.get(ap_sw + 1), ",");
// Select ALL APs
if (cmd_args.get(ap_sw + 1) == "all") {
for (int i = 0; i < access_points->size(); i++) {
if (access_points->get(i).selected) {
// Unselect "selected" ap
AccessPoint new_ap = access_points->get(i);
new_ap.selected = false;
access_points->set(i, new_ap);
}
else {
// Select "unselected" ap
AccessPoint new_ap = access_points->get(i);
new_ap.selected = true;
access_points->set(i, new_ap);
// If the filters parameter was specified
if (filter_sw != -1) {
String filter_ap = cmd_args.get(filter_sw + 1);
this->filterAccessPoints(filter_ap);
} else {
// Get list of indices
LinkedList<String> ap_index = this->parseCommand(cmd_args.get(ap_sw + 1), ",");
// Select ALL APs
if (cmd_args.get(ap_sw + 1) == "all") {
for (int i = 0; i < access_points->size(); i++) {
if (access_points->get(i).selected) {
// Unselect "selected" ap
AccessPoint new_ap = access_points->get(i);
new_ap.selected = false;
access_points->set(i, new_ap);
count_unselected += 1;
}
else {
// Select "unselected" ap
AccessPoint new_ap = access_points->get(i);
new_ap.selected = true;
access_points->set(i, new_ap);
count_selected += 1;
}
}
this->showCounts(count_selected, count_unselected);
}
}
// Select specific APs
else {
// Mark APs as selected
for (int i = 0; i < ap_index.size(); i++) {
int index = ap_index.get(i).toInt();
if (!this->inRange(access_points->size(), index)) {
Serial.println("Index not in range: " + (String)index);
continue;
}
if (access_points->get(index).selected) {
// Unselect "selected" ap
AccessPoint new_ap = access_points->get(index);
new_ap.selected = false;
access_points->set(index, new_ap);
}
else {
// Select "unselected" ap
AccessPoint new_ap = access_points->get(index);
new_ap.selected = true;
access_points->set(index, new_ap);
// Select specific APs
else {
// Mark APs as selected
for (int i = 0; i < ap_index.size(); i++) {
int index = ap_index.get(i).toInt();
if (!this->inRange(access_points->size(), index)) {
Serial.println("Index not in range: " + (String)index);
continue;
}
if (access_points->get(index).selected) {
// Unselect "selected" ap
AccessPoint new_ap = access_points->get(index);
new_ap.selected = false;
access_points->set(index, new_ap);
count_unselected += 1;
}
else {
// Select "unselected" ap
AccessPoint new_ap = access_points->get(index);
new_ap.selected = true;
access_points->set(index, new_ap);
count_selected += 1;
}
}
this->showCounts(count_selected, count_unselected);
}
}
}
@@ -644,14 +816,17 @@ void CommandLine::runCommand(String input) {
Station new_sta = stations->get(i);
new_sta.selected = false;
stations->set(i, new_sta);
count_unselected += 1;
}
else {
// Select "unselected" ap
Station new_sta = stations->get(i);
new_sta.selected = true;
stations->set(i, new_sta);
count_selected += 1;
}
}
this->showCounts(count_selected, count_unselected);
}
// Select specific Stations
else {
@@ -667,14 +842,17 @@ void CommandLine::runCommand(String input) {
Station new_sta = stations->get(index);
new_sta.selected = false;
stations->set(index, new_sta);
count_unselected += 1;
}
else {
// Select "unselected" ap
Station new_sta = stations->get(index);
new_sta.selected = true;
stations->set(index, new_sta);
count_selected += 1;
}
}
this->showCounts(count_selected, count_unselected);
}
}
// select ssids
@@ -694,14 +872,17 @@ void CommandLine::runCommand(String input) {
ssid new_ssid = ssids->get(index);
new_ssid.selected = false;
ssids->set(index, new_ssid);
count_unselected += 1;
}
else {
// Select "unselected" ap
ssid new_ssid = ssids->get(index);
new_ssid.selected = true;
ssids->set(index, new_ssid);
count_selected += 1;
}
}
this->showCounts(count_selected, count_unselected);
}
else {
Serial.println("You did not specify which list to select from");
@@ -745,4 +926,41 @@ void CommandLine::runCommand(String input) {
return;
}
}
// Join WiFi
else if (cmd_args.get(0) == JOINWIFI_CMD) {
int n_sw = this->argSearch(&cmd_args, "-n"); // name
int a_sw = this->argSearch(&cmd_args, "-a"); // access point
int s_sw = this->argSearch(&cmd_args, "-s"); // ssid
int p_sw = this->argSearch(&cmd_args, "-p");
String essid = "";
String pwx = "";
if (s_sw != -1) {
int index = cmd_args.get(s_sw + 1).toInt();
if (!this->inRange(ssids->size(), index)) {
Serial.println("Index not in range: " + (String)index);
return;
}
essid = ssids->get(index).essid;
} else if (a_sw != -1) {
int index = cmd_args.get(a_sw + 1).toInt();
if (!this->inRange(access_points->size(), index)) {
Serial.println("Index not in range: " + (String)index);
return;
}
essid = access_points->get(index).essid;
} else if (n_sw != -1) {
essid = cmd_args.get(n_sw + 1);
} else {
Serial.println("You must specify an access point or ssid");
return;
}
if (p_sw != -1) {
pwx = cmd_args.get(p_sw + 1);
}
Serial.println("Attempting to join WiFi with ssid " + (String)essid);
wifi_scan_obj.joinWiFi(essid, pwx);
}
}

View File

@@ -36,8 +36,10 @@ const char PROGMEM REBOOT_CMD[] = "reboot";
const char PROGMEM UPDATE_CMD[] = "update";
const char PROGMEM HELP_CMD[] = "help";
const char PROGMEM SETTINGS_CMD[] = "settings";
const char PROGMEM LS_CMD[] = "ls";
// WiFi sniff/scan
const char PROGMEM SIGSTREN_CMD[] = "sigmon";
const char PROGMEM SCANAP_CMD[] = "scanap";
const char PROGMEM SCANSTA_CMD[] = "scansta";
const char PROGMEM SNIFF_RAW_CMD[] = "sniffraw";
@@ -60,6 +62,7 @@ const char PROGMEM ATTACK_TYPE_RR[] = "rickroll";
const char PROGMEM LIST_AP_CMD[] = "list";
const char PROGMEM SEL_CMD[] = "select";
const char PROGMEM SSID_CMD[] = "ssid";
const char PROGMEM JOINWIFI_CMD[] = "join";
// Bluetooth sniff/scan
const char PROGMEM BT_SNIFF_CMD[] = "sniffbt";
@@ -74,8 +77,10 @@ const char PROGMEM HELP_CLEARAP_CMD_A[] = "clearlist -a/-c/-s";
const char PROGMEM HELP_REBOOT_CMD[] = "reboot";
const char PROGMEM HELP_UPDATE_CMD_A[] = "update -s/-w";
const char PROGMEM HELP_SETTINGS_CMD[] = "settings [-s <setting> enable/disable>]/[-r]";
const char PROGMEM HELP_LS_CMD[] = "ls <directory>";
// WiFi sniff/scan
const char PROGMEM HELP_SIGSTREN_CMD[] = "sigmon";
const char PROGMEM HELP_SCANAP_CMD[] = "scanap";
const char PROGMEM HELP_SCANSTA_CMD[] = "scansta";
const char PROGMEM HELP_SNIFF_RAW_CMD[] = "sniffraw";
@@ -84,8 +89,9 @@ const char PROGMEM HELP_SNIFF_PROBE_CMD[] = "sniffprobe";
const char PROGMEM HELP_SNIFF_PWN_CMD[] = "sniffpwn";
const char PROGMEM HELP_SNIFF_ESP_CMD[] = "sniffesp";
const char PROGMEM HELP_SNIFF_DEAUTH_CMD[] = "sniffdeauth";
const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>]";
const char PROGMEM HELP_SNIFF_PMKID_CMD[] = "sniffpmkid [-c <channel>][-d][-l]";
const char PROGMEM HELP_STOPSCAN_CMD[] = "stopscan";
const char PROGMEM HELP_JOIN_WIFI_CMD[] = "join [-n <ssid_name>/-s <ssid_index>/-a <access_point_index>] -p <password>";
// WiFi attack
const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-c]/[-s <src mac>] [-d <dst mac>]/probe/rickroll>";
@@ -94,7 +100,7 @@ const char PROGMEM HELP_ATTACK_CMD[] = "attack -t <beacon [-l/-r/-a]/deauth [-c]
const char PROGMEM HELP_LIST_AP_CMD_A[] = "list -s";
const char PROGMEM HELP_LIST_AP_CMD_B[] = "list -a";
const char PROGMEM HELP_LIST_AP_CMD_C[] = "list -c";
const char PROGMEM HELP_SEL_CMD_A[] = "select -a/-s/-c <index (comma separated)>";
const char PROGMEM HELP_SEL_CMD_A[] = "select -a/-s/-c <index (comma separated)>/-f \"equals <String> or contains <String>\"";
const char PROGMEM HELP_SSID_CMD_A[] = "ssid -a [-g <count>/-n <name>]";
const char PROGMEM HELP_SSID_CMD_B[] = "ssid -r <index>";
@@ -108,11 +114,14 @@ class CommandLine {
private:
String getSerialInput();
LinkedList<String> parseCommand(String input, char* delim);
String toLowerCase(String str);
void filterAccessPoints(String filter);
void runCommand(String input);
bool checkValueExists(LinkedList<String>* cmd_args_list, int index);
bool inRange(int max, int index);
bool apSelected();
bool hasSSIDs();
void showCounts(int selected, int unselected = -1);
int argSearch(LinkedList<String>* cmd_args, String key);
const char* ascii_art =

View File

@@ -20,11 +20,17 @@ void Display::RunSetup()
#endif
tft.init();
tft.setRotation(0); // Portrait
#ifndef MARAUDER_M5STICKC
tft.setRotation(0); // Portrait
#endif
#ifdef MARAUDER_M5STICKC
tft.setRotation(3);
#endif
tft.setCursor(0, 0);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
#ifdef TFT_SHIELD
uint16_t calData[5] = { 275, 3494, 361, 3528, 4 }; // tft.setRotation(0); // Portrait with TFT Shield
@@ -380,7 +386,7 @@ void Display::setupScrollArea(uint16_t tfa, uint16_t bfa) {
//Serial.println(" tfa: " + (String)tfa);
//Serial.println(" bfa: " + (String)bfa);
//Serial.println("yStart: " + (String)this->yStart);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
tft.writecommand(ILI9341_VSCRDEF); // Vertical scroll definition
tft.writedata(tfa >> 8); // Top Fixed Area line count
tft.writedata(tfa);
@@ -393,7 +399,7 @@ void Display::setupScrollArea(uint16_t tfa, uint16_t bfa) {
void Display::scrollAddress(uint16_t vsp) {
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
tft.writecommand(ILI9341_VSCRSADD); // Vertical scrolling pointer
tft.writedata(vsp>>8);
tft.writedata(vsp);

View File

@@ -17,7 +17,7 @@ MenuFunctions::MenuFunctions()
// LVGL Stuff
/* Interrupt driven periodic handler */
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
void MenuFunctions::lv_tick_handler()
{
lv_tick_inc(LVGL_TICK_PERIOD);
@@ -132,27 +132,29 @@ MenuFunctions::MenuFunctions()
lv_textarea_set_text(ta1, "");
lv_textarea_set_placeholder_text(ta1, "Ducky script");
if (sd_obj.supported) {
// Create load button
lv_obj_t * label;
lv_obj_t * load_btn = lv_btn_create(lv_scr_act(), NULL);
lv_obj_set_event_cb(load_btn, load_btn_cb);
lv_obj_set_height(load_btn, 35);
lv_obj_set_width(load_btn, LV_HOR_RES / 3);
lv_obj_align(load_btn, ta1, LV_ALIGN_IN_TOP_RIGHT, NULL, (LV_VER_RES / 2) - 35); // align to text area
label = lv_label_create(load_btn, NULL);
lv_label_set_text(label, text05);
// Create Save As button
lv_obj_t * label2;
lv_obj_t * save_as_btn = lv_btn_create(lv_scr_act(), NULL);
lv_obj_set_event_cb(save_as_btn, load_btn_cb);
lv_obj_set_height(save_as_btn, 35);
lv_obj_set_width(save_as_btn, LV_HOR_RES / 3);
lv_obj_align(save_as_btn, ta1, LV_ALIGN_IN_TOP_MID, NULL, (LV_VER_RES / 2) - 35); // align to text area
label2 = lv_label_create(save_as_btn, NULL);
lv_label_set_text(label2, text06);
}
#ifndef WRITE_PACKETS_SERIAL
if (sd_obj.supported) {
// Create load button
lv_obj_t * label;
lv_obj_t * load_btn = lv_btn_create(lv_scr_act(), NULL);
lv_obj_set_event_cb(load_btn, load_btn_cb);
lv_obj_set_height(load_btn, 35);
lv_obj_set_width(load_btn, LV_HOR_RES / 3);
lv_obj_align(load_btn, ta1, LV_ALIGN_IN_TOP_RIGHT, NULL, (LV_VER_RES / 2) - 35); // align to text area
label = lv_label_create(load_btn, NULL);
lv_label_set_text(label, text05);
// Create Save As button
lv_obj_t * label2;
lv_obj_t * save_as_btn = lv_btn_create(lv_scr_act(), NULL);
lv_obj_set_event_cb(save_as_btn, load_btn_cb);
lv_obj_set_height(save_as_btn, 35);
lv_obj_set_width(save_as_btn, LV_HOR_RES / 3);
lv_obj_align(save_as_btn, ta1, LV_ALIGN_IN_TOP_MID, NULL, (LV_VER_RES / 2) - 35); // align to text area
label2 = lv_label_create(save_as_btn, NULL);
lv_label_set_text(label2, text06);
}
#endif
// Focus it on one of the text areas to start
lv_keyboard_set_textarea(kb, ta1);
@@ -858,7 +860,7 @@ void MenuFunctions::main(uint32_t currentTime)
this->orientDisplay();
wifi_scan_obj.orient_display = false;
}
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
if ((wifi_scan_obj.currentScanMode != LV_JOIN_WIFI) &&
(wifi_scan_obj.currentScanMode != LV_ADD_SSID))
display_obj.updateBanner(current_menu->name);
@@ -871,7 +873,7 @@ void MenuFunctions::main(uint32_t currentTime)
if ((wifi_scan_obj.currentScanMode != LV_JOIN_WIFI) &&
(wifi_scan_obj.currentScanMode != LV_ADD_SSID))
this->updateStatusBar();
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.updateBanner(current_menu->name);
#endif
}
@@ -899,13 +901,13 @@ void MenuFunctions::main(uint32_t currentTime)
int pre_getTouch = millis();
// getTouch causes a 10ms delay which makes beacon spam less effective
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
pressed = display_obj.tft.getTouch(&t_x, &t_y);
#endif
// This is if there are scans/attacks going on
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
if ((wifi_scan_obj.currentScanMode != WIFI_SCAN_OFF) &&
(pressed) &&
(wifi_scan_obj.currentScanMode != OTA_UPDATE) &&
@@ -917,6 +919,7 @@ void MenuFunctions::main(uint32_t currentTime)
(wifi_scan_obj.currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_SIG_STREN) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP_FULL) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_PWN) ||
@@ -951,7 +954,7 @@ void MenuFunctions::main(uint32_t currentTime)
}
#endif
#ifdef MARAUDER_MINI
#ifdef HAS_BUTTONS
bool c_btn_press = c_btn.justPressed();
@@ -966,6 +969,7 @@ void MenuFunctions::main(uint32_t currentTime)
(wifi_scan_obj.currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_SIG_STREN) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_TARGET_AP_FULL) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_PWN) ||
@@ -985,6 +989,7 @@ void MenuFunctions::main(uint32_t currentTime)
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ACTIVE_EAPOL) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ACTIVE_LIST_EAPOL) ||
(wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR))
{
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
@@ -1007,7 +1012,7 @@ void MenuFunctions::main(uint32_t currentTime)
// Check if any key coordinate boxes contain the touch coordinates
// This is for when on a menu
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
if ((wifi_scan_obj.currentScanMode != WIFI_ATTACK_BEACON_SPAM) &&
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_AP_SPAM) &&
(wifi_scan_obj.currentScanMode != WIFI_ATTACK_AUTH) &&
@@ -1067,23 +1072,25 @@ void MenuFunctions::main(uint32_t currentTime)
y = -1;
#endif
#ifdef MARAUDER_MINI
if (u_btn.justPressed()){
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) ||
(wifi_scan_obj.currentScanMode == OTA_UPDATE)) {
if (current_menu->selected > 0) {
current_menu->selected--;
this->buttonSelected(current_menu->selected);
if (!current_menu->list->get(current_menu->selected + 1).selected)
this->buttonNotSelected(current_menu->selected + 1);
#ifdef HAS_BUTTONS
#ifndef MARAUDER_M5STICKC
if (u_btn.justPressed()){
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) ||
(wifi_scan_obj.currentScanMode == OTA_UPDATE)) {
if (current_menu->selected > 0) {
current_menu->selected--;
this->buttonSelected(current_menu->selected);
if (!current_menu->list->get(current_menu->selected + 1).selected)
this->buttonNotSelected(current_menu->selected + 1);
}
}
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) {
if (wifi_scan_obj.set_channel < 14)
wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel + 1);
}
}
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) {
if (wifi_scan_obj.set_channel < 14)
wifi_scan_obj.changeChannel(wifi_scan_obj.set_channel + 1);
}
}
#endif
if (d_btn.justPressed()){
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_OFF) ||
(wifi_scan_obj.currentScanMode == OTA_UPDATE)) {
@@ -1093,6 +1100,12 @@ void MenuFunctions::main(uint32_t currentTime)
if (!current_menu->list->get(current_menu->selected - 1).selected)
this->buttonNotSelected(current_menu->selected - 1);
}
else {
current_menu->selected = 0;
this->buttonSelected(current_menu->selected);
if (!current_menu->list->get(current_menu->list->size() - 1).selected)
this->buttonNotSelected(current_menu->list->size() - 1);
}
}
else if ((wifi_scan_obj.currentScanMode == WIFI_PACKET_MONITOR) ||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL)) {
@@ -1211,7 +1224,7 @@ void MenuFunctions::updateStatusBar()
{
display_obj.tft.setTextSize(1);
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.setFreeFont(NULL);
#endif
@@ -1233,11 +1246,11 @@ void MenuFunctions::updateStatusBar()
if (temp_obj.current_temp != temp_obj.old_temp) {
temp_obj.old_temp = temp_obj.current_temp;
display_obj.tft.fillRect(0, 0, 50, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawString((String)temp_obj.current_temp + " C", 4, 0, 2);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.drawString((String)temp_obj.current_temp + " C", 0, 0, 1);
#endif
}
@@ -1247,11 +1260,11 @@ void MenuFunctions::updateStatusBar()
if (wifi_scan_obj.set_channel != wifi_scan_obj.old_channel) {
wifi_scan_obj.old_channel = wifi_scan_obj.set_channel;
display_obj.tft.fillRect(50, 0, 50, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawString("CH: " + (String)wifi_scan_obj.set_channel, 50, 0, 2);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.drawString("CH: " + (String)wifi_scan_obj.set_channel, TFT_WIDTH/4, 0, 1);
#endif
}
@@ -1261,11 +1274,11 @@ void MenuFunctions::updateStatusBar()
if (wifi_scan_obj.free_ram != wifi_scan_obj.old_free_ram) {
wifi_scan_obj.old_free_ram = wifi_scan_obj.free_ram;
display_obj.tft.fillRect(100, 0, 60, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawString((String)wifi_scan_obj.free_ram + "B", 100, 0, 2);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.drawString((String)wifi_scan_obj.free_ram + "B", TFT_WIDTH/1.75, 0, 1);
#endif
}
@@ -1274,12 +1287,16 @@ void MenuFunctions::updateStatusBar()
MenuFunctions::battery(false);
// Draw SD info
if (sd_obj.supported)
the_color = TFT_GREEN;
else
#ifndef WRITE_PACKETS_SERIAL
if (sd_obj.supported)
the_color = TFT_GREEN;
else
the_color = TFT_RED;
#else
the_color = TFT_RED;
#endif
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawXBitmap(170,
0,
menu_icons[STATUS_SD],
@@ -1289,7 +1306,7 @@ void MenuFunctions::updateStatusBar()
the_color);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.setTextColor(the_color, STATUSBAR_COLOR);
display_obj.tft.drawString("SD", TFT_WIDTH - 12, 0, 1);
#endif
@@ -1298,7 +1315,7 @@ void MenuFunctions::updateStatusBar()
void MenuFunctions::drawStatusBar()
{
display_obj.tft.setTextSize(1);
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.setFreeFont(NULL);
#endif
display_obj.tft.fillRect(0, 0, 240, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
@@ -1323,11 +1340,11 @@ void MenuFunctions::drawStatusBar()
display_obj.tft.setTextColor(the_color, STATUSBAR_COLOR);
temp_obj.old_temp = temp_obj.current_temp;
display_obj.tft.fillRect(0, 0, 50, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawString((String)temp_obj.current_temp + " C", 4, 0, 2);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.drawString((String)temp_obj.current_temp + " C", 0, 0, 1);
#endif
display_obj.tft.setTextColor(TFT_WHITE, STATUSBAR_COLOR);
@@ -1336,11 +1353,11 @@ void MenuFunctions::drawStatusBar()
// WiFi Channel Stuff
wifi_scan_obj.old_channel = wifi_scan_obj.set_channel;
display_obj.tft.fillRect(50, 0, 50, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawString("CH: " + (String)wifi_scan_obj.set_channel, 50, 0, 2);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.drawString("CH: " + (String)wifi_scan_obj.set_channel, TFT_WIDTH/4, 0, 1);
#endif
@@ -1348,11 +1365,11 @@ void MenuFunctions::drawStatusBar()
wifi_scan_obj.freeRAM();
wifi_scan_obj.old_free_ram = wifi_scan_obj.free_ram;
display_obj.tft.fillRect(100, 0, 60, STATUS_BAR_WIDTH, STATUSBAR_COLOR);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawString((String)wifi_scan_obj.free_ram + "B", 100, 0, 2);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.drawString((String)wifi_scan_obj.free_ram + "B", TFT_WIDTH/1.75, 0, 1);
#endif
@@ -1360,12 +1377,16 @@ void MenuFunctions::drawStatusBar()
MenuFunctions::battery2(true);
// Draw SD info
if (sd_obj.supported)
the_color = TFT_GREEN;
else
#ifndef WRITE_PACKETS_SERIAL
if (sd_obj.supported)
the_color = TFT_GREEN;
else
the_color = TFT_RED;
#else
the_color = TFT_RED;
#endif
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.drawXBitmap(170,
0,
menu_icons[STATUS_SD],
@@ -1375,7 +1396,7 @@ void MenuFunctions::drawStatusBar()
the_color);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.setTextColor(the_color, STATUSBAR_COLOR);
display_obj.tft.drawString("SD", TFT_WIDTH - 12, 0, 1);
#endif
@@ -1389,7 +1410,7 @@ void MenuFunctions::orientDisplay()
display_obj.tft.setCursor(0, 0);
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
#ifdef TFT_SHIELD
uint16_t calData[5] = { 275, 3494, 361, 3528, 4 }; // tft.setRotation(0); // Portrait with TFT Shield
//Serial.println("Using TFT Shield");
@@ -1456,7 +1477,7 @@ void MenuFunctions::RunSetup()
{
extern LinkedList<AccessPoint>* access_points;
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
this->initLVGL();
#endif
@@ -1585,7 +1606,7 @@ void MenuFunctions::RunSetup()
this->drawStatusBar();
wifi_scan_obj.StartScan(WIFI_SCAN_DEAUTH, TFT_RED);
});
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
addNodes(&wifiSnifferMenu, text_table1[46], TFT_VIOLET, NULL, EAPOL, [this]() {
wifi_scan_obj.StartScan(WIFI_SCAN_EAPOL, TFT_VIOLET);
});
@@ -1629,6 +1650,13 @@ void MenuFunctions::RunSetup()
this->drawStatusBar();
wifi_scan_obj.StartScan(WIFI_SCAN_STATION, TFT_WHITE);
});
#ifdef HAS_ILI9341
addNodes(&wifiSnifferMenu, "Signal Monitor", TFT_CYAN, NULL, PACKET_MONITOR, [this]() {
display_obj.clearScreen();
this->drawStatusBar();
wifi_scan_obj.StartScan(WIFI_SCAN_SIG_STREN, TFT_CYAN);
});
#endif
// Build WiFi attack menu
wifiAttackMenu.parentMenu = &wifiMenu; // Main Menu is second menu parent
@@ -1681,7 +1709,7 @@ void MenuFunctions::RunSetup()
addNodes(&wifiGeneralMenu, text09, TFT_LIGHTGREY, NULL, 0, [this]() {
changeMenu(wifiGeneralMenu.parentMenu);
});
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
addNodes(&wifiGeneralMenu, text_table1[55], TFT_DARKCYAN, NULL, JOIN_WIFI, [this](){
display_obj.clearScreen();
wifi_scan_obj.currentScanMode = LV_JOIN_WIFI;
@@ -1697,7 +1725,7 @@ void MenuFunctions::RunSetup()
changeMenu(&generateSSIDsMenu);
wifi_scan_obj.RunGenerateSSIDs();
});
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
addNodes(&wifiGeneralMenu, text_table1[1], TFT_NAVY, NULL, KEYBOARD_ICO, [this](){
display_obj.clearScreen();
//wifi_scan_obj.currentScanMode = LV_ADD_SSID;
@@ -1717,7 +1745,7 @@ void MenuFunctions::RunSetup()
changeMenu(&clearAPsMenu);
wifi_scan_obj.RunClearStations();
});
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
// Select APs on OG
addNodes(&wifiGeneralMenu, text_table1[56], TFT_NAVY, NULL, KEYBOARD_ICO, [this](){
display_obj.clearScreen();
@@ -1858,7 +1886,7 @@ void MenuFunctions::RunSetup()
addNodes(&badusbMenu, text_table1[36], TFT_PURPLE, NULL, TEST_BAD_USB_ICO, [this]() {
a32u4_obj.test();
});
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
addNodes(&badusbMenu, text_table1[37], TFT_RED, NULL, BAD_USB_ICO, [this](){
display_obj.clearScreen();
wifi_scan_obj.currentScanMode = LV_ADD_SSID;
@@ -1943,10 +1971,12 @@ void MenuFunctions::RunSetup()
changeMenu(&updateMenu);
web_obj.setupOTAupdate();
});
if (sd_obj.supported) addNodes(&whichUpdateMenu, text_table1[40], TFT_MAGENTA, NULL, SD_UPDATE, [this]() {
wifi_scan_obj.currentScanMode = OTA_UPDATE;
changeMenu(&confirmMenu);
});
#ifndef WRITE_PACKETS_SERIAL
if (sd_obj.supported) addNodes(&whichUpdateMenu, text_table1[40], TFT_MAGENTA, NULL, SD_UPDATE, [this]() {
wifi_scan_obj.currentScanMode = OTA_UPDATE;
changeMenu(&confirmMenu);
});
#endif
addNodes(&whichUpdateMenu, text_table1[41], TFT_RED, NULL, ESP_UPDATE_ICO, [this]() {
wifi_scan_obj.currentScanMode = ESP_UPDATE;
changeMenu(&espUpdateMenu);
@@ -2083,17 +2113,17 @@ void MenuFunctions::displayCurrentMenu()
if (current_menu->list != NULL)
{
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
display_obj.tft.setFreeFont(MENU_FONT);
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
display_obj.tft.setFreeFont(NULL);
display_obj.tft.setTextSize(1);
#endif
for (uint8_t i = 0; i < current_menu->list->size(); i++)
{
#ifndef MARAUDER_MINI
#ifdef HAS_ILI9341
if (!current_menu->list->get(i).selected)
display_obj.key[i].drawButton(false, current_menu->list->get(i).name);
else
@@ -2110,7 +2140,7 @@ void MenuFunctions::displayCurrentMenu()
#endif
#ifdef MARAUDER_MINI
#if defined(MARAUDER_MINI) || defined(MARAUDER_M5STICKC)
if ((current_menu->selected == i) || (current_menu->list->get(i).selected))
display_obj.key[i].drawButton(true, current_menu->list->get(i).name);
else

View File

@@ -16,7 +16,7 @@
#include "a32u4_interface.h"
#include "settings.h"
#ifdef MARAUDER_MINI
#ifdef HAS_BUTTONS
#include <SwitchLib.h>
extern SwitchLib u_btn;
extern SwitchLib d_btn;

View File

@@ -69,6 +69,28 @@ bool SDInterface::initSD() {
}
}
void SDInterface::listDir(String str_dir){
if (this->supported) {
File dir = SD.open(str_dir);
while (true)
{
File entry = dir.openNextFile();
if (! entry)
{
break;
}
//for (uint8_t i = 0; i < numTabs; i++)
//{
// Serial.print('\t');
//}
Serial.print(entry.name());
Serial.print("\t");
Serial.println(entry.size());
entry.close();
}
}
}
void SDInterface::addPacket(uint8_t* buf, uint32_t len) {
if ((this->supported) && (this->do_save)) {
buffer_obj.addPacket(buf, len);
@@ -76,8 +98,11 @@ void SDInterface::addPacket(uint8_t* buf, uint32_t len) {
}
void SDInterface::openCapture(String file_name) {
if (this->supported)
buffer_obj.open(&SD, file_name);
bool save_pcap = settings_obj.loadSetting<bool>("SavePCAP");
if ((this->supported) && (save_pcap)) {
buffer_obj.createPcapFile(&SD, file_name);
buffer_obj.open();
}
}
void SDInterface::runUpdate() {
@@ -97,7 +122,7 @@ void SDInterface::runUpdate() {
display_obj.tft.setTextColor(TFT_RED);
display_obj.tft.println(F(text_table2[0]));
#endif
Serial.println(F("Error, update.bin is not a file"));
Serial.println(F("Error, could not find \"update.bin\""));
#ifdef HAS_SCREEN
display_obj.tft.setTextColor(TFT_WHITE);
#endif
@@ -111,7 +136,7 @@ void SDInterface::runUpdate() {
#ifdef HAS_SCREEN
display_obj.tft.println(F(text_table2[1]));
#endif
Serial.println(F("Try to start update"));
Serial.println(F("Starting update over SD. Please wait..."));
this->performUpdate(updateBin, updateSize);
}
else {

View File

@@ -3,6 +3,7 @@
#include "configs.h"
#include "settings.h"
#include "SD.h"
#include "Buffer.h"
#ifdef HAS_SCREEN
@@ -11,6 +12,7 @@
#include <Update.h>
extern Buffer buffer_obj;
extern Settings settings_obj;
#ifdef HAS_SCREEN
extern Display display_obj;
#endif
@@ -37,6 +39,7 @@ class SDInterface {
bool initSD();
void listDir(String str_dir);
void addPacket(uint8_t* buf, uint32_t len);
void openCapture(String file_name = "");
void runUpdate();

File diff suppressed because it is too large Load Diff

View File

@@ -67,6 +67,8 @@
#define WIFI_SCAN_RAW_CAPTURE 25
#define WIFI_SCAN_STATION 26
#define WIFI_ATTACK_DEAUTH_TARGETED 27
#define WIFI_SCAN_ACTIVE_LIST_EAPOL 28
#define WIFI_SCAN_SIG_STREN 29
#define GRAPH_REFRESH 100
@@ -88,6 +90,7 @@ esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, b
struct ssid {
String essid;
int channel;
int bssid[6];
bool selected;
};
@@ -301,6 +304,7 @@ class WiFiScan
//lv_obj_t * scr = lv_cont_create(NULL, NULL);
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
wifi_config_t ap_config;
char* stringToChar(String string);
void RunSetup();
@@ -345,5 +349,6 @@ class WiFiScan
static void activeEapolSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
static void eapolSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
static void wifiSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type);
static void addPacket(wifi_promiscuous_pkt_t *snifferPacket, int len);
};
#endif

View File

@@ -3,7 +3,12 @@
#define configs_h
#define POLISH_POTATO
//Indicates that it must redirect the stream with the captured packets to serial (1)
//If not defined, will write packages to SD card if supported
//#define WRITE_PACKETS_SERIAL
//#define MARAUDER_M5STICKC
//#define MARAUDER_MINI
//#define MARAUDER_V4
//#define MARAUDER_V6
@@ -11,11 +16,19 @@
//#define GENERIC_ESP32
#define MARAUDER_FLIPPER
//#define ESP32_LDDB
//#define MARAUDER_DEV_BOARD_PRO
#define MARAUDER_VERSION "v0.10.0"
#define MARAUDER_VERSION "v0.10.7"
//// POWER MANAGEMENT
#ifdef MARAUDER_M5STICKC
#include "AXP192.h"
#endif
//// BUTTON DEFINITIONS
#ifdef MARAUDER_MINI
#define HAS_BUTTONS
#define L_BTN 13
#define C_BTN 34
#define U_BTN 36
@@ -23,12 +36,89 @@
#define D_BTN 35
#endif
#ifdef MARAUDER_M5STICKC
#define HAS_BUTTONS
#define L_BTN -1
#define C_BTN 37
#define U_BTN -1
#define R_BTN -1
#define D_BTN 39
#endif
#ifdef MARAUDER_V4
#endif
//// END BUTTON DEFINITIONS
//// DISPLAY DEFINITIONS
#ifdef MARAUDER_M5STICKC
//#define TFT_MISO 19
#define TFT_MOSI 15
#define TFT_SCLK 13
#define TFT_CS 5
#define TFT_DC 23
#define TFT_RST 18
#define TFT_BL 10
#define TOUCH_CS 10
//#define SD_CS 1
#define SCREEN_BUFFER
#define MAX_SCREEN_BUFFER 9
#define BANNER_TEXT_SIZE 1
#ifndef TFT_WIDTH
#define TFT_WIDTH 135
#endif
#ifndef TFT_HEIGHT
#define TFT_HEIGHT 240
#endif
#define CHAR_WIDTH 6
#define SCREEN_WIDTH TFT_HEIGHT // Originally 240
#define SCREEN_HEIGHT TFT_WIDTH // Originally 320
#define HEIGHT_1 TFT_WIDTH
#define WIDTH_1 TFT_WIDTH
#define STANDARD_FONT_CHAR_LIMIT (TFT_WIDTH/6) // number of characters on a single line with normal font
#define TEXT_HEIGHT (TFT_HEIGHT/10) // Height of text to be printed and scrolled
#define BOT_FIXED_AREA 0 // Number of lines in bottom fixed area (lines counted from bottom of screen)
#define TOP_FIXED_AREA 48 // Number of lines in top fixed area (lines counted from top of screen)
#define YMAX TFT_HEIGHT // Bottom of screen area
#define minimum(a,b) (((a) < (b)) ? (a) : (b))
//#define MENU_FONT NULL
#define MENU_FONT &FreeMono9pt7b // Winner
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 11
#define STATUS_BAR_WIDTH (TFT_HEIGHT/16)
#define LVGL_TICK_PERIOD 6
#define FRAME_X 100
#define FRAME_Y 64
#define FRAME_W 120
#define FRAME_H 50
// Red zone size
#define REDBUTTON_X FRAME_X
#define REDBUTTON_Y FRAME_Y
#define REDBUTTON_W (FRAME_W/2)
#define REDBUTTON_H FRAME_H
// Green zone size
#define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W)
#define GREENBUTTON_Y FRAME_Y
#define GREENBUTTON_W (FRAME_W/2)
#define GREENBUTTON_H FRAME_H
#define STATUSBAR_COLOR 0x4A49
#endif
#ifdef MARAUDER_V4
#define HAS_ILI9341
#define BANNER_TEXT_SIZE 2
#ifndef TFT_WIDTH
@@ -56,7 +146,7 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 10
#define BUTTON_ARRAY_LEN 11
#define STATUS_BAR_WIDTH 16
#define LVGL_TICK_PERIOD 6
@@ -83,6 +173,8 @@
#endif
#ifdef MARAUDER_V6
#define HAS_ILI9341
#define BANNER_TEXT_SIZE 2
#ifndef TFT_WIDTH
@@ -110,7 +202,7 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 10
#define BUTTON_ARRAY_LEN 11
#define STATUS_BAR_WIDTH 16
#define LVGL_TICK_PERIOD 6
@@ -137,6 +229,8 @@
#endif
#ifdef MARAUDER_KIT
#define HAS_ILI9341
#define BANNER_TEXT_SIZE 2
#ifndef TFT_WIDTH
@@ -165,7 +259,7 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 10
#define BUTTON_ARRAY_LEN 11
#define STATUS_BAR_WIDTH 16
#define LVGL_TICK_PERIOD 6
@@ -232,7 +326,7 @@
//#define MENU_FONT &FreeMonoBold9pt7b
//#define MENU_FONT &FreeSans9pt7b
//#define MENU_FONT &FreeSansBold9pt7b
#define BUTTON_ARRAY_LEN 10
#define BUTTON_ARRAY_LEN 11
#define STATUS_BAR_WIDTH (TFT_HEIGHT/16)
#define LVGL_TICK_PERIOD 6
@@ -332,6 +426,24 @@
#define ICON_H 22
#define BUTTON_PADDING 10
#endif
#ifdef MARAUDER_M5STICKC
#define BANNER_TIME 50
#define COMMAND_PREFIX "!"
// Keypad start position, key sizes and spacing
#define KEY_X (TFT_WIDTH/2) // Centre of key
#define KEY_Y (TFT_HEIGHT/5)
#define KEY_W TFT_HEIGHT // Width and height
#define KEY_H (TFT_HEIGHT/17)
#define KEY_SPACING_X 0 // X and Y gap
#define KEY_SPACING_Y 1
#define KEY_TEXTSIZE 1 // Font size multiplier
#define ICON_W 22
#define ICON_H 22
#define BUTTON_PADDING 10
#endif
//// END MENU DEFINITIONS
//// SD DEFINITIONS
@@ -351,6 +463,10 @@
#define SD_CS 4
#endif
#ifdef MARAUDER_M5STICKC
#define SD_CS 10
#endif
#ifdef MARAUDER_FLIPPER
#define SD_CS 10
#endif
@@ -358,14 +474,26 @@
#ifdef ESP32_LDDB
#define SD_CS 4
#endif
#ifdef MARAUDER_DEV_BOARD_PRO
#define SD_CS 4
#endif
//// END SD DEFINITIONS
//// SCREEN STUFF
#ifdef MARAUDER_DEV_BOARD_PRO
#define HAS_BT
#endif
#ifdef MARAUDER_MINI
#define HAS_SCREEN
#define HAS_BT
#endif
#ifdef MARAUDER_M5STICKC
#define HAS_SCREEN
#endif
#ifdef MARAUDER_V4
#define HAS_SCREEN
#define HAS_BT
@@ -408,9 +536,11 @@
#endif
//// END SCREEN STUFF
//// NEOPIXEL STUFF
#ifdef ESP32_LDDB
//// NEOPIXEL STUFF
#if defined(ESP32_LDDB)
#define PIN 17
#elif defined(MARAUDER_DEV_BOARD_PRO)
#define PIN 16
#else
#define PIN 25
#endif

View File

@@ -42,13 +42,25 @@ https://www.online-utility.org/image/convert/to/XBM
#include "a32u4_interface.h"
#endif
#ifdef MARAUDER_MINI
#ifdef HAS_BUTTONS
#include <SwitchLib.h>
SwitchLib u_btn = SwitchLib(U_BTN, 1000, true);
SwitchLib d_btn = SwitchLib(D_BTN, 1000, true);
SwitchLib l_btn = SwitchLib(L_BTN, 1000, true);
SwitchLib r_btn = SwitchLib(R_BTN, 1000, true);
SwitchLib c_btn = SwitchLib(C_BTN, 1000, true);
#if (U_BTN >= 0)
SwitchLib u_btn = SwitchLib(U_BTN, 1000, true);
#endif
#if (D_BTN >= 0)
SwitchLib d_btn = SwitchLib(D_BTN, 1000, true);
#endif
#if (L_BTN >= 0)
SwitchLib l_btn = SwitchLib(L_BTN, 1000, true);
#endif
#if (R_BTN >= 0)
SwitchLib r_btn = SwitchLib(R_BTN, 1000, true);
#endif
#if (C_BTN >= 0)
SwitchLib c_btn = SwitchLib(C_BTN, 1000, true);
#endif
#endif
WiFiScan wifi_scan_obj;
@@ -69,6 +81,10 @@ flipperLED flipper_led;
A32u4Interface a32u4_obj;
#endif
#ifdef MARAUDER_M5STICKC
AXP192 axp192_obj;
#endif
const String PROGMEM version_number = MARAUDER_VERSION;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(Pixels, PIN, NEO_GRB + NEO_KHZ800);
@@ -103,6 +119,10 @@ void backlightOff() {
void setup()
{
#ifdef MARAUDER_M5STICKC
axp192_obj.begin();
#endif
pinMode(FLASH_BUTTON, INPUT);
#ifdef HAS_SCREEN
@@ -129,8 +149,11 @@ void setup()
delay(10);
Serial.begin(115200);
//Serial.begin(115200);
#ifdef WRITE_PACKETS_SERIAL
// Starts a second serial channel to stream the captured packets
Serial1.begin(115200);
#endif
//Serial.println("\n\nHello, World!\n");
@@ -205,21 +228,23 @@ void setup()
display_obj.tft.println(F(text_table0[2]));
#endif
// Do some SD stuff
if(sd_obj.initSD()) {
//Serial.println(F("SD Card supported"));
#ifdef HAS_SCREEN
display_obj.tft.println(F(text_table0[3]));
#endif
}
else {
Serial.println(F("SD Card NOT Supported"));
#ifdef HAS_SCREEN
display_obj.tft.setTextColor(TFT_RED, TFT_BLACK);
display_obj.tft.println(F(text_table0[4]));
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
#endif
}
#ifdef WRITE_PACKETS_SERIAL
buffer_obj = Buffer();
#else
// Do some SD stuff
if(sd_obj.initSD()) {
#ifdef HAS_SCREEN
display_obj.tft.println(F(text_table0[3]));
#endif
} else {
Serial.println(F("SD Card NOT Supported"));
#ifdef HAS_SCREEN
display_obj.tft.setTextColor(TFT_RED, TFT_BLACK);
display_obj.tft.println(F(text_table0[4]));
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
#endif
}
#endif
battery_obj.RunSetup();
@@ -303,7 +328,13 @@ void loop()
display_obj.main(wifi_scan_obj.currentScanMode);
#endif
wifi_scan_obj.main(currentTime);
sd_obj.main();
#ifdef WRITE_PACKETS_SERIAL
buffer_obj.forceSaveSerial();
#else
sd_obj.main();
#endif
#ifndef MARAUDER_FLIPPER
battery_obj.main(currentTime);
temp_obj.main(currentTime);
@@ -314,13 +345,13 @@ void loop()
#ifdef HAS_SCREEN
menu_function_obj.main(currentTime);
#endif
#ifndef MARAUDER_FLIPPER
led_obj.main(currentTime);
#endif
//cli_obj.main(currentTime);
}
if (wifi_scan_obj.currentScanMode == OTA_UPDATE)
web_obj.main();
#ifndef MARAUDER_FLIPPER
led_obj.main(currentTime);
#endif
if (wifi_scan_obj.currentScanMode == OTA_UPDATE)
web_obj.main();
#ifdef HAS_SCREEN
delay(1);
#else

View File

@@ -177,12 +177,13 @@ PROGMEM const char text4_44[] = " AP Scan ";
PROGMEM const char text4_45[] = "Clearing Stations...";
PROGMEM const char text4_46[] = "Stations Cleared: ";
PROGMEM const char text4_47[] = "Targeted Deauth";
PROGMEM const char text4_48[] = "Using serial to transmit packets";
//Making tables
PROGMEM const char *text_table0[] = {text0_0,text0_1, text0_2, text0_3, text0_4, text0_5, text0_6, text0_7, text0_8};
PROGMEM const char *text_table1[] = {text1_0,text1_1,text1_2,text1_3,text1_4,text1_5,text1_6,text1_7,text1_8,text1_9,text1_10,text1_11,text1_12,text1_13,text1_14,text1_15,text1_16,text1_17,text1_18,text1_19,text1_20,text1_21,text1_22,text1_23,text1_24,text1_25,text1_26,text1_27,text1_28,text1_29,text1_30,text1_31,text1_32,text1_33,text1_34,text1_35,text1_36,text1_37,text1_38,text1_39,text1_40,text1_41,text1_42,text1_43,text1_44,text1_45,text1_46,text1_47,text1_48,text1_49,text1_50,text1_51,text1_52,text1_53,text1_54,text1_55,text1_56,text1_57,text1_58,text1_59,text1_60,text1_61,text1_62};
PROGMEM const char *text_table2[] = {text2_0,text2_1,text2_2,text2_3,text2_4,text2_5,text2_6,text2_7,text2_8,text2_9,text2_10,text2_11,text2_12,text2_13,text2_14};
PROGMEM const char *text_table3[] = {text3_0,text3_1,text3_2,text3_3,text3_4,text3_5};
PROGMEM const char *text_table4[] = {text4_0,text4_1,text4_2,text4_3,text4_4,text4_5,text4_6,text4_7,text1_54,text4_9,text4_10,text4_11,text4_12,text4_13,text4_14,text4_15,text4_16,text4_17,text4_18,text4_19,text4_20,text4_21,text4_22,text4_23,text4_24,text4_25,text4_26,text4_27,text4_28,text4_29,text4_30,text4_31,text4_32,text4_33,text4_34,text4_35,text4_36,text4_37,text4_38,text4_39,text4_40,text4_41,text4_42,text4_43,text4_44,text4_45,text4_46,text4_47};
PROGMEM const char *text_table4[] = {text4_0,text4_1,text4_2,text4_3,text4_4,text4_5,text4_6,text4_7,text1_54,text4_9,text4_10,text4_11,text4_12,text4_13,text4_14,text4_15,text4_16,text4_17,text4_18,text4_19,text4_20,text4_21,text4_22,text4_23,text4_24,text4_25,text4_26,text4_27,text4_28,text4_29,text4_30,text4_31,text4_32,text4_33,text4_34,text4_35,text4_36,text4_37,text4_38,text4_39,text4_40,text4_41,text4_42,text4_43,text4_44,text4_45,text4_46,text4_47, text4_48};
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 MiB

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="926.000000pt" height="825.000000pt" viewBox="0 0 926.000000 825.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,825.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M4030 7363 c-97 -15 -165 -64 -212 -153 -23 -45 -23 -49 -26 -430
l-3 -385 -788 -790 c-530 -531 -794 -803 -807 -830 -18 -38 -19 -71 -19 -635
0 -557 1 -598 19 -645 16 -45 161 -193 1395 -1428 1503 -1505 1431 -1438 1545
-1437 106 1 191 52 236 143 l30 60 0 243 0 243 919 918 c1014 1012 971 964
971 1088 -1 104 -58 194 -152 236 -52 24 -58 24 -434 27 l-380 3 -410 410
-409 409 391 0 390 0 52 26 c59 29 96 69 124 132 17 38 20 68 20 240 0 161 -3
204 -16 237 -13 30 -296 320 -1133 1157 -1172 1172 -1146 1148 -1243 1160 -19
2 -46 3 -60 1z m1298 -2423 c-574 -6 -571 -6 -640 -78 -57 -58 -80 -113 -80
-186 0 -122 -26 -92 740 -859 808 -809 744 -757 931 -757 l116 0 -736 -737
c-405 -406 -745 -753 -755 -771 l-19 -32 -1092 1092 -1093 1093 0 427 0 427
784 783 c675 673 788 791 810 838 23 49 26 68 26 170 l0 115 760 -760 760
-760 -512 -5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

61
pictures/marauder.svg Normal file
View File

@@ -0,0 +1,61 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="122.000000pt" viewBox="0 0 700.000000 122.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,122.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M167 1053 c-2 -5 -1 -33 2 -63 l6 -55 62 -3 62 -3 6 -52 c11 -97 45
-512 45 -549 l0 -38 -54 0 c-30 0 -57 -4 -60 -9 -3 -4 -3 -31 1 -60 l6 -51
188 0 c107 0 189 4 189 9 0 5 -13 163 -30 351 -16 188 -30 355 -30 371 0 29 0
29 60 29 40 0 62 -4 65 -12 4 -13 65 -697 65 -730 0 -16 13 -18 125 -18 l125
0 0 29 c0 15 -13 183 -30 372 -16 189 -30 347 -30 352 0 4 29 7 64 7 l64 0 6
-42 c3 -24 17 -185 31 -358 14 -173 28 -325 31 -337 4 -23 6 -23 190 -23 l185
0 -3 58 -3 57 -65 5 -65 5 -28 325 c-15 179 -32 337 -38 352 -6 15 -28 40 -48
55 l-36 28 -527 3 c-289 1 -528 -1 -531 -5z"/>
<path d="M4950 1036 c0 -7 3 -34 6 -59 l7 -46 61 -3 61 -3 3 -62 3 -63 -143 0
c-158 0 -170 -4 -206 -62 -20 -33 -20 -34 -1 -233 10 -110 18 -210 19 -223 0
-13 19 -43 44 -70 l45 -47 111 0 112 0 33 38 c18 20 35 37 39 37 3 0 6 -16 6
-35 l0 -35 190 0 190 0 0 29 c0 16 -3 42 -6 59 -6 30 -8 31 -68 34 l-61 3 -21
235 c-12 129 -27 299 -34 378 l-13 142 -188 0 c-153 0 -189 -3 -189 -14z m160
-378 c0 -7 7 -85 15 -173 8 -88 15 -168 15 -177 0 -15 -10 -18 -60 -18 -40 0
-62 4 -65 13 -4 11 -35 328 -35 356 0 7 23 11 65 11 45 0 65 -4 65 -12z"/>
<path d="M1550 773 c-17 -14 -35 -36 -40 -48 -8 -20 23 -428 35 -466 3 -8 23
-33 46 -55 l40 -39 111 0 110 0 33 39 32 39 7 -37 7 -36 189 0 190 0 0 23 c0
12 -3 39 -6 59 l-7 38 -59 0 c-38 0 -60 4 -63 13 -4 11 -45 452 -45 483 0 12
-48 14 -274 14 l-274 0 -32 -27z m349 -240 c7 -76 15 -162 18 -190 l6 -53 -67
0 c-36 0 -66 3 -66 8 0 4 -7 81 -15 172 -8 91 -15 173 -15 183 0 14 10 17 64
17 l63 0 12 -137z"/>
<path d="M2310 747 c0 -29 5 -58 12 -65 7 -7 36 -12 64 -12 l53 0 5 -42 c10
-78 26 -261 26 -300 l0 -38 -61 0 -62 0 7 -46 c3 -26 6 -53 6 -60 0 -12 46
-14 250 -14 l251 0 -3 58 -3 57 -62 3 c-35 2 -63 6 -63 10 0 4 -7 70 -15 147
-8 77 -15 159 -15 183 l0 42 119 0 c66 0 122 4 125 8 3 5 2 34 -1 65 l-6 57
-153 0 -152 0 -35 -40 c-19 -22 -37 -40 -40 -40 -3 0 -7 17 -9 38 l-3 37 -117
3 -118 3 0 -54z"/>
<path d="M3020 773 c-17 -14 -35 -36 -40 -48 -8 -20 23 -428 35 -466 3 -8 23
-33 46 -55 l40 -39 111 0 110 0 33 39 32 39 7 -37 7 -36 189 0 190 0 0 23 c0
12 -3 39 -6 59 l-7 38 -59 0 c-38 0 -60 4 -63 13 -4 11 -45 452 -45 483 0 12
-48 14 -274 14 l-274 0 -32 -27z m349 -240 c7 -76 15 -162 18 -190 l6 -53 -67
0 c-36 0 -66 3 -66 8 0 4 -7 81 -15 172 -8 91 -15 173 -15 183 0 14 10 17 64
17 l63 0 12 -137z"/>
<path d="M3780 751 c0 -77 4 -81 71 -81 69 0 61 23 84 -238 14 -158 18 -177
41 -207 37 -49 79 -65 168 -65 89 0 135 16 155 53 17 32 31 35 31 8 0 -51 -1
-51 202 -51 l190 0 -7 53 c-4 28 -9 55 -12 59 -2 5 -31 8 -64 8 -54 0 -59 2
-60 23 0 12 -10 126 -22 252 l-22 230 -119 3 c-66 1 -123 -1 -127 -5 -4 -4 1
-98 11 -208 11 -110 19 -221 20 -247 l0 -48 -60 0 c-72 0 -64 -23 -85 240 -8
107 -18 212 -21 233 l-6 37 -184 0 -184 0 0 -49z"/>
<path d="M5570 773 c-17 -14 -35 -36 -40 -48 -8 -20 23 -428 35 -466 3 -8 23
-33 46 -55 l40 -39 207 0 207 0 0 60 0 60 -127 3 -126 3 -7 77 c-3 42 -8 89
-10 103 -6 42 4 41 49 -7 l43 -44 146 0 c128 0 147 2 147 16 0 52 -23 263 -30
281 -5 12 -28 36 -51 53 l-42 30 -228 0 -227 0 -32 -27z m340 -132 c0 -16 3
-43 6 -60 l7 -31 -66 0 c-72 0 -77 5 -77 83 l0 37 65 0 c65 0 65 0 65 -29z"/>
<path d="M6190 747 c0 -29 5 -58 12 -65 7 -7 36 -12 64 -12 l53 0 5 -42 c10
-78 26 -261 26 -300 l0 -38 -61 0 -62 0 7 -46 c3 -26 6 -53 6 -60 0 -12 46
-14 250 -14 l251 0 -3 58 -3 57 -62 3 c-35 2 -63 6 -63 10 0 4 -7 70 -15 147
-8 77 -15 159 -15 183 l0 42 119 0 c66 0 122 4 125 8 3 5 2 34 -1 65 l-6 57
-153 0 -152 0 -35 -40 c-19 -22 -37 -40 -40 -40 -3 0 -7 17 -9 38 l-3 37 -117
3 -118 3 0 -54z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB