Compare commits

..

11 Commits

Author SHA1 Message Date
Sebastien L
60b163676a Fix protocol generation - release 2022-11-30 14:46:51 -05:00
github-actions
f49c3f7206 Update prebuilt objects [skip actions] 2022-11-30 05:54:53 +00:00
philippe44
3fade26793 build protobuf 2022-11-29 16:49:35 -08:00
philippe44
856303d8f1 Add GPIO config for Infrared on SqueezeAMP 3.20 2022-11-29 13:58:09 -08:00
philippe44
b20c8306fa fix a few spotify key bugs and remove BTDM 2022-11-28 21:09:27 -08:00
Sebastien L
877f16181b Activate new workflow 2022-11-28 13:57:31 -05:00
Sebastien
2cba6972ff update build_tools [skip actions] 2022-11-28 13:45:10 -05:00
Sebastien
fbd9516667 one more update to web push - [skip actions] 2022-11-28 10:46:15 -05:00
Sebastien
646a220fd0 Merge branch 'master-v4.3' of https://github.com/sle118/squeezelite-esp32 into master-v4.3 2022-11-28 10:45:04 -05:00
Sebastien
962dbf89c8 Add more auth methods for build - [skip actions] 2022-11-28 10:44:59 -05:00
github-actions
3a658f3ba2 Update prebuilt objects [skip actions] 2022-11-28 15:22:22 +00:00
31 changed files with 70 additions and 45 deletions

View File

@@ -1,5 +1,8 @@
name: Manually executable test for ESP-IDF v4.3.1
name: Platform Build
on:
push:
branches:
- '**4.3'
workflow_dispatch:
inputs:
ui_build:
@@ -10,9 +13,6 @@ on:
description: 'Force a Release build. When not forced, the system will check for release word in the last commit message to trigger a release'
required: true
type: boolean
# push:
# branches:
# - '**4.3'
jobs:
bootstrap:

View File

@@ -15,7 +15,7 @@ ENV GCC_TOOLS_BASE=/opt/esp/tools/xtensa-esp32-elf/esp-2021r2-8.4.0/xtensa-esp32
# To run the image interactive (windows):
# docker run --rm -v %cd%:/project -w /project -it sle118/squeezelite-esp32-idfv43
# To run the image interactive (linux):
# docker run --rm -v `pwd`:/project -w /project -it sle118/squeezelite-esp32-idfv4-master
# docker run --rm -v `pwd`:/project -w /project -it sle118/squeezelite-esp32-idfv43
# to build the web app inside of the interactive session
# pushd components/wifi-manager/webapp/ && npm install && npm run-script build && popd
#
@@ -90,7 +90,7 @@ RUN : \
&& pip show pygit2 \
&& python --version \
&& pip --version \
&& pip3 install protobuf grpcio-tools \
&& pip install protobuf grpcio-tools \
&& rm -rf $IDF_TOOLS_PATH/dist \
&& :

View File

@@ -259,7 +259,7 @@ CONFIG_CSPOT_SINK=y
# Various I/O
#
CONFIG_I2C_CONFIG=""
CONFIG_SET_GPIO=""
CONFIG_SET_GPIO="0=ir"
CONFIG_ROTARY_ENCODER=""
# end of Various I/O

View File

@@ -83,15 +83,13 @@ static void bt_app_task_handler(void *arg)
esp_bt_controller_mem_release(ESP_BT_MODE_BLE);
esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
if(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE ){
if (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE ) {
if ((err = esp_bt_controller_init(&bt_cfg)) != ESP_OK) {
ESP_LOGE(TAG, "%s initialize controller failed: %s\n", __func__, esp_err_to_name(err));
goto exit;
}
if ((err = esp_bt_controller_enable(ESP_BT_MODE_BTDM)) != ESP_OK) {
if ((err = esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT)) != ESP_OK) {
ESP_LOGE(TAG, "%s enable controller failed: %s\n", __func__, esp_err_to_name(err));
goto exit;
}

View File

@@ -415,7 +415,7 @@ bool create_rotary(void *id, int A, int B, int SW, int long_press, rotary_handle
// create companion button if rotary has a switch
if (SW != -1) button_create(id, SW, BUTTON_LOW, true, 0, rotary_button_handler, long_press, -1);
ESP_LOGI(TAG, "Creating rotary encoder A:%d B:%d, SW:%d", A, B, SW);
ESP_LOGI(TAG, "Created rotary encoder A:%d B:%d, SW:%d", A, B, SW);
return true;
}
@@ -432,5 +432,7 @@ bool create_infrared(int gpio, infrared_handler handler) {
common_task_init();
xRingbufferAddToQueueSetRead(infrared.rb, common_queue_set);
ESP_LOGI(TAG, "Created infrared receiver using GPIO %u", gpio);
return (infrared.rb != NULL);
}

View File

@@ -162,6 +162,8 @@ ESP_LOGI(TAG, "Getting Spotify event %d ", (int) event.eventType);
}
});
// need to make sure mercuryManager is running otherwise we'll loop and destroy instances
while (!mercuryManager->isRunning) vTaskDelay(pdMS_TO_TICKS(25));
mercuryManager->reconnectedCallback = []() {
return spircController->subscribe();
};

