From 2e47c5a2acbcf5e4cfd614fe209043760e90e9a3 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Sun, 4 Jun 2023 15:27:59 +0300 Subject: [PATCH] lets try patch --- .ci_files/rgb.patch | 556 ++++++++++++++++++++++++++++++++++++++++++++ .drone.yml | 96 +++++++- 2 files changed, 648 insertions(+), 4 deletions(-) create mode 100644 .ci_files/rgb.patch diff --git a/.ci_files/rgb.patch b/.ci_files/rgb.patch new file mode 100644 index 000000000..804034bab --- /dev/null +++ b/.ci_files/rgb.patch @@ -0,0 +1,556 @@ +diff --git a/applications/services/notification/notification_app.c b/applications/services/notification/notification_app.c +index f91a73f32..b559a79ad 100644 +--- a/applications/services/notification/notification_app.c ++++ b/applications/services/notification/notification_app.c +@@ -6,6 +6,7 @@ + #include "notification.h" + #include "notification_messages.h" + #include "notification_app.h" ++#include "applications/settings/notification_settings/rgb_backlight.h" + + #define TAG "NotificationSrv" + +@@ -564,6 +565,7 @@ int32_t notification_srv(void* p) { + break; + case SaveSettingsMessage: + notification_save_settings(app); ++ rgb_backlight_save_settings(); + break; + } + +diff --git a/applications/settings/notification_settings/notification_settings_app.c b/applications/settings/notification_settings/notification_settings_app.c +index f5d7a82ca..930c0bd1f 100644 +--- a/applications/settings/notification_settings/notification_settings_app.c ++++ b/applications/settings/notification_settings/notification_settings_app.c +@@ -3,6 +3,7 @@ + #include + #include + #include ++#include + + #define MAX_NOTIFICATION_SETTINGS 4 + +@@ -73,7 +74,6 @@ const bool vibro_value[VIBRO_COUNT] = {false, true}; + static void backlight_changed(VariableItem* item) { + NotificationAppSettings* app = variable_item_get_context(item); + uint8_t index = variable_item_get_current_value_index(item); +- + variable_item_set_current_value_text(item, backlight_text[index]); + app->notification->settings.display_brightness = backlight_value[index]; + notification_message(app->notification, &sequence_display_backlight_on); +@@ -125,6 +125,14 @@ static void vibro_changed(VariableItem* item) { + notification_message(app->notification, &sequence_single_vibro); + } + ++static void color_changed(VariableItem* item) { ++ NotificationAppSettings* app = variable_item_get_context(item); ++ uint8_t index = variable_item_get_current_value_index(item); ++ rgb_backlight_set_color(index); ++ variable_item_set_current_value_text(item, rgb_backlight_get_color_text(index)); ++ notification_message(app->notification, &sequence_display_backlight_on); ++} ++ + static uint32_t notification_app_settings_exit(void* context) { + UNUSED(context); + return VIEW_NONE; +@@ -143,7 +151,13 @@ static NotificationAppSettings* alloc_settings() { + uint8_t value_index; + + item = variable_item_list_add( +- app->variable_item_list, "LCD Backlight", BACKLIGHT_COUNT, backlight_changed, app); ++ app->variable_item_list, "LCD Color", rgb_backlight_get_color_count(), color_changed, app); ++ value_index = rgb_backlight_get_settings()->display_color_index; ++ variable_item_set_current_value_index(item, value_index); ++ variable_item_set_current_value_text(item, rgb_backlight_get_color_text(value_index)); ++ ++ item = variable_item_list_add( ++ app->variable_item_list, "LCD Brightness", BACKLIGHT_COUNT, backlight_changed, app); + value_index = value_index_float( + app->notification->settings.display_brightness, backlight_value, BACKLIGHT_COUNT); + variable_item_set_current_value_index(item, value_index); +@@ -215,6 +229,7 @@ int32_t notification_settings_app(void* p) { + NotificationAppSettings* app = alloc_settings(); + view_dispatcher_run(app->view_dispatcher); + notification_message_save_settings(app->notification); ++ + free_settings(app); + return 0; + } +diff --git a/applications/settings/notification_settings/rgb_backlight.c b/applications/settings/notification_settings/rgb_backlight.c +new file mode 100644 +index 000000000..269b544ae +--- /dev/null ++++ b/applications/settings/notification_settings/rgb_backlight.c +@@ -0,0 +1,171 @@ ++/* ++ RGB backlight FlipperZero driver ++ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n) ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++*/ ++ ++#include "rgb_backlight.h" ++#include ++#include ++ ++#define RGB_BACKLIGHT_SETTINGS_VERSION 5 ++#define RGB_BACKLIGHT_SETTINGS_FILE_NAME ".rgb_backlight.settings" ++#define RGB_BACKLIGHT_SETTINGS_PATH EXT_PATH(RGB_BACKLIGHT_SETTINGS_FILE_NAME) ++ ++#define COLOR_COUNT (sizeof(colors) / sizeof(RGBBacklightColor)) ++ ++#define TAG "RGB Backlight" ++ ++static RGBBacklightSettings rgb_settings = { ++ .version = RGB_BACKLIGHT_SETTINGS_VERSION, ++ .display_color_index = 0, ++ .settings_is_loaded = false}; ++ ++static const RGBBacklightColor colors[] = { ++ {"Orange", 255, 79, 0}, ++ {"Yellow", 255, 170, 0}, ++ {"Spring", 167, 255, 0}, ++ {"Lime", 0, 255, 0}, ++ {"Aqua", 0, 255, 127}, ++ {"Cyan", 0, 210, 210}, ++ {"Azure", 0, 127, 255}, ++ {"Blue", 0, 0, 255}, ++ {"Purple", 127, 0, 255}, ++ {"Magenta", 210, 0, 210}, ++ {"Pink", 255, 0, 127}, ++ {"Red", 255, 0, 0}, ++ {"White", 140, 140, 140}, ++}; ++ ++uint8_t rgb_backlight_get_color_count(void) { ++ return COLOR_COUNT; ++} ++ ++const char* rgb_backlight_get_color_text(uint8_t index) { ++ return colors[index].name; ++} ++ ++void rgb_backlight_load_settings(void) { ++ //Не загружать данные из внутренней памяти при загрузке в режиме DFU ++ FuriHalRtcBootMode bm = furi_hal_rtc_get_boot_mode(); ++ if(bm == FuriHalRtcBootModeDfu) { ++ rgb_settings.settings_is_loaded = true; ++ return; ++ } ++ ++ RGBBacklightSettings settings; ++ File* file = storage_file_alloc(furi_record_open(RECORD_STORAGE)); ++ const size_t settings_size = sizeof(RGBBacklightSettings); ++ ++ FURI_LOG_I(TAG, "loading settings from \"%s\"", RGB_BACKLIGHT_SETTINGS_PATH); ++ bool fs_result = ++ storage_file_open(file, RGB_BACKLIGHT_SETTINGS_PATH, FSAM_READ, FSOM_OPEN_EXISTING); ++ ++ if(fs_result) { ++ uint16_t bytes_count = storage_file_read(file, &settings, settings_size); ++ ++ if(bytes_count != settings_size) { ++ fs_result = false; ++ } ++ } ++ ++ if(fs_result) { ++ FURI_LOG_I(TAG, "load success"); ++ if(settings.version != RGB_BACKLIGHT_SETTINGS_VERSION) { ++ FURI_LOG_E( ++ TAG, ++ "version(%d != %d) mismatch", ++ settings.version, ++ RGB_BACKLIGHT_SETTINGS_VERSION); ++ } else { ++ memcpy(&rgb_settings, &settings, settings_size); ++ } ++ } else { ++ FURI_LOG_E(TAG, "load failed, %s", storage_file_get_error_desc(file)); ++ } ++ ++ storage_file_close(file); ++ storage_file_free(file); ++ furi_record_close(RECORD_STORAGE); ++ rgb_settings.settings_is_loaded = true; ++}; ++ ++void rgb_backlight_save_settings(void) { ++ RGBBacklightSettings settings; ++ File* file = storage_file_alloc(furi_record_open(RECORD_STORAGE)); ++ const size_t settings_size = sizeof(RGBBacklightSettings); ++ ++ FURI_LOG_I(TAG, "saving settings to \"%s\"", RGB_BACKLIGHT_SETTINGS_PATH); ++ ++ memcpy(&settings, &rgb_settings, settings_size); ++ ++ bool fs_result = ++ storage_file_open(file, RGB_BACKLIGHT_SETTINGS_PATH, FSAM_WRITE, FSOM_CREATE_ALWAYS); ++ ++ if(fs_result) { ++ uint16_t bytes_count = storage_file_write(file, &settings, settings_size); ++ ++ if(bytes_count != settings_size) { ++ fs_result = false; ++ } ++ } ++ ++ if(fs_result) { ++ FURI_LOG_I(TAG, "save success"); ++ } else { ++ FURI_LOG_E(TAG, "save failed, %s", storage_file_get_error_desc(file)); ++ } ++ ++ storage_file_close(file); ++ storage_file_free(file); ++ furi_record_close(RECORD_STORAGE); ++}; ++ ++RGBBacklightSettings* rgb_backlight_get_settings(void) { ++ if(!rgb_settings.settings_is_loaded) { ++ rgb_backlight_load_settings(); ++ } ++ return &rgb_settings; ++} ++ ++void rgb_backlight_set_color(uint8_t color_index) { ++ if(color_index > (rgb_backlight_get_color_count() - 1)) color_index = 0; ++ rgb_settings.display_color_index = color_index; ++} ++ ++void rgb_backlight_update(uint8_t brightness) { ++ if(!rgb_settings.settings_is_loaded) { ++ rgb_backlight_load_settings(); ++ } ++ ++ static uint8_t last_color_index = 255; ++ static uint8_t last_brightness = 123; ++ ++ if(last_brightness == brightness && last_color_index == rgb_settings.display_color_index) ++ return; ++ ++ last_brightness = brightness; ++ last_color_index = rgb_settings.display_color_index; ++ ++ for(uint8_t i = 0; i < SK6805_get_led_count(); i++) { ++ uint8_t r = colors[rgb_settings.display_color_index].red * (brightness / 255.0f); ++ uint8_t g = colors[rgb_settings.display_color_index].green * (brightness / 255.0f); ++ uint8_t b = colors[rgb_settings.display_color_index].blue * (brightness / 255.0f); ++ ++ SK6805_set_led_color(i, r, g, b); ++ } ++ ++ SK6805_update(); ++} +diff --git a/applications/settings/notification_settings/rgb_backlight.h b/applications/settings/notification_settings/rgb_backlight.h +new file mode 100644 +index 000000000..b63d223e6 +--- /dev/null ++++ b/applications/settings/notification_settings/rgb_backlight.h +@@ -0,0 +1,79 @@ ++/* ++ RGB backlight FlipperZero driver ++ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n) ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++*/ ++ ++#include ++#include "SK6805.h" ++ ++typedef struct { ++ char* name; ++ uint8_t red; ++ uint8_t green; ++ uint8_t blue; ++} RGBBacklightColor; ++ ++typedef struct { ++ uint8_t version; ++ uint8_t display_color_index; ++ bool settings_is_loaded; ++} RGBBacklightSettings; ++ ++/** ++ * @brief Получить текущие настройки RGB-подсветки ++ * ++ * @return Указатель на структуру настроек ++ */ ++RGBBacklightSettings* rgb_backlight_get_settings(void); ++ ++/** ++ * @brief Загрузить настройки подсветки с SD-карты ++ */ ++void rgb_backlight_load_settings(void); ++ ++/** ++ * @brief Сохранить текущие настройки RGB-подсветки ++ */ ++void rgb_backlight_save_settings(void); ++ ++/** ++ * @brief Применить текущие настройки RGB-подсветки ++ * ++ * @param brightness Яркость свечения (0-255) ++ */ ++void rgb_backlight_update(uint8_t brightness); ++ ++/** ++ * @brief Установить цвет RGB-подсветки ++ * ++ * @param color_index Индекс цвета (0 - rgb_backlight_get_color_count()) ++ */ ++void rgb_backlight_set_color(uint8_t color_index); ++ ++/** ++ * @brief Получить количество доступных цветов ++ * ++ * @return Число доступных вариантов цвета ++ */ ++uint8_t rgb_backlight_get_color_count(void); ++ ++/** ++ * @brief Получить текстовое название цвета ++ * ++ * @param index Индекс из доступных вариантов цвета ++ * @return Указатель на строку с названием цвета ++ */ ++const char* rgb_backlight_get_color_text(uint8_t index); +\ No newline at end of file +diff --git a/firmware/targets/f7/furi_hal/furi_hal_light.c b/firmware/targets/f7/furi_hal/furi_hal_light.c +index 83e1603b7..cad5b86cb 100644 +--- a/firmware/targets/f7/furi_hal/furi_hal_light.c ++++ b/firmware/targets/f7/furi_hal/furi_hal_light.c +@@ -3,6 +3,7 @@ + #include + #include + #include ++#include + + #define LED_CURRENT_RED 50 + #define LED_CURRENT_GREEN 50 +@@ -31,22 +32,21 @@ void furi_hal_light_init() { + } + + void furi_hal_light_set(Light light, uint8_t value) { +- furi_hal_i2c_acquire(&furi_hal_i2c_handle_power); +- if(light & LightRed) { +- lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelRed, value); +- } +- if(light & LightGreen) { +- lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelGreen, value); +- } +- if(light & LightBlue) { +- lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelBlue, value); +- } + if(light & LightBacklight) { +- uint8_t prev = lp5562_get_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelWhite); +- lp5562_execute_ramp( +- &furi_hal_i2c_handle_power, LP5562Engine1, LP5562ChannelWhite, prev, value, 100); ++ rgb_backlight_update(value); ++ } else { ++ furi_hal_i2c_acquire(&furi_hal_i2c_handle_power); ++ if(light & LightRed) { ++ lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelRed, value); ++ } ++ if(light & LightGreen) { ++ lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelGreen, value); ++ } ++ if(light & LightBlue) { ++ lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelBlue, value); ++ } ++ furi_hal_i2c_release(&furi_hal_i2c_handle_power); + } +- furi_hal_i2c_release(&furi_hal_i2c_handle_power); + } + + void furi_hal_light_blink_start(Light light, uint8_t brightness, uint16_t on_time, uint16_t period) { +diff --git a/lib/drivers/SK6805.c b/lib/drivers/SK6805.c +new file mode 100644 +index 000000000..572e1df97 +--- /dev/null ++++ b/lib/drivers/SK6805.c +@@ -0,0 +1,101 @@ ++/* ++ SK6805 FlipperZero driver ++ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n) ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++*/ ++ ++#include "SK6805.h" ++#include ++ ++/* Настройки */ ++#define SK6805_LED_COUNT 3 //Количество светодиодов на плате подсветки ++#define SK6805_LED_PIN &led_pin //Порт подключения светодиодов ++ ++#ifdef FURI_DEBUG ++#define DEBUG_PIN &gpio_ext_pa7 ++#define DEBUG_INIT() \ ++ furi_hal_gpio_init(DEBUG_PIN, GpioModeOutputPushPull, GpioPullNo, GpioSpeedVeryHigh) ++#define DEBUG_SET_HIGH() furi_hal_gpio_write(DEBUG_PIN, true) ++#define DEBUG_SET_LOW() furi_hal_gpio_write(DEBUG_PIN, false) ++#else ++#define DEBUG_INIT() ++#define DEBUG_SET_HIGH() ++#define DEBUG_SET_LOW() ++#endif ++ ++static const GpioPin led_pin = {.port = GPIOA, .pin = LL_GPIO_PIN_8}; ++static uint8_t led_buffer[SK6805_LED_COUNT][3]; ++ ++void SK6805_init(void) { ++ DEBUG_INIT(); ++ furi_hal_gpio_write(SK6805_LED_PIN, false); ++ furi_hal_gpio_init(SK6805_LED_PIN, GpioModeOutputPushPull, GpioPullNo, GpioSpeedVeryHigh); ++} ++ ++uint8_t SK6805_get_led_count(void) { ++ return (const uint8_t)SK6805_LED_COUNT; ++} ++void SK6805_set_led_color(uint8_t led_index, uint8_t r, uint8_t g, uint8_t b) { ++ furi_check(led_index < SK6805_LED_COUNT); ++ ++ led_buffer[led_index][0] = g; ++ led_buffer[led_index][1] = r; ++ led_buffer[led_index][2] = b; ++} ++ ++void SK6805_update(void) { ++ SK6805_init(); ++ furi_kernel_lock(); ++ uint32_t end; ++ /* Последовательная отправка цветов светодиодов */ ++ for(uint8_t lednumber = 0; lednumber < SK6805_LED_COUNT; lednumber++) { ++ //Последовательная отправка цветов светодиода ++ for(uint8_t color = 0; color < 3; color++) { ++ //Последовательная отправка битов цвета ++ uint8_t i = 0b10000000; ++ while(i != 0) { ++ if(led_buffer[lednumber][color] & (i)) { ++ furi_hal_gpio_write(SK6805_LED_PIN, true); ++ DEBUG_SET_HIGH(); ++ end = DWT->CYCCNT + 30; ++ //T1H 600 us (615 us) ++ while(DWT->CYCCNT < end) { ++ } ++ furi_hal_gpio_write(SK6805_LED_PIN, false); ++ DEBUG_SET_LOW(); ++ end = DWT->CYCCNT + 26; ++ //T1L 600 us (587 us) ++ while(DWT->CYCCNT < end) { ++ } ++ } else { ++ furi_hal_gpio_write(SK6805_LED_PIN, true); ++ DEBUG_SET_HIGH(); ++ end = DWT->CYCCNT + 11; ++ //T0H 300 ns (312 ns) ++ while(DWT->CYCCNT < end) { ++ } ++ furi_hal_gpio_write(SK6805_LED_PIN, false); ++ DEBUG_SET_LOW(); ++ end = DWT->CYCCNT + 43; ++ //T0L 900 ns (890 ns) ++ while(DWT->CYCCNT < end) { ++ } ++ } ++ i >>= 1; ++ } ++ } ++ } ++ furi_kernel_unlock(); ++} +diff --git a/lib/drivers/SK6805.h b/lib/drivers/SK6805.h +new file mode 100644 +index 000000000..7c58956fa +--- /dev/null ++++ b/lib/drivers/SK6805.h +@@ -0,0 +1,51 @@ ++/* ++ SK6805 FlipperZero driver ++ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n) ++ ++ This program is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . ++*/ ++ ++#ifndef SK6805_H_ ++#define SK6805_H_ ++ ++#include ++ ++/** ++ * @brief Инициализация линии управления подсветкой ++ */ ++void SK6805_init(void); ++ ++/** ++ * @brief Получить количество светодиодов в подсветке ++ * ++ * @return Количество светодиодов ++ */ ++uint8_t SK6805_get_led_count(void); ++ ++/** ++ * @brief Установить цвет свечения светодиода ++ * ++ * @param led_index номер светодиода (от 0 до SK6805_get_led_count()) ++ * @param r значение красного (0-255) ++ * @param g значение зелёного (0-255) ++ * @param b значение синего (0-255) ++ */ ++void SK6805_set_led_color(uint8_t led_index, uint8_t r, uint8_t g, uint8_t b); ++ ++/** ++ * @brief Обновление состояния подсветки дисплея ++ */ ++void SK6805_update(void); ++ ++#endif /* SK6805_H_ */ +\ No newline at end of file + +\ No newline at end of file diff --git a/.drone.yml b/.drone.yml index a03063528..c82921c9d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -31,7 +31,9 @@ steps: - echo '' >> CHANGELOG.md - echo '### [Version without custom animations - Install via Web Updater](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-'${DRONE_TAG}'n.tgz&channel=release-cfw&version='${DRONE_TAG}'n)' >> CHANGELOG.md - echo '' >> CHANGELOG.md - - echo '### [Version with extra apps - Install via Web Updater](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&channel=release-cfw&version='${DRONE_TAG}'e)' >> CHANGELOG.md + - echo '### [Version with RGB patch - Install via Web Updater](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'r.tgz&channel=release-cfw&version='${DRONE_TAG}'r)' >> CHANGELOG.md + - echo '' >> CHANGELOG.md + - echo '## [Version with Extra apps - Install via Web Updater](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&channel=release-cfw&version='${DRONE_TAG}'e)' >> CHANGELOG.md environment: FBT_TOOLS_CUSTOM_LINK: from_secret: fbt_link @@ -56,10 +58,30 @@ steps: FBT_TOOLS_CUSTOM_LINK: from_secret: fbt_link + - name: "Build with RGB patch" + image: hfdj/fztools + pull: never + commands: + - git apply .ci_files/rgb.patch + - export DIST_SUFFIX=${DRONE_TAG}r + - export WORKFLOW_BRANCH_OR_TAG=release-cfw + - export FORCE_NO_DIRTY=yes + - rm -f build/f7-firmware-C/toolbox/version.* + - ./fbt COMPACT=1 DEBUG=0 updater_package + - mkdir artifacts-rgb-patch + - mv dist/f7-C/* artifacts-rgb-patch/ + - ls -laS artifacts-rgb-patch + - ls -laS artifacts-rgb-patch/f7-update-${DRONE_TAG}r + environment: + FBT_TOOLS_CUSTOM_LINK: + from_secret: fbt_link + - name: "Build with ofw anims" image: hfdj/fztools pull: never commands: + - git clean -df + - git checkout -- . - rm -f assets/dolphin/external/manifest.txt - cp .ci_files/anims_ofw.txt assets/dolphin/external/manifest.txt - rm -rf assets/resources/apps/ @@ -80,16 +102,20 @@ steps: image: kramos/alpine-zip commands: - cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.tgz . + - cp artifacts-rgb-patch/flipper-z-f7-update-${DRONE_TAG}r.tgz . - cp artifacts-ofw-anims/flipper-z-f7-update-${DRONE_TAG}n.tgz . - cp artifacts-default/flipper-z-f7-update-${DRONE_TAG}.tgz . - zip -r artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.zip artifacts-extra-apps/f7-update-${DRONE_TAG}e + - zip -r artifacts-rgb-patch/flipper-z-f7-update-${DRONE_TAG}r.zip artifacts-rgb-patch/f7-update-${DRONE_TAG}r - zip -r artifacts-ofw-anims/flipper-z-f7-update-${DRONE_TAG}n.zip artifacts-ofw-anims/f7-update-${DRONE_TAG}n - zip -r artifacts-default/flipper-z-f7-update-${DRONE_TAG}.zip artifacts-default/f7-update-${DRONE_TAG} - tar czpf artifacts-default/flipper-z-any-scripts-${DRONE_TAG}.tgz scripts - rm -rf artifacts-extra-apps/f7-update-${DRONE_TAG} + - rm -rf artifacts-rgb-patch/f7-update-${DRONE_TAG} - rm -rf artifacts-ofw-anims/f7-update-${DRONE_TAG} - rm -rf artifacts-default/f7-update-${DRONE_TAG} - ls -laS artifacts-extra-apps + - ls -laS artifacts-rgb-patch - ls -laS artifacts-ofw-anims - ls -laS artifacts-default - mv artifacts-default/ ${DRONE_TAG} @@ -146,6 +172,21 @@ steps: from_secret: dep_target_extra source: flipper-z-f7-update-${DRONE_TAG}e.tgz + - name: "Upload rgb patch version to updates srv" + image: appleboy/drone-scp:linux-amd64 + settings: + host: + from_secret: dep_host + username: + from_secret: dep_user + password: + from_secret: dep_passwd + port: + from_secret: dep_port + target: + from_secret: dep_target_extra + source: flipper-z-f7-update-${DRONE_TAG}r.tgz + - name: "Do Github release" image: ddplugins/github-release pull: never @@ -160,6 +201,7 @@ steps: - ${DRONE_TAG}/*.zip - artifacts-ofw-anims/*.tgz - artifacts-extra-apps/*.tgz + - artifacts-rgb-patch/*.tgz title: ${DRONE_TAG} note: CHANGELOG.md checksum: @@ -210,7 +252,13 @@ steps: [-Version without custom animations - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-${DRONE_TAG}n.tgz&channel=release-cfw&version=${DRONE_TAG}n) - [-Version with extra apps - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-${DRONE_TAG}e.tgz&channel=release-cfw&version=${DRONE_TAG}e)" + [-Version with RGB patch - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-${DRONE_TAG}r.tgz&channel=release-cfw&version=${DRONE_TAG}r) + + + [-Version with RGB patch - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-${DRONE_TAG}r.tgz) + + + [-Version with Extra apps - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-${DRONE_TAG}e.tgz&channel=release-cfw&version=${DRONE_TAG}e)" document: - ${DRONE_TAG}/flipper-z-f7-update-${DRONE_TAG}.tgz @@ -223,7 +271,7 @@ steps: commands: - wget "https://raw.githubusercontent.com/fieu/discord.sh/e1dc1a7595efad2cad8f072f0b3531c470f5b7c8/discord.sh" - chmod +x ./discord.sh - - ./discord.sh --text 'New Unleashed firmware released!\n\nVersion - '${DRONE_TAG}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[[Github - Changelog]](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/'${DRONE_TAG}')\n\n[-How to install firmware-](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)\n\n[-Download latest extra apps pack-](https://github.com/xMasterX/all-the-plugins/archive/refs/heads/main.zip)\n\n[-Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/'${DRONE_TAG}'/flipper-z-f7-update-'${DRONE_TAG}'.tgz&channel=release-cfw&version='${DRONE_TAG}')\n\n[-Version without custom animations - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-'${DRONE_TAG}'n.tgz&channel=release-cfw&version='${DRONE_TAG}'n)\n\n[-Version with extra apps - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&channel=release-cfw&version='${DRONE_TAG}'e)' + - ./discord.sh --text 'New Unleashed firmware released!\n\nVersion - '${DRONE_TAG}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[[Github - Changelog]](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/'${DRONE_TAG}')\n\n[-How to install firmware-](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)\n\n[-Download latest extra apps pack-](https://github.com/xMasterX/all-the-plugins/archive/refs/heads/main.zip)\n\n[-Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/'${DRONE_TAG}'/flipper-z-f7-update-'${DRONE_TAG}'.tgz&channel=release-cfw&version='${DRONE_TAG}')\n\n[-Version without custom animations - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-'${DRONE_TAG}'n.tgz&channel=release-cfw&version='${DRONE_TAG}'n)\n\n[-Version with RGB patch - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'r.tgz&channel=release-cfw&version='${DRONE_TAG}'r)\n\n[-Version with RGB patch - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'r.tgz)\n\n[-Version with Extra apps - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&channel=release-cfw&version='${DRONE_TAG}'e)' - name: "Send extra pack build to telegram" image: appleboy/drone-telegram @@ -297,10 +345,29 @@ steps: FBT_TOOLS_CUSTOM_LINK: from_secret: fbt_link + - name: "Build dev with rgb patch" + image: hfdj/fztools + pull: never + commands: + - git apply .ci_files/rgb.patch + - export DIST_SUFFIX=${DRONE_BUILD_NUMBER}r + - export WORKFLOW_BRANCH_OR_TAG=dev-cfw + - export FORCE_NO_DIRTY=yes + - rm -f build/f7-firmware-C/toolbox/version.* + - ./fbt COMPACT=1 DEBUG=0 updater_package + - mkdir artifacts-rgb-patch + - mv dist/f7-C/* artifacts-rgb-patch/ + - ls -laS artifacts-rgb-patch + - ls -laS artifacts-rgb-patch/f7-update-${DRONE_BUILD_NUMBER}r + environment: + FBT_TOOLS_CUSTOM_LINK: + from_secret: fbt_link + - name: "Bundle self-update packages" image: kramos/alpine-zip commands: - cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz . + - cp artifacts-rgb-patch/flipper-z-f7-update-${DRONE_BUILD_NUMBER}r.tgz . - cp artifacts-default/flipper-z-f7-update-${DRONE_BUILD_NUMBER}.tgz . - rm -rf artifacts-default/f7-update-${DRONE_BUILD_NUMBER} - ls -laS artifacts-default @@ -358,6 +425,21 @@ steps: from_secret: dep_target_extra source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz + - name: "Upload rgb patch version to updates srv" + image: appleboy/drone-scp:linux-amd64 + settings: + host: + from_secret: dep_host + username: + from_secret: dep_user + password: + from_secret: dep_passwd + port: + from_secret: dep_port + target: + from_secret: dep_target_extra + source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}r.tgz + - name: "Trigger update server reindex" image: hfdj/fztools pull: never @@ -392,6 +474,12 @@ steps: [-Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-${DRONE_BUILD_NUMBER}.tgz&channel=dev-cfw&version=${DRONE_BUILD_NUMBER}) + [-Version with RGB patch - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-${DRONE_BUILD_NUMBER}r.tgz&channel=dev-cfw&version=${DRONE_BUILD_NUMBER}r) + + + [-Version with RGB patch - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-${DRONE_BUILD_NUMBER}r.tgz) + + [-Version with extra apps - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz&channel=dev-cfw&version=${DRONE_BUILD_NUMBER}e)" - name: "Send build to telegram" @@ -427,7 +515,7 @@ steps: commands: - wget "https://raw.githubusercontent.com/fieu/discord.sh/e1dc1a7595efad2cad8f072f0b3531c470f5b7c8/discord.sh" - chmod +x ./discord.sh - - ./discord.sh --text 'Unleashed firmware dev build successful!\n\nBuild - '${DRONE_BUILD_NUMBER}'\n\nCommit - https://github.com/DarkFlippers/unleashed-firmware/commit/'${DRONE_COMMIT_SHA}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[-Version with extra apps - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'e.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'e)\n\n[-Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}')' + - ./discord.sh --text 'Unleashed firmware dev build successful!\n\nBuild - '${DRONE_BUILD_NUMBER}'\n\nCommit - https://github.com/DarkFlippers/unleashed-firmware/commit/'${DRONE_COMMIT_SHA}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[-Version with Extra apps - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'e.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'e)\n\n[-Version with RGB patch - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'r.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'r)\n\n[-Version with RGB patch - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'r.tgz)\n\n[-Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}')' trigger: branch: