kopia lustrzana https://github.com/meshtastic/firmware
				
				
				
			Merge branch 'master' into raspi-portduino
						commit
						7d0bea267a
					
				|  | @ -73,6 +73,7 @@ jobs: | |||
|           - board: m5stack-coreink | ||||
|           - board: tbeam-s3-core | ||||
|           - board: tlora-t3s3-v1 | ||||
|           - board: nano-g1-explorer | ||||
|     uses: ./.github/workflows/build_esp32.yml | ||||
|     with: | ||||
|       board: ${{ matrix.board }} | ||||
|  | @ -92,16 +93,16 @@ jobs: | |||
|     with: | ||||
|       board: ${{ matrix.board }} | ||||
| 
 | ||||
|   build-rpi2040: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       max-parallel: 2 | ||||
|       matrix: | ||||
|         include: | ||||
|           - board: pico | ||||
|     uses: ./.github/workflows/build_rpi2040.yml | ||||
|     with: | ||||
|       board: ${{ matrix.board }} | ||||
|   # build-rpi2040: | ||||
|   #   strategy: | ||||
|   #     fail-fast: false | ||||
|   #     max-parallel: 2 | ||||
|   #     matrix: | ||||
|   #       include: | ||||
|   #         - board: pico | ||||
|   #   uses: ./.github/workflows/build_rpi2040.yml | ||||
|   #   with: | ||||
|   #     board: ${{ matrix.board }} | ||||
| 
 | ||||
|   build-native: | ||||
|     runs-on: ubuntu-latest | ||||
|  | @ -175,7 +176,7 @@ jobs: | |||
| 
 | ||||
|   gather-artifacts: | ||||
|     runs-on: ubuntu-latest | ||||
|     needs: [build-esp32, build-nrf52, build-native, build-rpi2040] | ||||
|     needs: [build-esp32, build-nrf52, build-native] #, build-rpi2040] | ||||
|     steps: | ||||
|       - name: Checkout code | ||||
|         uses: actions/checkout@v3 | ||||
|  |  | |||
|  | @ -1 +1 @@ | |||
| Subproject commit cb01d7472fc22321652a5471155dfc6c04a612ab | ||||
| Subproject commit 05f49816cd8d7d405e052753f0aee8275cf33d36 | ||||
|  | @ -2,6 +2,6 @@ | |||
| #ifdef USE_RF95 | ||||
| #define RF95_RESET LORA_RESET | ||||
| #define RF95_IRQ LORA_DIO0  // on SX1262 version this is a no connect DIO0
 | ||||
| #define RF95_DIO1 LORA_DIO1 // Note: not really used for RF95
 | ||||
| #define RF95_DIO1 LORA_DIO1 // Note: not really used for RF95, but used for pure SX127x
 | ||||
| #define RF95_DIO2 LORA_DIO2 // Note: not really used for RF95
 | ||||
| #endif | ||||
|  | @ -50,6 +50,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
| #include "fonts/OLEDDisplayFontsRU.h" | ||||
| #endif | ||||
| 
 | ||||
| #ifdef OLED_UA | ||||
| #include "fonts/OLEDDisplayFontsUA.h" | ||||
| #endif | ||||
| 
 | ||||
| using namespace meshtastic; /** @todo remove */ | ||||
| 
 | ||||
| namespace graphics | ||||
|  | @ -106,8 +110,12 @@ static uint16_t displayWidth, displayHeight; | |||
| #ifdef OLED_RU | ||||
| #define FONT_SMALL ArialMT_Plain_10_RU | ||||
| #else | ||||
| #ifdef OLED_UA | ||||
| #define FONT_SMALL ArialMT_Plain_10_UA | ||||
| #else | ||||
| #define FONT_SMALL ArialMT_Plain_10 // Height: 13
 | ||||
| #endif | ||||
| #endif | ||||
| #define FONT_MEDIUM ArialMT_Plain_16 // Height: 19
 | ||||
| #define FONT_LARGE ArialMT_Plain_24  // Height: 28
 | ||||
| #endif | ||||
|  |  | |||
|  | @ -240,6 +240,12 @@ class Screen : public concurrency::OSThread | |||
|         // library have empty chars for non-latin ASCII symbols
 | ||||
|         case 0xD0: { | ||||
|             SKIPREST = false; | ||||
|             if (ch == 132) | ||||
|                 return (uint8_t)(170); // Є
 | ||||
|             if (ch == 134) | ||||
|                 return (uint8_t)(178); // І
 | ||||
|             if (ch == 135) | ||||
|                 return (uint8_t)(175); // Ї
 | ||||
|             if (ch == 129) | ||||
|                 return (uint8_t)(168); // Ё
 | ||||
|             if (ch > 143 && ch < 192) | ||||
|  | @ -248,12 +254,26 @@ class Screen : public concurrency::OSThread | |||
|         } | ||||
|         case 0xD1: { | ||||
|             SKIPREST = false; | ||||
|             if (ch == 148) | ||||
|                 return (uint8_t)(186); // є
 | ||||
|             if (ch == 150) | ||||
|                 return (uint8_t)(179); // і
 | ||||
|             if (ch == 151) | ||||
|                 return (uint8_t)(191); // ї
 | ||||
|             if (ch == 145) | ||||
|                 return (uint8_t)(184); // ё
 | ||||
|             if (ch > 127 && ch < 144) | ||||
|                 return (uint8_t)(ch + 112); | ||||
|             break; | ||||
|         } | ||||
|         case 0xD2: { | ||||
|             SKIPREST = false; | ||||
|             if (ch == 144) | ||||
|                 return (uint8_t)(165); // Ґ
 | ||||
|             if (ch == 145) | ||||
|                 return (uint8_t)(180); // ґ
 | ||||
|             break; | ||||
|         } | ||||
|         } | ||||
| 
 | ||||
|         // We want to strip out prefix chars for two-byte char formats
 | ||||
|  |  | |||
|  | @ -0,0 +1,424 @@ | |||
| #include "OLEDDisplayFontsUA.h" | ||||
| 
 | ||||
| // Font generated or edited with the glyphEditor
 | ||||