View File

@@ -36,7 +36,7 @@ if(UNIX AND NOT APPLE)
endif()
# Build protobuf code
if(0)
if(1)
set(NANOPB_OPTIONS "-I${CMAKE_CURRENT_SOURCE_DIR}")
file(GLOB PROTOS protobuf/*.proto)
nanopb_generate_cpp(PROTO_SRCS PROTO_HDRS RELPATH ${CMAKE_CURRENT_SOURCE_DIR} ${PROTOS})

View File

@@ -10,5 +10,4 @@
# --plugin= on the command line.
MYPATH=$(dirname "$0")
echo "Executing $MYPATH/nanopb_generator.py "
exec "$MYPATH/nanopb_generator.py" --protoc-plugin

View File

@@ -179,6 +179,7 @@ size_t PlainConnection::writeBlock(const std::vector<uint8_t> &data)
break;
default:
if (retries++ > 4) throw std::runtime_error("Error in write");
goto WRITE;
}
}
idx += n;

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@@ -19,6 +19,8 @@ declare function getStatus(): {};
declare function getStatus(): {};
declare function getStatus(): {};
declare function getStatus(): {};
declare function getStatus(): {};
declare function getStatus(): {};
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
@@ -40,6 +42,10 @@ declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function getRadioButton(entry: any): string;
declare function pushStatus(): void;
declare function pushStatus(): void;
declare function pushStatus(): void;
declare function pushStatus(): void;
declare function pushStatus(): void;

View File

@@ -1,5 +1,5 @@
target_add_binary_data( __idf_wifi-manager webapp/dist/css/index.7964a13ec910c36040b8.css.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/favicon-32x32.png BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/index.html.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/index.3b7a54.bundle.js.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.3b7a54.bundle.js.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/index.6ae91e.bundle.js.gz BINARY)
target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.6ae91e.bundle.js.gz BINARY)

View File

@@ -6,29 +6,29 @@ extern const uint8_t _favicon_32x32_png_start[] asm("_binary_favicon_32x32_png_s
extern const uint8_t _favicon_32x32_png_end[] asm("_binary_favicon_32x32_png_end");
extern const uint8_t _index_html_gz_start[] asm("_binary_index_html_gz_start");
extern const uint8_t _index_html_gz_end[] asm("_binary_index_html_gz_end");
extern const uint8_t _index_3b7a54_bundle_js_gz_start[] asm("_binary_index_3b7a54_bundle_js_gz_start");
extern const uint8_t _index_3b7a54_bundle_js_gz_end[] asm("_binary_index_3b7a54_bundle_js_gz_end");
extern const uint8_t _node_vendors_3b7a54_bundle_js_gz_start[] asm("_binary_node_vendors_3b7a54_bundle_js_gz_start");
extern const uint8_t _node_vendors_3b7a54_bundle_js_gz_end[] asm("_binary_node_vendors_3b7a54_bundle_js_gz_end");
extern const uint8_t _index_6ae91e_bundle_js_gz_start[] asm("_binary_index_6ae91e_bundle_js_gz_start");
extern const uint8_t _index_6ae91e_bundle_js_gz_end[] asm("_binary_index_6ae91e_bundle_js_gz_end");
extern const uint8_t _node_vendors_6ae91e_bundle_js_gz_start[] asm("_binary_node_vendors_6ae91e_bundle_js_gz_start");
extern const uint8_t _node_vendors_6ae91e_bundle_js_gz_end[] asm("_binary_node_vendors_6ae91e_bundle_js_gz_end");
const char * resource_lookups[] = {
"/css/index.7964a13ec910c36040b8.css.gz",
"/favicon-32x32.png",
"/index.html.gz",
"/js/index.3b7a54.bundle.js.gz",
"/js/node_vendors.3b7a54.bundle.js.gz",
"/js/index.6ae91e.bundle.js.gz",
"/js/node_vendors.6ae91e.bundle.js.gz",
""
};
const uint8_t * resource_map_start[] = {
_index_7964a13ec910c36040b8_css_gz_start,
_favicon_32x32_png_start,
_index_html_gz_start,
_index_3b7a54_bundle_js_gz_start,
_node_vendors_3b7a54_bundle_js_gz_start
_index_6ae91e_bundle_js_gz_start,
_node_vendors_6ae91e_bundle_js_gz_start
};
const uint8_t * resource_map_end[] = {
_index_7964a13ec910c36040b8_css_gz_end,
_favicon_32x32_png_end,
_index_html_gz_end,
_index_3b7a54_bundle_js_gz_end,
_node_vendors_3b7a54_bundle_js_gz_end
_index_6ae91e_bundle_js_gz_end,
_node_vendors_6ae91e_bundle_js_gz_end
};

View File

@@ -1,6 +1,6 @@
/***********************************
webpack_headers
dist/css/index.7964a13ec910c36040b8.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.3b7a54.bundle.js.gz,dist/js/node_vendors.3b7a54.bundle.js.gz
dist/css/index.7964a13ec910c36040b8.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.6ae91e.bundle.js.gz,dist/js/node_vendors.6ae91e.bundle.js.gz
***********************************/
#pragma once
#include <inttypes.h>

View File

@@ -15,9 +15,11 @@ from requests import Response
class Logger:
NEWLINE_CHAR = '\n'
with_crlf = False
@classmethod
def print_message(cls,message,prefix=''):
trimmed=re.sub(r'\n', r'%0A', message,flags=re.MULTILINE)
if not Logger.with_crlf:
trimmed=re.sub(r'\n', r'%0A', message,flags=re.MULTILINE)
print(f'{prefix}{trimmed}')
@classmethod
def debug(cls,message):
@@ -131,10 +133,16 @@ parser = argparse.ArgumentParser(
description='Handles some parts of the squeezelite-esp32 build process')
parser.add_argument('--cwd', type=str,
help='Working directory', default=os.getcwd())
parser.add_argument('--with_crlf', action='store_true',help='To prevent replacing cr/lf with hex representation')
parser.add_argument('--loglevel', type=str, choices={
'CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'NOTSET'}, help='Logging level', default='INFO')
subparsers = parser.add_subparsers(dest='command', required=True)
parser_commits = subparsers.add_parser("list_commits",add_help=False,
description="Commits list",
help="Lists the last commits"
)
parser_dir = subparsers.add_parser("list_files",
add_help=False,
description="List Files parser",
@@ -208,14 +216,13 @@ parser_build_flags.add_argument(
parser_build_flags.add_argument(
'--ui_build', action='store_true', help='Include building the web UI')
def format_commit(commit):
# 463a9d8b7 Merge branch 'bugfix/ci_deploy_tags_v4.0' into 'release/v4.0' (2020-01-11T14:08:55+08:00)
dt = datetime.fromtimestamp(float(commit.author.time), timezone(
timedelta(minutes=commit.author.offset)))
timestr = dt.strftime('%c%z')
cmesg:str = commit.message.replace('\n', ' ')
cmesg = cmesg.replace('*','-')
#timestr = dt.strftime('%c%z')
timestr = dt.strftime('%F %R %Z')
cmesg:str = commit.message.replace('\n', ' ').replace('\r','').replace('*','-')
return f'{commit.short_id} {cmesg} ({timestr}) <{commit.author.name}>'.replace(' ', ' ', )
@@ -886,10 +893,10 @@ def push_if_change(repo: Repository, token: str, source_path: str, manif_json):
remote: Remote = repo.remotes['origin']
auth_methods = ['x-access-token','x-oauth-basic']
for method in auth_methods:
if push_with_method('x-access-token', token, remote, [reference]):
if push_with_method(method, token, remote, [reference]):
print(f'::notice Web installer updated for {format_artifact_from_manifest(manif_json)}')
return
raise Exception('Unable to push web installer.')
else:
print(f'WARNING: No change found. Skipping update')
@@ -946,6 +953,10 @@ def handle_list_files(args):
print(f'Content of {args.cwd}:')
print(Logger.NEWLINE_CHAR.join(get_file_list(args.cwd)))
def handle_commits(args):
set_workdir(args)
print(Releases.get_commit_list_descriptions())
parser_environment.set_defaults(func=handle_environment, cmd='environment')
parser_manifest.set_defaults(func=handle_manifest, cmd='manifest')
@@ -953,11 +964,13 @@ parser_pushinstaller.set_defaults(func=handle_pushinstaller, cmd='installer')
parser_show.set_defaults(func=handle_show, cmd='show')
parser_build_flags.set_defaults(func=handle_build_flags, cmd='build_flags')
parser_dir.set_defaults(func=handle_list_files, cmd='list_files')
parser_commits.set_defaults(func=handle_commits,cmd='list_commits')
def main():
exit_result_code = 0
args = parser.parse_args()
Logger.with_crlf = args.with_crlf
print(f'::group::{args.command}')
print(f'build_tools version : {tool_version}')
print(f'Processing command {args.command}')

View File

@@ -117,7 +117,7 @@ menu "Squeezelite-ESP32"
string
default "dc=27,data=19,clk=18" if TWATCH2020
default "mosi=15,miso=2,clk=14" if MUSE
default ""
default ""
config DISPLAY_CONFIG
string
default "SPI,driver=ST7789,width=240,height=240,cs=5,back=12,speed=16000000,HFlip,VFlip" if TWATCH2020
@@ -125,7 +125,7 @@ menu "Squeezelite-ESP32"
config ETH_CONFIG
string
default ""
# AGGREGATES - end
# AGGREGATES - end
config DAC_CONTROLSET
string
default "{ \"init\": [ {\"reg\":41, \"val\":128}, {\"reg\":18, \"val\":255} ], \"poweron\": [ {\"reg\":18, \"val\":64, \"mode\":\"or\"} ], \"poweroff\": [ {\"reg\":18, \"val\":191, \"mode\":\"and\"} ] }" if TWATCH2020
@@ -168,6 +168,9 @@ menu "Squeezelite-ESP32"
int
default 13 if SQUEEZEAMP
default -1
config SET_GPIO
string
default "0=ir" if SQUEEZEAMP
endmenu
menu "Audio settings"
@@ -342,14 +345,15 @@ menu "Squeezelite-ESP32"
data=<gpio>,clk=<gpio>[,d/c=<num>][,host=<0|1|2>]
config SET_GPIO
string "Special GPIO configuration"
default ""
help
Set parameters of shared GPIO with special values.
<gpio_1>=Vcc|GND|amp[:0|1]|jack[:0|1][,<gpio_n>=Vcc|GND|amp[:0|1]|jack[:0|1]]
<gpio_1>=Vcc|GND|amp[:0|1]|jack[:0|1][ir][spkfault[:0|1][,<gpio_n>=Vcc|GND|amp[:0|1]|jack[:0|1]]
'amp' => GPIO that is set when playback starts
'jack' => GPIO used for audio jack detection
'green', 'red' => GPIO for status LED
'[:0|1] means set the active value for that GPIO can be low or high
'spkfault' => GPIO used for speaker fault detection
'ir' => GPIO used for Infrared Receiver
[:0|1] means set the active value for that GPIO can be low or high
config ROTARY_ENCODER
string "Rotary Encoder configuration"
default ""

View File

@@ -262,7 +262,7 @@ CONFIG_AIRPLAY_PORT="5000"
# Various I/O
#
CONFIG_I2C_CONFIG=""
CONFIG_SET_GPIO=""
# CONFIG_SET_GPIO= is not set
CONFIG_ROTARY_ENCODER=""
# end of Various I/O

Binary file not shown.

Binary file not shown.

BIN
server_certs/rootca1.cer.22 Normal file

Binary file not shown.

BIN
server_certs/rootca1.cer.23 Normal file

Binary file not shown.