├── .gitignore ├── .vscode ├── arduino.json └── c_cpp_properties.json ├── LICENSE ├── README.md ├── build └── v1.0-beta-WarDriver.bin ├── img ├── DevKitty-Wardriver-Icons.xcf ├── DevKitty-icons.xbm ├── icons.xbm ├── splash.xbm └── splash.xcf ├── src ├── Dockerfile ├── Wardriver │ ├── Vars.h │ ├── Wardriver.ino │ └── src │ │ ├── Filesys.cpp │ │ ├── Filesys.h │ │ ├── Recon.h │ │ ├── Screen.cpp │ │ ├── Screen.h │ │ ├── Wardriver.cpp │ │ ├── Wardriver.h │ │ └── graphics.h ├── arduino-cli.yaml └── makefile └── v1.5_Cutie-Wardriver_ESP32-C3.bin /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/* 2 | -------------------------------------------------------------------------------- /.vscode/arduino.json: -------------------------------------------------------------------------------- 1 | { 2 | "board": "esp32:esp32:XIAO_ESP32C3", 3 | "port": "/dev/ttyACM0", 4 | "sketch": "src/Wardriver/Wardriver.ino", 5 | "configuration": "CDCOnBoot=default,PartitionScheme=default,CPUFreq=160,FlashMode=dio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none" 6 | } -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 4, 3 | "configurations": [ 4 | { 5 | "name": "Arduino", 6 | "compilerPath": "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/bin/riscv32-esp-elf-g++", 7 | "compilerArgs": [ 8 | "-march=rv32imc", 9 | "-ffunction-sections", 10 | "-fdata-sections", 11 | "-Wno-error=unused-function", 12 | "-Wno-error=unused-variable", 13 | "-Wno-error=deprecated-declarations", 14 | "-Wno-unused-parameter", 15 | "-Wno-sign-compare", 16 | "-Wno-error=format=", 17 | "-nostartfiles", 18 | "-Wno-format", 19 | "-freorder-blocks", 20 | "-Wwrite-strings", 21 | "-fstack-protector", 22 | "-fstrict-volatile-bitfields", 23 | "-Wno-error=unused-but-set-variable", 24 | "-fno-jump-tables", 25 | "-fno-tree-switch-conversion", 26 | "-std=gnu++11", 27 | "-fexceptions", 28 | "-fno-rtti" 29 | ], 30 | "intelliSenseMode": "gcc-x64", 31 | "includePath": [ 32 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/newlib/platform_include", 33 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/freertos/include", 34 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/freertos/include/esp_additions/freertos", 35 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/freertos/port/riscv/include", 36 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/freertos/include/esp_additions", 37 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_hw_support/include", 38 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_hw_support/include/soc", 39 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_hw_support/include/soc/esp32c3", 40 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_hw_support/port/esp32c3", 41 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_hw_support/port/esp32c3/private_include", 42 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/heap/include", 43 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/log/include", 44 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/lwip/include/apps", 45 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/lwip/include/apps/sntp", 46 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/lwip/lwip/src/include", 47 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/lwip/port/esp32/include", 48 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/lwip/port/esp32/include/arch", 49 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/soc/include", 50 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/soc/esp32c3", 51 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/soc/esp32c3/include", 52 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/hal/esp32c3/include", 53 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/hal/include", 54 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/hal/platform_port/include", 55 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_rom/include", 56 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_rom/include/esp32c3", 57 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_rom/esp32c3", 58 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_common/include", 59 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_system/include", 60 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_system/port/soc", 61 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_system/port/include/riscv", 62 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_system/port/public_compat", 63 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/riscv/include", 64 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/driver/include", 65 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/driver/esp32c3/include", 66 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_pm/include", 67 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_ringbuf/include", 68 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/efuse/include", 69 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/efuse/esp32c3/include", 70 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/vfs/include", 71 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_wifi/include", 72 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_event/include", 73 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_netif/include", 74 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_eth/include", 75 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/tcpip_adapter/include", 76 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_phy/include", 77 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_phy/esp32c3/include", 78 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_ipc/include", 79 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/app_trace/include", 80 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_timer/include", 81 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/mbedtls/port/include", 82 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/mbedtls/mbedtls/include", 83 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/mbedtls/esp_crt_bundle/include", 84 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/app_update/include", 85 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/spi_flash/include", 86 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bootloader_support/include", 87 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/nvs_flash/include", 88 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/pthread/include", 89 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_gdbstub/include", 90 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_gdbstub/riscv", 91 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_gdbstub/esp32c3", 92 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/espcoredump/include", 93 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/espcoredump/include/port/riscv", 94 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/wpa_supplicant/include", 95 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/wpa_supplicant/port/include", 96 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/wpa_supplicant/esp_supplicant/include", 97 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/ieee802154/include", 98 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/console", 99 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/asio/asio/asio/include", 100 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/asio/port/include", 101 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/common/osi/include", 102 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/include/esp32c3/include", 103 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/common/api/include/api", 104 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/common/btc/profile/esp/blufi/include", 105 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/common/btc/profile/esp/include", 106 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/host/bluedroid/api/include/api", 107 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_common/include", 108 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_common/tinycrypt/include", 109 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_core", 110 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_core/include", 111 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_core/storage", 112 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/btc/include", 113 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_models/common/include", 114 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_models/client/include", 115 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/mesh_models/server/include", 116 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/api/core/include", 117 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/api/models/include", 118 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/bt/esp_ble_mesh/api", 119 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/cbor/port/include", 120 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/unity/include", 121 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/unity/unity/src", 122 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/cmock/CMock/src", 123 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/coap/port/include", 124 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/coap/libcoap/include", 125 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/nghttp/port/include", 126 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/nghttp/nghttp2/lib/includes", 127 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-tls", 128 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-tls/esp-tls-crypto", 129 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_adc_cal/include", 130 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_hid/include", 131 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/tcp_transport/include", 132 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_http_client/include", 133 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_http_server/include", 134 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_https_ota/include", 135 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_https_server/include", 136 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_lcd/include", 137 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_lcd/interface", 138 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/protobuf-c/protobuf-c", 139 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/protocomm/include/common", 140 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/protocomm/include/security", 141 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/protocomm/include/transports", 142 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/mdns/include", 143 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_local_ctrl/include", 144 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/sdmmc/include", 145 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_serial_slave_link/include", 146 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_websocket_client/include", 147 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/expat/expat/expat/lib", 148 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/expat/port/include", 149 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/wear_levelling/include", 150 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/fatfs/diskio", 151 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/fatfs/vfs", 152 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/fatfs/src", 153 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/freemodbus/common/include", 154 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/idf_test/include", 155 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/idf_test/include/esp32c3", 156 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/jsmn/include", 157 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/json/cJSON", 158 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/libsodium/libsodium/src/libsodium/include", 159 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/libsodium/port_include", 160 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/mqtt/esp-mqtt/include", 161 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/openssl/include", 162 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/spiffs/include", 163 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/wifi_provisioning/include", 164 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/button/button/include", 165 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/rmaker_common/include", 166 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/json_parser/upstream/include", 167 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/json_parser/upstream", 168 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/json_generator/upstream", 169 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_schedule/include", 170 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_rainmaker/include", 171 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/qrcode/include", 172 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/ws2812_led", 173 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/dotprod/include", 174 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/support/include", 175 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/windows/include", 176 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/windows/hann/include", 177 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/windows/blackman/include", 178 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/windows/blackman_harris/include", 179 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/windows/blackman_nuttall/include", 180 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/windows/nuttall/include", 181 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/windows/flat_top/include", 182 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/iir/include", 183 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/fir/include", 184 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/math/include", 185 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/math/add/include", 186 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/math/sub/include", 187 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/math/mul/include", 188 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/math/addc/include", 189 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/math/mulc/include", 190 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/math/sqrt/include", 191 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/matrix/include", 192 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/fft/include", 193 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/dct/include", 194 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/conv/include", 195 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/common/include", 196 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/kalman/ekf/include", 197 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dsp/modules/kalman/ekf_imu13states/include", 198 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_littlefs/src", 199 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp_littlefs/include", 200 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include", 201 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/tool", 202 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/typedef", 203 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/image", 204 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/math", 205 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/nn", 206 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/layer", 207 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/detect", 208 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp-dl/include/model_zoo", 209 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp32-camera/driver/include", 210 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/esp32-camera/conversions/include", 211 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/include/fb_gfx/include", 212 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/tools/sdk/esp32c3/dio_qspi/include", 213 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/cores/esp32", 214 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/variants/XIAO_ESP32C3", 215 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/libraries/SD/src", 216 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/libraries/FS/src", 217 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/libraries/SPI/src", 218 | "/home/alex/Arduino/libraries/ESP8266_and_ESP32_OLED_driver_for_SSD1306_displays/src", 219 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/libraries/Wire/src", 220 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/libraries/WiFi/src", 221 | "/home/alex/Arduino/libraries/Adafruit_MAX1704X", 222 | "/home/alex/Arduino/libraries/Adafruit_BusIO", 223 | "/home/alex/Arduino/libraries/TinyGPSPlus-master/src", 224 | "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/riscv32-esp-elf/include/c++/8.4.0", 225 | "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/riscv32-esp-elf/include/c++/8.4.0/riscv32-esp-elf/rv32imc/ilp32", 226 | "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/riscv32-esp-elf/include/c++/8.4.0/backward", 227 | "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/lib/gcc/riscv32-esp-elf/8.4.0/include", 228 | "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/lib/gcc/riscv32-esp-elf/8.4.0/include-fixed", 229 | "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/riscv32-esp-elf/sys-include", 230 | "/home/alex/.arduino15/packages/esp32/tools/riscv32-esp-elf-gcc/gcc8_4_0-esp-2021r2-patch3/riscv32-esp-elf/include" 231 | ], 232 | "forcedInclude": [ 233 | "/home/alex/.arduino15/packages/esp32/hardware/esp32/2.0.4/cores/esp32/Arduino.h" 234 | ], 235 | "cStandard": "c11", 236 | "cppStandard": "c++11", 237 | "defines": [ 238 | "HAVE_CONFIG_H", 239 | "MBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"", 240 | "UNITY_INCLUDE_CONFIG_H", 241 | "WITH_POSIX", 242 | "_GNU_SOURCE", 243 | "IDF_VER=\"v4.4.1-472-gc9140caf8c\"", 244 | "ESP_PLATFORM", 245 | "_POSIX_READER_WRITER_LOCKS", 246 | "F_CPU=160000000L", 247 | "ARDUINO=10607", 248 | "ARDUINO_XIAO_ESP32C3", 249 | "ARDUINO_ARCH_ESP32", 250 | "ARDUINO_BOARD=\"XIAO_ESP32C3\"", 251 | "ARDUINO_VARIANT=\"XIAO_ESP32C3\"", 252 | "ARDUINO_PARTITION_default", 253 | "ESP32", 254 | "CORE_DEBUG_LEVEL=0", 255 | "ARDUINO_USB_MODE=1", 256 | "ARDUINO_USB_CDC_ON_BOOT=1", 257 | "__riscv=1", 258 | "__DBL_MIN_EXP__=(-1021)", 259 | "__FLT32X_MAX_EXP__=1024", 260 | "__cpp_attributes=200809", 261 | "__UINT_LEAST16_MAX__=0xffff", 262 | "__ATOMIC_ACQUIRE=2", 263 | "__FLT128_MAX_10_EXP__=4932", 264 | "__FLT_MIN__=1.17549435082228750796873653722224568e-38F", 265 | "__GCC_IEC_559_COMPLEX=0", 266 | "__cpp_aggregate_nsdmi=201304", 267 | "__UINT_LEAST8_TYPE__=unsigned char", 268 | "__INTMAX_C(c)=c ## LL", 269 | "__CHAR_BIT__=8", 270 | "__UINT8_MAX__=0xff", 271 | "__WINT_MAX__=0xffffffffU", 272 | "__FLT32_MIN_EXP__=(-125)", 273 | "__cpp_static_assert=200410", 274 | "__ORDER_LITTLE_ENDIAN__=1234", 275 | "__SIZE_MAX__=0xffffffffU", 276 | "__WCHAR_MAX__=0x7fffffff", 277 | "__DBL_DENORM_MIN__=double(4.94065645841246544176568792868221372e-324L)", 278 | "__GCC_ATOMIC_CHAR_LOCK_FREE=1", 279 | "__riscv_cmodel_medlow=1", 280 | "__riscv_float_abi_soft=1", 281 | "__GCC_IEC_559=0", 282 | "__FLT32X_DECIMAL_DIG__=17", 283 | "__FLT_EVAL_METHOD__=0", 284 | "__cpp_binary_literals=201304", 285 | "__FLT64_DECIMAL_DIG__=17", 286 | "__GCC_ATOMIC_CHAR32_T_LOCK_FREE=1", 287 | "__cpp_variadic_templates=200704", 288 | "__UINT_FAST64_MAX__=0xffffffffffffffffULL", 289 | "__SIG_ATOMIC_TYPE__=int", 290 | "__DBL_MIN_10_EXP__=(-307)", 291 | "__FINITE_MATH_ONLY__=0", 292 | "__cpp_variable_templates=201304", 293 | "__GNUC_PATCHLEVEL__=0", 294 | "__FLT32_HAS_DENORM__=1", 295 | "__UINT_FAST8_MAX__=0xffffffffU", 296 | "__has_include(STR)=__has_include__(STR)", 297 | "__DEC64_MAX_EXP__=385", 298 | "__INT8_C(c)=c", 299 | "__INT_LEAST8_WIDTH__=8", 300 | "__UINT_LEAST64_MAX__=0xffffffffffffffffULL", 301 | "__SHRT_MAX__=0x7fff", 302 | "__LDBL_MAX__=1.18973149535723176508575932662800702e+4932L", 303 | "__FLT64X_MAX_10_EXP__=4932", 304 | "__UINT_LEAST8_MAX__=0xff", 305 | "__GCC_ATOMIC_BOOL_LOCK_FREE=1", 306 | "__FLT128_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F128", 307 | "__UINTMAX_TYPE__=long long unsigned int", 308 | "__DEC32_EPSILON__=1E-6DF", 309 | "__FLT_EVAL_METHOD_TS_18661_3__=0", 310 | "__CHAR_UNSIGNED__=1", 311 | "__UINT32_MAX__=0xffffffffUL", 312 | "__GXX_EXPERIMENTAL_CXX0X__=1", 313 | "__LDBL_MAX_EXP__=16384", 314 | "__FLT128_MIN_EXP__=(-16381)", 315 | "__WINT_MIN__=0U", 316 | "__FLT128_MIN_10_EXP__=(-4931)", 317 | "__INT_LEAST16_WIDTH__=16", 318 | "__SCHAR_MAX__=0x7f", 319 | "__FLT128_MANT_DIG__=113", 320 | "__WCHAR_MIN__=(-__WCHAR_MAX__ - 1)", 321 | "__INT64_C(c)=c ## LL", 322 | "__DBL_DIG__=15", 323 | "__GCC_ATOMIC_POINTER_LOCK_FREE=1", 324 | "__FLT64X_MANT_DIG__=113", 325 | "__SIZEOF_INT__=4", 326 | "__SIZEOF_POINTER__=4", 327 | "__GCC_ATOMIC_CHAR16_T_LOCK_FREE=1", 328 | "__USER_LABEL_PREFIX__", 329 | "__FLT64X_EPSILON__=1.92592994438723585305597794258492732e-34F64x", 330 | "__STDC_HOSTED__=1", 331 | "__LDBL_HAS_INFINITY__=1", 332 | "__FLT32_DIG__=6", 333 | "__FLT_EPSILON__=1.19209289550781250000000000000000000e-7F", 334 | "__GXX_WEAK__=1", 335 | "__SHRT_WIDTH__=16", 336 | "__LDBL_MIN__=3.36210314311209350626267781732175260e-4932L", 337 | "__DEC32_MAX__=9.999999E96DF", 338 | "__cpp_threadsafe_static_init=200806", 339 | "__FLT64X_DENORM_MIN__=6.47517511943802511092443895822764655e-4966F64x", 340 | "__FLT32X_HAS_INFINITY__=1", 341 | "__INT32_MAX__=0x7fffffffL", 342 | "__INT_WIDTH__=32", 343 | "__SIZEOF_LONG__=4", 344 | "__UINT16_C(c)=c", 345 | "__PTRDIFF_WIDTH__=32", 346 | "__DECIMAL_DIG__=36", 347 | "__FLT64_EPSILON__=2.22044604925031308084726333618164062e-16F64", 348 | "__INTMAX_WIDTH__=64", 349 | "__FLT64_MIN_EXP__=(-1021)", 350 | "__has_include_next(STR)=__has_include_next__(STR)", 351 | "__FLT64X_MIN_10_EXP__=(-4931)", 352 | "__LDBL_HAS_QUIET_NAN__=1", 353 | "__FLT64_MANT_DIG__=53", 354 | "__GNUC__=8", 355 | "__GXX_RTTI=1", 356 | "__cpp_delegating_constructors=200604", 357 | "__FLT_HAS_DENORM__=1", 358 | "__SIZEOF_LONG_DOUBLE__=16", 359 | "__BIGGEST_ALIGNMENT__=16", 360 | "__STDC_UTF_16__=1", 361 | "__FLT64_MAX_10_EXP__=308", 362 | "__FLT32_HAS_INFINITY__=1", 363 | "__DBL_MAX__=double(1.79769313486231570814527423731704357e+308L)", 364 | "__cpp_raw_strings=200710", 365 | "__INT_FAST32_MAX__=0x7fffffff", 366 | "__DBL_HAS_INFINITY__=1", 367 | "__DEC32_MIN_EXP__=(-94)", 368 | "__INTPTR_WIDTH__=32", 369 | "__FLT32X_HAS_DENORM__=1", 370 | "__INT_FAST16_TYPE__=int", 371 | "__LDBL_HAS_DENORM__=1", 372 | "__cplusplus=201402L", 373 | "__cpp_ref_qualifiers=200710", 374 | "__DEC128_MAX__=9.999999999999999999999999999999999E6144DL", 375 | "__INT_LEAST32_MAX__=0x7fffffffL", 376 | "__DEC32_MIN__=1E-95DF", 377 | "__DEPRECATED=1", 378 | "__cpp_rvalue_references=200610", 379 | "__DBL_MAX_EXP__=1024", 380 | "__WCHAR_WIDTH__=32", 381 | "__FLT32_MAX__=3.40282346638528859811704183484516925e+38F32", 382 | "__DEC128_EPSILON__=1E-33DL", 383 | "__PTRDIFF_MAX__=0x7fffffff", 384 | "__FLT32_HAS_QUIET_NAN__=1", 385 | "__GNUG__=8", 386 | "__LONG_LONG_MAX__=0x7fffffffffffffffLL", 387 | "__SIZEOF_SIZE_T__=4", 388 | "__cpp_rvalue_reference=200610", 389 | "__cpp_nsdmi=200809", 390 | "__FLT64X_MIN_EXP__=(-16381)", 391 | "__SIZEOF_WINT_T__=4", 392 | "__LONG_LONG_WIDTH__=64", 393 | "__cpp_initializer_lists=200806", 394 | "__FLT32_MAX_EXP__=128", 395 | "__cpp_hex_float=201603", 396 | "__GCC_HAVE_DWARF2_CFI_ASM=1", 397 | "__GXX_ABI_VERSION=1013", 398 | "__FLT128_HAS_INFINITY__=1", 399 | "__FLT_MIN_EXP__=(-125)", 400 | "__cpp_lambdas=200907", 401 | "__FLT64X_HAS_QUIET_NAN__=1", 402 | "__INT_FAST64_TYPE__=long long int", 403 | "__riscv_compressed=1", 404 | "__FLT64_DENORM_MIN__=4.94065645841246544176568792868221372e-324F64", 405 | "__DBL_MIN__=double(2.22507385850720138309023271733240406e-308L)", 406 | "__FLT32X_EPSILON__=2.22044604925031308084726333618164062e-16F32x", 407 | "__FLT64_MIN_10_EXP__=(-307)", 408 | "__riscv_mul=1", 409 | "__FLT64X_DECIMAL_DIG__=36", 410 | "__DEC128_MIN__=1E-6143DL", 411 | "__REGISTER_PREFIX__", 412 | "__UINT16_MAX__=0xffff", 413 | "__DBL_HAS_DENORM__=1", 414 | "__FLT32_MIN__=1.17549435082228750796873653722224568e-38F32", 415 | "__UINT8_TYPE__=unsigned char", 416 | "__NO_INLINE__=1", 417 | "__FLT_MANT_DIG__=24", 418 | "__LDBL_DECIMAL_DIG__=36", 419 | "__VERSION__=\"8.4.0\"", 420 | "__UINT64_C(c)=c ## ULL", 421 | "__cpp_unicode_characters=200704", 422 | "__cpp_decltype_auto=201304", 423 | "__GCC_ATOMIC_INT_LOCK_FREE=1", 424 | "__FLT128_MAX_EXP__=16384", 425 | "__FLT32_MANT_DIG__=24", 426 | "__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__", 427 | "__FLT128_HAS_DENORM__=1", 428 | "__FLT128_DIG__=33", 429 | "__SCHAR_WIDTH__=8", 430 | "__INT32_C(c)=c ## L", 431 | "__DEC64_EPSILON__=1E-15DD", 432 | "__ORDER_PDP_ENDIAN__=3412", 433 | "__DEC128_MIN_EXP__=(-6142)", 434 | "__FLT32_MAX_10_EXP__=38", 435 | "__riscv_muldiv=1", 436 | "__INT_FAST32_TYPE__=int", 437 | "__UINT_LEAST16_TYPE__=short unsigned int", 438 | "__FLT64X_HAS_INFINITY__=1", 439 | "__INT16_MAX__=0x7fff", 440 | "__cpp_rtti=199711", 441 | "__SIZE_TYPE__=unsigned int", 442 | "__UINT64_MAX__=0xffffffffffffffffULL", 443 | "__riscv_xlen=32", 444 | "__FLT64X_DIG__=33", 445 | "__INT8_TYPE__=signed char", 446 | "__cpp_digit_separators=201309", 447 | "__ELF__=1", 448 | "__FLT_RADIX__=2", 449 | "__INT_LEAST16_TYPE__=short int", 450 | "__LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L", 451 | "__UINTMAX_C(c)=c ## ULL", 452 | "__SIG_ATOMIC_MAX__=0x7fffffff", 453 | "__GCC_ATOMIC_WCHAR_T_LOCK_FREE=1", 454 | "__SIZEOF_PTRDIFF_T__=4", 455 | "__FLT32X_MANT_DIG__=53", 456 | "__FLT32X_MIN_EXP__=(-1021)", 457 | "__DEC32_SUBNORMAL_MIN__=0.000001E-95DF", 458 | "__INT_FAST16_MAX__=0x7fffffff", 459 | "__FLT64_DIG__=15", 460 | "__UINT_FAST32_MAX__=0xffffffffU", 461 | "__UINT_LEAST64_TYPE__=long long unsigned int", 462 | "__FLT_HAS_QUIET_NAN__=1", 463 | "__FLT_MAX_10_EXP__=38", 464 | "__LONG_MAX__=0x7fffffffL", 465 | "__FLT64X_HAS_DENORM__=1", 466 | "__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL", 467 | "__FLT_HAS_INFINITY__=1", 468 | "__cpp_unicode_literals=200710", 469 | "__UINT_FAST16_TYPE__=unsigned int", 470 | "__DEC64_MAX__=9.999999999999999E384DD", 471 | "__INT_FAST32_WIDTH__=32", 472 | "__CHAR16_TYPE__=short unsigned int", 473 | "__PRAGMA_REDEFINE_EXTNAME=1", 474 | "__SIZE_WIDTH__=32", 475 | "__INT_LEAST16_MAX__=0x7fff", 476 | "__DEC64_MANT_DIG__=16", 477 | "__INT64_MAX__=0x7fffffffffffffffLL", 478 | "__UINT_LEAST32_MAX__=0xffffffffUL", 479 | "__FLT32_DENORM_MIN__=1.40129846432481707092372958328991613e-45F32", 480 | "__GCC_ATOMIC_LONG_LOCK_FREE=1", 481 | "__SIG_ATOMIC_WIDTH__=32", 482 | "__INT_LEAST64_TYPE__=long long int", 483 | "__INT16_TYPE__=short int", 484 | "__INT_LEAST8_TYPE__=signed char", 485 | "__DEC32_MAX_EXP__=97", 486 | "__INT_FAST8_MAX__=0x7fffffff", 487 | "__FLT128_MAX__=1.18973149535723176508575932662800702e+4932F128", 488 | "__INTPTR_MAX__=0x7fffffff", 489 | "__cpp_sized_deallocation=201309", 490 | "__cpp_range_based_for=200907", 491 | "__FLT64_HAS_QUIET_NAN__=1", 492 | "__FLT32_MIN_10_EXP__=(-37)", 493 | "__EXCEPTIONS=1", 494 | "__LDBL_MANT_DIG__=113", 495 | "__DBL_HAS_QUIET_NAN__=1", 496 | "__FLT64_HAS_INFINITY__=1", 497 | "__FLT64X_MAX__=1.18973149535723176508575932662800702e+4932F64x", 498 | "__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)", 499 | "__cpp_return_type_deduction=201304", 500 | "__INTPTR_TYPE__=int", 501 | "__UINT16_TYPE__=short unsigned int", 502 | "__WCHAR_TYPE__=int", 503 | "__SIZEOF_FLOAT__=4", 504 | "__UINTPTR_MAX__=0xffffffffU", 505 | "__INT_FAST64_WIDTH__=64", 506 | "__DEC64_MIN_EXP__=(-382)", 507 | "__cpp_decltype=200707", 508 | "__FLT32_DECIMAL_DIG__=9", 509 | "__INT_FAST64_MAX__=0x7fffffffffffffffLL", 510 | "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1", 511 | "__FLT_DIG__=6", 512 | "__FLT64X_MAX_EXP__=16384", 513 | "__UINT_FAST64_TYPE__=long long unsigned int", 514 | "__INT_MAX__=0x7fffffff", 515 | "__INT64_TYPE__=long long int", 516 | "__FLT_MAX_EXP__=128", 517 | "__DBL_MANT_DIG__=53", 518 | "__cpp_inheriting_constructors=201511", 519 | "__INT_LEAST64_MAX__=0x7fffffffffffffffLL", 520 | "__DEC64_MIN__=1E-383DD", 521 | "__WINT_TYPE__=unsigned int", 522 | "__UINT_LEAST32_TYPE__=long unsigned int", 523 | "__SIZEOF_SHORT__=2", 524 | "__LDBL_MIN_EXP__=(-16381)", 525 | "__FLT64_MAX__=1.79769313486231570814527423731704357e+308F64", 526 | "__WINT_WIDTH__=32", 527 | "__INT_LEAST8_MAX__=0x7f", 528 | "__FLT32X_MAX_10_EXP__=308", 529 | "__LDBL_MAX_10_EXP__=4932", 530 | "__ATOMIC_RELAXED=0", 531 | "__DBL_EPSILON__=double(2.22044604925031308084726333618164062e-16L)", 532 | "__FLT128_MIN__=3.36210314311209350626267781732175260e-4932F128", 533 | "__UINT8_C(c)=c", 534 | "__FLT64_MAX_EXP__=1024", 535 | "__INT_LEAST32_TYPE__=long int", 536 | "__SIZEOF_WCHAR_T__=4", 537 | "__FLT128_HAS_QUIET_NAN__=1", 538 | "__INT_FAST8_TYPE__=int", 539 | "__FLT64X_MIN__=3.36210314311209350626267781732175260e-4932F64x", 540 | "__GNUC_STDC_INLINE__=1", 541 | "__FLT64_HAS_DENORM__=1", 542 | "__FLT32_EPSILON__=1.19209289550781250000000000000000000e-7F32", 543 | "__DBL_DECIMAL_DIG__=17", 544 | "__STDC_UTF_32__=1", 545 | "__INT_FAST8_WIDTH__=32", 546 | "__DEC_EVAL_METHOD__=2", 547 | "__FLT32X_MAX__=1.79769313486231570814527423731704357e+308F32x", 548 | "__ORDER_BIG_ENDIAN__=4321", 549 | "__cpp_runtime_arrays=198712", 550 | "__UINT64_TYPE__=long long unsigned int", 551 | "__UINT32_C(c)=c ## UL", 552 | "__INTMAX_MAX__=0x7fffffffffffffffLL", 553 | "__cpp_alias_templates=200704", 554 | "__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__", 555 | "__FLT_DENORM_MIN__=1.40129846432481707092372958328991613e-45F", 556 | "__INT8_MAX__=0x7f", 557 | "__LONG_WIDTH__=32", 558 | "__UINT_FAST32_TYPE__=unsigned int", 559 | "__CHAR32_TYPE__=long unsigned int", 560 | "__FLT_MAX__=3.40282346638528859811704183484516925e+38F", 561 | "__cpp_constexpr=201304", 562 | "__INT32_TYPE__=long int", 563 | "__SIZEOF_DOUBLE__=8", 564 | "__cpp_exceptions=199711", 565 | "__FLT_MIN_10_EXP__=(-37)", 566 | "__FLT64_MIN__=2.22507385850720138309023271733240406e-308F64", 567 | "__INT_LEAST32_WIDTH__=32", 568 | "__INTMAX_TYPE__=long long int", 569 | "__DEC128_MAX_EXP__=6145", 570 | "__FLT32X_HAS_QUIET_NAN__=1", 571 | "__ATOMIC_CONSUME=1", 572 | "__GNUC_MINOR__=4", 573 | "__INT_FAST16_WIDTH__=32", 574 | "__UINTMAX_MAX__=0xffffffffffffffffULL", 575 | "__DEC32_MANT_DIG__=7", 576 | "__FLT32X_DENORM_MIN__=4.94065645841246544176568792868221372e-324F32x", 577 | "__DBL_MAX_10_EXP__=308", 578 | "__LDBL_DENORM_MIN__=6.47517511943802511092443895822764655e-4966L", 579 | "__INT16_C(c)=c", 580 | "__cpp_generic_lambdas=201304", 581 | "__STDC__=1", 582 | "__FLT32X_DIG__=15", 583 | "__PTRDIFF_TYPE__=int", 584 | "__riscv_div=1", 585 | "__ATOMIC_SEQ_CST=5", 586 | "__UINT32_TYPE__=long unsigned int", 587 | "__FLT32X_MIN_10_EXP__=(-307)", 588 | "__UINTPTR_TYPE__=unsigned int", 589 | "__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD", 590 | "__DEC128_MANT_DIG__=34", 591 | "__LDBL_MIN_10_EXP__=(-4931)", 592 | "__FLT128_EPSILON__=1.92592994438723585305597794258492732e-34F128", 593 | "__SIZEOF_LONG_LONG__=8", 594 | "__cpp_user_defined_literals=200809", 595 | "__FLT128_DECIMAL_DIG__=36", 596 | "__GCC_ATOMIC_LLONG_LOCK_FREE=1", 597 | "__FLT32X_MIN__=2.22507385850720138309023271733240406e-308F32x", 598 | "__LDBL_DIG__=33", 599 | "__FLT_DECIMAL_DIG__=9", 600 | "__UINT_FAST16_MAX__=0xffffffffU", 601 | "__GCC_ATOMIC_SHORT_LOCK_FREE=1", 602 | "__INT_LEAST64_WIDTH__=64", 603 | "__UINT_FAST8_TYPE__=unsigned int", 604 | "__cpp_init_captures=201304", 605 | "__ATOMIC_ACQ_REL=4", 606 | "__ATOMIC_RELEASE=3", 607 | "USBCON" 608 | ] 609 | } 610 | ] 611 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 LyndLabs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ESP8266 / ESP32 Wardriver Firmware 2 | Basic Wardriving for Espressif! Compatible with [DevKitty](https://devkitty.io) and [Cutie Wardriver](https://lyndlabs.io) kits by LyndLabs. More info + docs coming soon! 3 | 4 | ## Components 5 | - ESP8266 / ESP32 6 | - SH1106 OLED 7 | -------------------------------------------------------------------------------- /build/v1.0-beta-WarDriver.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevKitty-io/Wardriver/9466f44b9f4e864ff52a60b54b98b4542f02d8c6/build/v1.0-beta-WarDriver.bin -------------------------------------------------------------------------------- /img/DevKitty-Wardriver-Icons.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevKitty-io/Wardriver/9466f44b9f4e864ff52a60b54b98b4542f02d8c6/img/DevKitty-Wardriver-Icons.xcf -------------------------------------------------------------------------------- /img/DevKitty-icons.xbm: -------------------------------------------------------------------------------- 1 | #define DevKitty_icons_width 128 2 | #define DevKitty_icons_height 64 3 | static unsigned char DevKitty_icons_bits[] = { 4 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 10 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 11 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 12 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 13 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 19 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x7e, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 26 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x40, 0x04, 0x00, 0x00, 27 | 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x7f, 0x00, 28 | 0x5e, 0xf4, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 29 | 0x0f, 0x00, 0xf0, 0x00, 0x21, 0x08, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 30 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xf4, 0x00, 0x00, 31 | 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 32 | 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x20, 33 | 0x81, 0xff, 0x81, 0x03, 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 34 | 0x00, 0x00, 0x00, 0x20, 0xe2, 0xff, 0x87, 0x04, 0x80, 0x03, 0x00, 0x00, 35 | 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x30, 0x72, 0x00, 0x4e, 0x04, 36 | 0x40, 0x05, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x10, 37 | 0x02, 0x00, 0x40, 0x0c, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xfb, 0x00, 38 | 0x00, 0x00, 0x00, 0x10, 0x06, 0x3c, 0x20, 0x08, 0x20, 0x09, 0x00, 0x00, 39 | 0x00, 0xe0, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x90, 0x04, 0x3c, 0x20, 0x09, 40 | 0x00, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x90, 41 | 0x05, 0x00, 0x10, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 42 | 0x00, 0x00, 0x00, 0x90, 0x09, 0x00, 0x90, 0x13, 0x00, 0x00, 0x00, 0x00, 43 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x09, 0xf8, 0x9b, 0x13, 44 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 45 | 0xf8, 0x07, 0x8c, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 46 | 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 47 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 49 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 50 | 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 51 | 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x20, 52 | 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 53 | 0x00, 0x00, 0x00, 0x20, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 54 | 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x60, 0x18, 0x60, 0x00, 0x00, 55 | 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0xc0, 56 | 0x08, 0x40, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 57 | 0x30, 0x00, 0x06, 0xc0, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x20, 0x0c, 0x01, 58 | 0x00, 0x00, 0x00, 0x02, 0x30, 0x00, 0x06, 0x40, 0x60, 0x18, 0x00, 0x00, 59 | 0x00, 0x20, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 60 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0xe0, 0x03, 61 | 0x00, 0x1c, 0x00, 0xc0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 62 | 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 63 | 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x49, 0x00, 0x80, 64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x07, 65 | 0x00, 0x3e, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 66 | 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 68 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 70 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 71 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 76 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 78 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 79 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 80 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 82 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 83 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 85 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 86 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 87 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 88 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 89 | 0x00, 0x00, 0x00, 0x00 }; 90 | -------------------------------------------------------------------------------- /img/icons.xbm: -------------------------------------------------------------------------------- 1 | #define icons_width 128 2 | #define icons_height 64 3 | static unsigned char icons_bits[] = { 4 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 10 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 11 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 12 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 13 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 19 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 26 | 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 27 | 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 28 | 0x5e, 0xf4, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x82, 29 | 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 30 | 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xf4, 0x00, 0x00, 31 | 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 32 | 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0xba, 33 | 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 34 | 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 35 | 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 36 | 0x40, 0x05, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x82, 37 | 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xfb, 0x00, 38 | 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 39 | 0x00, 0xe0, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 40 | 0x00, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe, 41 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 42 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 43 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 44 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 45 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 46 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 47 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 49 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 50 | 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 51 | 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 52 | 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x03, 53 | 0x01, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 54 | 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 55 | 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 56 | 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x30, 57 | 0x04, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 58 | 0x00, 0x00, 0x80, 0x30, 0x04, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 59 | 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 60 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 61 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, 62 | 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 63 | 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 65 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 66 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 68 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 70 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 71 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 76 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 78 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 79 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 80 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 82 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 83 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 85 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 86 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 87 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 88 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 89 | 0x00, 0x00, 0x00, 0x00 }; 90 | -------------------------------------------------------------------------------- /img/splash.xbm: -------------------------------------------------------------------------------- 1 | #define splash_width 128 2 | #define splash_height 64 3 | static unsigned char splash_bits[] = { 4 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 10 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 11 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 12 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 13 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 14 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 15 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 16 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 17 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 18 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 19 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 23 | 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 24 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 27 | 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 29 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 30 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 31 | 0xc3, 0x00, 0x00, 0x7e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 32 | 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x00, 0x00, 0xfe, 0x00, 0x06, 0x00, 0x00, 33 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x00, 0x00, 0xc6, 34 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 35 | 0xc3, 0x70, 0xe0, 0x86, 0xe3, 0x66, 0x8c, 0x83, 0x03, 0x00, 0x00, 0x00, 36 | 0x00, 0x00, 0x00, 0x0c, 0xc3, 0xf8, 0xf1, 0x06, 0xf3, 0x66, 0xcc, 0xc7, 37 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x8c, 0x33, 0x06, 38 | 0x33, 0x66, 0x6c, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 39 | 0xc3, 0x0c, 0x33, 0x06, 0x33, 0xc6, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 40 | 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x0c, 0x33, 0x86, 0x33, 0xc6, 0xe6, 0xcf, 41 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xe7, 0x8c, 0x33, 0xc6, 42 | 0x31, 0xc6, 0x66, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 43 | 0x7f, 0xfc, 0x33, 0xfe, 0x30, 0x86, 0xe3, 0xc7, 0x00, 0x00, 0x00, 0x00, 44 | 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x78, 0x33, 0x7e, 0x30, 0x86, 0xc3, 0xc7, 45 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 46 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 47 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 48 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 49 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 50 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 51 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 52 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 53 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 54 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 55 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 56 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 57 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 58 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 59 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 60 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 61 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 62 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 65 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 66 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 68 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 70 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 71 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 76 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 78 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 79 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 80 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 82 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 83 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 85 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 86 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 87 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 88 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 89 | 0x00, 0x00, 0x00, 0x00 }; 90 | -------------------------------------------------------------------------------- /img/splash.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevKitty-io/Wardriver/9466f44b9f4e864ff52a60b54b98b4542f02d8c6/img/splash.xcf -------------------------------------------------------------------------------- /src/Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker/dockerfile:1 2 | FROM debian:buster 3 | WORKDIR /app 4 | 5 | RUN apt-get update && apt-get install -y \ 6 | wget \ 7 | zip \ 8 | bsdmainutils \ 9 | xz-utils \ 10 | python3 python3-pip 11 | RUN pip3 install pyserial esptool 12 | 13 | ARG ARDUINO_CLI_VERSION=0.22.0 14 | RUN wget https://github.com/arduino/arduino-cli/releases/download/${ARDUINO_CLI_VERSION}/arduino-cli_${ARDUINO_CLI_VERSION}_Linux_64bit.tar.gz 15 | RUN tar -xf arduino-cli_${ARDUINO_CLI_VERSION}_Linux_64bit.tar.gz 16 | 17 | # TODO: version-lock these 18 | COPY arduino-cli.yaml . 19 | RUN ./arduino-cli core update-index --config-file arduino-cli.yaml 20 | RUN ./arduino-cli core install esp8266:esp8266 21 | RUN ./arduino-cli lib install \ 22 | "ESP8266 and ESP32 OLED driver for SSD1306 displays" \ 23 | "Adafruit NeoPixel" \ 24 | "TinyGPSPlus" 25 | 26 | COPY Demo ./Demo 27 | RUN ./arduino-cli compile -b esp8266:esp8266:d1_mini Demo \ 28 | -------------------------------------------------------------------------------- /src/Wardriver/Vars.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "Arduino.h" 3 | 4 | // SET BOARD BEFORE COMPILING 5 | #define CUTIE_WARDRIVER 6 | 7 | #define VERSION 1.5 8 | #define VERSION_STR "v1.5" 9 | #define WIGLE_HEADER "MAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type" 10 | 11 | #define SERIAL_BAUD 115200 12 | #define GPS_BAUD 9600 13 | #define TIMEZONE_UTC -7 14 | #define SCAN_INTERVAL 500 15 | 16 | // #define DUMMY_GPS 17 | 18 | /* Pin Definitions */ 19 | 20 | #if CONFIG_IDF_TARGET_ESP8266 21 | #warning "Compiling for ESP8266" 22 | #define GPS_RX D4 23 | #define GPS_TX D3 24 | #define SERIAL_VAR ss 25 | 26 | #define FS_VAR SD 27 | #elif CONFIG_IDF_TARGET_ESP32C3 28 | #define SDA SDA 29 | #define SCL SCL 30 | 31 | #define SERIAL_VAR Serial1 32 | #define GPS_RX 20 33 | #define GPS_TX 21 34 | 35 | #define FS_VAR SD 36 | #define SD_CS 0 // this pin is not actually used for selecting 37 | #elif CONFIG_IDF_TARGET_ESP32S2 38 | #warning "Compiling for ESP32-S2" 39 | #elif CONFIG_IDF_TARGET_ESP32S3 40 | #warning "Compiling for ESP32-S3" 41 | #elif CONFIG_IDF_TARGET_ESP32 42 | #warning "Compiling for ESP32" 43 | #else 44 | #error "Unrecognized ESP." 45 | #endif 46 | 47 | #if defined(DNS_DRIVEBY) 48 | #define LOG_PREFIX "DNS_Driveby" 49 | #define DEVICE "DNS Driveby" 50 | #define MODEL "Developer Kit" 51 | #define BOARD "ESP8266" 52 | 53 | #elif defined(CUTIE_WARDRIVER) 54 | #define LOG_PREFIX "Cutie" 55 | #define DEVICE "Cutie Wardriver" 56 | #define MODEL "Cutie Wardriver" 57 | #define BOARD "ESP32-C3" 58 | 59 | #elif defined(DEVKITTY) 60 | #define LOG_PREFIX "DevKitty" 61 | #define DEVICE "DevKitty" 62 | #define MODEL "DevKitty" 63 | #define BOARD "ESP32-S2" 64 | #endif -------------------------------------------------------------------------------- /src/Wardriver/Wardriver.ino: -------------------------------------------------------------------------------- 1 | #include "Vars.h" 2 | #include "src/Wardriver.h" 3 | 4 | void setup() { 5 | Serial.begin(115200); 6 | Serial.println(); 7 | // pinMode(A0, INPUT); 8 | 9 | // ESP.wdtDisable(); 10 | 11 | Wardriver::init(); 12 | // ESP.wdtEnable(0); 13 | } 14 | 15 | void loop() { 16 | Wardriver::scan(); 17 | } -------------------------------------------------------------------------------- /src/Wardriver/src/Filesys.cpp: -------------------------------------------------------------------------------- 1 | #include "Arduino.h" 2 | #include "Filesys.h" 3 | #include "SD.h" 4 | #include "../Vars.h" 5 | 6 | unsigned long startInit; 7 | unsigned long finishInit; 8 | 9 | /* FatFS logging or SD Card*/ 10 | #include 11 | 12 | char fullFilename[120]; 13 | File file; 14 | 15 | Filesys::Filesys() { 16 | 17 | } 18 | 19 | void Filesys::init(ScreenUpdateCallback callback) { 20 | bool sdSuccess = SD.begin(SD_CS); 21 | if (!sdSuccess) { 22 | callback("SD Card: NOT FOUND"); 23 | 24 | while (!sdSuccess) { 25 | sdSuccess = SD.begin(SD_CS); 26 | //ESP.wdtFeed(); 27 | yield(); 28 | } 29 | } 30 | callback("SD Card: FOUND!!"); 31 | 32 | // Filesys::configure(); 33 | 34 | } 35 | 36 | void Filesys::configure() { 37 | 38 | // create config.txt if it doesn't exist 39 | // if (!FS_VAR.exists("config.txt")) { 40 | // File tmpSettings = FS_VAR.open("config.txt", FILE_WRITE); 41 | // tmpSettings.println("# Duplicates recommended"); 42 | // tmpSettings.println("Duplicates: y"); 43 | // tmpSettings.println("GPS RX: D4"); 44 | // tmpSettings.println("GPS RX: D3"); 45 | 46 | // tmpSettings.close(); 47 | // } 48 | 49 | // read settings & write to variables 50 | // File tmpSettings = FS_VAR.open("config.txt", FILE_WRITE); 51 | // tmpSettings.read() 52 | 53 | } 54 | 55 | 56 | /* INITLIALIZE LOG FILE & WRITE HEADERS*/ 57 | void Filesys::createLog(char *filename, ScreenUpdateCallback callback) { 58 | 59 | uint8_t logNum = 0; 60 | char wiglePreHeader[160]; 61 | sprintf(wiglePreHeader, "WigleWifi-1.4,appRelease=%g,model=%s,release=%g,device=%s,display=SH1106,board=%s,brand=LyndLabs",VERSION,MODEL,VERSION,DEVICE,BOARD); 62 | 63 | // CHECK IF FILE EXISTS 64 | while (true) { 65 | sprintf(fullFilename,"/%s_%s_%i.csv",LOG_PREFIX,filename,logNum); 66 | if (!FS_VAR.exists(fullFilename)) { break; } 67 | logNum++; yield(); 68 | } 69 | 70 | char tmpMessage[50]; 71 | sprintf(tmpMessage,"Created: Log #%d",logNum); 72 | callback(fullFilename); 73 | 74 | // create temporary file object 75 | File tmpFile = FS_VAR.open(fullFilename, FILE_WRITE); 76 | 77 | // callback("LOG: Writing Headers"); 78 | tmpFile.println(wiglePreHeader); 79 | tmpFile.println(WIGLE_HEADER); 80 | tmpFile.close(); 81 | 82 | tmpFile.flush(); 83 | #if defined(ESP32) 84 | //fat1.flush(); 85 | #endif 86 | } 87 | 88 | void Filesys::open() { 89 | #if defined(ESP8266) 90 | file = FS_VAR.open(fullFilename, FILE_WRITE); 91 | #elif defined (ESP32) 92 | file = FS_VAR.open(fullFilename, FILE_APPEND); 93 | #endif 94 | } 95 | 96 | void Filesys::write(char * data) { 97 | file.println(data); 98 | } 99 | 100 | void Filesys::close() { 101 | file.close(); 102 | } -------------------------------------------------------------------------------- /src/Wardriver/src/Filesys.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class Filesys { 4 | public: 5 | Filesys(); 6 | 7 | typedef void (*ScreenUpdateCallback)(char* message); 8 | static void init(ScreenUpdateCallback callback); 9 | static void createLog(char * filename, ScreenUpdateCallback callback); 10 | static void write(char * data); 11 | 12 | static void open(); 13 | static void close(); 14 | 15 | private: 16 | static void configure(); 17 | }; 18 | -------------------------------------------------------------------------------- /src/Wardriver/src/Recon.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #if defined(ESP8266) 4 | #include 5 | #elif defined(ESP32) 6 | #include "WiFi.h" 7 | #endif 8 | 9 | char* getAuthType(uint8_t wifiAuth) { 10 | static char authType[15]; 11 | switch (wifiAuth) { 12 | 13 | #if defined(ESP8266) 14 | case ENC_TYPE_TKIP: 15 | return "[WPA-PSK-CCMP+TKIP][ESS]"; 16 | case ENC_TYPE_CCMP: 17 | return "[WPA2-PSK-CCMP+TKIP][ESS]"; 18 | case ENC_TYPE_WEP: 19 | return "[WEP][ESS]"; 20 | case ENC_TYPE_NONE: 21 | return "[ESS]"; 22 | case ENC_TYPE_AUTO: 23 | return "[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]"; 24 | 25 | #elif defined(ESP32) 26 | case WIFI_AUTH_OPEN: 27 | return "[]"; 28 | case WIFI_AUTH_WEP: 29 | return "[WEP]"; 30 | case WIFI_AUTH_WPA_PSK: 31 | return "[WPA]"; 32 | case WIFI_AUTH_WPA2_PSK: 33 | return "[WPA2]"; 34 | case WIFI_AUTH_WPA_WPA2_PSK: 35 | // return "WPA+WPA2"; 36 | return "[WPA2]"; 37 | case WIFI_AUTH_WPA2_ENTERPRISE: 38 | // return "WPA2-EAP"; 39 | return "[WPA2]"; 40 | case WIFI_AUTH_WPA3_PSK: 41 | return "[WPA3]"; 42 | case WIFI_AUTH_WPA2_WPA3_PSK: 43 | // return "WPA2+WPA3"; 44 | return "[WPA3]"; 45 | case WIFI_AUTH_WAPI_PSK: 46 | return "[WPAI]"; 47 | #endif 48 | 49 | default: 50 | return "[UNKNOWN]"; 51 | } 52 | return authType; 53 | } -------------------------------------------------------------------------------- /src/Wardriver/src/Screen.cpp: -------------------------------------------------------------------------------- 1 | #include "Arduino.h" 2 | #include "Screen.h" 3 | #include "SH1106.h" 4 | #include "graphics.h" 5 | #include "../Vars.h" 6 | 7 | SH1106Wire display(0x3C, SDA, SCL); 8 | 9 | Screen::Screen() { 10 | 11 | } 12 | 13 | void Screen::init() { 14 | display.init(); 15 | display.flipScreenVertically(); 16 | display.setFont(DejaVu_Sans_Mono_10); 17 | display.setTextAlignment(TEXT_ALIGN_LEFT); 18 | display.clear(); 19 | } 20 | 21 | uint8_t *iconsD; 22 | char **iconValsD; 23 | uint8_t iconNumD; 24 | 25 | 26 | void Screen::setIcons(uint8_t *icons, char **iconVals, uint8_t iconNum) { 27 | iconsD = icons; 28 | iconValsD = iconVals; 29 | iconNumD = iconNum; 30 | } 31 | 32 | void Screen::drawSplash(uint8_t sec) { 33 | display.clear(); 34 | display.drawXbm(0,0,128,64,splash_bits); 35 | display.drawString(52,40,"@AlexLynd"); 36 | display.drawString(20,40,VERSION_STR); 37 | display.display(); 38 | delay(sec*1000); 39 | } 40 | 41 | char *header; 42 | char *subHeader; 43 | char *footer; 44 | 45 | // setters for 46 | void Screen::setHeader(char *textHeader, char *textSubHeader) { 47 | header = textHeader; 48 | subHeader = textSubHeader; 49 | } 50 | 51 | void Screen::setFooter(char *textFooter) { 52 | footer = textFooter; 53 | } 54 | 55 | /* Updates the screen when called*/ 56 | void Screen::update() { 57 | display.clear(); 58 | 59 | // draw Header 60 | display.drawLine(0,12,127,12); 61 | display.drawLine(94,0,94,12); 62 | display.drawLine(95,0,95,12); 63 | 64 | display.drawString(0,0,header); 65 | display.drawString(98,0,subHeader); 66 | 67 | // draw Footer 68 | display.drawLine(0,49,127,49); 69 | display.drawString(0,49,footer); 70 | 71 | // draw Icons 72 | display.drawXbm(0,0,128,64,iconsD); 73 | 74 | display.drawString(18,17,iconValsD[0]); 75 | display.drawString(18,34,iconValsD[1]); 76 | 77 | display.drawString(58,17,iconValsD[2]); 78 | display.drawString(58,34,iconValsD[3]); 79 | 80 | display.drawString(100,17,iconValsD[4]); 81 | display.drawString(100,34,iconValsD[5]); 82 | 83 | display.display(); 84 | } 85 | 86 | void Screen::clear() { 87 | display.clear(); 88 | } 89 | 90 | -------------------------------------------------------------------------------- /src/Wardriver/src/Screen.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class Screen { 4 | public: 5 | Screen(); 6 | static void init(); 7 | static void drawSplash(uint8_t sec); 8 | static void drawMockup(char* gpscoords, char* time, uint8_t icon1, uint16_t icon2, uint8_t icon3, uint8_t icon4, uint8_t icon5, uint8_t icon6, char* message); 9 | 10 | // icon bitmap, values, number of icons 11 | static void setIcons(uint8_t *icons, char **iconVals, uint8_t iconNum); 12 | static void setHeader(char *textHeader, char *textSubHeader); 13 | static void setFooter(char *textFooter); 14 | 15 | // wrappers for now 16 | static void update(); 17 | static void clear(); 18 | 19 | // static void setIcons(uint8_t *icons, uint8_t iconVals[], uint8_t iconNum); 20 | }; 21 | -------------------------------------------------------------------------------- /src/Wardriver/src/Wardriver.cpp: -------------------------------------------------------------------------------- 1 | #include "Arduino.h" 2 | #include "Wardriver.h" 3 | #include "Recon.h" 4 | #include "Screen.h" 5 | #include "graphics.h" 6 | #include "driver/temp_sensor.h" 7 | #include "Adafruit_MAX1704X.h" 8 | 9 | #include 10 | #include "../Vars.h" 11 | #include "Filesys.h" 12 | 13 | #if defined(ESP8266) 14 | #include 15 | SoftwareSerial SERIAL_VAR(GPS_RX, GPS_TX); // RX, TX 16 | #endif 17 | 18 | TinyGPSPlus gps; 19 | Adafruit_MAX17048 maxlipo; 20 | bool lipoPresent = true; 21 | 22 | // CURRENT GPS & DATTIME STRING 23 | float lat = 0; float lng = 0; 24 | int alt; double hdop; 25 | char strDateTime[30]; 26 | char currentGPS[20]="..."; 27 | 28 | // RECON PARAMS 29 | uint32_t totalNets = 0; // for some reason doesn't work if = 0 30 | uint8_t clients = 0; 31 | uint8_t openNets = 0; 32 | uint8_t sats = 0; 33 | uint8_t bat = 0; 34 | uint8_t speed = 0; 35 | 36 | 37 | float batF =0; 38 | // 39 | char satsC[4]="..."; 40 | 41 | char totalC[5]="..."; 42 | char openNetsC[4]="..."; 43 | char tmpC[5]="..."; char batC[5]="..."; char speedC[4]="..."; 44 | 45 | // CURRENT DATETIME 46 | uint8_t hr; uint8_t mn; uint8_t sc; 47 | uint16_t yr; uint8_t mt; uint8_t dy; 48 | char currTime[10]="..."; 49 | 50 | 51 | char *test[6] = {satsC,totalC,openNetsC,tmpC,batC,speedC}; 52 | 53 | Wardriver::Wardriver() { 54 | 55 | } 56 | 57 | uint8_t getBattery() { 58 | bat = 0; 59 | if (lipoPresent) { 60 | bat = (uint8_t) maxlipo.cellPercent(); 61 | if (bat>100) bat = 100; 62 | } 63 | 64 | return bat; 65 | } 66 | 67 | uint8_t getTemp() { 68 | // Serial.print("Temperature: "); 69 | float result = 0; 70 | temp_sensor_read_celsius(&result); 71 | 72 | return (int)result; 73 | } 74 | 75 | 76 | static void smartDelay(unsigned long ms) { 77 | unsigned long start = millis(); 78 | do { 79 | while (SERIAL_VAR.available()) 80 | gps.encode(SERIAL_VAR.read()); 81 | } while (millis() - start < ms); 82 | } 83 | 84 | void updateGPS() { 85 | lat = gps.location.lat(); lng = gps.location.lng(); 86 | alt = (int) gps.altitude.meters(); 87 | hdop = gps.hdop.hdop(); 88 | sats = gps.satellites.value(); 89 | speed = gps.speed.mph(); 90 | 91 | yr = gps.date.year(); 92 | mt = gps.date.month(); 93 | dy = gps.date.day(); 94 | 95 | hr = gps.time.hour(); 96 | mn = gps.time.minute(); 97 | sc = gps.time.second(); 98 | 99 | sprintf(strDateTime,"%04d-%02d-%02d %02d:%02d:%02d",yr,mt,dy,hr,mn,sc); 100 | sprintf(currentGPS,"%1.3f,%1.3f",lat,lng); 101 | sprintf(currTime,"%02d:%02d",hr,mn); 102 | 103 | sprintf(satsC,"%u",sats); 104 | sprintf(openNetsC,"%u",openNets); 105 | 106 | uint8_t tmpTemp = getTemp(); 107 | sprintf(tmpC,"%u°",tmpTemp); 108 | sprintf(batC,"%u%%",getBattery()); 109 | sprintf(speedC,"%u",speed); 110 | 111 | if (totalNets > 999) { sprintf(totalC,"%gK",((totalNets-1)/100)/10.0); } 112 | else if (totalNets > 9999) { sprintf(totalC,"%uK",((totalNets-1)/1000)); } 113 | else { sprintf(totalC,"%u",totalNets); } 114 | 115 | Screen::setFooter("GPS: UPDATED"); 116 | Screen::update(); 117 | } 118 | 119 | void updateGPS(uint8_t override) { 120 | lat = 37.8715; lng = 122.2730; 121 | alt = 220; hdop = 1.5; 122 | sats = 3; speed = 69; 123 | 124 | yr = 2023; mt = 7; dy = 25; 125 | hr = 10; mn = 36; sc = 56; 126 | 127 | sprintf(strDateTime,"%i-%i-%i %i:%i:%i",yr,mt,dy,hr,mn,sc); 128 | sprintf(currentGPS,"%1.3f,%1.3f",lat,lng); 129 | sprintf(currTime,"%02d:%02d",hr,mn); 130 | 131 | sprintf(satsC,"%u",sats); 132 | 133 | if (totalNets > 999) { sprintf(totalC,"%gK",((totalNets-1)/100)/10.0); } 134 | else if (totalNets > 9999) { sprintf(totalC,"%uK",((totalNets-1)/1000)); } 135 | else { sprintf(totalC,"%u",totalNets); } 136 | 137 | sprintf(openNetsC,"%u",openNets); 138 | sprintf(tmpC,"%u°",getTemp()); 139 | sprintf(batC,"%u%%",getBattery()); 140 | sprintf(speedC,"%u",speed); 141 | 142 | Screen::setFooter("GPS: UPDATED"); 143 | Screen::update(); 144 | // Screen::drawMockup("...","...",0,0,0,0,0,0,"test"); 145 | } 146 | 147 | // initialize GPS & get first coords 148 | void initBat() { 149 | Screen::setFooter("BAT: Initializing..."); 150 | Screen::update(); 151 | 152 | if (!maxlipo.begin()) { 153 | Screen::setFooter("Charger NOT FOUND!"); 154 | Screen::update(); 155 | lipoPresent = false; 156 | } 157 | 158 | Screen::setFooter("Charger FOUND!"); 159 | Screen::update(); 160 | 161 | getBattery(); 162 | 163 | } 164 | 165 | void initGPS() { 166 | 167 | #if defined(ESP32) 168 | SERIAL_VAR.begin(GPS_BAUD, SERIAL_8N1, GPS_RX, GPS_TX); 169 | #elif defined(ESP8266) 170 | SERIAL_VAR.begin(GPS_BAUD); 171 | #endif 172 | 173 | // char *test[6] = {"1","2","3","23","5","6"}; 174 | // Screen::setIcons(icons_bits, test, 6); 175 | // Screen::setHeader(currentGPS,currTime); // pass ref 176 | Screen::setFooter("GPS Initializing..."); // 177 | Screen::update(); 178 | 179 | unsigned long startGPSTime = millis(); 180 | 181 | while (! (gps.location.isValid())) { 182 | 183 | if (millis()-startGPSTime > 5000 && gps.charsProcessed() < 10) { 184 | Screen::setFooter("GPS: NOT FOUND"); 185 | Screen::update(); 186 | 187 | } 188 | else if (gps.charsProcessed() > 10) { 189 | Screen::setFooter("GPS: Waiting for fix..."); 190 | Screen::update(); 191 | } 192 | 193 | sats = gps.satellites.value(); 194 | // totalNets = 0; 195 | Serial.println(gps.location.isValid()); 196 | //ESP.wdtFeed(); 197 | yield(); 198 | 199 | smartDelay(500); 200 | } 201 | while ((gps.date.year() == 2000)) { 202 | Screen::setFooter("GPS: Validating time..."); 203 | //ESP.wdtFeed(); 204 | yield(); 205 | smartDelay(500); 206 | Serial.println(gps.date.year()); 207 | } 208 | Screen::setFooter("GPS: LOCATION FOUND"); 209 | updateGPS(); 210 | } 211 | 212 | void initGPS(uint8_t override) { 213 | #if defined(ESP32) 214 | // SERIAL_VAR.begin(GPS_BAUD, SERIAL_8N1, GPS_RX, GPS_TX); 215 | #endif 216 | Screen::setFooter("GPS: Emulating fix"); 217 | Screen::update(); 218 | delay(500); 219 | 220 | updateGPS(0); 221 | Screen::setFooter("GPS: LOCATION FOUND"); 222 | Screen::update(); 223 | Serial.println("Screen updated."); 224 | } 225 | 226 | void scanNets() { 227 | char entry[150]; 228 | Serial.println("[ ] Scanning WiFi networks..."); 229 | Screen::setFooter("WiFi: Scanning..."); 230 | Screen::update(); 231 | 232 | int n = WiFi.scanNetworks(); 233 | // totalNets+=n; 234 | openNets = 0; 235 | 236 | Filesys::open(); 237 | 238 | for (int i = 0; i < n; ++i) { 239 | char* authType = getAuthType(WiFi.encryptionType(i)); 240 | #if defined(ESP8266) 241 | if (WiFi.encryptionType(i) == ENC_TYPE_NONE) openNets++; 242 | #elif defined(ESP32) 243 | if (WiFi.encryptionType(i) == WIFI_AUTH_OPEN) openNets++; 244 | #endif 245 | 246 | sprintf(entry,"%s,\"%s\",%s,%s,%u,%i,%f,%f,%i,%f,WIFI", WiFi.BSSIDstr(i).c_str(), WiFi.SSID(i).c_str(),authType,strDateTime,WiFi.channel(i),WiFi.RSSI(i),lat,lng,alt,hdop); 247 | 248 | Serial.println(entry); 249 | Filesys::write(entry); 250 | totalNets++; 251 | Serial.print("Total: "); 252 | Serial.println(totalNets); 253 | } 254 | 255 | Serial.println(::totalNets); 256 | 257 | char message[21]; 258 | sprintf(message,"Logged %d networks.",n); 259 | Screen::setFooter(message); 260 | Screen::update(); 261 | 262 | Filesys::close(); 263 | WiFi.scanDelete(); 264 | 265 | } 266 | 267 | void Wardriver::init() { 268 | 269 | totalNets = 0; 270 | temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT(); 271 | temp_sensor.dac_offset = TSENS_DAC_L2; // TSENS_DAC_L2 is default; L4(-40°C ~ 20°C), L2(-10°C ~ 80°C), L1(20°C ~ 100°C), L0(50°C ~ 125°C) 272 | temp_sensor_set_config(temp_sensor); 273 | temp_sensor_start(); 274 | 275 | 276 | Screen::init(); 277 | Screen::drawSplash(2); 278 | 279 | Screen::setIcons(icons_bits, test, 6); 280 | Screen::setHeader(currentGPS,currTime); 281 | 282 | Filesys::init(updateScreen); delay(1000); 283 | initBat(); 284 | 285 | #ifdef DUMMY_GPS 286 | initGPS(1); 287 | #else 288 | initGPS(); 289 | #endif 290 | 291 | char fileDT[150]; sprintf(fileDT,"%i-%02d-%02d",yr, mt, dy); 292 | // Serial.println(sats); 293 | // Serial.println(const_cast (String(sats).c_str())); 294 | // Serial.println(fileDT); 295 | delay(1000); 296 | Filesys::createLog(fileDT, updateScreen); 297 | } 298 | 299 | void Wardriver::updateScreen(char* message) { 300 | Screen::setFooter(message); Screen::update(); 301 | } 302 | 303 | unsigned long lastTime = millis(); 304 | unsigned long tmpTime = millis(); 305 | 306 | void Wardriver::scan() { 307 | Serial.println("In scan."); 308 | #ifdef DUMMY_GPS 309 | updateGPS(1); 310 | #else 311 | updateGPS(); // poll current GPS coordinates 312 | #endif 313 | tmpTime = millis(); 314 | if ((tmpTime-lastTime)>3000) { 315 | getBattery(); 316 | lastTime = tmpTime; 317 | Serial.print(F("Batt Voltage: ")); Serial.print(maxlipo.cellVoltage(), 3); Serial.println(" V"); 318 | Serial.print(F("Batt Percent: ")); Serial.print(maxlipo.cellPercent(), 1); Serial.println(" %"); 319 | } 320 | 321 | 322 | delay(SCAN_INTERVAL); 323 | scanNets(); // scan WiFi nets 324 | smartDelay(500); 325 | } 326 | 327 | -------------------------------------------------------------------------------- /src/Wardriver/src/Wardriver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class Wardriver{ 4 | public: 5 | Wardriver(); 6 | static void init(); 7 | static void scan(); 8 | static void updateScreen(char* message); 9 | // void initSD(); 10 | }; -------------------------------------------------------------------------------- /src/Wardriver/src/graphics.h: -------------------------------------------------------------------------------- 1 | #ifndef FONT_DEJAVU_SANS_MONO_10 2 | #define FONT_DEJAVU_SANS_MONO_10 3 | 4 | // Created by http://oleddisplay.squix.ch/ Consider a donation 5 | const uint8_t DejaVu_Sans_Mono_10[] PROGMEM = { 6 | 0x06, // Width: 6 7 | 0x0D, // Height: 13 8 | 0x20, // First Char: 32 9 | 0xE0, // Numbers of Chars: 224 10 | 11 | // Jump Table: 12 | 0xFF, 0xFF, 0x00, 0x06, // 32:65535 13 | 0x00, 0x00, 0x08, 0x06, // 33:0 14 | 0x00, 0x08, 0x09, 0x06, // 34:8 15 | 0x00, 0x11, 0x0B, 0x06, // 35:17 16 | 0x00, 0x1C, 0x0C, 0x06, // 36:28 17 | 0x00, 0x28, 0x0C, 0x06, // 37:40 18 | 0x00, 0x34, 0x0C, 0x06, // 38:52 19 | 0x00, 0x40, 0x07, 0x06, // 39:64 20 | 0x00, 0x47, 0x08, 0x06, // 40:71 21 | 0x00, 0x4F, 0x08, 0x06, // 41:79 22 | 0x00, 0x57, 0x0B, 0x06, // 42:87 23 | 0x00, 0x62, 0x0B, 0x06, // 43:98 24 | 0x00, 0x6D, 0x06, 0x06, // 44:109 25 | 0x00, 0x73, 0x09, 0x06, // 45:115 26 | 0x00, 0x7C, 0x06, 0x06, // 46:124 27 | 0x00, 0x82, 0x0B, 0x06, // 47:130 28 | 0x00, 0x8D, 0x0C, 0x06, // 48:141 29 | 0x00, 0x99, 0x0C, 0x06, // 49:153 30 | 0x00, 0xA5, 0x0C, 0x06, // 50:165 31 | 0x00, 0xB1, 0x0C, 0x06, // 51:177 32 | 0x00, 0xBD, 0x0B, 0x06, // 52:189 33 | 0x00, 0xC8, 0x0C, 0x06, // 53:200 34 | 0x00, 0xD4, 0x0C, 0x06, // 54:212 35 | 0x00, 0xE0, 0x0B, 0x06, // 55:224 36 | 0x00, 0xEB, 0x0C, 0x06, // 56:235 37 | 0x00, 0xF7, 0x0C, 0x06, // 57:247 38 | 0x01, 0x03, 0x06, 0x06, // 58:259 39 | 0x01, 0x09, 0x06, 0x06, // 59:265 40 | 0x01, 0x0F, 0x0C, 0x06, // 60:271 41 | 0x01, 0x1B, 0x09, 0x06, // 61:283 42 | 0x01, 0x24, 0x0B, 0x06, // 62:292 43 | 0x01, 0x2F, 0x09, 0x06, // 63:303 44 | 0x01, 0x38, 0x0C, 0x06, // 64:312 45 | 0x01, 0x44, 0x0C, 0x06, // 65:324 46 | 0x01, 0x50, 0x0C, 0x06, // 66:336 47 | 0x01, 0x5C, 0x0C, 0x06, // 67:348 48 | 0x01, 0x68, 0x0C, 0x06, // 68:360 49 | 0x01, 0x74, 0x0C, 0x06, // 69:372 50 | 0x01, 0x80, 0x0B, 0x06, // 70:384 51 | 0x01, 0x8B, 0x0C, 0x06, // 71:395 52 | 0x01, 0x97, 0x0C, 0x06, // 72:407 53 | 0x01, 0xA3, 0x0C, 0x06, // 73:419 54 | 0x01, 0xAF, 0x0A, 0x06, // 74:431 55 | 0x01, 0xB9, 0x0C, 0x06, // 75:441 56 | 0x01, 0xC5, 0x0C, 0x06, // 76:453 57 | 0x01, 0xD1, 0x0C, 0x06, // 77:465 58 | 0x01, 0xDD, 0x0C, 0x06, // 78:477 59 | 0x01, 0xE9, 0x0C, 0x06, // 79:489 60 | 0x01, 0xF5, 0x0B, 0x06, // 80:501 61 | 0x02, 0x00, 0x0C, 0x06, // 81:512 62 | 0x02, 0x0C, 0x0C, 0x06, // 82:524 63 | 0x02, 0x18, 0x0C, 0x06, // 83:536 64 | 0x02, 0x24, 0x0B, 0x06, // 84:548 65 | 0x02, 0x2F, 0x0C, 0x06, // 85:559 66 | 0x02, 0x3B, 0x0B, 0x06, // 86:571 67 | 0x02, 0x46, 0x0B, 0x06, // 87:582 68 | 0x02, 0x51, 0x0C, 0x06, // 88:593 69 | 0x02, 0x5D, 0x0B, 0x06, // 89:605 70 | 0x02, 0x68, 0x0C, 0x06, // 90:616 71 | 0x02, 0x74, 0x08, 0x06, // 91:628 72 | 0x02, 0x7C, 0x0C, 0x06, // 92:636 73 | 0x02, 0x88, 0x08, 0x06, // 93:648 74 | 0x02, 0x90, 0x09, 0x06, // 94:656 75 | 0x02, 0x99, 0x0C, 0x06, // 95:665 76 | 0x02, 0xA5, 0x05, 0x06, // 96:677 77 | 0x02, 0xAA, 0x0C, 0x06, // 97:682 78 | 0x02, 0xB6, 0x0C, 0x06, // 98:694 79 | 0x02, 0xC2, 0x0A, 0x06, // 99:706 80 | 0x02, 0xCC, 0x0C, 0x06, // 100:716 81 | 0x02, 0xD8, 0x0C, 0x06, // 101:728 82 | 0x02, 0xE4, 0x09, 0x06, // 102:740 83 | 0x02, 0xED, 0x0C, 0x06, // 103:749 84 | 0x02, 0xF9, 0x0C, 0x06, // 104:761 85 | 0x03, 0x05, 0x0C, 0x06, // 105:773 86 | 0x03, 0x11, 0x08, 0x06, // 106:785 87 | 0x03, 0x19, 0x0C, 0x06, // 107:793 88 | 0x03, 0x25, 0x0A, 0x06, // 108:805 89 | 0x03, 0x2F, 0x0C, 0x06, // 109:815 90 | 0x03, 0x3B, 0x0C, 0x06, // 110:827 91 | 0x03, 0x47, 0x0C, 0x06, // 111:839 92 | 0x03, 0x53, 0x0C, 0x06, // 112:851 93 | 0x03, 0x5F, 0x0C, 0x06, // 113:863 94 | 0x03, 0x6B, 0x0B, 0x06, // 114:875 95 | 0x03, 0x76, 0x0C, 0x06, // 115:886 96 | 0x03, 0x82, 0x0A, 0x06, // 116:898 97 | 0x03, 0x8C, 0x0C, 0x06, // 117:908 98 | 0x03, 0x98, 0x0B, 0x06, // 118:920 99 | 0x03, 0xA3, 0x0B, 0x06, // 119:931 100 | 0x03, 0xAE, 0x0C, 0x06, // 120:942 101 | 0x03, 0xBA, 0x0B, 0x06, // 121:954 102 | 0x03, 0xC5, 0x0C, 0x06, // 122:965 103 | 0x03, 0xD1, 0x0A, 0x06, // 123:977 104 | 0x03, 0xDB, 0x08, 0x06, // 124:987 105 | 0x03, 0xE3, 0x0B, 0x06, // 125:995 106 | 0x03, 0xEE, 0x0B, 0x06, // 126:1006 107 | 0x03, 0xF9, 0x0C, 0x06, // 127:1017 108 | 0x04, 0x05, 0x0C, 0x06, // 128:1029 109 | 0x04, 0x11, 0x0C, 0x06, // 129:1041 110 | 0x04, 0x1D, 0x0C, 0x06, // 130:1053 111 | 0x04, 0x29, 0x0C, 0x06, // 131:1065 112 | 0x04, 0x35, 0x0C, 0x06, // 132:1077 113 | 0x04, 0x41, 0x0C, 0x06, // 133:1089 114 | 0x04, 0x4D, 0x0C, 0x06, // 134:1101 115 | 0x04, 0x59, 0x0C, 0x06, // 135:1113 116 | 0x04, 0x65, 0x0C, 0x06, // 136:1125 117 | 0x04, 0x71, 0x0C, 0x06, // 137:1137 118 | 0x04, 0x7D, 0x0C, 0x06, // 138:1149 119 | 0x04, 0x89, 0x0C, 0x06, // 139:1161 120 | 0x04, 0x95, 0x0C, 0x06, // 140:1173 121 | 0x04, 0xA1, 0x0C, 0x06, // 141:1185 122 | 0x04, 0xAD, 0x0C, 0x06, // 142:1197 123 | 0x04, 0xB9, 0x0C, 0x06, // 143:1209 124 | 0x04, 0xC5, 0x0C, 0x06, // 144:1221 125 | 0x04, 0xD1, 0x0C, 0x06, // 145:1233 126 | 0x04, 0xDD, 0x0C, 0x06, // 146:1245 127 | 0x04, 0xE9, 0x0C, 0x06, // 147:1257 128 | 0x04, 0xF5, 0x0C, 0x06, // 148:1269 129 | 0x05, 0x01, 0x0C, 0x06, // 149:1281 130 | 0x05, 0x0D, 0x0C, 0x06, // 150:1293 131 | 0x05, 0x19, 0x0C, 0x06, // 151:1305 132 | 0x05, 0x25, 0x0C, 0x06, // 152:1317 133 | 0x05, 0x31, 0x0C, 0x06, // 153:1329 134 | 0x05, 0x3D, 0x0C, 0x06, // 154:1341 135 | 0x05, 0x49, 0x0C, 0x06, // 155:1353 136 | 0x05, 0x55, 0x0C, 0x06, // 156:1365 137 | 0x05, 0x61, 0x0C, 0x06, // 157:1377 138 | 0x05, 0x6D, 0x0C, 0x06, // 158:1389 139 | 0x05, 0x79, 0x0C, 0x06, // 159:1401 140 | 0xFF, 0xFF, 0x00, 0x06, // 160:65535 141 | 0x05, 0x85, 0x08, 0x06, // 161:1413 142 | 0x05, 0x8D, 0x0A, 0x06, // 162:1421 143 | 0x05, 0x97, 0x0C, 0x06, // 163:1431 144 | 0x05, 0xA3, 0x0C, 0x06, // 164:1443 145 | 0x05, 0xAF, 0x0B, 0x06, // 165:1455 146 | 0x05, 0xBA, 0x08, 0x06, // 166:1466 147 | 0x05, 0xC2, 0x0A, 0x06, // 167:1474 148 | 0x05, 0xCC, 0x09, 0x06, // 168:1484 149 | 0x05, 0xD5, 0x0B, 0x06, // 169:1493 150 | 0x05, 0xE0, 0x0A, 0x06, // 170:1504 151 | 0x05, 0xEA, 0x0A, 0x06, // 171:1514 152 | 0x05, 0xF4, 0x0B, 0x06, // 172:1524 153 | 0x05, 0xFF, 0x09, 0x06, // 173:1535 154 | 0x06, 0x08, 0x0B, 0x06, // 174:1544 155 | 0x06, 0x13, 0x09, 0x06, // 175:1555 156 | 0x06, 0x1C, 0x07, 0x06, // 176:1564 157 | 0x06, 0x23, 0x0C, 0x06, // 177:1571 158 | 0x06, 0x2F, 0x09, 0x06, // 178:1583 159 | 0x06, 0x38, 0x09, 0x06, // 179:1592 160 | 0x06, 0x41, 0x07, 0x06, // 180:1601 161 | 0x06, 0x48, 0x0C, 0x06, // 181:1608 162 | 0x06, 0x54, 0x0C, 0x06, // 182:1620 163 | 0x06, 0x60, 0x05, 0x06, // 183:1632 164 | 0x06, 0x65, 0x08, 0x06, // 184:1637 165 | 0x06, 0x6D, 0x09, 0x06, // 185:1645 166 | 0x06, 0x76, 0x0A, 0x06, // 186:1654 167 | 0x06, 0x80, 0x09, 0x06, // 187:1664 168 | 0x06, 0x89, 0x0C, 0x06, // 188:1673 169 | 0x06, 0x95, 0x0C, 0x06, // 189:1685 170 | 0x06, 0xA1, 0x0C, 0x06, // 190:1697 171 | 0x06, 0xAD, 0x0A, 0x06, // 191:1709 172 | 0x06, 0xB7, 0x0C, 0x06, // 192:1719 173 | 0x06, 0xC3, 0x0C, 0x06, // 193:1731 174 | 0x06, 0xCF, 0x0C, 0x06, // 194:1743 175 | 0x06, 0xDB, 0x0C, 0x06, // 195:1755 176 | 0x06, 0xE7, 0x0C, 0x06, // 196:1767 177 | 0x06, 0xF3, 0x0C, 0x06, // 197:1779 178 | 0x06, 0xFF, 0x0C, 0x06, // 198:1791 179 | 0x07, 0x0B, 0x0C, 0x06, // 199:1803 180 | 0x07, 0x17, 0x0C, 0x06, // 200:1815 181 | 0x07, 0x23, 0x0C, 0x06, // 201:1827 182 | 0x07, 0x2F, 0x0C, 0x06, // 202:1839 183 | 0x07, 0x3B, 0x0C, 0x06, // 203:1851 184 | 0x07, 0x47, 0x0C, 0x06, // 204:1863 185 | 0x07, 0x53, 0x0C, 0x06, // 205:1875 186 | 0x07, 0x5F, 0x0C, 0x06, // 206:1887 187 | 0x07, 0x6B, 0x0C, 0x06, // 207:1899 188 | 0x07, 0x77, 0x0C, 0x06, // 208:1911 189 | 0x07, 0x83, 0x0C, 0x06, // 209:1923 190 | 0x07, 0x8F, 0x0C, 0x06, // 210:1935 191 | 0x07, 0x9B, 0x0C, 0x06, // 211:1947 192 | 0x07, 0xA7, 0x0C, 0x06, // 212:1959 193 | 0x07, 0xB3, 0x0C, 0x06, // 213:1971 194 | 0x07, 0xBF, 0x0C, 0x06, // 214:1983 195 | 0x07, 0xCB, 0x0C, 0x06, // 215:1995 196 | 0x07, 0xD7, 0x0C, 0x06, // 216:2007 197 | 0x07, 0xE3, 0x0C, 0x06, // 217:2019 198 | 0x07, 0xEF, 0x0C, 0x06, // 218:2031 199 | 0x07, 0xFB, 0x0C, 0x06, // 219:2043 200 | 0x08, 0x07, 0x0C, 0x06, // 220:2055 201 | 0x08, 0x13, 0x0B, 0x06, // 221:2067 202 | 0x08, 0x1E, 0x0B, 0x06, // 222:2078 203 | 0x08, 0x29, 0x0C, 0x06, // 223:2089 204 | 0x08, 0x35, 0x0C, 0x06, // 224:2101 205 | 0x08, 0x41, 0x0C, 0x06, // 225:2113 206 | 0x08, 0x4D, 0x0C, 0x06, // 226:2125 207 | 0x08, 0x59, 0x0C, 0x06, // 227:2137 208 | 0x08, 0x65, 0x0C, 0x06, // 228:2149 209 | 0x08, 0x71, 0x0C, 0x06, // 229:2161 210 | 0x08, 0x7D, 0x0C, 0x06, // 230:2173 211 | 0x08, 0x89, 0x0A, 0x06, // 231:2185 212 | 0x08, 0x93, 0x0C, 0x06, // 232:2195 213 | 0x08, 0x9F, 0x0C, 0x06, // 233:2207 214 | 0x08, 0xAB, 0x0C, 0x06, // 234:2219 215 | 0x08, 0xB7, 0x0C, 0x06, // 235:2231 216 | 0x08, 0xC3, 0x0C, 0x06, // 236:2243 217 | 0x08, 0xCF, 0x0C, 0x06, // 237:2255 218 | 0x08, 0xDB, 0x0C, 0x06, // 238:2267 219 | 0x08, 0xE7, 0x0C, 0x06, // 239:2279 220 | 0x08, 0xF3, 0x0C, 0x06, // 240:2291 221 | 0x08, 0xFF, 0x0C, 0x06, // 241:2303 222 | 0x09, 0x0B, 0x0C, 0x06, // 242:2315 223 | 0x09, 0x17, 0x0C, 0x06, // 243:2327 224 | 0x09, 0x23, 0x0C, 0x06, // 244:2339 225 | 0x09, 0x2F, 0x0C, 0x06, // 245:2351 226 | 0x09, 0x3B, 0x0C, 0x06, // 246:2363 227 | 0x09, 0x47, 0x09, 0x06, // 247:2375 228 | 0x09, 0x50, 0x0C, 0x06, // 248:2384 229 | 0x09, 0x5C, 0x0C, 0x06, // 249:2396 230 | 0x09, 0x68, 0x0C, 0x06, // 250:2408 231 | 0x09, 0x74, 0x0C, 0x06, // 251:2420 232 | 0x09, 0x80, 0x0C, 0x06, // 252:2432 233 | 0x09, 0x8C, 0x0B, 0x06, // 253:2444 234 | 0x09, 0x97, 0x0C, 0x06, // 254:2455 235 | 0x09, 0xA3, 0x0B, 0x06, // 255:2467 236 | 237 | // Font Data: 238 | 0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x02, // 33 239 | 0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38, // 34 240 | 0x80,0x00,0xE0,0x03,0xB8,0x00,0xE0,0x03,0xB8,0x00,0x20, // 35 241 | 0x00,0x00,0x60,0x02,0x50,0x02,0xF8,0x07,0x90,0x02,0x90,0x01, // 36 242 | 0x38,0x00,0xA8,0x00,0x78,0x00,0xC0,0x03,0xA0,0x02,0x80,0x03, // 37 243 | 0x00,0x00,0xC0,0x01,0x38,0x02,0x68,0x02,0x88,0x01,0xC0,0x02, // 38 244 | 0x00,0x00,0x00,0x00,0x00,0x00,0x38, // 39 245 | 0x00,0x00,0x00,0x00,0xF8,0x03,0x04,0x04, // 40 246 | 0x00,0x00,0x00,0x00,0x0C,0x06,0xF0,0x01, // 41 247 | 0x00,0x00,0x48,0x00,0x30,0x00,0x78,0x00,0x30,0x00,0x48, // 42 248 | 0x00,0x00,0x40,0x00,0x40,0x00,0xF0,0x01,0x40,0x00,0x40, // 43 249 | 0x00,0x00,0x00,0x00,0x00,0x0E, // 44 250 | 0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80, // 45 251 | 0x00,0x00,0x00,0x00,0x00,0x02, // 46 252 | 0x00,0x00,0x00,0x04,0x00,0x03,0xC0,0x00,0x30,0x00,0x08, // 47 253 | 0x00,0x00,0xF0,0x01,0x08,0x02,0x48,0x02,0x08,0x02,0xF0,0x01, // 48 254 | 0x00,0x00,0x08,0x02,0x08,0x02,0xF8,0x03,0x00,0x02,0x00,0x02, // 49 255 | 0x00,0x00,0x10,0x02,0x08,0x03,0x88,0x02,0xC8,0x02,0x70,0x02, // 50 256 | 0x00,0x00,0x10,0x01,0x48,0x02,0x48,0x02,0x48,0x02,0xB0,0x01, // 51 257 | 0x00,0x00,0xC0,0x00,0xE0,0x00,0x90,0x00,0xF8,0x03,0x80, // 52 258 | 0x00,0x00,0x38,0x02,0x28,0x02,0x28,0x02,0x28,0x02,0xC0,0x01, // 53 259 | 0x00,0x00,0xF0,0x01,0x58,0x02,0x48,0x02,0x48,0x02,0x88,0x01, // 54 260 | 0x00,0x00,0x08,0x00,0x08,0x02,0x88,0x01,0x78,0x00,0x18, // 55 261 | 0x00,0x00,0xB0,0x01,0x48,0x02,0x48,0x02,0x48,0x02,0xB0,0x01, // 56 262 | 0x00,0x00,0x30,0x02,0x48,0x02,0x48,0x02,0x48,0x03,0xF0,0x01, // 57 263 | 0x00,0x00,0x00,0x00,0x20,0x02, // 58 264 | 0x00,0x00,0x00,0x00,0x20,0x0E, // 59 265 | 0x00,0x00,0x40,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x10,0x01, // 60 266 | 0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0,0x00,0xA0, // 61 267 | 0x00,0x00,0x10,0x01,0xA0,0x00,0xA0,0x00,0xA0,0x00,0x40, // 62 268 | 0x00,0x00,0x08,0x00,0xC8,0x02,0x28,0x00,0x18, // 63 269 | 0x00,0x00,0xE0,0x03,0x18,0x04,0xE8,0x0B,0x28,0x0A,0xF0,0x03, // 64 270 | 0x00,0x00,0x00,0x03,0xE0,0x00,0x98,0x00,0xE0,0x00,0x00,0x03, // 65 271 | 0x00,0x00,0xF8,0x03,0x48,0x02,0x48,0x02,0x48,0x02,0xB0,0x01, // 66 272 | 0x00,0x00,0xF0,0x01,0x18,0x03,0x08,0x02,0x08,0x02,0x18,0x03, // 67 273 | 0x00,0x00,0xF8,0x03,0x08,0x02,0x08,0x02,0x18,0x03,0xF0,0x01, // 68 274 | 0x00,0x00,0xF8,0x03,0x48,0x02,0x48,0x02,0x48,0x02,0x48,0x02, // 69 275 | 0x00,0x00,0xF8,0x03,0x48,0x00,0x48,0x00,0x48,0x00,0x48, // 70 276 | 0x00,0x00,0xF0,0x01,0x18,0x03,0x08,0x02,0x48,0x02,0xD0,0x03, // 71 277 | 0x00,0x00,0xF8,0x03,0x40,0x00,0x40,0x00,0x40,0x00,0xF8,0x03, // 72 278 | 0x00,0x00,0x08,0x02,0x08,0x02,0xF8,0x03,0x08,0x02,0x08,0x02, // 73 279 | 0x00,0x00,0x00,0x01,0x08,0x02,0x08,0x02,0xF8,0x01, // 74 280 | 0x00,0x00,0xF8,0x03,0x40,0x00,0xA0,0x00,0x10,0x01,0x08,0x02, // 75 281 | 0x00,0x00,0xF8,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02, // 76 282 | 0x00,0x00,0xF8,0x03,0x30,0x00,0x40,0x00,0x30,0x00,0xF8,0x03, // 77 283 | 0x00,0x00,0xF8,0x03,0x30,0x00,0x40,0x00,0x80,0x01,0xF8,0x03, // 78 284 | 0x00,0x00,0xF0,0x01,0x08,0x02,0x08,0x02,0x08,0x02,0xF0,0x01, // 79 285 | 0x00,0x00,0xF8,0x03,0x48,0x00,0x48,0x00,0x48,0x00,0x30, // 80 286 | 0x00,0x00,0xF0,0x01,0x08,0x02,0x08,0x02,0x08,0x06,0xF0,0x05, // 81 287 | 0x00,0x00,0xF8,0x03,0x48,0x00,0x48,0x00,0xC8,0x00,0xB0,0x01, // 82 288 | 0x00,0x00,0x30,0x01,0x48,0x02,0x48,0x02,0x48,0x02,0x90,0x01, // 83 289 | 0x00,0x00,0x08,0x00,0x08,0x00,0xF8,0x03,0x08,0x00,0x08, // 84 290 | 0x00,0x00,0xF8,0x01,0x00,0x02,0x00,0x02,0x00,0x02,0xF8,0x01, // 85 291 | 0x00,0x00,0x18,0x00,0xE0,0x00,0x00,0x03,0xE0,0x00,0x18, // 86 292 | 0x38,0x00,0xC0,0x03,0x70,0x00,0x70,0x00,0xC0,0x03,0x38, // 87 293 | 0x00,0x00,0x08,0x02,0xB0,0x01,0x40,0x00,0xB0,0x01,0x08,0x02, // 88 294 | 0x00,0x00,0x08,0x00,0x30,0x00,0xC0,0x03,0x30,0x00,0x08, // 89 295 | 0x00,0x00,0x08,0x02,0x88,0x03,0x48,0x02,0x38,0x02,0x08,0x02, // 90 296 | 0x00,0x00,0x00,0x00,0xFC,0x07,0x04,0x04, // 91 297 | 0x00,0x00,0x08,0x00,0x30,0x00,0xC0,0x00,0x00,0x03,0x00,0x04, // 92 298 | 0x00,0x00,0x00,0x00,0x04,0x04,0xFC,0x07, // 93 299 | 0x20,0x00,0x10,0x00,0x08,0x00,0x10,0x00,0x20, // 94 300 | 0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, // 95 301 | 0x00,0x00,0x04,0x00,0x08, // 96 302 | 0x00,0x00,0x20,0x03,0xA0,0x02,0xA0,0x02,0xA0,0x02,0xC0,0x03, // 97 303 | 0x00,0x00,0xFC,0x03,0x20,0x02,0x20,0x02,0x20,0x02,0xC0,0x01, // 98 304 | 0x00,0x00,0xC0,0x01,0x20,0x02,0x20,0x02,0x20,0x02, // 99 305 | 0x00,0x00,0xC0,0x01,0x20,0x02,0x20,0x02,0x20,0x02,0xFC,0x03, // 100 306 | 0x00,0x00,0xC0,0x01,0xA0,0x02,0xA0,0x02,0xA0,0x02,0xC0,0x02, // 101 307 | 0x00,0x00,0x20,0x00,0xF8,0x03,0x24,0x00,0x24, // 102 308 | 0x00,0x00,0xC0,0x01,0x20,0x0A,0x20,0x0A,0x20,0x0A,0xE0,0x07, // 103 309 | 0x00,0x00,0xFC,0x03,0x40,0x00,0x20,0x00,0x20,0x00,0xC0,0x03, // 104 310 | 0x00,0x00,0x00,0x02,0x20,0x02,0xE4,0x03,0x00,0x02,0x00,0x02, // 105 311 | 0x00,0x00,0x20,0x08,0x20,0x08,0xE4,0x07, // 106 312 | 0x00,0x00,0xFC,0x03,0x80,0x00,0xC0,0x00,0x20,0x01,0x00,0x02, // 107 313 | 0x04,0x00,0x04,0x00,0xFC,0x01,0x00,0x02,0x00,0x02, // 108 314 | 0x00,0x00,0xE0,0x03,0x20,0x00,0xE0,0x03,0x20,0x00,0xE0,0x03, // 109 315 | 0x00,0x00,0xE0,0x03,0x40,0x00,0x20,0x00,0x20,0x00,0xC0,0x03, // 110 316 | 0x00,0x00,0xC0,0x01,0x20,0x02,0x20,0x02,0x20,0x02,0xC0,0x01, // 111 317 | 0x00,0x00,0xE0,0x0F,0x20,0x02,0x20,0x02,0x20,0x02,0xC0,0x01, // 112 318 | 0x00,0x00,0xC0,0x01,0x20,0x02,0x20,0x02,0x20,0x02,0xE0,0x0F, // 113 319 | 0x00,0x00,0x00,0x00,0xE0,0x03,0x20,0x00,0x20,0x00,0x60, // 114 320 | 0x00,0x00,0x40,0x02,0xA0,0x02,0xA0,0x02,0xA0,0x02,0xA0,0x01, // 115 321 | 0x00,0x00,0x20,0x00,0xF8,0x03,0x20,0x02,0x20,0x02, // 116 322 | 0x00,0x00,0xE0,0x01,0x00,0x02,0x00,0x02,0x00,0x02,0xE0,0x03, // 117 323 | 0x00,0x00,0x20,0x00,0xC0,0x01,0x00,0x02,0xC0,0x01,0x20, // 118 324 | 0x00,0x00,0x60,0x00,0x80,0x03,0x40,0x00,0x80,0x03,0x60, // 119 325 | 0x00,0x00,0x20,0x02,0x60,0x03,0x80,0x00,0x60,0x03,0x20,0x02, // 120 326 | 0x00,0x00,0x20,0x08,0xC0,0x08,0x00,0x07,0xC0,0x00,0x20, // 121 327 | 0x00,0x00,0x20,0x02,0x20,0x03,0xA0,0x02,0x60,0x02,0x20,0x02, // 122 328 | 0x00,0x00,0x40,0x00,0x40,0x00,0xBC,0x07,0x04,0x04, // 123 329 | 0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x0F, // 124 330 | 0x00,0x00,0x00,0x00,0x04,0x04,0xBC,0x07,0x40,0x00,0x40, // 125 331 | 0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x80,0x00,0x80, // 126 332 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 127 333 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 128 334 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 129 335 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 130 336 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 131 337 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 132 338 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 133 339 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 134 340 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 135 341 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 136 342 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 137 343 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 138 344 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 139 345 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 140 346 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 141 347 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 142 348 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 143 349 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 144 350 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 145 351 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 146 352 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 147 353 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 148 354 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 149 355 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 150 356 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 151 357 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 152 358 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 153 359 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 154 360 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 155 361 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 156 362 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 157 363 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 158 364 | 0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, // 159 365 | 0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x0F, // 161 366 | 0x00,0x00,0xC0,0x01,0x20,0x02,0xF0,0x0F,0x20,0x02, // 162 367 | 0x00,0x00,0x40,0x02,0xF0,0x03,0x48,0x02,0x48,0x02,0x08,0x02, // 163 368 | 0x00,0x00,0x10,0x01,0xE0,0x00,0xA0,0x00,0xE0,0x00,0x10,0x01, // 164 369 | 0x00,0x00,0xA8,0x00,0xB0,0x00,0xC0,0x03,0xB0,0x00,0xA8, // 165 370 | 0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x0F, // 166 371 | 0x00,0x00,0xD8,0x04,0xA8,0x04,0x68,0x05,0xC8,0x06, // 167 372 | 0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04, // 168 373 | 0xE0,0x00,0x18,0x03,0x68,0x02,0x98,0x02,0x98,0x03,0xE0, // 169 374 | 0x00,0x00,0x78,0x01,0x58,0x01,0x58,0x01,0x78,0x01, // 170 375 | 0x00,0x00,0xC0,0x00,0x20,0x01,0xC0,0x00,0x20,0x01, // 171 376 | 0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xC0, // 172 377 | 0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80, // 173 378 | 0xE0,0x00,0x18,0x03,0xF8,0x02,0x78,0x02,0xB8,0x03,0xE0, // 174 379 | 0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08, // 175 380 | 0x00,0x00,0x38,0x00,0x28,0x00,0x38, // 176 381 | 0x00,0x00,0x40,0x02,0x40,0x02,0xF0,0x03,0x40,0x02,0x40,0x02, // 177 382 | 0x00,0x00,0x00,0x00,0x48,0x00,0x68,0x00,0x58, // 178 383 | 0x00,0x00,0x00,0x00,0x48,0x00,0x58,0x00,0x68, // 179 384 | 0x00,0x00,0x00,0x00,0x08,0x00,0x04, // 180 385 | 0x00,0x00,0xE0,0x0F,0x00,0x02,0x00,0x02,0x00,0x02,0xE0,0x03, // 181 386 | 0x00,0x00,0x30,0x00,0x78,0x00,0xF8,0x07,0x08,0x00,0xF8,0x07, // 182 387 | 0x00,0x00,0x00,0x00,0xC0, // 183 388 | 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x0C, // 184 389 | 0x00,0x00,0x00,0x00,0x48,0x00,0x78,0x00,0x40, // 185 390 | 0x00,0x00,0x30,0x01,0x48,0x01,0x48,0x01,0x30,0x01, // 186 391 | 0x00,0x00,0x20,0x01,0xC0,0x00,0x20,0x01,0xC0, // 187 392 | 0x80,0x00,0xA4,0x00,0xFC,0x06,0x60,0x06,0x40,0x0F,0x00,0x04, // 188 393 | 0x80,0x00,0xA4,0x00,0xFC,0x00,0x60,0x09,0x40,0x0D,0x00,0x0B, // 189 394 | 0x80,0x00,0xA4,0x00,0xEC,0x06,0x74,0x06,0x40,0x0F,0x00,0x04, // 190 395 | 0x00,0x00,0x00,0x0C,0x00,0x0A,0xA0,0x09,0x00,0x08, // 191 396 | 0x00,0x00,0x00,0x03,0xE1,0x00,0x9A,0x00,0xE0,0x00,0x00,0x03, // 192 397 | 0x00,0x00,0x00,0x03,0xE0,0x00,0x9A,0x00,0xE1,0x00,0x00,0x03, // 193 398 | 0x00,0x00,0x00,0x03,0xE2,0x00,0x99,0x00,0xE2,0x00,0x00,0x03, // 194 399 | 0x00,0x00,0x00,0x03,0xE3,0x00,0x9A,0x00,0xE1,0x00,0x00,0x03, // 195 400 | 0x00,0x00,0x00,0x03,0xE2,0x00,0x98,0x00,0xE2,0x00,0x00,0x03, // 196 401 | 0x00,0x00,0x00,0x03,0xE6,0x00,0x9A,0x00,0xE6,0x00,0x00,0x03, // 197 402 | 0x00,0x03,0xE0,0x00,0x98,0x00,0xF8,0x03,0x48,0x02,0x48,0x02, // 198 403 | 0x00,0x00,0xF0,0x01,0x18,0x0B,0x08,0x0E,0x08,0x02,0x18,0x03, // 199 404 | 0x00,0x00,0xF8,0x03,0x49,0x02,0x4A,0x02,0x48,0x02,0x48,0x02, // 200 405 | 0x00,0x00,0xF8,0x03,0x48,0x02,0x4A,0x02,0x49,0x02,0x48,0x02, // 201 406 | 0x00,0x00,0xF8,0x03,0x4A,0x02,0x49,0x02,0x4A,0x02,0x48,0x02, // 202 407 | 0x00,0x00,0xF8,0x03,0x4A,0x02,0x48,0x02,0x4A,0x02,0x48,0x02, // 203 408 | 0x00,0x00,0x08,0x02,0x09,0x02,0xFA,0x03,0x08,0x02,0x08,0x02, // 204 409 | 0x00,0x00,0x08,0x02,0x08,0x02,0xFA,0x03,0x09,0x02,0x08,0x02, // 205 410 | 0x00,0x00,0x08,0x02,0x0A,0x02,0xF9,0x03,0x0A,0x02,0x08,0x02, // 206 411 | 0x00,0x00,0x08,0x02,0x0A,0x02,0xF8,0x03,0x0A,0x02,0x08,0x02, // 207 412 | 0x40,0x00,0xF8,0x03,0x48,0x02,0x08,0x02,0x18,0x03,0xF0,0x01, // 208 413 | 0x00,0x00,0xF8,0x03,0x33,0x00,0x42,0x00,0x81,0x01,0xF8,0x03, // 209 414 | 0x00,0x00,0xF0,0x01,0x09,0x02,0x0A,0x02,0x08,0x02,0xF0,0x01, // 210 415 | 0x00,0x00,0xF0,0x01,0x08,0x02,0x0A,0x02,0x09,0x02,0xF0,0x01, // 211 416 | 0x00,0x00,0xF0,0x01,0x0A,0x02,0x09,0x02,0x0A,0x02,0xF0,0x01, // 212 417 | 0x00,0x00,0xF0,0x01,0x0B,0x02,0x0A,0x02,0x09,0x02,0xF0,0x01, // 213 418 | 0x00,0x00,0xF0,0x01,0x0A,0x02,0x08,0x02,0x0A,0x02,0xF0,0x01, // 214 419 | 0x00,0x00,0x20,0x02,0x40,0x01,0x80,0x00,0x40,0x01,0x20,0x02, // 215 420 | 0x00,0x02,0xF0,0x01,0x88,0x02,0x48,0x02,0x28,0x02,0xF8,0x01, // 216 421 | 0x00,0x00,0xF8,0x01,0x01,0x02,0x02,0x02,0x00,0x02,0xF8,0x01, // 217 422 | 0x00,0x00,0xF8,0x01,0x00,0x02,0x02,0x02,0x01,0x02,0xF8,0x01, // 218 423 | 0x00,0x00,0xF8,0x01,0x02,0x02,0x01,0x02,0x02,0x02,0xF8,0x01, // 219 424 | 0x00,0x00,0xF8,0x01,0x02,0x02,0x00,0x02,0x02,0x02,0xF8,0x01, // 220 425 | 0x00,0x00,0x08,0x00,0x30,0x00,0xC2,0x03,0x31,0x00,0x08, // 221 426 | 0x00,0x00,0xF8,0x03,0x90,0x00,0x90,0x00,0x90,0x00,0x60, // 222 427 | 0x00,0x00,0xF8,0x03,0x04,0x00,0x74,0x02,0x98,0x02,0x80,0x03, // 223 428 | 0x00,0x00,0x24,0x03,0xA8,0x02,0xA0,0x02,0xA0,0x02,0xC0,0x03, // 224 429 | 0x00,0x00,0x20,0x03,0xA8,0x02,0xA4,0x02,0xA0,0x02,0xC0,0x03, // 225 430 | 0x00,0x00,0x28,0x03,0xA4,0x02,0xA8,0x02,0xA0,0x02,0xC0,0x03, // 226 431 | 0x00,0x00,0x28,0x03,0xA4,0x02,0xA8,0x02,0xA4,0x02,0xC0,0x03, // 227 432 | 0x00,0x00,0x20,0x03,0xA4,0x02,0xA0,0x02,0xA4,0x02,0xC0,0x03, // 228 433 | 0x00,0x00,0x20,0x03,0xAE,0x02,0xAA,0x02,0xAE,0x02,0xC0,0x03, // 229 434 | 0x00,0x00,0xA0,0x03,0xA0,0x02,0xC0,0x01,0xA0,0x02,0xE0,0x02, // 230 435 | 0x00,0x00,0xC0,0x01,0x20,0x02,0x20,0x0A,0x20,0x0E, // 231 436 | 0x00,0x00,0xC4,0x01,0xA8,0x02,0xA0,0x02,0xA0,0x02,0xC0,0x02, // 232 437 | 0x00,0x00,0xC0,0x01,0xA8,0x02,0xA4,0x02,0xA0,0x02,0xC0,0x02, // 233 438 | 0x00,0x00,0xC8,0x01,0xA4,0x02,0xA8,0x02,0xA0,0x02,0xC0,0x02, // 234 439 | 0x00,0x00,0xC0,0x01,0xA4,0x02,0xA0,0x02,0xA4,0x02,0xC0,0x02, // 235 440 | 0x00,0x00,0x04,0x02,0x28,0x02,0xE0,0x03,0x00,0x02,0x00,0x02, // 236 441 | 0x00,0x00,0x00,0x02,0x28,0x02,0xE4,0x03,0x00,0x02,0x00,0x02, // 237 442 | 0x00,0x00,0x08,0x02,0x24,0x02,0xE8,0x03,0x00,0x02,0x00,0x02, // 238 443 | 0x00,0x00,0x00,0x02,0x24,0x02,0xE0,0x03,0x04,0x02,0x00,0x02, // 239 444 | 0x00,0x00,0xC0,0x01,0x2C,0x02,0x28,0x02,0x38,0x02,0xE0,0x01, // 240 445 | 0x00,0x00,0xE8,0x03,0x44,0x00,0x28,0x00,0x24,0x00,0xC0,0x03, // 241 446 | 0x00,0x00,0xC4,0x01,0x28,0x02,0x20,0x02,0x20,0x02,0xC0,0x01, // 242 447 | 0x00,0x00,0xC0,0x01,0x28,0x02,0x24,0x02,0x20,0x02,0xC0,0x01, // 243 448 | 0x00,0x00,0xC0,0x01,0x28,0x02,0x24,0x02,0x28,0x02,0xC0,0x01, // 244 449 | 0x00,0x00,0xC8,0x01,0x24,0x02,0x2C,0x02,0x28,0x02,0xC4,0x01, // 245 450 | 0x00,0x00,0xC0,0x01,0x24,0x02,0x20,0x02,0x24,0x02,0xC0,0x01, // 246 451 | 0x40,0x00,0x40,0x00,0x50,0x01,0x40,0x00,0x40, // 247 452 | 0x00,0x00,0xC0,0x03,0x20,0x03,0xA0,0x02,0x60,0x02,0xE0,0x01, // 248 453 | 0x00,0x00,0xE4,0x01,0x08,0x02,0x00,0x02,0x00,0x02,0xE0,0x03, // 249 454 | 0x00,0x00,0xE0,0x01,0x08,0x02,0x04,0x02,0x00,0x02,0xE0,0x03, // 250 455 | 0x00,0x00,0xE0,0x01,0x08,0x02,0x04,0x02,0x08,0x02,0xE0,0x03, // 251 456 | 0x00,0x00,0xE0,0x01,0x04,0x02,0x00,0x02,0x04,0x02,0xE0,0x03, // 252 457 | 0x00,0x00,0x20,0x08,0xC8,0x08,0x04,0x07,0xC0,0x00,0x20, // 253 458 | 0x00,0x00,0xFC,0x0F,0x20,0x02,0x20,0x02,0x20,0x02,0xC0,0x01, // 254 459 | 0x00,0x00,0x20,0x08,0xC4,0x08,0x00,0x07,0xC4,0x00,0x20 // 255 460 | }; 461 | 462 | #endif 463 | 464 | #define icons_width 128 465 | #define icons_height 64 466 | static unsigned char icons_bits[] = { 467 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 468 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 469 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 470 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 471 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 472 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 473 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 474 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 475 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 476 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 477 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 478 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 479 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 480 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 481 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 482 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 483 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 484 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 485 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 486 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 487 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 488 | 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 489 | 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 490 | 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 491 | 0x5e, 0xf4, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x82, 492 | 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 493 | 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xf4, 0x00, 0x00, 494 | 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 495 | 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0xba, 496 | 0x00, 0x00, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 497 | 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 498 | 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 499 | 0x40, 0x05, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x82, 500 | 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xfb, 0x00, 501 | 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0x00, 0x00, 502 | 0x00, 0xe0, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00, 503 | 0x00, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe, 504 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 505 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 506 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 507 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 508 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 509 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 510 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 511 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 512 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 513 | 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 514 | 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 515 | 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x03, 516 | 0x01, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 517 | 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0x00, 0x00, 518 | 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 519 | 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x30, 520 | 0x04, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 521 | 0x00, 0x00, 0x80, 0x30, 0x04, 0x00, 0x00, 0x00, 0x60, 0x18, 0x00, 0x00, 522 | 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 523 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x80, 0x00, 524 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x30, 0x00, 525 | 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 526 | 0x00, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 527 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 528 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 529 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 530 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 531 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 532 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 533 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 534 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 535 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 536 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 537 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 538 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 539 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 540 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 541 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 542 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 543 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 544 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 545 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 546 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 547 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 548 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 549 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 550 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 551 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 552 | 0x00, 0x00, 0x00, 0x00 }; 553 | 554 | #define DevKitty_icons_width 128 555 | #define DevKitty_icons_height 64 556 | static unsigned char DevKitty_icons_bits[] = { 557 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 558 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 559 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 560 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 561 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 562 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 563 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 564 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 565 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 566 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 567 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 568 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 569 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 570 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 571 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 572 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 573 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 574 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 575 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 576 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 577 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 578 | 0x00, 0x7e, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x00, 579 | 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x40, 0x04, 0x00, 0x00, 580 | 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x7f, 0x00, 581 | 0x5e, 0xf4, 0x00, 0x00, 0x00, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 582 | 0x0f, 0x00, 0xf0, 0x00, 0x21, 0x08, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 583 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xf4, 0x00, 0x00, 584 | 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 585 | 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x20, 586 | 0x81, 0xff, 0x81, 0x03, 0x40, 0x04, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x00, 587 | 0x00, 0x00, 0x00, 0x20, 0xe2, 0xff, 0x87, 0x04, 0x80, 0x03, 0x00, 0x00, 588 | 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x30, 0x72, 0x00, 0x4e, 0x04, 589 | 0x40, 0x05, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x10, 590 | 0x02, 0x00, 0x40, 0x0c, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xfb, 0x00, 591 | 0x00, 0x00, 0x00, 0x10, 0x06, 0x3c, 0x20, 0x08, 0x20, 0x09, 0x00, 0x00, 592 | 0x00, 0xe0, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x90, 0x04, 0x3c, 0x20, 0x09, 593 | 0x00, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x90, 594 | 0x05, 0x00, 0x10, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 595 | 0x00, 0x00, 0x00, 0x90, 0x09, 0x00, 0x90, 0x13, 0x00, 0x00, 0x00, 0x00, 596 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x09, 0xf8, 0x9b, 0x13, 597 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 598 | 0xf8, 0x07, 0x8c, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 599 | 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 600 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 601 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 602 | 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 603 | 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 604 | 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x20, 605 | 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x04, 606 | 0x00, 0x00, 0x00, 0x20, 0xf0, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 607 | 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x60, 0x18, 0x60, 0x00, 0x00, 608 | 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0xc0, 609 | 0x08, 0x40, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 610 | 0x30, 0x00, 0x06, 0xc0, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x20, 0x0c, 0x01, 611 | 0x00, 0x00, 0x00, 0x02, 0x30, 0x00, 0x06, 0x40, 0x60, 0x18, 0x00, 0x00, 612 | 0x00, 0x20, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 613 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0xe0, 0x03, 614 | 0x00, 0x1c, 0x00, 0xc0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 615 | 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 616 | 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x49, 0x00, 0x80, 617 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x00, 0xe0, 0x07, 618 | 0x00, 0x3e, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 619 | 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 620 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 621 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 622 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 623 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 624 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 625 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 626 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 627 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 628 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 629 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 630 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 631 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 632 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 633 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 634 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 635 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 636 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 637 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 638 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 639 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 640 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 641 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 642 | 0x00, 0x00, 0x00, 0x00 }; 643 | 644 | #define splash_width 128 645 | #define splash_height 64 646 | static unsigned char splash_bits[] = { 647 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 648 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 649 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 650 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 651 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 652 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 653 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 654 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 655 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 656 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 657 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 658 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 659 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 660 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 661 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 662 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 663 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 664 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 665 | 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 666 | 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 667 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x00, 668 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 669 | 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 670 | 0x00, 0x00, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 671 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x00, 0x00, 672 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 673 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 674 | 0xc3, 0x00, 0x00, 0x7e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 675 | 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x00, 0x00, 0xfe, 0x00, 0x06, 0x00, 0x00, 676 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x00, 0x00, 0xc6, 677 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 678 | 0xc3, 0x70, 0xe0, 0x86, 0xe3, 0x66, 0x8c, 0x83, 0x03, 0x00, 0x00, 0x00, 679 | 0x00, 0x00, 0x00, 0x0c, 0xc3, 0xf8, 0xf1, 0x06, 0xf3, 0x66, 0xcc, 0xc7, 680 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x8c, 0x33, 0x06, 681 | 0x33, 0x66, 0x6c, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 682 | 0xc3, 0x0c, 0x33, 0x06, 0x33, 0xc6, 0x66, 0xcc, 0x00, 0x00, 0x00, 0x00, 683 | 0x00, 0x00, 0x00, 0x0c, 0xc3, 0x0c, 0x33, 0x86, 0x33, 0xc6, 0xe6, 0xcf, 684 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0xe7, 0x8c, 0x33, 0xc6, 685 | 0x31, 0xc6, 0x66, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 686 | 0x7f, 0xfc, 0x33, 0xfe, 0x30, 0x86, 0xe3, 0xc7, 0x00, 0x00, 0x00, 0x00, 687 | 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x78, 0x33, 0x7e, 0x30, 0x86, 0xc3, 0xc7, 688 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 689 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 690 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 691 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 692 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 693 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 694 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 695 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 696 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 697 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 698 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 699 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 700 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 701 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 702 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 703 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 704 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 705 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 706 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 707 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 708 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 709 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 710 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 711 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 712 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 713 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 714 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 715 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 716 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 717 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 718 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 719 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 720 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 721 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 722 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 723 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 724 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 725 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 726 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 727 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 728 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 729 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 730 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 731 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 732 | 0x00, 0x00, 0x00, 0x00 }; 733 | -------------------------------------------------------------------------------- /src/arduino-cli.yaml: -------------------------------------------------------------------------------- 1 | board_manager: 2 | additional_urls: ["https://arduino.esp8266.com/stable/package_esp8266com_index.json"] 3 | daemon: 4 | port: "50051" 5 | directories: 6 | data: /root/.arduino15 7 | downloads: /root/.arduino15/staging 8 | user: /root/Arduino 9 | library: 10 | enable_unsafe_install: true 11 | logging: 12 | file: "" 13 | format: text 14 | level: info 15 | metrics: 16 | addr: :9090 17 | enabled: true 18 | output: 19 | no_color: false 20 | sketch: 21 | always_export_binaries: false 22 | updater: 23 | enable_notification: true 24 | 25 | -------------------------------------------------------------------------------- /src/makefile: -------------------------------------------------------------------------------- 1 | PORT ?= /dev/ttyUSB0 2 | IMAGE_NAME = dnsdriveby 3 | CONTAINER_NAME := $(IMAGE_NAME)-$(shell date +%s) 4 | 5 | submodules: 6 | git submodule init 7 | git submodule update 8 | 9 | build: 10 | echo "#define CANARYTOKEN_URL \"$(canaryurl)\"" > ./Demo/Vars.h 11 | docker build . --file Dockerfile --tag dnsdriveby 12 | 13 | flash: check_port build 14 | docker create --name $(CONTAINER_NAME) --device=$(PORT) -t dnsdriveby:latest 15 | docker start $(CONTAINER_NAME) 16 | docker exec $(CONTAINER_NAME) bash -c \ 17 | './arduino-cli upload -b esp8266:esp8266:d1_mini --port $(PORT) Demo/ && sleep 2' 18 | docker rm --force $(CONTAINER_NAME) 19 | 20 | check_port: 21 | @ls $(PORT) || { echo "Device not found at $(PORT). Run with 'make flash PORT='" && exit 1; } 22 | -------------------------------------------------------------------------------- /v1.5_Cutie-Wardriver_ESP32-C3.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevKitty-io/Wardriver/9466f44b9f4e864ff52a60b54b98b4542f02d8c6/v1.5_Cutie-Wardriver_ESP32-C3.bin --------------------------------------------------------------------------------