| const uint8_t ArialMT_Plain_10_UA[] PROGMEM = { | ||||
|     0x0A, // Width: 10
 | ||||
|     0x0D, // Height: 13
 | ||||
|     0x20, // First char: 32
 | ||||
|     0xE0, // Number of chars: 224
 | ||||
|     // Jump Table:
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 32
 | ||||
|     0x00, 0x00, 0x04, 0x03, // 33
 | ||||
|     0x00, 0x04, 0x05, 0x04, // 34
 | ||||
|     0x00, 0x09, 0x09, 0x06, // 35
 | ||||
|     0x00, 0x12, 0x0A, 0x06, // 36
 | ||||
|     0x00, 0x1C, 0x10, 0x09, // 37
 | ||||
|     0x00, 0x2C, 0x0E, 0x08, // 38
 | ||||
|     0x00, 0x3A, 0x01, 0x02, // 39
 | ||||
|     0x00, 0x3B, 0x06, 0x04, // 40
 | ||||
|     0x00, 0x41, 0x06, 0x04, // 41
 | ||||
|     0x00, 0x47, 0x05, 0x04, // 42
 | ||||
|     0x00, 0x4C, 0x09, 0x06, // 43
 | ||||
|     0x00, 0x55, 0x04, 0x03, // 44
 | ||||
|     0x00, 0x59, 0x03, 0x03, // 45
 | ||||
|     0x00, 0x5C, 0x04, 0x03, // 46
 | ||||
|     0x00, 0x60, 0x05, 0x04, // 47
 | ||||
|     0x00, 0x65, 0x0A, 0x06, // 48
 | ||||
|     0x00, 0x6F, 0x08, 0x05, // 49
 | ||||
|     0x00, 0x77, 0x0A, 0x06, // 50
 | ||||
|     0x00, 0x81, 0x0A, 0x06, // 51
 | ||||
|     0x00, 0x8B, 0x0B, 0x07, // 52
 | ||||
|     0x00, 0x96, 0x0A, 0x06, // 53
 | ||||
|     0x00, 0xA0, 0x0A, 0x06, // 54
 | ||||
|     0x00, 0xAA, 0x09, 0x06, // 55
 | ||||
|     0x00, 0xB3, 0x0A, 0x06, // 56
 | ||||
|     0x00, 0xBD, 0x0A, 0x06, // 57
 | ||||
|     0x00, 0xC7, 0x04, 0x03, // 58
 | ||||
|     0x00, 0xCB, 0x04, 0x03, // 59
 | ||||
|     0x00, 0xCF, 0x0A, 0x06, // 60
 | ||||
|     0x00, 0xD9, 0x09, 0x06, // 61
 | ||||
|     0x00, 0xE2, 0x09, 0x06, // 62
 | ||||
|     0x00, 0xEB, 0x0B, 0x07, // 63
 | ||||
|     0x00, 0xF6, 0x14, 0x0B, // 64
 | ||||
|     0x01, 0x0A, 0x0E, 0x08, // 65
 | ||||
|     0x01, 0x18, 0x0C, 0x07, // 66
 | ||||
|     0x01, 0x24, 0x0C, 0x07, // 67
 | ||||
|     0x01, 0x30, 0x0B, 0x07, // 68
 | ||||
|     0x01, 0x3B, 0x0C, 0x07, // 69
 | ||||
|     0x01, 0x47, 0x09, 0x06, // 70
 | ||||
|     0x01, 0x50, 0x0D, 0x08, // 71
 | ||||
|     0x01, 0x5D, 0x0C, 0x07, // 72
 | ||||
|     0x01, 0x69, 0x04, 0x03, // 73
 | ||||
|     0x01, 0x6D, 0x08, 0x05, // 74
 | ||||
|     0x01, 0x75, 0x0E, 0x08, // 75
 | ||||
|     0x01, 0x83, 0x0C, 0x07, // 76
 | ||||
|     0x01, 0x8F, 0x10, 0x09, // 77
 | ||||
|     0x01, 0x9F, 0x0C, 0x07, // 78
 | ||||
|     0x01, 0xAB, 0x0E, 0x08, // 79
 | ||||
|     0x01, 0xB9, 0x0B, 0x07, // 80
 | ||||
|     0x01, 0xC4, 0x0E, 0x08, // 81
 | ||||
|     0x01, 0xD2, 0x0C, 0x07, // 82
 | ||||
|     0x01, 0xDE, 0x0C, 0x07, // 83
 | ||||
|     0x01, 0xEA, 0x0B, 0x07, // 84
 | ||||
|     0x01, 0xF5, 0x0C, 0x07, // 85
 | ||||
|     0x02, 0x01, 0x0D, 0x08, // 86
 | ||||
|     0x02, 0x0E, 0x11, 0x0A, // 87
 | ||||
|     0x02, 0x1F, 0x0E, 0x08, // 88
 | ||||
|     0x02, 0x2D, 0x0D, 0x08, // 89
 | ||||
|     0x02, 0x3A, 0x0C, 0x07, // 90
 | ||||
|     0x02, 0x46, 0x06, 0x04, // 91
 | ||||
|     0x02, 0x4C, 0x06, 0x04, // 92
 | ||||
|     0x02, 0x52, 0x04, 0x03, // 93
 | ||||
|     0x02, 0x56, 0x09, 0x06, // 94
 | ||||
|     0x02, 0x5F, 0x0C, 0x07, // 95
 | ||||
|     0x02, 0x6B, 0x03, 0x03, // 96
 | ||||
|     0x02, 0x6E, 0x0A, 0x06, // 97
 | ||||
|     0x02, 0x78, 0x0A, 0x06, // 98
 | ||||
|     0x02, 0x82, 0x0A, 0x06, // 99
 | ||||
|     0x02, 0x8C, 0x0A, 0x06, // 100
 | ||||
|     0x02, 0x96, 0x0A, 0x06, // 101
 | ||||
|     0x02, 0xA0, 0x05, 0x04, // 102
 | ||||
|     0x02, 0xA5, 0x0A, 0x06, // 103
 | ||||
|     0x02, 0xAF, 0x0A, 0x06, // 104
 | ||||
|     0x02, 0xB9, 0x04, 0x03, // 105
 | ||||
|     0x02, 0xBD, 0x04, 0x03, // 106
 | ||||
|     0x02, 0xC1, 0x08, 0x05, // 107
 | ||||
|     0x02, 0xC9, 0x04, 0x03, // 108
 | ||||
|     0x02, 0xCD, 0x10, 0x09, // 109
 | ||||
|     0x02, 0xDD, 0x0A, 0x06, // 110
 | ||||
|     0x02, 0xE7, 0x0A, 0x06, // 111
 | ||||
|     0x02, 0xF1, 0x0A, 0x06, // 112
 | ||||
|     0x02, 0xFB, 0x0A, 0x06, // 113
 | ||||
|     0x03, 0x05, 0x05, 0x04, // 114
 | ||||
|     0x03, 0x0A, 0x08, 0x05, // 115
 | ||||
|     0x03, 0x12, 0x06, 0x04, // 116
 | ||||
|     0x03, 0x18, 0x0A, 0x06, // 117
 | ||||
|     0x03, 0x22, 0x09, 0x06, // 118
 | ||||
|     0x03, 0x2B, 0x0E, 0x08, // 119
 | ||||
|     0x03, 0x39, 0x0A, 0x06, // 120
 | ||||
|     0x03, 0x43, 0x09, 0x06, // 121
 | ||||
|     0x03, 0x4C, 0x0A, 0x06, // 122
 | ||||
|     0x03, 0x56, 0x06, 0x04, // 123
 | ||||
|     0x03, 0x5C, 0x04, 0x03, // 124
 | ||||
|     0x03, 0x60, 0x05, 0x04, // 125
 | ||||
|     0x03, 0x65, 0x09, 0x06, // 126
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 127
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 128
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 129
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 130
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 131
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 132
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 133
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 134
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 135
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 136
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 137
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 138
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 139
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 140
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 141
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 142
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 143
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 144
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 145
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 146
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 147
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 148
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 149
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 150
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 151
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 152
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 153
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 154
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 155
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 156
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 157
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 158
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 159
 | ||||
|     0xFF, 0xFF, 0x00, 0x0A, // 160
 | ||||
|     0x03, 0x6E, 0x04, 0x03, // 161
 | ||||
|     0x03, 0x72, 0x0A, 0x06, // 162
 | ||||
|     0x03, 0x7C, 0x0C, 0x07, // 163
 | ||||
|     0x03, 0x88, 0x0A, 0x06, // 164
 | ||||
|     0x03, 0x92, 0x09, 0x06, // 165
 | ||||
|     0x03, 0x9B, 0x04, 0x03, // 166
 | ||||
|     0x03, 0x9F, 0x0A, 0x06, // 167
 | ||||
|     0x03, 0xA9, 0x0C, 0x07, // 168
 | ||||
|     0x03, 0xB5, 0x0D, 0x08, // 169
 | ||||
|     0x03, 0xC2, 0x0C, 0x07, // 170
 | ||||
|     0x03, 0xCE, 0x0A, 0x06, // 171
 | ||||
|     0x03, 0xD8, 0x09, 0x06, // 172
 | ||||
|     0x03, 0xE1, 0x03, 0x03, // 173
 | ||||
|     0x03, 0xE4, 0x0D, 0x08, // 174
 | ||||
|     0x03, 0xF1, 0x0C, 0x07, // 175
 | ||||
|     0x03, 0xFD, 0x07, 0x05, // 176
 | ||||
|     0x04, 0x04, 0x0A, 0x06, // 177
 | ||||
|     0x04, 0x0E, 0x0C, 0x07, // 178
 | ||||
|     0x04, 0x1A, 0x0C, 0x07, // 179
 | ||||
|     0x04, 0x26, 0x07, 0x05, // 180
 | ||||
|     0x04, 0x2D, 0x0A, 0x06, // 181
 | ||||
|     0x04, 0x37, 0x09, 0x06, // 182
 | ||||
|     0x04, 0x40, 0x03, 0x03, // 183
 | ||||
|     0x04, 0x43, 0x0B, 0x07, // 184
 | ||||
|     0x04, 0x4E, 0x0B, 0x07, // 185
 | ||||
|     0x04, 0x59, 0x0C, 0x07, // 186
 | ||||
|     0x04, 0x65, 0x0A, 0x06, // 187
 | ||||
|     0x04, 0x6F, 0x10, 0x09, // 188
 | ||||
|     0x04, 0x7F, 0x10, 0x09, // 189
 | ||||
|     0x04, 0x8F, 0x10, 0x09, // 190
 | ||||
|     0x04, 0x9F, 0x0A, 0x06, // 191
 | ||||
|     0x04, 0xA9, 0x0C, 0x07, // 192
 | ||||
|     0x04, 0xB5, 0x0C, 0x07, // 193
 | ||||
|     0x04, 0xC1, 0x0C, 0x07, // 194
 | ||||
|     0x04, 0xCD, 0x0B, 0x07, // 195
 | ||||
|     0x04, 0xD8, 0x0C, 0x07, // 196
 | ||||
|     0x04, 0xE4, 0x0C, 0x07, // 197
 | ||||
|     0x04, 0xF0, 0x0C, 0x07, // 198
 | ||||
|     0x04, 0xFC, 0x0C, 0x07, // 199
 | ||||
|     0x05, 0x08, 0x0C, 0x07, // 200
 | ||||
|     0x05, 0x14, 0x0C, 0x07, // 201
 | ||||
|     0x05, 0x20, 0x0C, 0x07, // 202
 | ||||
|     0x05, 0x2C, 0x0C, 0x07, // 203
 | ||||
|     0x05, 0x38, 0x0C, 0x07, // 204
 | ||||
|     0x05, 0x44, 0x0C, 0x07, // 205
 | ||||
|     0x05, 0x50, 0x0C, 0x07, // 206
 | ||||
|     0x05, 0x5C, 0x0C, 0x07, // 207
 | ||||
|     0x05, 0x68, 0x0B, 0x07, // 208
 | ||||
|     0x05, 0x73, 0x0C, 0x07, // 209
 | ||||
|     0x05, 0x7F, 0x0B, 0x07, // 210
 | ||||
|     0x05, 0x8A, 0x0C, 0x07, // 211
 | ||||
|     0x05, 0x96, 0x0B, 0x07, // 212
 | ||||
|     0x05, 0xA1, 0x0C, 0x07, // 213
 | ||||
|     0x05, 0xAD, 0x0C, 0x07, // 214
 | ||||
|     0x05, 0xB9, 0x0C, 0x07, // 215
 | ||||
|     0x05, 0xC5, 0x0C, 0x07, // 216
 | ||||
|     0x05, 0xD1, 0x0E, 0x08, // 217
 | ||||
|     0x05, 0xDF, 0x0C, 0x07, // 218
 | ||||
|     0x05, 0xEB, 0x0C, 0x07, // 219
 | ||||
|     0x05, 0xF7, 0x0C, 0x07, // 220
 | ||||
|     0x06, 0x03, 0x0C, 0x07, // 221
 | ||||
|     0x06, 0x0F, 0x0C, 0x07, // 222
 | ||||
|     0x06, 0x1B, 0x0C, 0x07, // 223
 | ||||
|     0x06, 0x27, 0x0C, 0x07, // 224
 | ||||
|     0x06, 0x33, 0x0C, 0x07, // 225
 | ||||
|     0x06, 0x3F, 0x0C, 0x07, // 226
 | ||||
|     0x06, 0x4B, 0x0B, 0x07, // 227
 | ||||
|     0x06, 0x56, 0x0C, 0x07, // 228
 | ||||
|     0x06, 0x62, 0x0B, 0x07, // 229
 | ||||
|     0x06, 0x6D, 0x0C, 0x07, // 230
 | ||||
|     0x06, 0x79, 0x0C, 0x07, // 231
 | ||||
|     0x06, 0x85, 0x0C, 0x07, // 232
 | ||||
|     0x06, 0x91, 0x0C, 0x07, // 233
 | ||||
|     0x06, 0x9D, 0x0C, 0x07, // 234
 | ||||
|     0x06, 0xA9, 0x0C, 0x07, // 235
 | ||||
|     0x06, 0xB5, 0x0C, 0x07, // 236
 | ||||
|     0x06, 0xC1, 0x0C, 0x07, // 237
 | ||||
|     0x06, 0xCD, 0x0C, 0x07, // 238
 | ||||
|     0x06, 0xD9, 0x0C, 0x07, // 239
 | ||||
|     0x06, 0xE5, 0x0B, 0x07, // 240
 | ||||
|     0x06, 0xF0, 0x0C, 0x07, // 241
 | ||||
|     0x06, 0xFC, 0x0B, 0x07, // 242
 | ||||
|     0x07, 0x07, 0x0C, 0x07, // 243
 | ||||
|     0x07, 0x13, 0x0B, 0x07, // 244
 | ||||
|     0x07, 0x1E, 0x0C, 0x07, // 245
 | ||||
|     0x07, 0x2A, 0x0C, 0x07, // 246
 | ||||
|     0x07, 0x36, 0x0C, 0x07, // 247
 | ||||
|     0x07, 0x42, 0x0C, 0x07, // 248
 | ||||
|     0x07, 0x4E, 0x0E, 0x08, // 249
 | ||||
|     0x07, 0x5C, 0x0C, 0x07, // 250
 | ||||
|     0x07, 0x68, 0x0C, 0x07, // 251
 | ||||
|     0x07, 0x74, 0x0C, 0x07, // 252
 | ||||
|     0x07, 0x80, 0x0C, 0x07, // 253
 | ||||
|     0x07, 0x8C, 0x0C, 0x07, // 254
 | ||||
|     0x07, 0x98, 0x0C, 0x07, // 255
 | ||||
|     // Font Data:
 | ||||
|     0x00, 0x00, 0xF8, 0x02,                                                                                                 // 33
 | ||||
|     0x38, 0x00, 0x00, 0x00, 0x38,                                                                                           // 34
 | ||||
|     0xA0, 0x03, 0xE0, 0x00, 0xB8, 0x03, 0xE0, 0x00, 0xB8,                                                                   // 35
 | ||||
|     0x30, 0x01, 0x28, 0x02, 0xF8, 0x07, 0x48, 0x02, 0x90, 0x01,                                                             // 36
 | ||||
|     0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x30, 0x03, 0xC0, 0x00, 0xB0, 0x01, 0x48, 0x02, 0x80, 0x01,                         // 37
 | ||||
|     0x80, 0x01, 0x50, 0x02, 0x68, 0x02, 0xA8, 0x02, 0x18, 0x01, 0x80, 0x03, 0x80, 0x02,                                     // 38
 | ||||
|     0x38,                                                                                                                   // 39
 | ||||
|     0xE0, 0x03, 0x10, 0x04, 0x08, 0x08,                                                                                     // 40
 | ||||
|     0x08, 0x08, 0x10, 0x04, 0xE0, 0x03,                                                                                     // 41
 | ||||
|     0x28, 0x00, 0x18, 0x00, 0x28,                                                                                           // 42
 | ||||
|     0x40, 0x00, 0x40, 0x00, 0xF0, 0x01, 0x40, 0x00, 0x40,                                                                   // 43
 | ||||
|     0x00, 0x00, 0x00, 0x06,                                                                                                 // 44
 | ||||
|     0x80, 0x00, 0x80,                                                                                                       // 45
 | ||||
|     0x00, 0x00, 0x00, 0x02,                                                                                                 // 46
 | ||||
|     0x00, 0x03, 0xE0, 0x00, 0x18,                                                                                           // 47
 | ||||
|     0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xF0, 0x01,                                                             // 48
 | ||||
|     0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0xF8, 0x03,                                                                         // 49
 | ||||
|     0x10, 0x02, 0x08, 0x03, 0x88, 0x02, 0x48, 0x02, 0x30, 0x02,                                                             // 50
 | ||||
|     0x10, 0x01, 0x08, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01,                                                             // 51
 | ||||
|     0xC0, 0x00, 0xA0, 0x00, 0x90, 0x00, 0x88, 0x00, 0xF8, 0x03, 0x80,                                                       // 52
 | ||||
|     0x60, 0x01, 0x38, 0x02, 0x28, 0x02, 0x28, 0x02, 0xC8, 0x01,                                                             // 53
 | ||||
|     0xF0, 0x01, 0x28, 0x02, 0x28, 0x02, 0x28, 0x02, 0xD0, 0x01,                                                             // 54
 | ||||
|     0x08, 0x00, 0x08, 0x03, 0xC8, 0x00, 0x38, 0x00, 0x08,                                                                   // 55
 | ||||
|     0xB0, 0x01, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01,                                                             // 56
 | ||||
|     0x70, 0x01, 0x88, 0x02, 0x88, 0x02, 0x88, 0x02, 0xF0, 0x01,                                                             // 57
 | ||||
|     0x00, 0x00, 0x20, 0x02,                                                                                                 // 58
 | ||||
|     0x00, 0x00, 0x20, 0x06,                                                                                                 // 59
 | ||||
|     0x00, 0x00, 0x40, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x10, 0x01,                                                             // 60
 | ||||
|     0xA0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xA0,                                                                   // 61
 | ||||
|     0x00, 0x00, 0x10, 0x01, 0xA0, 0x00, 0xA0, 0x00, 0x40,                                                                   // 62
 | ||||
|     0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0xC8, 0x02, 0x48, 0x00, 0x30,                                                       // 63
 | ||||
|     0x00, 0x00, 0xC0, 0x03, 0x30, 0x04, 0xD0, 0x09, 0x28, 0x0A, 0x28, 0x0A, 0xC8, 0x0B, 0x68, 0x0A, 0x10, 0x05, 0xE0, 0x04, // 64
 | ||||
|     0x00, 0x02, 0xC0, 0x01, 0xB0, 0x00, 0x88, 0x00, 0xB0, 0x00, 0xC0, 0x01, 0x00, 0x02,                                     // 65
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xF0, 0x01,                                                 // 66
 | ||||
|     0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x10, 0x01,                                                 // 67
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x08, 0x02, 0x08, 0x02, 0x10, 0x01, 0xE0,                                                       // 68
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02,                                                 // 69
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0x08,                                                                   // 70
 | ||||
|     0x00, 0x00, 0xE0, 0x00, 0x10, 0x01, 0x08, 0x02, 0x48, 0x02, 0x50, 0x01, 0xC0,                                           // 71
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF8, 0x03,                                                 // 72
 | ||||
|     0x00, 0x00, 0xF8, 0x03,                                                                                                 // 73
 | ||||
|     0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0xF8, 0x01,                                                                         // 74
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x80, 0x00, 0x60, 0x00, 0x90, 0x00, 0x08, 0x01, 0x00, 0x02,                                     // 75
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02,                                                 // 76
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x30, 0x00, 0xC0, 0x01, 0x00, 0x02, 0xC0, 0x01, 0x30, 0x00, 0xF8, 0x03,                         // 77
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x30, 0x00, 0x40, 0x00, 0x80, 0x01, 0xF8, 0x03,                                                 // 78
 | ||||
|     0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xF0, 0x01,                                     // 79
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30,                                                       // 80
 | ||||
|     0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x03, 0x08, 0x03, 0xF0, 0x02,                                     // 81
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0xC8, 0x00, 0x30, 0x03,                                                 // 82
 | ||||
|     0x00, 0x00, 0x30, 0x01, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x90, 0x01,                                                 // 83
 | ||||
|     0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08,                                                       // 84
 | ||||
|     0x00, 0x00, 0xF8, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0xF8, 0x01,                                                 // 85
 | ||||
|     0x08, 0x00, 0x70, 0x00, 0x80, 0x01, 0x00, 0x02, 0x80, 0x01, 0x70, 0x00, 0x08,                                           // 86
 | ||||
|     0x18, 0x00, 0xE0, 0x01, 0x00, 0x02, 0xF0, 0x01, 0x08, 0x00, 0xF0, 0x01, 0x00, 0x02, 0xE0, 0x01, 0x18,                   // 87
 | ||||
|     0x00, 0x02, 0x08, 0x01, 0x90, 0x00, 0x60, 0x00, 0x90, 0x00, 0x08, 0x01, 0x00, 0x02,                                     // 88
 | ||||
|     0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x20, 0x00, 0x10, 0x00, 0x08,                                           // 89
 | ||||
|     0x08, 0x03, 0x88, 0x02, 0xC8, 0x02, 0x68, 0x02, 0x38, 0x02, 0x18, 0x02,                                                 // 90
 | ||||
|     0x00, 0x00, 0xF8, 0x0F, 0x08, 0x08,                                                                                     // 91
 | ||||
|     0x18, 0x00, 0xE0, 0x00, 0x00, 0x03,                                                                                     // 92
 | ||||
|     0x08, 0x08, 0xF8, 0x0F,                                                                                                 // 93
 | ||||
|     0x40, 0x00, 0x30, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40,                                                                   // 94
 | ||||
|     0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08,                                                 // 95
 | ||||
|     0x08, 0x00, 0x10,                                                                                                       // 96
 | ||||
|     0x00, 0x00, 0x00, 0x03, 0xA0, 0x02, 0xA0, 0x02, 0xE0, 0x03,                                                             // 97
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01,                                                             // 98
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x40, 0x01,                                                             // 99
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0xF8, 0x03,                                                             // 100
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0xA0, 0x02, 0xA0, 0x02, 0xC0, 0x02,                                                             // 101
 | ||||
|     0x20, 0x00, 0xF0, 0x03, 0x28,                                                                                           // 102
 | ||||
|     0x00, 0x00, 0xC0, 0x05, 0x20, 0x0A, 0x20, 0x0A, 0xE0, 0x07,                                                             // 103
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x20, 0x00, 0x20, 0x00, 0xC0, 0x03,                                                             // 104
 | ||||
|     0x00, 0x00, 0xE8, 0x03,                                                                                                 // 105
 | ||||
|     0x00, 0x08, 0xE8, 0x07,                                                                                                 // 106
 | ||||
|     0xF8, 0x03, 0x80, 0x00, 0xC0, 0x01, 0x20, 0x02,                                                                         // 107
 | ||||
|     0x00, 0x00, 0xF8, 0x03,                                                                                                 // 108
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0xC0, 0x03,                         // 109
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0xC0, 0x03,                                                             // 110
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01,                                                             // 111
 | ||||
|     0x00, 0x00, 0xE0, 0x0F, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01,                                                             // 112
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0xE0, 0x0F,                                                             // 113
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x20,                                                                                           // 114
 | ||||
|     0x40, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0x20, 0x01,                                                                         // 115
 | ||||
|     0x20, 0x00, 0xF8, 0x03, 0x20, 0x02,                                                                                     // 116
 | ||||
|     0x00, 0x00, 0xE0, 0x01, 0x00, 0x02, 0x00, 0x02, 0xE0, 0x03,                                                             // 117
 | ||||
|     0x20, 0x00, 0xC0, 0x01, 0x00, 0x02, 0xC0, 0x01, 0x20,                                                                   // 118
 | ||||
|     0xE0, 0x01, 0x00, 0x02, 0xC0, 0x01, 0x20, 0x00, 0xC0, 0x01, 0x00, 0x02, 0xE0, 0x01,                                     // 119
 | ||||
|     0x20, 0x02, 0x40, 0x01, 0x80, 0x00, 0x40, 0x01, 0x20, 0x02,                                                             // 120
 | ||||
|     0x20, 0x00, 0xC0, 0x09, 0x00, 0x06, 0xC0, 0x01, 0x20,                                                                   // 121
 | ||||
|     0x20, 0x02, 0x20, 0x03, 0xA0, 0x02, 0x60, 0x02, 0x20, 0x02,                                                             // 122
 | ||||
|     0x80, 0x00, 0x78, 0x0F, 0x08, 0x08,                                                                                     // 123
 | ||||
|     0x00, 0x00, 0xF8, 0x0F,                                                                                                 // 124
 | ||||
|     0x08, 0x08, 0x78, 0x0F, 0x80,                                                                                           // 125
 | ||||
|     0xC0, 0x00, 0x40, 0x00, 0xC0, 0x00, 0x80, 0x00, 0xC0,                                                                   // 126
 | ||||
|     0x00, 0x00, 0xA0, 0x0F,                                                                                                 // 161
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0xA0, 0x0F, 0x78, 0x02, 0x40, 0x01,                                                             // 162
 | ||||
|     0x40, 0x02, 0x70, 0x03, 0xC8, 0x02, 0x48, 0x02, 0x08, 0x02, 0x10, 0x02,                                                 // 163
 | ||||
|     0x00, 0x00, 0xE0, 0x01, 0x20, 0x01, 0x20, 0x01, 0xE0, 0x01,                                                             // 164
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08, 0x00, 0x0C,                                                                   // 165
 | ||||
|     0x00, 0x00, 0x38, 0x0F,                                                                                                 // 166
 | ||||
|     0xD0, 0x04, 0x28, 0x09, 0x48, 0x09, 0x48, 0x0A, 0x90, 0x05,                                                             // 167
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0xA8, 0x02, 0xA0, 0x02, 0xA8, 0x02, 0x20, 0x02,                                                 // 168
 | ||||
|     0xE0, 0x00, 0x10, 0x01, 0x48, 0x02, 0xA8, 0x02, 0xA8, 0x02, 0x10, 0x01, 0xE0,                                           // 169
 | ||||
|     0x00, 0x00, 0xF0, 0x01, 0x58, 0x03, 0x48, 0x02, 0x08, 0x02, 0x10, 0x01,                                                 // 170
 | ||||
|     0x00, 0x00, 0x80, 0x01, 0x40, 0x02, 0x80, 0x01, 0x40, 0x02,                                                             // 171
 | ||||
|     0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0,                                                                   // 172
 | ||||
|     0x80, 0x00, 0x80,                                                                                                       // 173
 | ||||
|     0xE0, 0x00, 0x10, 0x01, 0xE8, 0x02, 0x68, 0x02, 0xC8, 0x02, 0x10, 0x01, 0xE0,                                           // 174
 | ||||
|     0x00, 0x00, 0x08, 0x02, 0x0A, 0x02, 0xF8, 0x03, 0x0A, 0x02, 0x08, 0x02,                                                 // 175
 | ||||
|     0x00, 0x00, 0x38, 0x00, 0x28, 0x00, 0x38,                                                                               // 176
 | ||||
|     0x40, 0x02, 0x40, 0x02, 0xF0, 0x03, 0x40, 0x02, 0x40, 0x02,                                                             // 177
 | ||||
|     0x00, 0x00, 0x08, 0x02, 0x08, 0x02, 0xF8, 0x03, 0x08, 0x02, 0x08, 0x02,                                                 // 178
 | ||||
|     0x00, 0x00, 0x20, 0x02, 0x20, 0x02, 0xE8, 0x03, 0x20, 0x02, 0x20, 0x02,                                                 // 179
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x30,                                                                               // 180
 | ||||
|     0x00, 0x00, 0xE0, 0x0F, 0x00, 0x02, 0x00, 0x02, 0xE0, 0x03,                                                             // 181
 | ||||
|     0x70, 0x00, 0xF8, 0x0F, 0x08, 0x00, 0xF8, 0x0F, 0x08,                                                                   // 182
 | ||||
|     0x00, 0x00, 0x40,                                                                                                       // 183
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0xA8, 0x02, 0xA0, 0x02, 0xA8, 0x02, 0xC0,                                                       // 184
 | ||||
|     0x00, 0x00, 0xF0, 0x03, 0x40, 0x00, 0x80, 0x00, 0xF8, 0x03, 0x08,                                                       // 185
 | ||||
|     0x00, 0x00, 0xE0, 0x01, 0x50, 0x02, 0x50, 0x02, 0x10, 0x02, 0x20, 0x01,                                                 // 186
 | ||||
|     0x00, 0x00, 0x40, 0x02, 0x80, 0x01, 0x40, 0x02, 0x80, 0x01,                                                             // 187
 | ||||
|     0x00, 0x00, 0x10, 0x02, 0x78, 0x01, 0xC0, 0x00, 0x20, 0x01, 0x90, 0x01, 0xC8, 0x03, 0x00, 0x01,                         // 188
 | ||||
|     0x00, 0x00, 0x10, 0x02, 0x78, 0x01, 0x80, 0x00, 0x60, 0x00, 0x50, 0x02, 0x48, 0x03, 0xC0, 0x02,                         // 189
 | ||||
|     0x48, 0x00, 0x58, 0x00, 0x68, 0x03, 0x80, 0x00, 0x60, 0x01, 0x90, 0x01, 0xC8, 0x03, 0x00, 0x01,                         // 190
 | ||||
|     0x00, 0x00, 0x00, 0x00, 0x28, 0x02, 0xE0, 0x03, 0x28, 0x02,                                                             // 191
 | ||||
|     0x00, 0x00, 0xF0, 0x03, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0xF0, 0x03,                                                 // 192
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x88, 0x01,                                                 // 193
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01,                                                 // 194
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x18,                                                       // 195
 | ||||
|     0x00, 0x00, 0x00, 0x02, 0xFC, 0x03, 0x04, 0x02, 0xFC, 0x03, 0x00, 0x02,                                                 // 196
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x08, 0x02,                                                 // 197
 | ||||
|     0x00, 0x00, 0xB8, 0x03, 0x40, 0x00, 0xF8, 0x03, 0x40, 0x00, 0xB8, 0x03,                                                 // 198
 | ||||
|     0x00, 0x00, 0x08, 0x02, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01,                                                 // 199
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0xF8, 0x03,                                                 // 200
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x08, 0x01, 0x90, 0x00, 0x48, 0x00, 0xE0, 0x03,                                                 // 201
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0xA0, 0x00, 0x10, 0x01, 0x08, 0x02,                                                 // 202
 | ||||
|     0x00, 0x00, 0x00, 0x02, 0xF0, 0x01, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03,                                                 // 203
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x10, 0x00, 0x60, 0x00, 0x10, 0x00, 0xF8, 0x03,                                                 // 204
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF8, 0x03,                                                 // 205
 | ||||
|     0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xF0, 0x01,                                                 // 206
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03,                                                 // 207
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30,                                                       // 208
 | ||||
|     0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x10, 0x01,                                                 // 209
 | ||||
|     0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08,                                                       // 210
 | ||||
|     0x00, 0x00, 0x38, 0x00, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0xF8, 0x01,                                                 // 211
 | ||||
|     0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0xF8, 0x03, 0x88, 0x00, 0x70,                                                       // 212
 | ||||
|     0x00, 0x00, 0x18, 0x03, 0xA0, 0x00, 0x40, 0x00, 0xA0, 0x00, 0x18, 0x03,                                                 // 213
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x02,                                                 // 214
 | ||||
|     0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF8, 0x03,                                                 // 215
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03,                                                 // 216
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x06,                                     // 217
 | ||||
|     0x00, 0x00, 0x08, 0x00, 0xF8, 0x03, 0x40, 0x02, 0x40, 0x02, 0x80, 0x01,                                                 // 218
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x40, 0x02, 0x40, 0x02, 0x80, 0x01, 0xF8, 0x03,                                                 // 219
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x80, 0x01,                                                 // 220
 | ||||
|     0x00, 0x00, 0x10, 0x01, 0x08, 0x02, 0x48, 0x02, 0x48, 0x02, 0xF0, 0x01,                                                 // 221
 | ||||
|     0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0xF0, 0x01, 0x08, 0x02, 0xF0, 0x01,                                                 // 222
 | ||||
|     0x00, 0x00, 0x30, 0x02, 0x48, 0x01, 0xC8, 0x00, 0x48, 0x00, 0xF8, 0x03,                                                 // 223
 | ||||
|     0x00, 0x00, 0x00, 0x01, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xC0, 0x03,                                                 // 224
 | ||||
|     0x00, 0x00, 0xE0, 0x01, 0x50, 0x02, 0x50, 0x02, 0x48, 0x02, 0x88, 0x01,                                                 // 225
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0x40, 0x01,                                                 // 226
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x60,                                                       // 227
 | ||||
|     0x00, 0x00, 0x00, 0x02, 0xC0, 0x03, 0x20, 0x02, 0xE0, 0x03, 0x00, 0x02,                                                 // 228
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xC0,                                                       // 229
 | ||||
|     0x00, 0x00, 0x60, 0x03, 0x80, 0x00, 0xE0, 0x03, 0x80, 0x00, 0x60, 0x03,                                                 // 230
 | ||||
|     0x00, 0x00, 0x20, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0x40, 0x01,                                                 // 231
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x00, 0x01, 0x80, 0x00, 0x40, 0x00, 0xE0, 0x03,                                                 // 232
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x00, 0x01, 0x98, 0x00, 0x40, 0x00, 0xE0, 0x03,                                                 // 233
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x40, 0x01, 0x20, 0x02,                                                 // 234
 | ||||
|     0x00, 0x00, 0x00, 0x02, 0xC0, 0x01, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03,                                                 // 235
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x40, 0x00, 0x80, 0x00, 0x40, 0x00, 0xE0, 0x03,                                                 // 236
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xE0, 0x03,                                                 // 237
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01,                                                 // 238
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03,                                                 // 239
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0xA0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x40,                                                       // 240
 | ||||
|     0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x40, 0x02,                                                 // 241
 | ||||
|     0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20,                                                       // 242
 | ||||
|     0x00, 0x00, 0x60, 0x00, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0xE0, 0x01,                                                 // 243
 | ||||
|     0x00, 0x00, 0xC0, 0x00, 0x20, 0x01, 0xE0, 0x03, 0x20, 0x01, 0xC0,                                                       // 244
 | ||||
|     0x00, 0x00, 0x20, 0x02, 0x40, 0x01, 0x80, 0x00, 0x40, 0x01, 0x20, 0x02,                                                 // 245
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x02,                                                 // 246
 | ||||
|     0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xE0, 0x03,                                                 // 247
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03,                                                 // 248
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x06,                                     // 249
 | ||||
|     0x00, 0x00, 0x20, 0x00, 0xE0, 0x03, 0x80, 0x02, 0x80, 0x02, 0x00, 0x01,                                                 // 250
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x80, 0x02, 0x80, 0x02, 0x00, 0x01, 0xE0, 0x03,                                                 // 251
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0x00, 0x01,                                                 // 252
 | ||||
|     0x00, 0x00, 0x40, 0x01, 0x20, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xC0, 0x01,                                                 // 253
 | ||||
|     0x00, 0x00, 0xE0, 0x03, 0x80, 0x00, 0xC0, 0x01, 0x20, 0x02, 0xC0, 0x01,                                                 // 254
 | ||||
|     0x00, 0x00, 0x40, 0x02, 0xA0, 0x01, 0xA0, 0x00, 0xA0, 0x00, 0xE0, 0x03,                                                 // 255
 | ||||
| }; | ||||
|  | @ -0,0 +1,11 @@ | |||
| #ifndef OLEDDISPLAYFONTSUA_h | ||||
| #define OLEDDISPLAYFONTSUA_h | ||||
| 
 | ||||
