mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2026-01-04 23:59:02 +03:00
Compare commits
6 Commits
improv-4.3
...
I2S-4MFlas
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77f486e56f | ||
|
|
403623d4d6 | ||
|
|
60b163676a | ||
|
|
f49c3f7206 | ||
|
|
3fade26793 | ||
|
|
856303d8f1 |
@@ -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 \
|
||||
&& :
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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})
|
||||
|
||||
1
components/spotify/cspot/bell/nanopb/generator/protoc-gen-nanopb
Normal file → Executable file
1
components/spotify/cspot/bell/nanopb/generator/protoc-gen-nanopb
Normal file → Executable 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
|
||||
|
||||
File diff suppressed because one or more lines are too long
BIN
components/wifi-manager/webapp/dist/index.html.gz
vendored
BIN
components/wifi-manager/webapp/dist/index.html.gz
vendored
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
components/wifi-manager/webapp/dist/js/index.0c94e6.bundle.js.gz
vendored
Normal file
BIN
components/wifi-manager/webapp/dist/js/index.0c94e6.bundle.js.gz
vendored
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -20,6 +20,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;
|
||||
@@ -42,6 +44,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;
|
||||
|
||||
@@ -44,19 +44,19 @@
|
||||
|
||||
</div>
|
||||
<div class="info navbar-right" style="display: inline-flex;">
|
||||
<span class="recovery_element material-icons " style="color:orange; display: none">system_update_alt</span>
|
||||
<span id="battery" class="material-icons" style="fill:white; display: none">battery_full</span>
|
||||
<span id="o_jack" class="material-icons" style="fill:white; display: none">headphones</span>
|
||||
<span id="s_airplay" class="material-icons" style="fill:white; display: none">airplay</span>
|
||||
<span class="recovery_element material-icons " style="color:orange; display: none" aria-label="🛑" >system_update_alt</span>
|
||||
<span id="battery" class="material-icons" style="fill:white; display: none" aria-label="🔋" >battery_full</span>
|
||||
<span id="o_jack" class="material-icons" style="fill:white; display: none" aria-label="🎧">headphones</span>
|
||||
<span id="s_airplay" class="material-icons" style="fill:white; display: none" aria-label="🍎">airplay</span>
|
||||
<em id="s_cspot" class="fab fa-spotify" style="fill:white; display: inline"></em>
|
||||
<span data-bs-toggle="tooltip" id="o_type" data-bs-placement="top" title="">
|
||||
<span id="o_bt" class="material-icons" style="fill:white; display: none">bluetooth</span>
|
||||
<span id="o_spdif" class="material-icons" style="fill:white; display: none">graphic_eq</span>
|
||||
<span id="o_i2s" class="material-icons" style="fill:white; display: none">speaker</span>
|
||||
<span id="o_bt" class="material-icons" style="fill:white; display: none" aria-label="">bluetooth</span>
|
||||
<span id="o_spdif" class="material-icons" style="fill:white; display: none" aria-label="">graphic_eq</span>
|
||||
<span id="o_i2s" class="material-icons" style="fill:white; display: none" aria-label="🔈">speaker</span>
|
||||
</span>
|
||||
<span id="ethernet" class="material-icons if_eth" style="fill:white; display: none">cable</span>
|
||||
<span id="ethernet" class="material-icons if_eth" style="fill:white; display: none" aria-label="ETH">cable</span>
|
||||
<span id="wifiStsIcon" class="material-icons if_wifi"
|
||||
style="fill:white; display: none">signal_wifi_statusbar_4_bar</span>
|
||||
style="fill:white; display: none" aria-label=""></span>
|
||||
|
||||
</div>
|
||||
</header>
|
||||
@@ -374,22 +374,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body if_wifi" style="display: none">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Joined</th>
|
||||
<th scope="col">Name</th>
|
||||
<th scope="col">Signal</th>
|
||||
<th scope="col">Security</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="wifiTable"></tbody>
|
||||
</table>
|
||||
<button type="button" id="updateAP" class="btn btn-info btn-sm">Scan</button>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@@ -77,22 +77,22 @@ const nvsTypes = {
|
||||
NVS_TYPE_ANY: 0xff /*! < Must be last */,
|
||||
};
|
||||
const btIcons = {
|
||||
bt_playing: 'media_bluetooth_on',
|
||||
bt_disconnected: 'media_bluetooth_off',
|
||||
bt_neutral: 'bluetooth',
|
||||
bt_connecting: 'bluetooth_searching',
|
||||
bt_connected: 'bluetooth_connected',
|
||||
bt_disabled: 'bluetooth_disabled',
|
||||
play_arrow: 'play_circle_filled',
|
||||
pause: 'pause_circle',
|
||||
stop: 'stop_circle',
|
||||
'': '',
|
||||
bt_playing: {'label':'','icon': 'media_bluetooth_on'},
|
||||
bt_disconnected: {'label':'','icon': 'media_bluetooth_off'},
|
||||
bt_neutral: {'label':'','icon': 'bluetooth'},
|
||||
bt_connecting: {'label':'','icon': 'bluetooth_searching'},
|
||||
bt_connected: {'label':'','icon': 'bluetooth_connected'},
|
||||
bt_disabled: {'label':'','icon': 'bluetooth_disabled'},
|
||||
play_arrow: {'label':'','icon': 'play_circle_filled'},
|
||||
pause: {'label':'','icon': 'pause_circle'},
|
||||
stop: {'label':'','icon': 'stop_circle'},
|
||||
'': {'label':'','icon':''}
|
||||
};
|
||||
const batIcons = [
|
||||
{ icon: "battery_0_bar", ranges: [{ f: 5.8, t: 6.8 }, { f: 8.8, t: 10.2 }] },
|
||||
{ icon: "battery_2_bar", ranges: [{ f: 6.8, t: 7.4 }, { f: 10.2, t: 11.1 }] },
|
||||
{ icon: "battery_3_bar", ranges: [{ f: 7.4, t: 7.5 }, { f: 11.1, t: 11.25 }] },
|
||||
{ icon: "battery_4_bar", ranges: [{ f: 7.5, t: 7.8 }, { f: 11.25, t: 11.7 }] }
|
||||
{ icon: "battery_0_bar", label:'▪', ranges: [{ f: 5.8, t: 6.8 }, { f: 8.8, t: 10.2 }] },
|
||||
{ icon: "battery_2_bar", label:'▪▪', ranges: [{ f: 6.8, t: 7.4 }, { f: 10.2, t: 11.1 }] },
|
||||
{ icon: "battery_3_bar", label:'▪▪▪', ranges: [{ f: 7.4, t: 7.5 }, { f: 11.1, t: 11.25 }] },
|
||||
{ icon: "battery_4_bar", label:'▪▪▪▪', ranges: [{ f: 7.5, t: 7.8 }, { f: 11.25, t: 11.7 }] }
|
||||
];
|
||||
const btStateIcons = [
|
||||
{ desc: 'Idle', sub: ['bt_neutral'] },
|
||||
@@ -464,13 +464,19 @@ window.handleReboot = function (link) {
|
||||
$('#reboot_nav').removeClass('active'); delayReboot(500, '', link);
|
||||
}
|
||||
}
|
||||
function isConnected(){
|
||||
return ConnectedTo.ip && ConnectedTo.ip!='0.0.0.0';
|
||||
}
|
||||
function getIcon(icons){
|
||||
return isConnected()?icons.icon:icons.label;
|
||||
}
|
||||
function handlebtstate(data) {
|
||||
let icon = '';
|
||||
let tt = '';
|
||||
if (data.bt_status !== undefined && data.bt_sub_status !== undefined) {
|
||||
const iconindex = btStateIcons[data.bt_status].sub[data.bt_sub_status];
|
||||
if (iconindex) {
|
||||
icon = btIcons[iconindex];
|
||||
icon = btIcons[iconindex];
|
||||
tt = btStateIcons[data.bt_status].desc;
|
||||
} else {
|
||||
icon = btIcons.bt_connected;
|
||||
@@ -479,7 +485,7 @@ function handlebtstate(data) {
|
||||
}
|
||||
|
||||
$('#o_type').attr('title', tt);
|
||||
$('#o_bt').html(icon);
|
||||
$('#o_bt').html(isConnected()?icon.label:icon.text);
|
||||
}
|
||||
function handleTemplateTypeRadio(outtype) {
|
||||
$('#o_type').children('span').css({ display: 'none' });
|
||||
@@ -857,7 +863,6 @@ window.handleConnect = function () {
|
||||
$("*[class*='connecting']").hide();
|
||||
$('#ssid-wait').text(ConnectingToSSID.ssid);
|
||||
$('.connecting').show();
|
||||
|
||||
$.ajax({
|
||||
url: '/connect.json',
|
||||
dataType: 'text',
|
||||
@@ -876,6 +881,10 @@ window.handleConnect = function () {
|
||||
|
||||
}
|
||||
$(document).ready(function () {
|
||||
$('.material-icons').each(function (_index, entry) {
|
||||
entry.attributes['icon']=entry.textContent;
|
||||
});
|
||||
setIcons(true);
|
||||
handleNVSVisible();
|
||||
flashState.init();
|
||||
$('#fw-url-input').on('input', function () {
|
||||
@@ -1294,20 +1303,23 @@ window.setURL = function (button) {
|
||||
|
||||
function rssiToIcon(rssi) {
|
||||
if (rssi >= -55) {
|
||||
return `signal_wifi_statusbar_4_bar`;
|
||||
return {'label':'****','icon':`signal_wifi_statusbar_4_bar`};
|
||||
} else if (rssi >= -60) {
|
||||
return `network_wifi_3_bar`;
|
||||
return {'label':'***','icon':`network_wifi_3_bar`};
|
||||
} else if (rssi >= -65) {
|
||||
return `network_wifi_2_bar`;
|
||||
return {'label':'**','icon':`network_wifi_2_bar`};
|
||||
} else if (rssi >= -70) {
|
||||
return `network_wifi_1_bar`;
|
||||
return {'label':'*','icon':`network_wifi_1_bar`};
|
||||
} else {
|
||||
return `signal_wifi_statusbar_null`;
|
||||
return {'label':'.','icon':`signal_wifi_statusbar_null`};
|
||||
}
|
||||
}
|
||||
|
||||
function refreshAP() {
|
||||
if (ConnectedTo?.urc === connectReturnCode.ETH) return;
|
||||
$.ajaxSetup({
|
||||
timeout: 3000 //Time in milliseconds
|
||||
});
|
||||
$.getJSON('/scan.json', async function () {
|
||||
await sleep(2000);
|
||||
$.getJSON('/ap.json', function (data) {
|
||||
@@ -1327,10 +1339,13 @@ function refreshAP() {
|
||||
});
|
||||
}
|
||||
function formatAP(ssid, rssi, auth) {
|
||||
const rssi_icon=rssiToIcon(rssi);
|
||||
const auth_icon={label:auth == 0 ? '🔓' : '🔒',icon:auth == 0 ? 'no_encryption' : 'lock'};
|
||||
|
||||
return `<tr data-bs-toggle="modal" data-bs-target="#WifiConnectDialog"><td></td><td>${ssid}</td><td>
|
||||
<span class="material-icons" style="fill:white; display: inline" >${rssiToIcon(rssi)}</span>
|
||||
<span class="material-icons" style="fill:white; display: inline" aria-label="${rssi_icon.label}" icon="${rssi_icon.icon}" >${getIcon(rssi_icon)}</span>
|
||||
</td><td>
|
||||
<span class="material-icons">${(auth == 0 ? 'no_encryption' : 'lock')}</span>
|
||||
<span class="material-icons" aria-label="${auth_icon.label}" icon="${auth_icon.icon}">${getIcon(auth_icon)}</span>
|
||||
</td></tr>`;
|
||||
}
|
||||
function refreshAPHTML2(data) {
|
||||
@@ -1411,6 +1426,9 @@ function getBTSinkOpt(name) {
|
||||
return $(`${btSinkNamesOptSel} option:contains('${name}')`);
|
||||
}
|
||||
function getMessages() {
|
||||
$.ajaxSetup({
|
||||
timeout: messageInterval //Time in milliseconds
|
||||
});
|
||||
$.getJSON('/messages.json', async function (data) {
|
||||
for (const msg of data) {
|
||||
const msgAge = msg.current_time - msg.sent_time;
|
||||
@@ -1627,7 +1645,13 @@ function handleWifiDialog(data) {
|
||||
|
||||
}
|
||||
}
|
||||
function setIcons(offline){
|
||||
$('.material-icons').each(function (_index, entry) {
|
||||
entry.textContent = entry.attributes[offline?'aria-label':'icon'].value;
|
||||
});
|
||||
}
|
||||
function handleNetworkStatus(data) {
|
||||
setIcons(data.ssid==='');
|
||||
if (hasConnectionChanged(data) || !data.urc) {
|
||||
ConnectedTo = data;
|
||||
$(".if_eth").hide();
|
||||
@@ -1658,16 +1682,18 @@ function batteryToIcon(voltage) {
|
||||
for (const iconEntry of batIcons) {
|
||||
for (const entryRanges of iconEntry.ranges) {
|
||||
if (inRange(voltage, entryRanges.f, entryRanges.t)) {
|
||||
return iconEntry.icon;
|
||||
return { label: iconEntry.label, icon:iconEntry.icon};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return "battery_full";
|
||||
return {label:'▪▪▪▪',icon:"battery_full"};
|
||||
}
|
||||
function checkStatus() {
|
||||
|
||||
$.ajaxSetup({
|
||||
timeout: statusInterval //Time in milliseconds
|
||||
});
|
||||
$.getJSON('/status.json', function (data) {
|
||||
handleRecoveryMode(data);
|
||||
handleNVSVisible();
|
||||
@@ -1691,7 +1717,10 @@ function checkStatus() {
|
||||
$('span#flash-status').html('');
|
||||
}
|
||||
if (data.Voltage) {
|
||||
$('#battery').html(`${batteryToIcon(data.Voltage)}`);
|
||||
const bat_icon=batteryToIcon(data.Voltage);
|
||||
$('#battery').html(`${getIcon(bat_icon)}`);
|
||||
$('#battery').attr("aria-label",bat_icon.label);
|
||||
$('#battery').attr("icon",bat_icon.icon);
|
||||
$('#battery').show();
|
||||
} else {
|
||||
$('#battery').hide();
|
||||
@@ -1835,6 +1864,9 @@ function getLongOps(data, name, longopts) {
|
||||
return data.values[name] !== undefined ? data.values[name][longopts] : "";
|
||||
}
|
||||
function getCommands() {
|
||||
$.ajaxSetup({
|
||||
timeout: 7000 //Time in milliseconds
|
||||
});
|
||||
$.getJSON('/commands.json', function (data) {
|
||||
console.log(data);
|
||||
$('.orec').show();
|
||||
@@ -1956,6 +1988,9 @@ function getCommands() {
|
||||
}
|
||||
|
||||
function getConfig() {
|
||||
$.ajaxSetup({
|
||||
timeout: 7000 //Time in milliseconds
|
||||
});
|
||||
$.getJSON('/config.json', function (entries) {
|
||||
$('#nvsTable tr').remove();
|
||||
const data = (entries.config ? entries.config : entries);
|
||||
|
||||
@@ -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.d78ba9.bundle.js.gz BINARY)
|
||||
target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.d78ba9.bundle.js.gz BINARY)
|
||||
target_add_binary_data( __idf_wifi-manager webapp/dist/js/index.0c94e6.bundle.js.gz BINARY)
|
||||
target_add_binary_data( __idf_wifi-manager webapp/dist/js/node_vendors.0c94e6.bundle.js.gz BINARY)
|
||||
|
||||
@@ -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_d78ba9_bundle_js_gz_start[] asm("_binary_index_d78ba9_bundle_js_gz_start");
|
||||
extern const uint8_t _index_d78ba9_bundle_js_gz_end[] asm("_binary_index_d78ba9_bundle_js_gz_end");
|
||||
extern const uint8_t _node_vendors_d78ba9_bundle_js_gz_start[] asm("_binary_node_vendors_d78ba9_bundle_js_gz_start");
|
||||
extern const uint8_t _node_vendors_d78ba9_bundle_js_gz_end[] asm("_binary_node_vendors_d78ba9_bundle_js_gz_end");
|
||||
extern const uint8_t _index_0c94e6_bundle_js_gz_start[] asm("_binary_index_0c94e6_bundle_js_gz_start");
|
||||
extern const uint8_t _index_0c94e6_bundle_js_gz_end[] asm("_binary_index_0c94e6_bundle_js_gz_end");
|
||||
extern const uint8_t _node_vendors_0c94e6_bundle_js_gz_start[] asm("_binary_node_vendors_0c94e6_bundle_js_gz_start");
|
||||
extern const uint8_t _node_vendors_0c94e6_bundle_js_gz_end[] asm("_binary_node_vendors_0c94e6_bundle_js_gz_end");
|
||||
const char * resource_lookups[] = {
|
||||
"/css/index.7964a13ec910c36040b8.css.gz",
|
||||
"/favicon-32x32.png",
|
||||
"/index.html.gz",
|
||||
"/js/index.d78ba9.bundle.js.gz",
|
||||
"/js/node_vendors.d78ba9.bundle.js.gz",
|
||||
"/js/index.0c94e6.bundle.js.gz",
|
||||
"/js/node_vendors.0c94e6.bundle.js.gz",
|
||||
""
|
||||
};
|
||||
const uint8_t * resource_map_start[] = {
|
||||
_index_7964a13ec910c36040b8_css_gz_start,
|
||||
_favicon_32x32_png_start,
|
||||
_index_html_gz_start,
|
||||
_index_d78ba9_bundle_js_gz_start,
|
||||
_node_vendors_d78ba9_bundle_js_gz_start
|
||||
_index_0c94e6_bundle_js_gz_start,
|
||||
_node_vendors_0c94e6_bundle_js_gz_start
|
||||
};
|
||||
const uint8_t * resource_map_end[] = {
|
||||
_index_7964a13ec910c36040b8_css_gz_end,
|
||||
_favicon_32x32_png_end,
|
||||
_index_html_gz_end,
|
||||
_index_d78ba9_bundle_js_gz_end,
|
||||
_node_vendors_d78ba9_bundle_js_gz_end
|
||||
_index_0c94e6_bundle_js_gz_end,
|
||||
_node_vendors_0c94e6_bundle_js_gz_end
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/***********************************
|
||||
webpack_headers
|
||||
dist/css/index.7964a13ec910c36040b8.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.d78ba9.bundle.js.gz,dist/js/node_vendors.d78ba9.bundle.js.gz
|
||||
dist/css/index.7964a13ec910c36040b8.css.gz,dist/favicon-32x32.png,dist/index.html.gz,dist/js/index.0c94e6.bundle.js.gz,dist/js/node_vendors.0c94e6.bundle.js.gz
|
||||
***********************************/
|
||||
#pragma once
|
||||
#include <inttypes.h>
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
BIN
server_certs/DigiCertGlobalRootCA.crt.24
Normal file
BIN
server_certs/DigiCertGlobalRootCA.crt.24
Normal file
Binary file not shown.
BIN
server_certs/DigiCertGlobalRootCA.crt.25
Normal file
BIN
server_certs/DigiCertGlobalRootCA.crt.25
Normal file
Binary file not shown.
BIN
server_certs/rootca1.cer.23
Normal file
BIN
server_certs/rootca1.cer.23
Normal file
Binary file not shown.
BIN
server_certs/rootca1.cer.24
Normal file
BIN
server_certs/rootca1.cer.24
Normal file
Binary file not shown.
Reference in New Issue
Block a user