Merge remote-tracking branch 'origin/dev' into release-candidate
This commit is contained in:
commit
df6b81274b
@ -5,6 +5,7 @@
|
|||||||
#include <gui/modules/empty_screen.h>
|
#include <gui/modules/empty_screen.h>
|
||||||
#include <m-string.h>
|
#include <m-string.h>
|
||||||
#include <furi_hal_version.h>
|
#include <furi_hal_version.h>
|
||||||
|
#include <furi_hal_region.h>
|
||||||
#include <furi_hal_bt.h>
|
#include <furi_hal_bt.h>
|
||||||
|
|
||||||
typedef DialogMessageButton (*AboutDialogScreen)(DialogsApp* dialogs, DialogMessage* message);
|
typedef DialogMessageButton (*AboutDialogScreen)(DialogsApp* dialogs, DialogMessage* message);
|
||||||
@ -83,12 +84,13 @@ static DialogMessageButton hw_version_screen(DialogsApp* dialogs, DialogMessage*
|
|||||||
|
|
||||||
string_cat_printf(
|
string_cat_printf(
|
||||||
buffer,
|
buffer,
|
||||||
"%d.F%dB%dC%d %s %s\n",
|
"%d.F%dB%dC%d %s:%s %s\n",
|
||||||
furi_hal_version_get_hw_version(),
|
furi_hal_version_get_hw_version(),
|
||||||
furi_hal_version_get_hw_target(),
|
furi_hal_version_get_hw_target(),
|
||||||
furi_hal_version_get_hw_body(),
|
furi_hal_version_get_hw_body(),
|
||||||
furi_hal_version_get_hw_connect(),
|
furi_hal_version_get_hw_connect(),
|
||||||
furi_hal_version_get_hw_region_name(),
|
furi_hal_version_get_hw_region_name(),
|
||||||
|
furi_hal_region_get_name(),
|
||||||
my_name ? my_name : "Unknown");
|
my_name ? my_name : "Unknown");
|
||||||
|
|
||||||
string_cat_printf(buffer, "Serial Number:\n");
|
string_cat_printf(buffer, "Serial Number:\n");
|
||||||
|
|||||||
@ -36,12 +36,13 @@ void desktop_debug_render(Canvas* canvas, void* model) {
|
|||||||
snprintf(
|
snprintf(
|
||||||
buffer,
|
buffer,
|
||||||
sizeof(buffer),
|
sizeof(buffer),
|
||||||
"%d.F%dB%dC%d %s %s",
|
"%d.F%dB%dC%d %s:%s %s",
|
||||||
furi_hal_version_get_hw_version(),
|
furi_hal_version_get_hw_version(),
|
||||||
furi_hal_version_get_hw_target(),
|
furi_hal_version_get_hw_target(),
|
||||||
furi_hal_version_get_hw_body(),
|
furi_hal_version_get_hw_body(),
|
||||||
furi_hal_version_get_hw_connect(),
|
furi_hal_version_get_hw_connect(),
|
||||||
furi_hal_version_get_hw_region_name(),
|
furi_hal_version_get_hw_region_name(),
|
||||||
|
furi_hal_region_get_name(),
|
||||||
my_name ? my_name : "Unknown");
|
my_name ? my_name : "Unknown");
|
||||||
canvas_draw_str(canvas, 5, 19 + STATUS_BAR_Y_SHIFT, buffer);
|
canvas_draw_str(canvas, 5, 19 + STATUS_BAR_Y_SHIFT, buffer);
|
||||||
|
|
||||||
|
|||||||
@ -295,6 +295,13 @@ bool infrared_rename_current_remote(Infrared* infrared, const char* name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void infrared_tx_start_signal(Infrared* infrared, InfraredSignal* signal) {
|
void infrared_tx_start_signal(Infrared* infrared, InfraredSignal* signal) {
|
||||||
|
if(infrared->app_state.is_transmitting) {
|
||||||
|
FURI_LOG_D(INFRARED_LOG_TAG, "Transmitter is already active");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
infrared->app_state.is_transmitting = true;
|
||||||
|
}
|
||||||
|
|
||||||
if(infrared_signal_is_raw(signal)) {
|
if(infrared_signal_is_raw(signal)) {
|
||||||
InfraredRawSignal* raw = infrared_signal_get_raw_signal(signal);
|
InfraredRawSignal* raw = infrared_signal_get_raw_signal(signal);
|
||||||
infrared_worker_set_raw_signal(infrared->worker, raw->timings, raw->timings_size);
|
infrared_worker_set_raw_signal(infrared->worker, raw->timings, raw->timings_size);
|
||||||
@ -304,8 +311,11 @@ void infrared_tx_start_signal(Infrared* infrared, InfraredSignal* signal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
DOLPHIN_DEED(DolphinDeedIrSend);
|
DOLPHIN_DEED(DolphinDeedIrSend);
|
||||||
infrared_worker_tx_start(infrared->worker);
|
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStartSend);
|
infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStartSend);
|
||||||
|
|
||||||
|
infrared_worker_tx_set_get_signal_callback(
|
||||||
|
infrared->worker, infrared_worker_tx_get_signal_steady_callback, infrared);
|
||||||
|
infrared_worker_tx_start(infrared->worker);
|
||||||
}
|
}
|
||||||
|
|
||||||
void infrared_tx_start_button_index(Infrared* infrared, size_t button_index) {
|
void infrared_tx_start_button_index(Infrared* infrared, size_t button_index) {
|
||||||
@ -324,7 +334,16 @@ void infrared_tx_start_received(Infrared* infrared) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void infrared_tx_stop(Infrared* infrared) {
|
void infrared_tx_stop(Infrared* infrared) {
|
||||||
|
if(!infrared->app_state.is_transmitting) {
|
||||||
|
FURI_LOG_D(INFRARED_LOG_TAG, "Transmitter is already stopped");
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
infrared->app_state.is_transmitting = false;
|
||||||
|
}
|
||||||
|
|
||||||
infrared_worker_tx_stop(infrared->worker);
|
infrared_worker_tx_stop(infrared->worker);
|
||||||
|
infrared_worker_tx_set_get_signal_callback(infrared->worker, NULL, NULL);
|
||||||
|
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStop);
|
infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -43,6 +43,7 @@
|
|||||||
#define INFRARED_APP_EXTENSION ".ir"
|
#define INFRARED_APP_EXTENSION ".ir"
|
||||||
|
|
||||||
#define INFRARED_DEFAULT_REMOTE_NAME "Remote"
|
#define INFRARED_DEFAULT_REMOTE_NAME "Remote"
|
||||||
|
#define INFRARED_LOG_TAG "InfraredApp"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
InfraredButtonIndexNone = -1,
|
InfraredButtonIndexNone = -1,
|
||||||
@ -63,6 +64,7 @@ typedef enum {
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
bool is_learning_new_remote;
|
bool is_learning_new_remote;
|
||||||
bool is_debug_enabled;
|
bool is_debug_enabled;
|
||||||
|
bool is_transmitting;
|
||||||
InfraredEditTarget edit_target : 8;
|
InfraredEditTarget edit_target : 8;
|
||||||
InfraredEditMode edit_mode : 8;
|
InfraredEditMode edit_mode : 8;
|
||||||
int32_t current_button_index;
|
int32_t current_button_index;
|
||||||
|
|||||||
@ -2,11 +2,6 @@
|
|||||||
|
|
||||||
#include <dolphin/dolphin.h>
|
#include <dolphin/dolphin.h>
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
InfraredSceneLearnSuccessStateIdle = 0,
|
|
||||||
InfraredSceneLearnSuccessStateSending = 1,
|
|
||||||
} InfraredSceneLearnSuccessState;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
infrared_scene_learn_success_dialog_result_callback(DialogExResult result, void* context) {
|
infrared_scene_learn_success_dialog_result_callback(DialogExResult result, void* context) {
|
||||||
Infrared* infrared = context;
|
Infrared* infrared = context;
|
||||||
@ -21,9 +16,6 @@ void infrared_scene_learn_success_on_enter(void* context) {
|
|||||||
DOLPHIN_DEED(DolphinDeedIrLearnSuccess);
|
DOLPHIN_DEED(DolphinDeedIrLearnSuccess);
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageGreenOn);
|
infrared_play_notification_message(infrared, InfraredNotificationMessageGreenOn);
|
||||||
|
|
||||||
infrared_worker_tx_set_get_signal_callback(
|
|
||||||
infrared->worker, infrared_worker_tx_get_signal_steady_callback, context);
|
|
||||||
|
|
||||||
if(infrared_signal_is_raw(signal)) {
|
if(infrared_signal_is_raw(signal)) {
|
||||||
InfraredRawSignal* raw = infrared_signal_get_raw_signal(signal);
|
InfraredRawSignal* raw = infrared_signal_get_raw_signal(signal);
|
||||||
dialog_ex_set_header(dialog_ex, "Unknown", 95, 10, AlignCenter, AlignCenter);
|
dialog_ex_set_header(dialog_ex, "Unknown", 95, 10, AlignCenter, AlignCenter);
|
||||||
@ -63,57 +55,42 @@ void infrared_scene_learn_success_on_enter(void* context) {
|
|||||||
dialog_ex_set_context(dialog_ex, context);
|
dialog_ex_set_context(dialog_ex, context);
|
||||||
dialog_ex_enable_extended_events(dialog_ex);
|
dialog_ex_enable_extended_events(dialog_ex);
|
||||||
|
|
||||||
scene_manager_set_scene_state(
|
|
||||||
infrared->scene_manager, InfraredSceneLearnSuccess, InfraredSceneLearnSuccessStateIdle);
|
|
||||||
view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewDialogEx);
|
view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewDialogEx);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool infrared_scene_learn_success_on_event(void* context, SceneManagerEvent event) {
|
bool infrared_scene_learn_success_on_event(void* context, SceneManagerEvent event) {
|
||||||
Infrared* infrared = context;
|
Infrared* infrared = context;
|
||||||
SceneManager* scene_manager = infrared->scene_manager;
|
SceneManager* scene_manager = infrared->scene_manager;
|
||||||
uint32_t scene_state = scene_manager_get_scene_state(scene_manager, InfraredSceneLearnSuccess);
|
const bool is_transmitter_idle = !infrared->app_state.is_transmitting;
|
||||||
bool consumed = false;
|
bool consumed = false;
|
||||||
|
|
||||||
if(event.type == SceneManagerEventTypeTick) {
|
if(event.type == SceneManagerEventTypeTick) {
|
||||||
if(scene_state == InfraredSceneLearnSuccessStateIdle) {
|
if(is_transmitter_idle) {
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageGreenOn);
|
infrared_play_notification_message(infrared, InfraredNotificationMessageGreenOn);
|
||||||
}
|
}
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.type == SceneManagerEventTypeBack) {
|
} else if(event.type == SceneManagerEventTypeBack) {
|
||||||
if(scene_state == InfraredSceneLearnSuccessStateIdle) {
|
if(is_transmitter_idle) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneAskBack);
|
scene_manager_next_scene(scene_manager, InfraredSceneAskBack);
|
||||||
}
|
}
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.type == SceneManagerEventTypeCustom) {
|
} else if(event.type == SceneManagerEventTypeCustom) {
|
||||||
if(event.event == DialogExResultLeft) {
|
if(event.event == DialogExResultLeft) {
|
||||||
if(scene_state == InfraredSceneLearnSuccessStateIdle) {
|
if(is_transmitter_idle) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneAskRetry);
|
scene_manager_next_scene(scene_manager, InfraredSceneAskRetry);
|
||||||
}
|
}
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.event == DialogExResultRight) {
|
} else if(event.event == DialogExResultRight) {
|
||||||
if(scene_state == InfraredSceneLearnSuccessStateIdle) {
|
if(is_transmitter_idle) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneLearnEnterName);
|
scene_manager_next_scene(scene_manager, InfraredSceneLearnEnterName);
|
||||||
}
|
}
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.event == DialogExPressCenter) {
|
} else if(event.event == DialogExPressCenter) {
|
||||||
if(scene_state == InfraredSceneLearnSuccessStateIdle) {
|
infrared_tx_start_received(infrared);
|
||||||
scene_manager_set_scene_state(
|
|
||||||
scene_manager,
|
|
||||||
InfraredSceneLearnSuccess,
|
|
||||||
InfraredSceneLearnSuccessStateSending);
|
|
||||||
infrared_tx_start_received(infrared);
|
|
||||||
infrared_play_notification_message(
|
|
||||||
infrared, InfraredNotificationMessageBlinkStartSend);
|
|
||||||
}
|
|
||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(event.event == DialogExReleaseCenter) {
|
} else if(event.event == DialogExReleaseCenter) {
|
||||||
if(scene_state == InfraredSceneLearnSuccessStateSending) {
|
infrared_tx_stop(infrared);
|
||||||
scene_manager_set_scene_state(
|
infrared_play_notification_message(infrared, InfraredNotificationMessageGreenOff);
|
||||||
scene_manager, InfraredSceneLearnSuccess, InfraredSceneLearnSuccessStateIdle);
|
|
||||||
infrared_tx_stop(infrared);
|
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStop);
|
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageGreenOff);
|
|
||||||
}
|
|
||||||
consumed = true;
|
consumed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -123,9 +100,5 @@ bool infrared_scene_learn_success_on_event(void* context, SceneManagerEvent even
|
|||||||
|
|
||||||
void infrared_scene_learn_success_on_exit(void* context) {
|
void infrared_scene_learn_success_on_exit(void* context) {
|
||||||
Infrared* infrared = context;
|
Infrared* infrared = context;
|
||||||
InfraredWorker* worker = infrared->worker;
|
|
||||||
dialog_ex_reset(infrared->dialog_ex);
|
dialog_ex_reset(infrared->dialog_ex);
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStop);
|
|
||||||
infrared_play_notification_message(infrared, InfraredNotificationMessageGreenOff);
|
|
||||||
infrared_worker_tx_set_get_signal_callback(worker, NULL, NULL);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,9 +31,6 @@ void infrared_scene_remote_on_enter(void* context) {
|
|||||||
ButtonMenu* button_menu = infrared->button_menu;
|
ButtonMenu* button_menu = infrared->button_menu;
|
||||||
SceneManager* scene_manager = infrared->scene_manager;
|
SceneManager* scene_manager = infrared->scene_manager;
|
||||||
|
|
||||||
infrared_worker_tx_set_get_signal_callback(
|
|
||||||
infrared->worker, infrared_worker_tx_get_signal_steady_callback, infrared);
|
|
||||||
|
|
||||||
size_t button_count = infrared_remote_get_button_count(remote);
|
size_t button_count = infrared_remote_get_button_count(remote);
|
||||||
for(size_t i = 0; i < button_count; ++i) {
|
for(size_t i = 0; i < button_count; ++i) {
|
||||||
InfraredRemoteButton* button = infrared_remote_get_button(remote, i);
|
InfraredRemoteButton* button = infrared_remote_get_button(remote, i);
|
||||||
@ -73,12 +70,17 @@ void infrared_scene_remote_on_enter(void* context) {
|
|||||||
bool infrared_scene_remote_on_event(void* context, SceneManagerEvent event) {
|
bool infrared_scene_remote_on_event(void* context, SceneManagerEvent event) {
|
||||||
Infrared* infrared = context;
|
Infrared* infrared = context;
|
||||||
SceneManager* scene_manager = infrared->scene_manager;
|
SceneManager* scene_manager = infrared->scene_manager;
|
||||||
|
const bool is_transmitter_idle = !infrared->app_state.is_transmitting;
|
||||||
bool consumed = false;
|
bool consumed = false;
|
||||||
|
|
||||||
if(event.type == SceneManagerEventTypeBack) {
|
if(event.type == SceneManagerEventTypeBack) {
|
||||||
const uint32_t possible_scenes[] = {InfraredSceneRemoteList, InfraredSceneStart};
|
if(is_transmitter_idle) {
|
||||||
consumed = scene_manager_search_and_switch_to_previous_scene_one_of(
|
const uint32_t possible_scenes[] = {InfraredSceneRemoteList, InfraredSceneStart};
|
||||||
scene_manager, possible_scenes, COUNT_OF(possible_scenes));
|
consumed = scene_manager_search_and_switch_to_previous_scene_one_of(
|
||||||
|
scene_manager, possible_scenes, COUNT_OF(possible_scenes));
|
||||||
|
} else {
|
||||||
|
consumed = true;
|
||||||
|
}
|
||||||
} else if(event.type == SceneManagerEventTypeCustom) {
|
} else if(event.type == SceneManagerEventTypeCustom) {
|
||||||
const uint16_t custom_type = infrared_custom_event_get_type(event.event);
|
const uint16_t custom_type = infrared_custom_event_get_type(event.event);
|
||||||
const int16_t button_index = infrared_custom_event_get_value(event.event);
|
const int16_t button_index = infrared_custom_event_get_value(event.event);
|
||||||
@ -92,14 +94,19 @@ bool infrared_scene_remote_on_event(void* context, SceneManagerEvent event) {
|
|||||||
consumed = true;
|
consumed = true;
|
||||||
} else if(custom_type == InfraredCustomEventTypeMenuSelected) {
|
} else if(custom_type == InfraredCustomEventTypeMenuSelected) {
|
||||||
furi_assert(button_index < 0);
|
furi_assert(button_index < 0);
|
||||||
scene_manager_set_scene_state(
|
if(is_transmitter_idle) {
|
||||||
scene_manager, InfraredSceneRemote, (unsigned)button_index);
|
scene_manager_set_scene_state(
|
||||||
if(button_index == ButtonIndexPlus) {
|
scene_manager, InfraredSceneRemote, (unsigned)button_index);
|
||||||
infrared->app_state.is_learning_new_remote = false;
|
if(button_index == ButtonIndexPlus) {
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneLearn);
|
infrared->app_state.is_learning_new_remote = false;
|
||||||
consumed = true;
|
scene_manager_next_scene(scene_manager, InfraredSceneLearn);
|
||||||
} else if(button_index == ButtonIndexEdit) {
|
consumed = true;
|
||||||
scene_manager_next_scene(scene_manager, InfraredSceneEdit);
|
} else if(button_index == ButtonIndexEdit) {
|
||||||
|
scene_manager_next_scene(scene_manager, InfraredSceneEdit);
|
||||||
|
consumed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
consumed = true;
|
consumed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -110,7 +117,5 @@ bool infrared_scene_remote_on_event(void* context, SceneManagerEvent event) {
|
|||||||
|
|
||||||
void infrared_scene_remote_on_exit(void* context) {
|
void infrared_scene_remote_on_exit(void* context) {
|
||||||
Infrared* infrared = context;
|
Infrared* infrared = context;
|
||||||
infrared_tx_stop(infrared);
|
|
||||||
infrared_worker_tx_set_get_signal_callback(infrared->worker, NULL, NULL);
|
|
||||||
button_menu_reset(infrared->button_menu);
|
button_menu_reset(infrared->button_menu);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -44,8 +44,6 @@ bool infrared_scene_rpc_on_event(void* context, SceneManagerEvent event) {
|
|||||||
if(arg && (state == InfraredRpcStateIdle)) {
|
if(arg && (state == InfraredRpcStateIdle)) {
|
||||||
string_set_str(infrared->file_path, arg);
|
string_set_str(infrared->file_path, arg);
|
||||||
result = infrared_remote_load(infrared->remote, infrared->file_path);
|
result = infrared_remote_load(infrared->remote, infrared->file_path);
|
||||||
infrared_worker_tx_set_get_signal_callback(
|
|
||||||
infrared->worker, infrared_worker_tx_get_signal_steady_callback, infrared);
|
|
||||||
if(result) {
|
if(result) {
|
||||||
scene_manager_set_scene_state(
|
scene_manager_set_scene_state(
|
||||||
infrared->scene_manager, InfraredSceneRpc, InfraredRpcStateLoaded);
|
infrared->scene_manager, InfraredSceneRpc, InfraredRpcStateLoaded);
|
||||||
|
|||||||
@ -75,7 +75,10 @@ void furi_hal_clock_init() {
|
|||||||
LL_EXTI_LINE_18); /* Why? Because that's why. See RM0434, Table 61. CPU1 vector table. */
|
LL_EXTI_LINE_18); /* Why? Because that's why. See RM0434, Table 61. CPU1 vector table. */
|
||||||
LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_18);
|
LL_EXTI_EnableRisingTrig_0_31(LL_EXTI_LINE_18);
|
||||||
LL_RCC_EnableIT_LSECSS();
|
LL_RCC_EnableIT_LSECSS();
|
||||||
LL_RCC_LSE_EnableCSS();
|
/* ES0394, extended case of 2.2.2 */
|
||||||
|
if(!LL_RCC_IsActiveFlag_BORRST()) {
|
||||||
|
LL_RCC_LSE_EnableCSS();
|
||||||
|
}
|
||||||
|
|
||||||
/* Main PLL configuration and activation */
|
/* Main PLL configuration and activation */
|
||||||
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_2, 8, LL_RCC_PLLR_DIV_2);
|
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_2, 8, LL_RCC_PLLR_DIV_2);
|
||||||
|
|||||||
@ -262,6 +262,8 @@ const char* furi_hal_version_get_hw_region_name() {
|
|||||||
return "R02";
|
return "R02";
|
||||||
case FuriHalVersionRegionJp:
|
case FuriHalVersionRegionJp:
|
||||||
return "R03";
|
return "R03";
|
||||||
|
case FuriHalVersionRegionWorld:
|
||||||
|
return "R04";
|
||||||
}
|
}
|
||||||
return "R??";
|
return "R??";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,6 +41,7 @@ typedef enum {
|
|||||||
FuriHalVersionRegionEuRu = 0x01,
|
FuriHalVersionRegionEuRu = 0x01,
|
||||||
FuriHalVersionRegionUsCaAu = 0x02,
|
FuriHalVersionRegionUsCaAu = 0x02,
|
||||||
FuriHalVersionRegionJp = 0x03,
|
FuriHalVersionRegionJp = 0x03,
|
||||||
|
FuriHalVersionRegionWorld = 0x04,
|
||||||
} FuriHalVersionRegion;
|
} FuriHalVersionRegion;
|
||||||
|
|
||||||
/** Device Display */
|
/** Device Display */
|
||||||
|
|||||||
@ -31,6 +31,7 @@ if not "%REAL_TOOLCHAIN_VERSION%" == "%FLIPPER_TOOLCHAIN_VERSION%" (
|
|||||||
|
|
||||||
set "HOME=%USERPROFILE%"
|
set "HOME=%USERPROFILE%"
|
||||||
set "PYTHONHOME=%FBT_TOOLCHAIN_ROOT%\python"
|
set "PYTHONHOME=%FBT_TOOLCHAIN_ROOT%\python"
|
||||||
|
set "PYTHONPATH="
|
||||||
set "PATH=%FBT_TOOLCHAIN_ROOT%\python;%FBT_TOOLCHAIN_ROOT%\bin;%FBT_TOOLCHAIN_ROOT%\protoc\bin;%FBT_TOOLCHAIN_ROOT%\openocd\bin;%PATH%"
|
set "PATH=%FBT_TOOLCHAIN_ROOT%\python;%FBT_TOOLCHAIN_ROOT%\bin;%FBT_TOOLCHAIN_ROOT%\protoc\bin;%FBT_TOOLCHAIN_ROOT%\openocd\bin;%PATH%"
|
||||||
set "PROMPT=(fbt) %PROMPT%"
|
set "PROMPT=(fbt) %PROMPT%"
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user