| #ifdef ARDUINO | ||||
| #include <Arduino.h> | ||||
| #elif __MBED__ | ||||
| #define PROGMEM | ||||
| #endif | ||||
| 
 | ||||
| extern const uint8_t ArialMT_Plain_10_UA[] PROGMEM; | ||||
| #endif | ||||
|  | @ -409,7 +409,7 @@ void setup() | |||
| 
 | ||||
| #if defined(RF95_IRQ) | ||||
|     if (!rIf) { | ||||
|         rIf = new RF95Interface(RF95_NSS, RF95_IRQ, RF95_RESET, SPI); | ||||
|         rIf = new RF95Interface(RF95_NSS, RF95_IRQ, RF95_RESET, RF95_DIO1, SPI); | ||||
|         if (!rIf->init()) { | ||||
|             LOG_WARN("Failed to find RF95 radio\n"); | ||||
|             delete rIf; | ||||
|  |  | |||
|  | @ -235,11 +235,6 @@ void NodeDB::installRoleDefaults(meshtastic_Config_DeviceConfig_Role role) | |||
|         initModuleConfigIntervals(); | ||||
|     } else if (role == meshtastic_Config_DeviceConfig_Role_REPEATER) { | ||||
|         config.display.screen_on_secs = 1; | ||||
|         meshtastic_Channel &ch = channels.getByIndex(channels.getPrimaryIndex()); | ||||
|         meshtastic_ChannelSettings &channelSettings = ch.settings; | ||||
|         uint8_t defaultpskIndex = 1; | ||||
|         channelSettings.psk.bytes[0] = defaultpskIndex; | ||||
|         channelSettings.psk.size = 1; | ||||
|     } else if (role == meshtastic_Config_DeviceConfig_Role_TRACKER) { | ||||
|         config.position.position_broadcast_smart_enabled = false; | ||||
|         config.position.position_broadcast_secs = 120; | ||||
|  |  | |||
|  | @ -11,8 +11,9 @@ | |||
| 
 | ||||
| #define POWER_DEFAULT 17 // How much power to use if the user hasn't set a power level
 | ||||
| 
 | ||||
| RF95Interface::RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, SPIClass &spi) | ||||
|     : RadioLibInterface(cs, irq, rst, RADIOLIB_NC, spi) | ||||
| RF95Interface::RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, | ||||
|                              SPIClass &spi) | ||||
|     : RadioLibInterface(cs, irq, rst, busy, spi) | ||||
| { | ||||
|     LOG_WARN("RF95Interface(cs=%d, irq=%d, rst=%d)\n", cs, irq, rst); | ||||
| } | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ class RF95Interface : public RadioLibInterface | |||
|     RadioLibRF95 *lora = NULL; // Either a RFM95 or RFM96 depending on what was stuffed on this board
 | ||||
