Merge branch 'dev' of https://github.com/DarkFlippers/unleashed-firmware into autolock-with-pin

This commit is contained in:
Willy-JL 2023-02-16 23:04:38 +00:00
commit 387e9431f5
30 changed files with 119 additions and 58 deletions

View file

@ -36,13 +36,6 @@ Min level: 1
Max level: 1 Max level: 1
Weight: 3 Weight: 3
Name: L1_Happy_holidays_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 3
Weight: 4
Name: L1_Read_books_128x64 Name: L1_Read_books_128x64
Min butthurt: 0 Min butthurt: 0
Max butthurt: 8 Max butthurt: 8

View file

@ -12,8 +12,6 @@
Our goal is to make all features possible on this device without any limitations! Our goal is to make all features possible on this device without any limitations!
Please help us implement emulation for all Sub-GHz dynamic (rolling code) protocols!
<br> <br>
### This software is for experimental purposes only and is not meant for any illegal activity/purposes. <br> We do not condone illegal activity and strongly encourage keeping transmissions to legal/valid uses allowed by law. <br> Also, this software is made without any support from Flipper Devices and is in no way related to the official devs. ### This software is for experimental purposes only and is not meant for any illegal activity/purposes. <br> We do not condone illegal activity and strongly encourage keeping transmissions to legal/valid uses allowed by law. <br> Also, this software is made without any support from Flipper Devices and is in no way related to the official devs.
@ -230,8 +228,6 @@ Games:
# Where I can find IR, Sub-GHz, ... files, DBs, and other stuff? # Where I can find IR, Sub-GHz, ... files, DBs, and other stuff?
## [UberGuidoZ Playground - Large collection of files - Github](https://github.com/UberGuidoZ/Flipper) ## [UberGuidoZ Playground - Large collection of files - Github](https://github.com/UberGuidoZ/Flipper)
## [Awesome Flipper Zero - Github](https://github.com/djsime1/awesome-flipperzero) ## [Awesome Flipper Zero - Github](https://github.com/djsime1/awesome-flipperzero)
## [CAME-12bit, NICE-12bit, Linear-10bit, PT-2240 - Sub-GHz fixed code bruteforce](https://github.com/tobiabocchi/flipperzero-bruteforce)
## [SMC5326, UNILARM - Sub-GHz fixed code bruteforce](https://github.com/Hong5489/flipperzero-gate-bruteforce)
<br> <br>
<br> <br>
@ -239,6 +235,9 @@ Games:
# Links # Links
* Unofficial Discord: [discord.unleashedflip.com](https://discord.unleashedflip.com) * Unofficial Discord: [discord.unleashedflip.com](https://discord.unleashedflip.com)
* Hello world - plugin tutorial (English): [https://github.com/DroomOne/Flipper-Plugin-Tutorial](https://github.com/DroomOne/Flipper-Plugin-Tutorial)
* Hello world - plugin tutorial (in Russian): [https://yakovlev.me/hello-flipper-zero/](https://yakovlev.me/hello-flipper-zero/)
* CLion IDE - How to setup workspace for flipper firmware development: [https://krasovs.ky/2022/11/01/flipper-zero-clion.html](https://krasovs.ky/2022/11/01/flipper-zero-clion.html)
* Docs by atmanos / How to write your own app (outdated API): [https://flipper.atmanos.com/docs/overview/intro](https://flipper.atmanos.com/docs/overview/intro) * Docs by atmanos / How to write your own app (outdated API): [https://flipper.atmanos.com/docs/overview/intro](https://flipper.atmanos.com/docs/overview/intro)
* Official Docs: [http://docs.flipperzero.one](http://docs.flipperzero.one) * Official Docs: [http://docs.flipperzero.one](http://docs.flipperzero.one)

View file

@ -16,6 +16,9 @@
#define FIELD_WIDTH 11 #define FIELD_WIDTH 11
#define FIELD_HEIGHT 24 #define FIELD_HEIGHT 24
#define MAX_FALL_SPEED 500
#define MIN_FALL_SPEED 100
typedef struct Point { typedef struct Point {
// Also used for offset data, which is sometimes negative // Also used for offset data, which is sometimes negative
int8_t x, y; int8_t x, y;
@ -169,7 +172,7 @@ static void tetris_game_input_callback(InputEvent* input_event, FuriMessageQueue
static void tetris_game_init_state(TetrisState* tetris_state) { static void tetris_game_init_state(TetrisState* tetris_state) {
tetris_state->gameState = GameStatePlaying; tetris_state->gameState = GameStatePlaying;
tetris_state->numLines = 0; tetris_state->numLines = 0;
tetris_state->fallSpeed = 500; tetris_state->fallSpeed = MAX_FALL_SPEED;
memset(tetris_state->playField, 0, sizeof(tetris_state->playField)); memset(tetris_state->playField, 0, sizeof(tetris_state->playField));
memcpy(&tetris_state->currPiece, &shapes[rand() % 7], sizeof(tetris_state->currPiece)); memcpy(&tetris_state->currPiece, &shapes[rand() % 7], sizeof(tetris_state->currPiece));
@ -303,6 +306,7 @@ static void
tetris_game_render_curr_piece(tetris_state); tetris_game_render_curr_piece(tetris_state);
uint8_t numLines = 0; uint8_t numLines = 0;
uint8_t lines[] = {0, 0, 0, 0}; uint8_t lines[] = {0, 0, 0, 0};
uint16_t nextFallSpeed;
tetris_game_check_for_lines(tetris_state, lines, &numLines); tetris_game_check_for_lines(tetris_state, lines, &numLines);
if(numLines > 0) { if(numLines > 0) {
@ -323,7 +327,10 @@ static void
uint16_t oldNumLines = tetris_state->numLines; uint16_t oldNumLines = tetris_state->numLines;
tetris_state->numLines += numLines; tetris_state->numLines += numLines;
if((oldNumLines / 10) % 10 != (tetris_state->numLines / 10) % 10) { if((oldNumLines / 10) % 10 != (tetris_state->numLines / 10) % 10) {
tetris_state->fallSpeed -= 50; nextFallSpeed = tetris_state->fallSpeed - (100 / (tetris_state->numLines / 10));
if (nextFallSpeed >= MIN_FALL_SPEED){
tetris_state->fallSpeed = nextFallSpeed;
}
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -1,23 +0,0 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 64
Passive frames: 10
Active frames: 18
Frames order: 0 1 2 1 0 1 2 1 0 1 2 3 4 5 6 5 4 7 2 8 9 10 11 10 9 10 11 12
Active cycles: 1
Frame rate: 2
Duration: 3600
Active cooldown: 7
Bubble slots: 1
Slot: 0
X: 11
Y: 19
Text: HAPPY\nHOLIDAYS!
AlignH: Right
AlignV: Center
StartFrame: 22
EndFrame: 27

View file

@ -36,13 +36,6 @@ Min level: 1
Max level: 1 Max level: 1
Weight: 3 Weight: 3
Name: L1_Happy_holidays_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 3
Weight: 4
Name: L1_Read_books_128x64 Name: L1_Read_books_128x64
Min butthurt: 0 Min butthurt: 0
Max butthurt: 8 Max butthurt: 8

View file

@ -1,7 +1,7 @@
Filetype: IR library file Filetype: IR library file
Version: 1 Version: 1
# Last Updated 13th Jan, 2023 # Last Updated 15th Feb, 2023
# Last Checked 8th Feb, 2023 # Last Checked 15th Feb, 2023
# #
name: POWER name: POWER
type: raw type: raw
@ -1542,3 +1542,21 @@ type: raw
frequency: 38000 frequency: 38000
duty_cycle: 0.330000 duty_cycle: 0.330000
data: 3110 1567 551 1031 550 356 471 1032 550 356 471 356 445 1084 497 355 472 357 497 356 472 1058 523 1058 523 356 471 356 470 357 469 357 470 357 474 357 470 1063 519 357 470 1063 518 1063 519 1063 518 357 470 357 471 data: 3110 1567 551 1031 550 356 471 1032 550 356 471 356 445 1084 497 355 472 357 497 356 472 1058 523 1058 523 356 471 356 470 357 469 357 470 357 474 357 470 1063 519 357 470 1063 518 1063 519 1063 518 357 470 357 471
#
name: POWER
type: raw
frequency: 38000
duty_cycle: 0.330000
data: 3087 1607 488 1064 517 335 492 1087 484 315 512 340 487 1091 490 336 491 338 489 1089 492 333 494 332 485 341 486 340 487 338 489 336 491 339 488 1090 491 334 493 1085 486 340 487 1091 490 1088 493 333 484 343 484 44227 178
#
name: TIMER
type: raw
frequency: 38000
duty_cycle: 0.330000
data: 3092 1602 492 1059 512 341 486 1092 489 337 490 336 491 1087 494 332 485 344 493 1085 486 1093 488 1064 517 1061 520 333 494 332 484 341 486 343 484 1094 487 1091 490 336 491 335 492 334 493 333 484 1094 487 340 487
#
name: POWER
type: raw
frequency: 38000
duty_cycle: 0.330000
data: 8838 3941 624 1427 514 500 515 497 541 473 540 1487 540 474 539 474 538 476 512 1538 514 1516 544 466 514 497 514 501 514 499 514 500 513 499 513 501 487 525 514 499 512 502 487 526 512 1517 542 470 487 1539 513 499 512 503 513 499 512 1513 512

View file

@ -1,7 +1,7 @@
Filetype: IR library file Filetype: IR library file
Version: 1 Version: 1
# Last Updated 8th Feb, 2023 # Last Updated 15th Feb, 2023
# Last Checked 8th Feb, 2023 # Last Checked 15th Feb, 2023
# #
name: POWER name: POWER
type: parsed type: parsed
@ -2050,3 +2050,21 @@ type: parsed
protocol: NEC protocol: NEC
address: 01 00 00 00 address: 01 00 00 00
command: 10 00 00 00 command: 10 00 00 00
#
name: POWER
type: raw
frequency: 38000
duty_cycle: 0.330000
data: 4555 4463 532 473 532 473 531 474 530 474 530 1478 531 1478 531 475 529 476 528 1482 551 1480 529 1480 528 1481 528 477 527 478 527 478 526 478 527 4498 526 477 527 477 527 478 526 478 526 478 526 478 526 478 527 478 526 1483 527 1483 526 1483 526 478 526 1483 527 1483 527 1483 526 1483 526 478 526 478 527 478 527 1484 526 55527 4527 4492 526 478 526 478 526 478 526 479 526 1483 527 1483 526 478 526 478 526 1483 527 1483 526 1483 526 1483 526 478 527 478 526 479 526 478 526 4497 526 478 526 478 526 478 526 478 526 478 526 478 526 478 526 478 526 1484 525 1483 526 1484 525 478 526 1484 525 1484 525 1484 525 1484 525 478 526 479 526 479 525 1484 525
#
name: VOL+
type: raw
frequency: 38000
duty_cycle: 0.330000
data: 4552 4463 531 474 530 474 530 474 530 474 530 1478 531 1478 531 475 529 476 553 1455 554 1478 530 1479 529 1481 527 477 527 478 526 478 526 478 526 4497 526 478 526 478 526 478 526 477 527 1483 526 1482 527 1482 527 478 526 1483 526 1483 526 1483 526 478 526 478 526 478 526 478 526 1483 526 478 526 478 526 478 526 1483 526
#
name: VOL-
type: raw
frequency: 38000
duty_cycle: 0.330000
data: 325 50440 173 137541 4551 4465 530 475 529 475 529 474 530 474 530 1479 530 1479 529 476 528 477 527 1480 554 1457 551 1480 528 1481 527 477 527 478 526 478 526 478 526 4497 525 478 526 478 526 478 526 478 526 479 525 479 525 479 525 1484 525 1483 526 1484 525 1483 526 479 525 1483 526 1483 526 1483 526 479 525 479 525 479 525 479 525 1484 525

View file

@ -1,7 +1,7 @@
Filetype: IR library file Filetype: IR library file
Version: 1 Version: 1
# Last Updated 8th Feb, 2023 # Last Updated 15th Feb, 2023
# Last Checked 8th Feb, 2023 # Last Checked 15th Feb, 2023
# #
name: POWER name: POWER
type: raw type: raw
@ -1401,3 +1401,21 @@ type: parsed
protocol: NEC protocol: NEC
address: 01 00 00 00 address: 01 00 00 00
command: 0D 00 00 00 command: 0D 00 00 00
#
name: POWER
type: parsed
protocol: NECext
address: 80 DE 00 00
command: 00 FF 00 00
#
name: SPEED+
type: parsed
protocol: NECext
address: 80 DE 00 00
command: 08 F7 00 00
#
name: SPEED-
type: parsed
protocol: NECext
address: 80 DE 00 00
command: 10 EF 00 00

View file

@ -1,7 +1,7 @@
Filetype: IR library file Filetype: IR library file
Version: 1 Version: 1
# Last Updated 8th Feb, 2023 # Last Updated 8th Feb, 2023
# Last Checked 8th Feb, 2023 # Last Checked 15th Feb, 2023
# #
# ON # ON
name: POWER name: POWER

View file

@ -1,7 +1,7 @@
Filetype: IR library file Filetype: IR library file
Version: 1 Version: 1
# Last Updated 19th Jan, 2023 # Last Updated 15th Feb, 2023
# Last Checked 8th Feb, 2023 # Last Checked 15th Feb, 2023
# #
name: POWER name: POWER
type: parsed type: parsed
@ -1839,3 +1839,27 @@ type: parsed
protocol: SIRC20 protocol: SIRC20
address: 5A 0E 00 00 address: 5A 0E 00 00
command: 11 00 00 00 command: 11 00 00 00
#
name: VOL+
type: parsed
protocol: RC5
address: 00 00 00 00
command: 15 00 00 00
#
name: VOL-
type: parsed
protocol: RC5
address: 00 00 00 00
command: 14 00 00 00
#
name: CH+
type: parsed
protocol: RC5
address: 00 00 00 00
command: 18 00 00 00
#
name: CH-
type: parsed
protocol: RC5
address: 00 00 00 00
command: 17 00 00 00

View file

@ -1,6 +1,6 @@
## How to extend SubGHz supported frequency range ## How to extend SubGHz supported frequency range
#### CC1101 Frequency range specs: 300-348 MHz, 386-464 MHz, and 778-928 MHz (+ 350MHz was added to default range) #### CC1101 Frequency range specs: 300-348 MHz, 386-464 MHz, and 778-928 MHz (+ 350MHz and 467MHz was added to default range)
#### This setting will extend to: 281-361 MHz, 378-481 MHz, and 749-962 MHz #### This setting will extend to: 281-361 MHz, 378-481 MHz, and 749-962 MHz
1. Please do not do that unless you know what exactly you are doing 1. Please do not do that unless you know what exactly you are doing

View file

@ -1,6 +1,6 @@
## How to add new SubGHz frequencies ## How to add new SubGHz frequencies
#### CC1101 Frequency range specs: 300-348 MHz, 386-464 MHz, and 778-928 MHz (+ 350MHz was added to default range) #### CC1101 Frequency range specs: 300-348 MHz, 386-464 MHz, and 778-928 MHz (+ 350MHz and 467MHz was added to default range)
Edit user settings file located on your microSD card - `subghz/assets/setting_user` Edit user settings file located on your microSD card - `subghz/assets/setting_user`
@ -54,6 +54,7 @@ if you need your custom one, make sure it doesn't listed here
438900000, 438900000,
440175000, 440175000,
464000000, 464000000,
467750000,
/* 779 - 928 */ /* 779 - 928 */
779000000, 779000000,

View file

@ -22,7 +22,6 @@ def _convert_image(source_filename: str):
class DolphinBubbleAnimation: class DolphinBubbleAnimation:
FILE_TYPE = "Flipper Animation" FILE_TYPE = "Flipper Animation"
FILE_VERSION = 1 FILE_VERSION = 1
@ -243,7 +242,6 @@ class DolphinBubbleAnimation:
class DolphinManifest: class DolphinManifest:
FILE_TYPE = "Flipper Animation Manifest" FILE_TYPE = "Flipper Animation Manifest"
FILE_VERSION = 1 FILE_VERSION = 1

View file

@ -1,5 +1,6 @@
import serial.tools.list_ports as list_ports import serial.tools.list_ports as list_ports
# Returns a valid port or None, if it cannot be found # Returns a valid port or None, if it cannot be found
def resolve_port(logger, portname: str = "auto"): def resolve_port(logger, portname: str = "auto"):
if portname != "auto": if portname != "auto":

View file

@ -173,12 +173,14 @@ class Templite:
"""Renders the template according to the given namespace.""" """Renders the template according to the given namespace."""
stack = [] stack = []
namespace["__file__"] = self.file namespace["__file__"] = self.file
# add write method # add write method
def write(*args): def write(*args):
for value in args: for value in args:
stack.append(str(value)) stack.append(str(value))
namespace["write"] = write namespace["write"] = write
# add include method # add include method
def include(file): def include(file):
if not os.path.isabs(file): if not os.path.isabs(file):

View file

@ -13,7 +13,7 @@ if not ["%FBT_NOENV%"] == [""] (
exit /b 0 exit /b 0
) )
set "FLIPPER_TOOLCHAIN_VERSION=19" set "FLIPPER_TOOLCHAIN_VERSION=20"
if ["%FBT_TOOLCHAIN_ROOT%"] == [""] ( if ["%FBT_TOOLCHAIN_ROOT%"] == [""] (
set "FBT_TOOLCHAIN_ROOT=%FBT_ROOT%\toolchain\x86_64-windows" set "FBT_TOOLCHAIN_ROOT=%FBT_ROOT%\toolchain\x86_64-windows"
@ -31,9 +31,12 @@ if not exist "%FBT_TOOLCHAIN_VERSION_FILE%" (
set /p REAL_TOOLCHAIN_VERSION=<"%FBT_TOOLCHAIN_VERSION_FILE%" set /p REAL_TOOLCHAIN_VERSION=<"%FBT_TOOLCHAIN_VERSION_FILE%"
if not "%REAL_TOOLCHAIN_VERSION%" == "%FLIPPER_TOOLCHAIN_VERSION%" ( if not "%REAL_TOOLCHAIN_VERSION%" == "%FLIPPER_TOOLCHAIN_VERSION%" (
echo FBT: starting toolchain upgrade process..
powershell -ExecutionPolicy Bypass -File "%FBT_ROOT%\scripts\toolchain\windows-toolchain-download.ps1" %flipper_toolchain_version% "%FBT_TOOLCHAIN_ROOT%" powershell -ExecutionPolicy Bypass -File "%FBT_ROOT%\scripts\toolchain\windows-toolchain-download.ps1" %flipper_toolchain_version% "%FBT_TOOLCHAIN_ROOT%"
set /p REAL_TOOLCHAIN_VERSION=<"%FBT_TOOLCHAIN_VERSION_FILE%"
) )
echo FBT: using toolchain version %REAL_TOOLCHAIN_VERSION%
set "HOME=%USERPROFILE%" set "HOME=%USERPROFILE%"
set "PYTHONHOME=%FBT_TOOLCHAIN_ROOT%\python" set "PYTHONHOME=%FBT_TOOLCHAIN_ROOT%\python"
set "PYTHONPATH=" set "PYTHONPATH="

View file

@ -5,7 +5,7 @@
# public variables # public variables
DEFAULT_SCRIPT_PATH="$(pwd -P)"; DEFAULT_SCRIPT_PATH="$(pwd -P)";
SCRIPT_PATH="${SCRIPT_PATH:-$DEFAULT_SCRIPT_PATH}"; SCRIPT_PATH="${SCRIPT_PATH:-$DEFAULT_SCRIPT_PATH}";
FBT_TOOLCHAIN_VERSION="${FBT_TOOLCHAIN_VERSION:-"19"}"; FBT_TOOLCHAIN_VERSION="${FBT_TOOLCHAIN_VERSION:-"20"}";
FBT_TOOLCHAIN_PATH="${FBT_TOOLCHAIN_PATH:-$SCRIPT_PATH}"; FBT_TOOLCHAIN_PATH="${FBT_TOOLCHAIN_PATH:-$SCRIPT_PATH}";
fbtenv_show_usage() fbtenv_show_usage()
@ -35,6 +35,7 @@ fbtenv_restore_env()
PATH="$(echo "$PATH" | /usr/bin/sed "s/$TOOLCHAIN_ARCH_DIR_SED\/bin://g")"; PATH="$(echo "$PATH" | /usr/bin/sed "s/$TOOLCHAIN_ARCH_DIR_SED\/bin://g")";
PATH="$(echo "$PATH" | /usr/bin/sed "s/$TOOLCHAIN_ARCH_DIR_SED\/protobuf\/bin://g")"; PATH="$(echo "$PATH" | /usr/bin/sed "s/$TOOLCHAIN_ARCH_DIR_SED\/protobuf\/bin://g")";
PATH="$(echo "$PATH" | /usr/bin/sed "s/$TOOLCHAIN_ARCH_DIR_SED\/openocd\/bin://g")"; PATH="$(echo "$PATH" | /usr/bin/sed "s/$TOOLCHAIN_ARCH_DIR_SED\/openocd\/bin://g")";
PATH="$(echo "$PATH" | /usr/bin/sed "s/$TOOLCHAIN_ARCH_DIR_SED\/openssl\/bin://g")";
if [ -n "${PS1:-""}" ]; then if [ -n "${PS1:-""}" ]; then
PS1="$(echo "$PS1" | sed 's/\[fbt\]//g')"; PS1="$(echo "$PS1" | sed 's/\[fbt\]//g')";
elif [ -n "${PROMPT:-""}" ]; then elif [ -n "${PROMPT:-""}" ]; then
@ -258,6 +259,7 @@ fbtenv_check_download_toolchain()
elif [ ! -f "$TOOLCHAIN_ARCH_DIR/VERSION" ]; then elif [ ! -f "$TOOLCHAIN_ARCH_DIR/VERSION" ]; then
fbtenv_download_toolchain || return 1; fbtenv_download_toolchain || return 1;
elif [ "$(cat "$TOOLCHAIN_ARCH_DIR/VERSION")" -ne "$FBT_TOOLCHAIN_VERSION" ]; then elif [ "$(cat "$TOOLCHAIN_ARCH_DIR/VERSION")" -ne "$FBT_TOOLCHAIN_VERSION" ]; then
echo "FBT: starting toolchain upgrade process.."
fbtenv_download_toolchain || return 1; fbtenv_download_toolchain || return 1;
fi fi
return 0; return 0;
@ -279,6 +281,11 @@ fbtenv_download_toolchain()
return 0; return 0;
} }
fbtenv_print_version()
{
echo "FBT: using toolchain version $(cat "$TOOLCHAIN_ARCH_DIR/VERSION")";
}
fbtenv_main() fbtenv_main()
{ {
fbtenv_check_sourced || return 1; fbtenv_check_sourced || return 1;
@ -291,10 +298,12 @@ fbtenv_main()
fbtenv_check_script_path || return 1; fbtenv_check_script_path || return 1;
fbtenv_check_download_toolchain || return 1; fbtenv_check_download_toolchain || return 1;
fbtenv_set_shell_prompt; fbtenv_set_shell_prompt;
fbtenv_print_version;
PATH="$TOOLCHAIN_ARCH_DIR/python/bin:$PATH"; PATH="$TOOLCHAIN_ARCH_DIR/python/bin:$PATH";
PATH="$TOOLCHAIN_ARCH_DIR/bin:$PATH"; PATH="$TOOLCHAIN_ARCH_DIR/bin:$PATH";
PATH="$TOOLCHAIN_ARCH_DIR/protobuf/bin:$PATH"; PATH="$TOOLCHAIN_ARCH_DIR/protobuf/bin:$PATH";
PATH="$TOOLCHAIN_ARCH_DIR/openocd/bin:$PATH"; PATH="$TOOLCHAIN_ARCH_DIR/openocd/bin:$PATH";
PATH="$TOOLCHAIN_ARCH_DIR/openssl/bin:$PATH";
SAVED_PYTHONNOUSERSITE="${PYTHONNOUSERSITE:-""}"; SAVED_PYTHONNOUSERSITE="${PYTHONNOUSERSITE:-""}";
SAVED_PYTHONPATH="${PYTHONPATH:-""}"; SAVED_PYTHONPATH="${PYTHONPATH:-""}";