| 
 | ||||
|   public: | ||||
|     RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, SPIClass &spi); | ||||
|     RF95Interface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi); | ||||
| 
 | ||||
|     // TODO: Verify that this irq flag works with RFM95 / SX1276 radios the way it used to
 | ||||
|     bool isIRQPending() override { return lora->getIRQFlags() & RADIOLIB_SX127X_MASK_IRQ_FLAG_VALID_HEADER; } | ||||
|  |  | |||
|  | @ -218,8 +218,9 @@ void RadioLibInterface::onNotify(uint32_t notification) | |||
|                 setTransmitDelay(); // currently Rx/Tx-ing: reset random delay
 | ||||
|             } else { | ||||
|                 if (isChannelActive()) { // check if there is currently a LoRa packet on the channel
 | ||||
|                     // LOG_DEBUG("Channel is active: set random delay\n");
 | ||||
|                     setTransmitDelay(); // reset random delay
 | ||||
|                     // LOG_DEBUG("Channel is active, try receiving first.\n");
 | ||||
|                     startReceive(); // try receiving this packet, afterwards we'll be trying to transmit again
 | ||||
|                     setTransmitDelay(); | ||||
|                 } else { | ||||
|                     // Send any outgoing packets we have ready
 | ||||
|                     meshtastic_MeshPacket *txp = txQueue.dequeue(); | ||||
|  | @ -388,8 +389,6 @@ void RadioLibInterface::startSend(meshtastic_MeshPacket *txp) | |||
|         LOG_WARN("startSend is dropping tx packet because we are disabled\n"); | ||||
|         packetPool.release(txp); | ||||
|     } else { | ||||
|         setStandby(); // Cancel any already in process receives
 | ||||
| 
 | ||||
|         configHardwareForSend(); // must be after setStandby
 | ||||
| 
 | ||||
|         size_t numbytes = beginSending(txp); | ||||
|  |  | |||
|  | @ -148,7 +148,11 @@ bool ReliableRouter::stopRetransmission(GlobalPacketId key) | |||
|     if (old) { | ||||
|         auto numErased = pending.erase(key); | ||||
|         assert(numErased == 1); | ||||
|         // remove the 'original' (identified by originator and packet->id) from the txqueue and free it
 | ||||
|         cancelSending(getFrom(old->packet), old->packet->id); | ||||
|         // now free the pooled copy for retransmission too. tryfix for #2228
 | ||||
|         if (old->packet) | ||||
|             packetPool.release(old->packet); | ||||
|         return true; | ||||
|     } else | ||||
|         return false; | ||||
|  |  | |||
|  | @ -232,7 +232,7 @@ template <typename T> bool SX126xInterface<T>::isChannelActive() | |||
| 
 | ||||
|     setStandby(); | ||||
|     result = lora.scanChannel(); | ||||
|     if (result == RADIOLIB_PREAMBLE_DETECTED) | ||||
|     if (result == RADIOLIB_LORA_DETECTED) | ||||
|         return true; | ||||
| 
 | ||||
|     assert(result != RADIOLIB_ERR_WRONG_MODEM); | ||||
|  |  | |||
|  | @ -222,7 +222,7 @@ template <typename T> bool SX128xInterface<T>::isChannelActive() | |||
| 
 | ||||
|     setStandby(); | ||||
|     result = lora.scanChannel(); | ||||
|     if (result == RADIOLIB_PREAMBLE_DETECTED) | ||||
|     if (result == RADIOLIB_LORA_DETECTED) | ||||
|         return true; | ||||
| 
 | ||||
|     assert(result != RADIOLIB_ERR_WRONG_MODEM); | ||||
|  |  | |||
|  | @ -57,9 +57,13 @@ typedef enum _meshtastic_HardwareModel { | |||
|     meshtastic_HardwareModel_TLORA_V2_1_1P8 = 15, | ||||
|     /* TODO: REPLACE */ | ||||
|     meshtastic_HardwareModel_TLORA_T3_S3 = 16, | ||||
|     /* B&Q Consulting Nano G1 Explorer: https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer */ | ||||
|     meshtastic_HardwareModel_NANO_G1_EXPLORER = 17, | ||||
|     /* B&Q Consulting Station Edition G1: https://uniteng.com/wiki/doku.php?id=meshtastic:station */ | ||||
|     meshtastic_HardwareModel_STATION_G1 = 25, | ||||
|     /* Less common/prototype boards listed here (needs one more byte over the air) */ | ||||
|     /* ---------------------------------------------------------------------------
 | ||||
|  Less common/prototype boards listed here (needs one more byte over the air) | ||||
|  --------------------------------------------------------------------------- */ | ||||
|     meshtastic_HardwareModel_LORA_RELAY_V1 = 32, | ||||
|     /* TODO: REPLACE */ | ||||
|     meshtastic_HardwareModel_NRF52840DK = 33, | ||||
|  | @ -89,9 +93,9 @@ typedef enum _meshtastic_HardwareModel { | |||
|     meshtastic_HardwareModel_BETAFPV_2400_TX = 45, | ||||
|     /* BetaFPV ExpressLRS "Nano" TX Module 900MHz with ESP32 CPU */ | ||||
|     meshtastic_HardwareModel_BETAFPV_900_NANO_TX = 46, | ||||
|     /* B&Q Consulting Nano G1 Explorer: https://wiki.uniteng.com/en/meshtastic/nano-g1-explorer */ | ||||
|     meshtastic_HardwareModel_NANO_G1_EXPLORER = 47, | ||||
|     /* Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. */ | ||||
|     /* ------------------------------------------------------------------------------------------------------------------------------------------
 | ||||
|  Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. | ||||
|  ------------------------------------------------------------------------------------------------------------------------------------------ */ | ||||
|     meshtastic_HardwareModel_PRIVATE_HW = 255 | ||||
| } meshtastic_HardwareModel; | ||||
| 
 | ||||
|  |  | |||
|  | @ -95,6 +95,8 @@ | |||
| #define HW_VENDOR meshtastic_HardwareModel_TLORA_T3_S3 | ||||
| #elif defined(BETAFPV_2400_TX) | ||||
| #define HW_VENDOR meshtastic_HardwareModel_BETAFPV_2400_TX | ||||
| #elif defined(NANO_G1_EXPLORER) | ||||
| #define HW_VENDOR meshtastic_HardwareModel_NANO_G1_EXPLORER | ||||
| #endif | ||||
| 
 | ||||
| //
 | ||||
|  |  | |||
|  | @ -20,8 +20,8 @@ | |||
| #ifndef USE_JTAG | ||||
| #define LORA_RESET 14 | ||||
| #endif | ||||
| #define LORA_DIO1 35 // Not really used
 | ||||
| #define LORA_DIO2 34 // Not really used
 | ||||
| #define LORA_DIO1 RADIOLIB_NC | ||||
| #define LORA_DIO2 32 // Not really used
 | ||||
| 
 | ||||
| // ratio of voltage divider = 3.20 (R1=100k, R2=220k)
 | ||||
| #define ADC_MULTIPLIER 3.2 | ||||
|  |  | |||
|  | @ -24,7 +24,7 @@ | |||
| #ifndef USE_JTAG | ||||
| #define LORA_RESET 14 | ||||
| #endif | ||||
| #define LORA_DIO1 35 // Not really used
 | ||||
| #define LORA_DIO1 35 // https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
 | ||||
| #define LORA_DIO2 34 // Not really used
 | ||||
| 
 | ||||
| #define ADC_MULTIPLIER 3.8 | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ | |||
| #ifndef USE_JTAG | ||||
| #define LORA_RESET 14 | ||||
| #endif | ||||
| #define LORA_DIO1 35 // Not really used
 | ||||
| #define LORA_DIO1 35 // https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
 | ||||
| #define LORA_DIO2 34 // Not really used
 | ||||
| 
 | ||||
| // ratio of voltage divider = 3.20 (R12=100k, R10=220k)
 | ||||
|  |  | |||
|  | @ -0,0 +1,8 @@ | |||
| ; The 1.0 release of the nano-g1-explorer board  | ||||
| [env:nano-g1-explorer] | ||||
| extends = esp32_base | ||||
| board = ttgo-t-beam | ||||
| lib_deps = | ||||
|   ${esp32_base.lib_deps} | ||||
| build_flags =  | ||||
|   ${esp32_base.build_flags} -D NANO_G1_EXPLORER  -I variants/nano-g1-explorer | ||||
|  | @ -0,0 +1,37 @@ | |||
| // #define BUTTON_NEED_PULLUP // if set we need to turn on the internal CPU pullup during sleep
 | ||||
| 
 | ||||
| #define I2C_SDA 21 | ||||
| #define I2C_SCL 22 | ||||
| 
 | ||||
| #define BUTTON_PIN 36 // The user button (information button) GPIO on the Nano G1 explorer
 | ||||
| //#define BUTTON_PIN_ALT 13 // Alternate GPIO for an external button if needed. Does anyone use this? It is not documented
 | ||||
| // anywhere.
 | ||||
| #define EXT_NOTIFY_OUT 13 // Default pin to use for Ext Notify Module.
 | ||||
| 
 | ||||
| // common pinout for their SX1262 vs RF95 modules - both can be enabled and we will probe at runtime for RF95 and if
 | ||||
| // not found then probe for SX1262
 | ||||
| #define USE_RF95 | ||||
| #define USE_SX1262 | ||||
| 
 | ||||
| #define LORA_DIO0 26 // a No connect on the SX1262 module
 | ||||
| #define LORA_RESET 23 | ||||
| #define LORA_DIO1 33 // SX1262 IRQ
 | ||||
| #define LORA_DIO2 32 // SX1262 BUSY
 | ||||
| #define LORA_DIO3    // Not connected on PCB
 | ||||
| 
 | ||||
| #ifdef USE_SX1262 | ||||
| #define SX126X_CS RF95_NSS // FIXME - we really should define LORA_CS instead
 | ||||
| #define SX126X_DIO1 LORA_DIO1 | ||||
| #define SX126X_BUSY LORA_DIO2 | ||||
| #define SX126X_RESET LORA_RESET | ||||
| #define SX126X_E22 // Not really an E22
 | ||||
| // Internally the module hooks the SX1262-DIO2 in to control the TX/RX switch (which is the default for the sx1262interface
 | ||||
| // code)
 | ||||
| #endif | ||||
| 
 | ||||
| #define BATTERY_PIN 35           // A battery voltage measurement pin, voltage divider connected here to measure battery voltage
 | ||||
| #define BATTERY_SENSE_SAMPLES 15 // Set the number of samples, It has an effect of increasing sensitivity.
 | ||||
| #define ADC_MULTIPLIER 2 | ||||
| 
 | ||||
| //#define USE_SH1107    // Finally we will use SH1107 128x64 resolution driver, because SH1106 will shift the screen by 2 lines.
 | ||||
| #define USE_SH1106 | ||||
|  | @ -10,7 +10,7 @@ | |||
| #define USE_RF95 | ||||
| #define LORA_DIO0 26 // a No connect on the SX1262 module
 | ||||
| #define LORA_RESET 23 | ||||
| #define LORA_DIO1 33 // Not really used
 | ||||
| #define LORA_DIO1 33 | ||||
| #define LORA_DIO2 32 // Not really used
 | ||||
| 
 | ||||
| // This board has different GPS pins than all other boards
 | ||||
|  |  | |||
|  | @ -15,5 +15,5 @@ | |||
| #define USE_RF95 | ||||
| #define LORA_DIO0 26 // a No connect on the SX1262 module
 | ||||
| #define LORA_RESET 14 | ||||
| #define LORA_DIO1 35 // Not really used
 | ||||
| #define LORA_DIO2 34 // Not really used
 | ||||
| #define LORA_DIO1 33 // Must be manually wired: https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
 | ||||
| #define LORA_DIO2 32 // Not really used
 | ||||
|  |  | |||
|  | @ -18,5 +18,5 @@ | |||
| #define USE_RF95 | ||||
| #define LORA_DIO0 26 // a No connect on the SX1262 module
 | ||||
| #define LORA_RESET 14 | ||||
| #define LORA_DIO1 35 // Not really used
 | ||||
| #define LORA_DIO2 34 // Not really used
 | ||||
| #define LORA_DIO1 33 // Prob. must be manually wired: https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
 | ||||
| #define LORA_DIO2 32 // Not really used
 | ||||
|  | @ -18,5 +18,5 @@ | |||
| #define USE_RF95 | ||||
| #define LORA_DIO0 26 // a No connect on the SX1262 module
 | ||||
| #define LORA_RESET 14 | ||||
| #define LORA_DIO1 35 // Not really used
 | ||||
| #define LORA_DIO2 34 // Not really used
 | ||||
| #define LORA_DIO1 33 // Must be manually wired: https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
 | ||||
| #define LORA_DIO2 32 // Not really used
 | ||||
|  |  | |||
|  | @ -18,3 +18,5 @@ | |||
| #define USE_RF95 | ||||
| #define LORA_DIO0 26 // a No connect on the SX1262 module
 | ||||
| #define LORA_RESET 23 | ||||
| #define LORA_DIO1 33 // https://www.thethingsnetwork.org/forum/t/big-esp32-sx127x-topic-part-3/18436
 | ||||
| #define LORA_DIO2 32 // Not really used
 | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| [VERSION]   | ||||
| major = 2 | ||||
| minor = 0 | ||||
| build = 21 | ||||
| build = 22 | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Thomas Göttgens
						Thomas Göttgens